上传者: 37703067
|
上传时间: 2025-01-19 09:44:24
|
文件大小: 1.92MB
|
文件类型: PDF
【XAPP1078-AMP-Linux-Bare-Metal 中文版】是关于在赛灵思Zynq-7000 AP SoC平台上实现非对称多处理(AMP)的一个技术文档,主要讲解如何配置和管理双核Cortex-A9处理器,其中一个运行Linux操作系统,另一个运行裸金属应用。在AMP配置中,两个处理器可以独立运行各自的软件栈,并通过共享内存进行通信。
在Zynq-7000 SoC中,每个Cortex-A9处理器拥有私有资源,如L1缓存、私有外围中断(PPIs)、内存管理单元(MMU)和私有定时器,同时也有共享资源,如中断控制器分配器(ICD)、DDR内存、片上存储器(OCM)、全局定时器和监听控制单元(SCU)及L2缓存。在AMP配置下,设计时需确保避免两个CPU对这些共享资源的竞争。通常,CPU0被视为主控,负责管理共享资源,而CPU1如果需要使用共享资源,需通过与CPU0通信来请求控制。
文档详述了一个参考设计,该设计使用Xilinx Platform Studio (XPS) 14.3创建,并包含了使用Xilinx Software Development Kit (SDK)构建的软件。设计文件可供设计师检查、重建或作为新设计的起点。此外,预构建和预实现的文件适用于Zynq-7000 ZC702演示平台,方便快速入门。
为简化设计并防止共享资源问题,CPU1上的裸机应用程序进行了特殊修改,限制其对共享资源的访问。例如:
1. DDR内存:Linux仅使用0x00000000到0x2FFFFFFF的地址空间,而CPU1使用0x30000000到0x3FFFFFFF的地址空间。
2. L2 Cache:CPU1不使用L2 Cache,以减少潜在冲突。
3. 中断控制分配器(ICD):来自可编程逻辑(PL)核心的中断直接路由至CPU1的PPI控制器,使得CPU1能独立处理中断。
4. 定时器:CPU1使用专用定时器来实现心跳功能。
5. OCM:每个处理器都有独立的OCM区域,且禁用了对OCM的缓存访问,以确保确定性的通信。
通过以上措施,实现了在Zynq SoC处理器上Linux和裸机系统的协同工作,为多核异构计算提供了一个实用的参考框架。这份文档对于理解Zynq-7000 SoC上的AMP设计原理和实践操作具有重要的指导价值。