microblaze与zynq共存情形(之八) - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki
测试:配置模式
去掉IC/DC接口(去掉Cache),启动DP/IP接口,用DP/IP接口去访问外设和执行程序,看是否可以执行程序?mb的cache地址范围为0x10000000--0x1fffffff。
特点:mb的data总线全部是通过DP->GP0访问,不通过DP->HP0访问。
测试结果
mb+zynq,其中zynq程序为执行ocm_remap,mb执行打印和led点灯实验。
结果,通过修改ld地址:
- 程序在ddr中运行,可以运行。打印ddr, ocm_lower_addr正常;打印ocm_hihger_addr正常。
- 程序在local memory中运行,可以运行。打印ddr, ocm_lower_addr正常;打印ocm_hihger_addr正常。
- 程序在ocm_higher_addr中运行,不能运行。
- 程序在ocm_lower_addr中运行,可以运行。打印ddr, ocm_lower_addr正常;打印ocm_hihger_addr正常。
以上是ddr/local_memory/ocm_lower_addr中运行的结果。在ocm_higher_addr中不能运行,因此没有结果
总结:
- 这种情况,虽然对ocm_higher_addr可以读写,但是mb不能执行程序。与前面的情形之七一样。
- 可见,DP/IP接口不仅可以访问外设,还可以执行程序,更为通用。相比较而言,DC/IC接口不能访问外设,只能执行程序。
另一种情形:配置模式
将DP对ddr/ocm的访问,从S_AXI_GP0换成S_AXI_HP0接口。
测试结果
mb+zynq,其中zynq程序为执行ocm_remap,mb执行打印和led点灯实验。
结果,通过修改ld地址:
- 程序在ddr中运行,不能运行。
- 程序在local memory中运行,可以运行。打印ocm_lower_addr正常;打印ddr/ocm_hihger_addr输出为0,看样子访问不到ddr/ocm_higher_addr。
- 程序在ocm_higher_addr中运行,不能运行。
- 程序在ocm_lower_addr中运行,可以运行。打印ocm_lower_addr正常;打印ddr/ocm_hihger_addr输出为0,看样子访问不到ddr/ocm_higher_addr。
以上是local_memory/ocm_lower_addr中运行的结果。在ddr/ocm_higher_addr中不能运行,因此没有结果
总结:
- 这种情况下,DP->HP0访问不到ddr/ocm_higher_addr的数据,因此读写/执行程序都不行。只有DP->GP0才可以访问到ddr/ocm_higher_addr的数据,才可以在ddr中执行程序。