打印
[modelsim]

带以太网软核的bootloader问题

[复制链接]
2144|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangjunjun2005|  楼主 | 2012-12-8 09:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前做的一个项目带有软核lwip程序,生产的elf较大,没法直接在bram中启动。现使用两块flash。一块flash存放启动时用的逻辑bit文件(含bootloader程序)。另外一块存放正常工作时的elf文件。问题1:存放正常时使用的elf文件可以直接下载带flash里面还是需要转换成MCS文件?还是其他格式文件2、这个文件用什么工具下载到第二块flash?这个问题困扰我好几天了,请大侠出手帮助!

相关帖子

沙发
hawksabre| | 2012-12-8 20:29 | 只看该作者
这个问题没有遇到过   呵呵  没能帮到你   对不住  呵呵

使用特权

评论回复
板凳
hawksabre| | 2012-12-8 20:29 | 只看该作者
在网上找了一点资料  希望对你有帮助   呵呵   

使用特权

评论回复
地板
hawksabre| | 2012-12-8 20:32 | 只看该作者
你自己看一下   呵呵   应该是有用的

嵌入式系统BOOTLOADER的设计与实现.pdf

1.73 MB

基于Nios_软核嵌入式系统的以太网接口设计.pdf

634.34 KB

基于FPGA的DDR控制器的实现.pdf

130.73 KB

以太网MAC层IP软核设计方法研究.pdf

234.96 KB

使用特权

评论回复
评论
wangjunjun2005 2012-12-10 08:15 回复TA
感谢大侠 
5
ChaiTF| | 2012-12-8 22:23 | 只看该作者
等待猴哥

使用特权

评论回复
6
wangjunjun2005|  楼主 | 2012-12-10 14:38 | 只看该作者
感谢各位大侠指导,先将目前得到的信息汇报下:
目前做的一个项目带有软核lwip程序,生产的elf较大,没法直接在bram中启动。现使用两块flash。一块flash存放启动时用的逻辑bit文件(含bootloader程序)。另外一块存放正常工作时的elf文件。问题1:存放正常时使用的elf文件可以直接下载带flash里面还是需要转换成MCS文件?还是其他格式文件2、这个文件用什么工具下载到第二块flash?这个问题困扰我好几天了,请大侠出手帮助!

答:问题1:使用*.bin文件。问题2:上位机通过串口或者以太网传给下位机(软核),然后利用软核的SPI口将bin文件写入spi-flash。

使用特权

评论回复
7
xiao6666| | 2012-12-10 20:52 | 只看该作者
等待猴哥

使用特权

评论回复
8
GoldSunMonkey| | 2012-12-10 21:34 | 只看该作者
把elf写进另外一块FLASH, 或者可以把两块拼成一块用。

使用特权

评论回复
9
wangjunjun2005|  楼主 | 2012-12-17 17:53 | 只看该作者
感谢各位这么多天的关注,本人汇报下进度:
1、*。bin文件已经顺利下入到flash。
2、*。bin文件已经加载到dram内。
3、需要加载的程序已经运行。
4、加载的程序不能响应中断,按照官网的办法,将中断向量移到bin文件的最后还是不能响应中断,问题正在解决中,请知道的大侠指点。

使用特权

评论回复
10
GoldSunMonkey| | 2012-12-17 21:21 | 只看该作者
:)中断不会的飘过

使用特权

评论回复
11
GoldSunMonkey| | 2012-12-18 12:25 | 只看该作者

使用特权

评论回复
12
cen00| | 2012-12-18 17:22 | 只看该作者
1.MFS is created with mfsgen
2.MFS, bitstream, application binary, and vector binary are all converted to individual MCS files
3.All of these individual MCS files are combined into a single MCS with predetermined address offsets.  
4.Single MCS is then programmed into Flash
After power on, the following steps happen
1.FPGA configures from bitstream stored at offset 0x0
2.MicroBlaze begins running the bootloader app stored in BRAM
3.Bootloader copies over the main app to DDR
4.Bootloader copies over the MFS to DDR
5.Bootloader copies over main app's vector table to BRAM
6.Bootloader turns control over to main app

使用特权

评论回复
13
cen00| | 2012-12-18 19:44 | 只看该作者
转换应用程序ELF文件到原始二进制应用文件和中断向量数组文件使用命令:
mb-objcopy -O binary -R .vectors.reset -R .vectors.sw_exception -R .vectors.interrupt -R .vectors.debug_sw_break -R .vectors.hw_exception app_name.elf app.b
mb-objcopy -O binary -j .vectors.reset -j .vectors.sw_exception -j .vectors.interrupt -j .vectors.debug_sw_break -j .vectors.hw_exception app_name.elf vector.b
转换原始二进制应用文件和中断向量数组文件到MCS文件使用命令:
xmcsutil -accept_notice -i app.b -o app.mcs -29
xmcsutil -accept_notice -i vector.b -o vector.mcs -29
合并所有MCS文件成单个MCS文件仍然可以使用xmcsutil -accept_notice -i ...命令.
以上步骤可以编辑成批文件脚本以命令行方式执行.

使用特权

评论回复
14
cen00| | 2012-12-18 19:53 | 只看该作者
合并成单个MCS文件时各单个MCS文件的offset地址要与bootloader程序中copy的源地址一致.

使用特权

评论回复
评论
wangjunjun2005 2013-1-12 19:55 回复TA
很好,很强大,谢谢 
15
wangjunjun2005|  楼主 | 2013-1-12 19:57 | 只看该作者
最后解决办法是在bootloader加上中断修改指令,程序可以运行,谢谢各位大家指点

使用特权

评论回复
16
hawksabre| | 2013-1-14 18:23 | 只看该作者
谢谢楼主将解决方案贴出来  谢谢了   呵呵   多多努力中

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

153

帖子

1

粉丝