【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设计原理和实践操作具有重要的指导价值。
2025-01-19 09:44:24 1.92MB linux
1
内含IEEE英文论文格式模板,可以算是标准的,不过仅供参考。
Building_bare-metal_ARM_with_GNU, 经典的在GNU Linux环境下ARM裸机开发教程。
2022-07-20 10:41:52 838KB bare embedded arm GNU
1
win10 使用 fpc 编译Pascal Bare Bones 操作系统
2022-02-10 21:02:32 1.81MB pascal fpc OS
1
ELI: Bare-Metal Performance for I/O Virtualization
2021-12-30 21:40:44 722KB ELI
1
基于IAR 编译器的 EHCI usb host驱动代码,从前为一个款MPU做的工作,适用,无LINUX操作系统的应用,而又需求usb host功能,非常有用的代码。
2021-12-17 13:39:41 11.84MB bare metal  usb host
1
最小的操作系統來學習 x86 系統編程
2021-09-15 13:02:17 832KB 操作系統 組合語言
1
包含stm32移植modbus需要的上位机,相关代码
2021-06-30 13:03:25 16.51MB stm32 移植modbus
BareConductive Python SDK 一个 python sdk,允许从执行 DataStream 应用程序的裸导电板读取。 您有两个文件: 裸导电.py:sdk本身 bcserver.py:一个 websocket 服务器,能够以 json 格式提供裸导读数 这是在 2015 年巴塞罗那音乐黑客日期间开发的粗略实现。还有很多需要改进的地方。 也是我的第一个 Python 代码,所以欢迎提出任何建议:)
2021-05-29 16:02:45 7KB Python
1