SoC 第三讲 AMP架构双核应用程序开发和软中断处理(一)
SoC 第三讲 AMP架构双核应用程序开发和软中断处理(一)
本节主要涉及到 裸机 使用两个ARM CPU 处理器(AMP架构) 来跑不同的应用程序,即使用共享内存时进行交互,并将其写进SD卡。并且介绍中断的定义,关于中断的例程可以参考下一讲。
一、AMP 非对称处理器架构
从软件的角度来看,多核处理器的运行模式有三种:
AMP(非对称多进程):多个核心相对独立的运行不同的任务,每个核心可能运行不同的操作系统或裸机程序,但是有一个主要核心,用来控制整个系统以及其它从核心 。即 zynq 使CPU0跑一个程序,CPU1 跑一个程序。然后通过一定方式进行数据交互。 具体可以通过中断、共享内存的方式可以交互
SMP(对称多进程):一个操作系统同等的管理各个内核,例如PC机 。
BMP(受约束多进程):与SMP类似,但开发者可以指定将某个任务仅在某个指定内核上执行
默认情况下,ZYNQ仅运行一个CPU,这里主要研究AMP模式下,两个CPU同时运行。
二、搭建 BD 工程(Vivado)
- 创建BD,添加ZYNQ IP核,并进入PS的配置界面 (需要强调一点的是根据板卡进行配置)
- 在PS-PL中取消时钟复位接口FCLK_RESTFCLK_REST 和 M AXI GP0 (默认会有,这次用不到)
- MIO configuration 中bank1 为1.8 V。开启UART1(接口 48,49)和SD卡。
- 在clock configuration和DDR configuration中,关闭PL时钟模块FCLK,并设置DDR型号(根据自己的板卡)
- Run Block Automation原理图如下
- 生成顶层文件Creat HDL Wrapper
- 综合、编译、生成bit流,导出硬件并运行SDK
二、搭建C语言环境(SDK)
一、ZYNQ 的中断系统结构
中断控制器(GIC,General Interrupt Controller)控制源:
-
软中断(SGI, 16个):CPU0、1都能触发的软中断,可以通过配置来控制。
-
私有中断(PPI, 各5个)
-
共享中断(SPI):硬中断,可连接到外设。串口、IIC都可以利用中断模式进行数据的传输。主要在PS-PL应用中比较多。
本节将用到上面的软中断,在用软中断之前需要对GIC进行初始化,然后才能与CPU进行通信。