对比传统的Xilinx AMP方案和OPENAMP方案-xapp1078和ug1186【转】
转自:https://www.cnblogs.com/abolide/p/7018640.html
xapp1078创建于2013年2月。文章描述了启动运行两个内核的方法,两个cpu内核分别运行linux和bare-metal。已经过去四年,所以称其为传统的AMP方案。
该方案的关键过程:
(1)修改FSBL源码,使其能够load多个elf和bit文件,直到遇到标志Load地址后停止load,返回运行u-boot。
(2)通过配置文件image.bif将core0的u-boot.elf和core1的bare-metal.elf文件还有用于load停止的dummy bin文件都包含进来,然后运行bootgen生成BOOT.BIN。
(3)双核启动后,core1处于wfe状态。core0首先向将bare-metal.elf的运行地址写到WFE loop的检测地址,然后sev或者中断唤醒core1,之后core1跳转运行bare-metal.elf。core0从文件系统中启动linux app,与core1进行通信。
ug1186创建于2017年5月,文章介绍了在zynq上使用OpenAMP框架实现AMP的方法,两个cpu内核分别运行linux和bare-metal。称其为OpenAMP方案。master linux CPU内核通过remoteproc API来控制管理remote内核的生命周期(life cycle management LCM),为remote processor分配系统资源和创建virtIO设备。通过RPMsg API来实现不同cpu内核上运行的软件之间的通信。
该方案的关键过程:
(1)基于remoteproc和RPMsg来设计bare-metal.elf程序。
(2)bare-metal.elf加入到petalinux工程中,后续remoteproc在linux的filesystem中调用bare-metal.elf。
(3)配置Kernel相应的options来配合OpenAMP工作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
2015-12-04 理解 Memory barrier(内存屏障)【转】
2014-12-04 递归与尾递归(C语言)【转】
2014-12-04 存储器结构、cache、DMA架构分析--【原创】
2014-12-04 驱动开发--【字符设备、块设备简介】【sky原创】