ZYNQ7000 使用双核AMP实现双核裸机运行

1,vivado硬件配置:

PS 端 MIO 操作之按键中断例程为基础,添加 PL 端的 GPIO。添加 axi_gpio_0 设置为输出,位宽为 1 位,连接 PL 端 LED:

  添加 axi_gpio_1,连接 PL 端按键,设置为输入,位宽为 1 位,并使能中断,

连接后的结果如下,将 axi_gpio_1 的中断输出连接到 CPU 的 IRQ_F2P 端口:

AMP: 非对称多处理,每个 CPU 内核运行一个独立的操作系统或同一操作系统的独立实例。
SMP: 对称多处理,一个操作系统实例可以管理所有 CPU 内核,且应用并不绑定某一内核。
BMP: 混合多处理,一个操作系统实例可以同时管理所有 CPU 内核,但每个应用被锁定于某个指定的核心。

2,(1)实现功能  

A: CPU0 实现 PS 端按键中断,控制 PS 端 LED 的亮灭,并向 CPU1 发出软件中断,让 CPU1打印 CPU0 内存空间的一串字符
B:  CPU1 实现 PL 端按键中断,控制 PL 端 LED 的亮灭,并向 CPU0 发出软件中断,让 CPU0打印 CPU0 内存空间的一串字符
C:  内存空间的划分,共享内存空间的使用
D: FSBL 启动 Flash

     (2)共享内存就是,CORE0 和 CORE1 在 DDR3 内存中约定一块地址及长度已知的内存区域。然后,两者之间便可通过这片区域进行数据的传递。两个核心各自拥有独立的 L1 DCache,并且共享同一个 L2 DCache,在 ZYNQ 中存在一个 Snoop Control Unit(SCU)用于维护 CORE0 和 CORE1 的 L1 DCache 与 L2 DCache 之间的一致性,无需用户干预。因此,虽然 CORE0 和 CORE1 的共享内存区域位于 DDR 中,两者之间的数据传递并不需要考虑 DCache 一致性的维护。但是,为了更好阐明多级存储器结构的特性以及 DCache 一致性维护的问题,本例程在两核间通过 DDR3 共享内存进行数据交互时加入了 DCache 一致性操作,最终达到的效果与不使用 DCache 一致性操作时相同。

   (3)ZYNQ 中维护 DCache 一致性的方法为:写入方将数据写入 DDR 对应地址区域后,需将残留在 DCache 中相应
地址范围内的数据全部刷入 DDR3 中。读取方在从 DDR 相应地址读取数据之前,需将 DCache 中 DDR 相应地址范
围内的数据全部设置为 invalid,然后 CPU 会再次通过 DCache 从 DDR3 中读取该地址范围内最新的数据。

    (4)设计双核应用,两个工程的内存分配是一个关键的前提,程序所占用的 DDR 空间不能发生重合,应完全分隔开。

3,新建工程

   (1)在 Processor 选择 ps7_cortexa9_0,也就是 CPU0,选择 Empty。

            添加cpu0_app.c 和 share.h,share.h, 内包含共享内存结构体。

            在 lscript.ld 里设置 CPU0 的访问空间,将 CPU0 空间设置为一半,当然也可以根据需要修改。

(2) 新建 CPU1 工程,与 CPU0 工程不同的是选择 ps7_cortexa9_1。添加cpu1_app.c 和 share.h。

          设置 CPU1 内存空间,注意不要与 CPU0 重合,最后保留了 256 字节的空间,用于共享内存。

        

          CPU1 的 BSP 设置界面,在 extra_compile_flags 内添加-DUSE_AMP=1,使其支持双核工作。

4,板上验证

(1)Run Configurations 配置如下

(2)在 Application 窗口,将两个核都勾选上,下载程序。

(3)打开 putty,按下 PS 端按键,控制 PS 端 LED 灯亮,表明 CPU0 在运行,同时 CPU1 接收到CPU0 设置的软件中断,并打印出信息。

(4)按下 PL 端按键,控制 PL 端 LED 灯亮,表明 CPU1 在运行,同时 CPU0 接收到 CPU1 设置的软件中断,并打印出信息。

5,建立FSBL的方式与普通的一样,只是在Create Boot Image时,在最后添加CPU1的elf即可,

      下载到 FLASH 里,选择 QSPI FLASH 启动方式,即可运行程序。

发布了31 篇原创文章 · 获赞 1 · 访问量 1341
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览