搭建蜂鸟E203FLASH启动的仿真环境,运行Hello World例程

一.前言

        蜂鸟E203是支持FLASH启动的,可是官方并没有提供 FLASH 启动的仿真环境,只是提供了利用 HBird SDK 进行 FLASH 下载的编译,因此需要自行搭建 FLASH 启动的仿真环境。在这过程中也遇到很多问题,但最终也是成功运行 helloworld 例程,当然也可能有其他的方式,这里只是提供借鉴和参考,也欢迎大家批评和指正!

二.准备

        需要我们了解蜂鸟E203的整个仿真过程,能完成ILM启动,运行helloworld。

        这里可以参考官方文档以及芯王国博主的关于虚拟机以及蜂鸟E203系列的一些文章。

       官方文档: 1. Overview — Hummingbirdv2 E203 Core and SoC 0.2.1 documentation

       芯王国:芯王国-优快云博客

三.搭建

        1.将QSPI FLASH添加工程中

        (1)需要一个QSPI FLASH仿真模型

                链接:项目首页 - QSPIFLASHVerilog模型下载:QSPI FLASH Verilog模型下载 - GitCode

        (2)新建IOBUF.v文件,将IOBUF.v,MX25L6473F.v(QSPI FLASH仿真模型)文件添加到e203_hbirdv2-master/rtl/e203/soc中       

        (3)修改MX25L6473F.v文件中的TOP_Add和tVSL(FLASH启动时间),TOP_Add可以改小一点,tVSL(FLASH启动时间)让其在芯片复位运行开始时间之前即可,这里直接改成0。

        2.找到e203_hbirdv2-master/tb/tb_top.v文件。

        (1)添加qspi内部信号线以及外部引脚线,将内部信号线添加到e203_soc_top模块调用中

        (2)利用IOBUF将QSPI引脚信号引出,连接QSPI  FLASH模块

        (3)修改bootrom脚,使芯片从FLASH启动

        (4)修改FLASH读取程序的代码,有两种方式

                 a.在tb_top.v文件中修改,将原本加载到ITCM的注释掉,改为加载到QSPI FLASH的数组里,readmemh里的路径名为(程序加载的绝对路径/程序.verilog),这里用的是helloworld例程,即为(helloworld的绝对路径/helloworld.verilog),可以在对应位置pwd一下,得到绝对路径。

                b.在MX25L6473F.v中修改,将File_Name 的none改为(程序加载的绝对路径/程序.verilog),跟第一种是一样的,只是改的位置不同,两种方式选一个就行。

        (5)修改总仿真时间,因为从FLASH运行时间相对较长,需要增加仿真时间

        3.编译helloworld例程,方式是FLASHXIP,从FLASH运行。

source setup.sh
echo $PATH
which riscv-nuclei-elf-gcc make rm
make help

cd application/baremetal/helloworld
make dasm SOC=hbirdv2 BOARD=ddr200t CORE=e203 DOWNLOAD=flashxip

        4.修改编译后生成的helloworld.verilog文件,将@2000全部替换为@0000,虽然芯片从FLASH启动的地址是0x20000000,但实际在FLASH里保存还是从0x00000000开始的,需要映射好。

        5.进入到e203_hbirdv2-master/vsim目录下,开始仿真

make clean
make install
make compile SIM=vcs
make run_test SIM=vcs

        最终运行结果:

        观看波形:

make wave SIM=vcs

四.总结

FLASH启动的仿真环境,其主要就是两步,

        1.将QSPI flash通过蜂鸟E203的QSPI0接口与芯片连接。

        2.用hbird-sdk编译出helloworld.verilog文件(下载模式为flashxip),并加载到QSPI flash的数组里。编译过程中下载模式改为flash也是可以的,从flash读出再加载到ILM运行,就是需要将tb_top.v文件的检测代码注释掉,不然仿真代码没运行完会被提前终止,显示FAIL。

其次就是注意一些细节:

      (1)修改bootrom,让其从FLASH启动

      (2)编译出的.verilog文件地址映射的更改

      (3) QSPI flash启动时间要在芯片开始运行之前

后面就是正常的仿真过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值