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