zoukankan      html  css  js  c++  java
  • 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文件的操作步骤。

  • 相关阅读:
    为什么Java的main方法必须是public static void?
    2. 直接插入、折半插入、希尔排序及其比较(插入类排序)
    1. 冒泡与选择排序及其比较
    0.排序介绍与性能度量
    (十)更快的排序算法(归并、快排、基数)
    (九)排序(选择、插入、希尔)
    (八)递归
    (七)栈的三种实现
    (六)栈的规则及应用
    (五)如何写测试类
  • 原文地址:https://www.cnblogs.com/james1207/p/3362356.html
Copyright © 2011-2022 走看看