SoC 第三讲 AMP架构双核应用程序开发和软中断处理(一)

SoC 第三讲 AMP架构双核应用程序开发和软中断处理(一)
本节主要涉及到 裸机 使用两个ARM CPU 处理器(AMP架构) 来跑不同的应用程序,即使用共享内存时进行交互,并将其写进SD卡。并且介绍中断的定义,关于中断的例程可以参考下一讲。

一、AMP 非对称处理器架构

从软件的角度来看,多核处理器的运行模式有三种:

AMP(非对称多进程):多个核心相对独立的运行不同的任务,每个核心可能运行不同的操作系统或裸机程序,但是有一个主要核心,用来控制整个系统以及其它从核心 。即 zynq 使CPU0跑一个程序,CPU1 跑一个程序。然后通过一定方式进行数据交互。 具体可以通过中断、共享内存的方式可以交互

SMP(对称多进程):一个操作系统同等的管理各个内核,例如PC机 。

BMP(受约束多进程):与SMP类似,但开发者可以指定将某个任务仅在某个指定内核上执行

默认情况下,ZYNQ仅运行一个CPU,这里主要研究AMP模式下,两个CPU同时运行。

二、搭建 BD 工程(Vivado)
  1. 创建BD,添加ZYNQ IP核,并进入PS的配置界面 (需要强调一点的是根据板卡进行配置)
  2. 在PS-PL中取消时钟复位接口FCLK_RESTFCLK_RESTM AXI GP0 (默认会有,这次用不到)
  3. MIO configuration 中bank1 为1.8 V。开启UART1(接口 48,49)和SD卡
  4. 在clock configuration和DDR configuration中,关闭PL时钟模块FCLK,并设置DDR型号(根据自己的板卡)
  5. Run Block Automation原理图如下
    SoC 第三讲 AMP架构双核应用程序开发和软中断处理(一)
  6. 生成顶层文件Creat HDL Wrapper
  7. 综合、编译、生成bit流,导出硬件并运行SDK
二、搭建C语言环境(SDK)

一、ZYNQ 的中断系统结构

中断控制器(GIC,General Interrupt Controller)控制源:

  1. 软中断(SGI, 16个):CPU0、1都能触发的软中断,可以通过配置来控制。

  2. 私有中断(PPI, 各5个)

  3. 共享中断(SPI):硬中断,可连接到外设。串口、IIC都可以利用中断模式进行数据的传输。主要在PS-PL应用中比较多。
    SoC 第三讲 AMP架构双核应用程序开发和软中断处理(一)
    本节将用到上面的软中断,在用软中断之前需要对GIC进行初始化,然后才能与CPU进行通信。