OpenAMP簡(jiǎn)介
通常在AMP(非對(duì)稱(chēng)多處理)配置中,會(huì)采用在不同的處理核上運(yùn)行不同的軟件環(huán)境并執(zhí)行各自的代碼程序,各核心之間通力合作實(shí)現(xiàn)處理器性能的提升。在AMP系統(tǒng)中,所謂的主處理器通常是指最先啟動(dòng)且主要負(fù)責(zé)管理其他CPU以及這些CPU上軟件環(huán)境的CPU處理器。而遠(yuǎn)程處理器簡(jiǎn)單的講就是指被主核所支配的CPU。主軟件環(huán)境通常需要進(jìn)行遠(yuǎn)程核心的管理以及任務(wù)調(diào)度,在需要進(jìn)行計(jì)算任務(wù)分配時(shí),將選擇性地驅(qū)動(dòng)遠(yuǎn)程內(nèi)核上的遠(yuǎn)程軟件環(huán)境,并交代任務(wù)信息。
OpenAMP軟件框架為開(kāi)發(fā)AMP系統(tǒng)提供了必要的API函數(shù)。OpenAMP 是Mentor Graphics 與賽靈思公司為了使在AMP系統(tǒng)的設(shè)計(jì)中開(kāi)發(fā)出的RTOS和裸機(jī)程序能夠與開(kāi)源Linux社區(qū)提供的接口進(jìn)行互通訊,而共同通過(guò)的一個(gè)標(biāo)準(zhǔn)化的嵌入式多核框架。的全稱(chēng)是 ,即開(kāi)源的非對(duì)稱(chēng)多處理框架。OpenAMP框架提供了非對(duì)稱(chēng)多處理系統(tǒng)軟件開(kāi)發(fā)所需的軟件組件。OpenAMP框架是一種軟件框架,這種軟件框架能夠?yàn)榉菍?duì)稱(chēng)多處理(AMP)系統(tǒng)開(kāi)發(fā)人員提供三大重要組件:
l 該組件是RPMsg組件的實(shí)現(xiàn)基礎(chǔ),在使用Remoteproc和RPMsg進(jìn)行核間通信時(shí)使用到了這個(gè)概念。在后面會(huì)講解Virtio的實(shí)現(xiàn)原理。
l :該組件用于主機(jī)上,實(shí)現(xiàn)對(duì)遠(yuǎn)程處理器及其相關(guān)軟件環(huán)境進(jìn)行生命周期管理(LCM),說(shuō)白了就是能夠?qū)h(yuǎn)程處理器實(shí)現(xiàn)啟動(dòng)和關(guān)閉、加載遠(yuǎn)程處理器運(yùn)用程序到內(nèi)存適合位置,并完成virtio和RPMSG設(shè)備的注冊(cè)等。
l :實(shí)現(xiàn)多核處理器IPC通信的通道,基于virtio組件實(shí)現(xiàn)。
軟件框架為開(kāi)發(fā)人員提的標(biāo)準(zhǔn)化接口使得在AMP結(jié)構(gòu)中設(shè)計(jì)和管理軟硬件變得更為簡(jiǎn)單。和基礎(chǔ)架構(gòu)最初是由德州儀器設(shè)計(jì)開(kāi)發(fā)的,并專(zhuān)門(mén)用在內(nèi)核。使用該基礎(chǔ)架構(gòu)可以實(shí)現(xiàn)在主軟件環(huán)境下對(duì)遠(yuǎn)程軟件環(huán)境進(jìn)行生命周期管理并進(jìn)行核心間的通訊。但是,所提供的這些基礎(chǔ)架構(gòu)在一定程度上存在著局限性。首先,基礎(chǔ)架構(gòu)通常都是默認(rèn)將作為其主操作系統(tǒng),然而并不支持把作為非對(duì)稱(chēng)多處理結(jié)構(gòu)配置中的遠(yuǎn)程軟件環(huán)境。另外,和API只能從系統(tǒng)的內(nèi)核空間中獲得,由于缺乏相應(yīng)的等效API或庫(kù),這些組件并沒(méi)能用在其他的一些操作系統(tǒng)上,這造成了適用范圍上的局限性。
軟件框架很好的解決了以上的問(wèn)題。該框架是和賽靈思共同通過(guò)地一個(gè)開(kāi)源項(xiàng)目,其源代碼可以在GitHub(https://github.com/OpenAMP/open-amp)上獲得或從該文檔相同目錄下src文件夾中獲得(open-amp-openamp_zynq_kernel_3.17)。
框架能夠被很好地使用在實(shí)時(shí)操作系統(tǒng)或者裸機(jī)軟件環(huán)境中,使得在這些軟件環(huán)境下能夠使用與Linux系統(tǒng)具有相同功能的和,且之間在使用上具有很好的兼容性??蚣苤械暮突A(chǔ)架構(gòu)使用VirtIO作為傳輸抽象層。下圖顯示了框架支持的各種軟件環(huán)境及配置,由圖所示,該框架可以被用在、或者裸機(jī)環(huán)境下,通過(guò)和組件實(shí)現(xiàn)不同軟件環(huán)境之間的通訊。
嵌入式多核框架同樣可以作為獨(dú)立庫(kù)使用。允許主處理器RTOS或者裸機(jī)軟件環(huán)境中的程序?qū)h(yuǎn)程處理器進(jìn)行生命周期管理并且使用與遠(yuǎn)程處理器進(jìn)行通信。
該系列主要基于Linux master/FreeRTOS remote配置,講解如何使用OpenAMP框架實(shí)現(xiàn)多核處理器核間通信,包括開(kāi)發(fā)環(huán)境的搭建、工程的建立和編譯等,并在需要的時(shí)候介紹所涉及的Virtio、RPMsg組件的工作原理。在開(kāi)始設(shè)計(jì)開(kāi)發(fā)之前,首先需要搭建相應(yīng)的開(kāi)發(fā)環(huán)境。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)