[modelsim] 带以太网软核的bootloader问题

[复制链接]
 楼主| 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 | 显示全部楼层
你自己看一下   呵呵   应该是有用的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评论

感谢大侠  发表于 2012-12-10 08:15
ChaiTF 发表于 2012-12-8 22:23 | 显示全部楼层
等待猴哥
 楼主| 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。
xiao6666 发表于 2012-12-10 20:52 | 显示全部楼层
等待猴哥
GoldSunMonkey 发表于 2012-12-10 21:34 | 显示全部楼层
把elf写进另外一块FLASH, 或者可以把两块拼成一块用。
 楼主| wangjunjun2005 发表于 2012-12-17 17:53 | 显示全部楼层
感谢各位这么多天的关注,本人汇报下进度:
1、*。bin文件已经顺利下入到flash。
2、*。bin文件已经加载到dram内。
3、需要加载的程序已经运行。
4、加载的程序不能响应中断,按照官网的办法,将中断向量移到bin文件的最后还是不能响应中断,问题正在解决中,请知道的大侠指点。
GoldSunMonkey 发表于 2012-12-17 21:21 | 显示全部楼层
:)中断不会的飘过
GoldSunMonkey 发表于 2012-12-18 12:25 | 显示全部楼层
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
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 ...命令.
以上步骤可以编辑成批文件脚本以命令行方式执行.
cen00 发表于 2012-12-18 19:53 | 显示全部楼层
合并成单个MCS文件时各单个MCS文件的offset地址要与bootloader程序中copy的源地址一致.

评论

很好,很强大,谢谢  发表于 2013-1-12 19:55
 楼主| wangjunjun2005 发表于 2013-1-12 19:57 | 显示全部楼层
最后解决办法是在bootloader加上中断修改指令,程序可以运行,谢谢各位大家指点
hawksabre 发表于 2013-1-14 18:23 | 显示全部楼层
谢谢楼主将解决方案贴出来  谢谢了   呵呵   多多努力中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

153

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部