如何将Nios II硬件和软件合成一个文件(NIOS II)(硬件)(软件)(合并)

原文
将HW和SW合成一个JIC文件
需要的文件:sof,elf;
step1:先将硬件映像和软件映像转换成flash文件
打开nios II command shell,输入:

sof2flash –input=hello_cy3.sof –output=hwimage.flash –epcs –verbose
elf2flash –input=hello_world_0.elf –output=swimage.flash –epcs –after=hwimage.flash –verbose
step2: 把flash文件转化成hex文件

nios2-elf-objcopy -I srec -O ihex hwimage.flash hwimage.hex
nios2-elf-objcopy -I srec -O ihex swimage.flash swimage.hex
step3:打开Quartus® II Convert Programming File 工具,给Flash Loader添加器件类型,然后添加第2步转化出来的hex文件。添加hex文件时,选中“绝对地址”选项。

点击Gererate,即生成了jic文件,再检查生成的 .map 文件有hwimage.hex在起始地址0x0,swimage.hex文件在hwimage.hex结束地址后的起始地址1

hwsw_file.map显示了地址信息

复制代码
BLOCK START ADDRESS END ADDRESS

hwimage.hex 0x00000000 0x00030FA5
swimage.hex 0x00030FA6 0x0003131D

Note: All the addresses in this file are byte addresses
复制代码

当然了,也可以只转换swimage,hwimage直接用sof就可以了,不过,这个我没试,这里有说明

http://www.altera.com.cn/support/kdb/solutions/rd10132010_126.html

最后,下载JIC文件,哈哈,NIOS综于跑起来了。

2、将HW和SW合成一个SOF文件

其实在quartus中,也能像Xilinx 的EDK那样将hw和sw合成同一个bitstream。但是SW必须是在片内运行的。
我们知道,NIOS II是不需要自已写bootloader的,NIOS II帮你写好了,但是只能从指定的FLASH Loader,但如果你要从其它的存储器Loader,比如说SD卡,那么就要自已写bootloader了,这样可以将bootloader和sof合成一个文件。
 这个方法,无需在SOPC Builder内添加epcs_controller模块;
将CPU的reset地址和vector设置在onchip_mem;
generate之后,无需立即重新编译Quartus 工程。
在Nios II IDE中将system library的的program memary(.text)等,都设为onchip_mem;如下图:



 再重新build project。
这个时候Nios II IDE自动创建onchip_memory初始化文件onchip_memory.hex,保存在与SOPC Builder系统文件(.ptf)同一个文件夹下。
然后重新编译Quartus 工程,则自动将onchip_memory.hex内容包含在sof和pof文件中。
 然后在 Quartus Programmer中用AS模式下载POF就可以了。再重新上电,发现NIOS 就跑起来了。

结语:

 NIOS 出问题后不是很好解决,有些问题很难通过console输出的信息来判定问题所在,再加上编译的时间较长,这也增加了测试的时间。当然咯,有些是软件bug,但也有些是时序问题,比如说你对sopc builder里面做修改后,综合出来的结果会不一样,warring也不一样,例如,我在quartus 10.0里nios在onchip_memory能跑到100M,SDRAM 140M,但改成在sdram里运行后,RUN时,提示verifly错误,NIOS不能运行。改成90M 100M就可以了。所以说,掌握对warring的理解,和新的解决方法也是很不错的,必竟时间是有限的,只要目的达到了,就OK了,你说呢。

参考资料:

如何将Nios II的硬件映像和软件映像合并生成一个jic文件

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值