Skip to content

microblaze与zynq共存情形(之八)

minichao9901 edited this page Feb 10, 2024 · 2 revisions

测试:配置模式

去掉IC/DC接口(去掉Cache),启动DP/IP接口,用DP/IP接口去访问外设和执行程序,看是否可以执行程序?mb的cache地址范围为0x10000000--0x1fffffff。

image image

特点: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正常。

image image image

以上是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接口。

image image

测试结果

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。

image

以上是local_memory/ocm_lower_addr中运行的结果。在ddr/ocm_higher_addr中不能运行,因此没有结果

总结:

  • 这种情况下,DP->HP0访问不到ddr/ocm_higher_addr的数据,因此读写/执行程序都不行。只有DP->GP0才可以访问到ddr/ocm_higher_addr的数据,才可以在ddr中执行程序。
Clone this wiki locally