开发者分享|使用 AMD MicroBlaze™ 的 Boot Loader 的注意事项

点击蓝字关注我们

关注、星标公众号,精彩内容每日送达
来源:网络素材

AMD MicroBlaze™ 提供 Boot Loader,比如 SREC Boot Loader。它能将代码从 QSPI Flash 搬移到目标存储器(多半是 DRAM)运行,使 MicroBlaze 运行大程序成为可能。

如果 MicroBlaze 的 Block Design 设计有问题,比如 Block Design 设计中把 DRAM 链接到了 DP(外设)端口,DRAM 不能正常运行程序,也会导致 Boot Loader 运行失败。建议在运行 Boot Loader 之前,先测试 DRAM 运行程序,是否正常。

Boot Loader 运行时,假设 MicroBlaze 刚退出复位,系统中所有设置处于复位之后的默认状态。如果 MicroBlaze 运行了其它程序,可能使 MicroBlaze 的状态改变,可能导致问题。比如有程序使能了定时器中断,会定时产生中断。如果 Boot Loader 在运行过程中,硬件产生了中断,而 Boot Loader 又不能处理,则可能导致系统进入异常状态。

因此,建议在 Boot Loader 中增加下列代码,关闭中断处理、关闭 Cache 等。

Xil_ExceptionDisable();

Xil_DCacheFlush( );

Xil_DCacheDisable();

Xil_ICacheDisable();

使用 Boot Loader 时,建议的调试步骤如下:

  1. MicroBlaze 读 QSPI Flash ID 正常,读 QSPI Flash 数据正确,数据是 SREC 文件里的数据。

  2. MicroBlaze 能正常执行 DRAM 里的程序。

  3. 烧写 SREC 文件到 QSPI Flash。

  4. MicroBlaze 读 QSPI Flash 里的 SREC 文件的数据正确。

  5. MicroBlaze 执行 load_exec()加载程序后,跳转前,Reset 地址、DRAM 里的程序数据正确。双击 Microblaze 的 ELF 文件,可以自动反汇编,可以看到机器码。对比内存中的机器码,和 ELF 文件中的机器码一致。

  6. 执行 laddr() 前,flush cache,关闭 Cache。

  7. 执行 laddr() 中的跳转指令((*laddr)();)时,可以机器码单步执行。

01f1b6bcfddc8dacaf953913592c8ea5.jpeg

想要了解FPGA吗?这里有实例分享,ZYNQ设计,关注我们的公众号,探索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值