OpenRisc-52-run openrisc&orpmon on ml501 board
引言
之前关于openrisc的内容,几乎都是基于opencores官方的ordb2a那个开发板的,但是,实际情况是有那个板子的人不是很多,所以目前我在做一个与之类似的板子,并且很快就会跟大家见面,这是后话。
在新做的板子出来之前,本小节我们先在xilinx ml501板子上跑一下openrisc和orpmon。
1,实验准备
1>熟悉开发板
ML501是xilinx比较老的一款FPGA开发板,在最开始,如果对这个板子不是很熟悉的话,可以先参考一下相关文档,链接如下:
1,Getting Started with ML501 Demonstrations
http://www.xilinx.com/products/boards/ml501/reference_designs.htm
2,Restoring ML501 Demonstration Images:
http://www.xilinx.com/products/boards/ml501/ml501_12.1/images.htm
3,Xilinx ML501 Stand-Alone Applications
http://www.xilinx.com/products/boards/ml501/ml501_12.1/standalone_apps.htm
2>准备opencores提供的Pre-built image for SPI flash
http://opencores.org/or1k/FPGA_Development_Boards#Xilinx_ML501
下载orpsoc-ml501-66MHz.mcs文件,这个文件里面包含FPGA的配置信息,也包含orpmon软件信息。
3>准备USB转串口线
由于我们需要查看ML501的串口输出,但是目前很少有电脑上还有串口,所以就需要一条转换线,当然需要安装USB转串口的驱动程序才能使用。
4>运行ml501的demo程序和Stand-Alone Applications
在ML501出厂时,板子的CF card,SPI flash,platform Flash,,liner flash里面都是有数据的,可以根据相关文档直接运行的,如果你的flash里面没有,可以restore,方法上面已经给出链接了,不再赘述。
做这些测试程序的目的有两个,其一是熟悉开发板,其二就是确定USB转串口线是否正常工作,因为在运行测试程序时,通过PC机上的串口工具是可以看到打印信息的。
2,实验步骤
1>安装xilinx的EDA工具,尤其是iMPACT。
2>打开iMPACT 设置:Edit menu -> Preferences, and in the Configuration Preferences category, set the SPI Byte Swap option to Ignore Setting.
3>初始化JTAG chain并增加SPI flash(选择之前下载的orpsoc-ml501-66MHz.mcs文件)
4>右击SPI flash->program
需要注意的是模式选择一定要正确:MODE[2:0] = 001。
3,实验结果
program的过程需要大概几分钟的时间,在显示“program successded”之后,我们再断电,上电。
打开并配置串口工具,就可以看到orpmon的启动结果了,如下所示:
可见这时orpmon已经启动了,键入help可以看到帮助信息,令人沮丧的是没有换行,看起来有点不舒服,How annoying!
下面是稍作整理的help信息:
Xilinx ML501> help ic_enable - enable instruction cache ic_disable - disable instruction cache dc_enable - enable data cache dc_disable - disable data cache mfspr <spr_addr> - show SPR mtspr <spr_addr> <value> - set SPR dm <start addr> [<end addr>] - display 32-bit memory location(s) pm <addr> [<stop_addr>] <value> - patch 32-bit memory location(s) ram_test <start_addr> <stop_addr> [<test_no>] - run a simple RAM test better_ram_test <start_addr> <stop_addr> - run a better RAM test crc [<src_addr> [<length> [<init_crc>]]] - Calculates a 32-bit CRC on specified memory region dhry [<num_runs>] - run dhrystone coremark [<mode>] [<iterations>] - run coremark, mode: p - performance run, o - profile run, default - validation run tftp_conf [ <file> [ <srv_ip> [ <src_addr>]]] - TFTP configuration tboot [<image number>] - Bootstrap image downloaded via tftp sdboot [<image number>] - Read image from SD-CARD help - shows this help CPU info Frequency 66MHz Instruction cache: 32kB (BS: 32 Sets: 1024) Data cache: 32kB (BS: 32 Sets: 1024) Info: Stack section addr 0x23c60 Build tag: Wed Jun 1 13:30:21 CEST 2011 Xilinx ML501>
4,小结
本小节我们在ML501的板子上运行了openrisc和orpmon,enjoy!
5,future work
1>boot linux
通过上面的命令,我们可以预测,使用orpmon可以通过tftp将linux的镜像经网口download到板子上,这样,我们就可以启动linux了!
2>综合编译orpsoc & orpmon for ml501
上面的内容使用的是opencores提供的实现弄好的文件,但是这是远远不够的,因为我们要对ORPSoC进行修改,所以就需要创建orpsoc的ml501的ISE 工程,自己综合,生成mcs文件。当然可能需要重新编译orpmon。
关于这方面的内容请参考:
Programming the SPI flash memory:
http://www.rte.se/blog/blogg-modesty-corex/programming-spi-flash-memory/2.6
Loading and executing a program:
http://www.rte.se/blog/blogg-modesty-corex/loading-and-executing-program/2.7
ORPSoC User Guide的第6章:
http://download.csdn.net/detail/rill_zhen/6378603
上面的文档中有关于ml501的ORPSoC RTL工程的搭建,综合,以及如何将软件和FPGA硬件信息整合成一个mcs文件的操作步骤。
OpenRisc-52-run openrisc&orpmon on ml501 board的更多相关文章
- OpenRISC自定义指令GCC修改
This short tutorial shows how to use the custom instructions defined by OpenRISC architecture. The O ...
- OpenRisc-44-or1200的pipeline整体分析
引言 我们在前面分析了ORPSoC,or1200_top,和or1200_cpu的整体架构,在最近,我们也分析了or1200的pipeline(流水线)中的两级,EX级和IF级. 但是,我们还没有从宏 ...
- orpsocv2 从ROM(bootrom)启动分析--以atlys板子的启动为例子
1 复位后的启动地址 1) 复位后,启动地址在or1200_defines.v最后宏定义,atlys板子的目录:orpsocv2\boards\xilinx\atlys\rtl\verilog\inc ...
- 【嵌入式】FS2410非操作系统外围资源测试
在刚接触FS2410时,其实这个测试也没有多大意义,但是对于以后来说,当一个产品做成功时,产品测试还是一个必须经过的一个阶段,所以这个流程还是有必要走一下! 在非操作系统下,主要进行RTC测试,按键测 ...
- Open Source Software List: The Ultimate List
http://www.datamation.com/open-source/ Accessibility 1. The Accessibility Project The Business Value ...
- ZooKeeper测试笔记
1. 下载ZooKeeper.官网:http://zookeeper.apache.org 下载后解压,假定zookeeper程序目录为/home/test/zookeeper,为陈述方便此目录记为 ...
- Oracle GoldenGate for Oracle 11g to PostgreSQL 9.2.4 Configuration
Installing and setting up Oracle GoldenGate connecting to an Oracle database Also please make sure t ...
- OpenRisc-37-OpenRISC的CPU&core的整体架构分析
引言 前面我们分析了ORPSoC的整体架构,并对其子系统进行了深入的分析和了解.但对于ORPSoC的核心模块or1200_top及其内部的core--or1200_cpu模块却鲜有涉及,算是ORPSo ...
- 系统级性能分析工具perf的介绍与使用[转]
测试环境:Ubuntu16.04(在VMWare虚拟机使用perf top存在无法显示问题) Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance pro ...
随机推荐
- WPF-控件-层级控件-Menu-嵌套结构
<?xml version="1.0" encoding="utf-8" ?> <Data xmlns=""> &l ...
- thinkphp join 查询
$user=M('user')->table(C('DB_PREFIX').'user as a')->join(C('DB_PREFIX').'role_user as b on a.u ...
- [原]项目进阶 之 持续构建环境搭建(二)Nexus私服器
上一篇博文项目进阶 之 持续构建环境搭建(一)架构中,我们大致讲解了一下本系列所搭建环境的基本框架,这次开始我们进入真正的环境搭建实战.重点不在于搭建的环境是否成功和完善,而是在搭建过程中充分认识到每 ...
- 【软件工程-Teamwork 3】团队角色分配和团队贡献分分配规则
Part 1 团队角色分配 1.人员分配概要: Project Manager:1名 / Developer:4名 / Test: 1名 2.具体人员分配及职责: Project Manager(PM ...
- OC self super isa指针
self指针: self是oc面向对象设计中的一个特殊指针,相当于java中的this,但是比this强大,this只能访问实例对象的相关方法和成员变量,或者说this只代表实例对象: self不仅可 ...
- Http之Get/Post请求区别
Http之Get/Post请求区别 1.HTTP请求格式: <request line> <headers> <blank line> [<request-b ...
- 不借助jquery封装好的ajax,你能用js手写ajax框架吗
不借助jquery封装好的ajax,你能手写ajax框架吗?最基础的ajax框架,一起来围观吧. .创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); ...
- JS打字效果的动态菜单代码分享
这篇文章主要介绍了JS打字效果的动态菜单,推荐给大家,有需要的小伙伴可以参考下. 这是一款基于javascript实现的打字效果的动态菜单特效代码,分享给大家学习学习. 小提示:浏览器中如果不能正常运 ...
- 【BZOJ】【3669】【NOI2014】魔法森林
LCT动态维护MST LCT动态维护MST 我们可以枚举a,然后找从1到n的一条路径使得:这条路径上的b的最大值最小.这个路径肯定在MST上……所以枚举一遍所有的边,动态维护一个关于b值的MST即可. ...
- dll 入口函数
http://support.microsoft.com/kb/815065/zh-cn // SampleDLL.cpp // #include "stdafx.h" #defi ...