V853芯片包含兩個CPU。一個是主核心Arm A7 CPU,運行Tina Linux(全志自研Linux)系統,為芯片主系統;一個是RISC-V E907輔助CPU,運行Melis(全志自研RTOS)系統,主要功能是提供通用算力補充、輔助 Linux 實現快起和低功耗管理等功能。
A7 - Linux系統
V853主核心 A7上運行的是Tina Linux系統。Tina Linux是全志針對AIoT類產品,基于Linux內核深度定制的嵌入式系統。
在 Tina Linux 中,提供 AMP 與 RPMsg 對接 E907
Linux remoteproc 管理控制 E907
RPMsg 與 E907 通訊
E907 - RTOS系統
V853 輔助核心 E907 上運行的是全志自研 RTOS 系統 Melis。其獨立于 A7 主核心中的 Linux 系統。可以獨立運行。
在 E907 Melis 中,提供 OpenAMP 軟件框架來與 A7 Linux 系統進行通信。
提供了處理器的生命周期管理(LCM,Life Cycle Management),與 Linux 的 remoteproc 兼容
提供了處理器間的消息傳輸機制,與 Linux 的 RPMsg 兼容
異構系統啟動流程
首先,由芯片內部的 BORM 尋找啟動介質,在 V853 開發板上便是 eMMC 儲存器。找到啟動介質后會運行其中的 BOOT0 代碼。BOOT0 會在 A7 主核心中運行 Linux 系統,也會在 E907 核心中運行 RTOS 系統。啟動的兩個系統是獨立運行的。
異構系統的通信
V853 的異構系統通訊在硬件上使用的是 MSGBOX,在軟件層面上使用的是 AMP 與 RPMsg 通訊協議。其中 A7 上基于 Linux 標準的 RPMsg 驅動框架,E907基于 OpenAMP 異構通信框架。
V853 所帶有的 A7 主核心與 E907 輔助核心是完全不同的兩個核心,為了最大限度的發揮他們的性能,協同完成某一任務,所以在不同的核心上面運行的系統也各不相同。這些不同架構的核心以及他們上面所運行的軟件組合在一起,就成了 AMP 系統 (Asymmetric Multiprocessing System, 異構多處理系統)。
由于兩個核心存在的目的是協同處理,因此在異構多處理系統中往往會形成 Master - Remote 結構。主核心啟動后再啟動輔助核心。當兩個核心上的系統都啟動完成后,他們之間就通過 IPC(Inter Processor Communication)方式進行通信,而 RPMsg 就是 IPC 中的一種。
在AMP系統中,兩個核心通過共享內存的方式進行通信。兩個核心通過 AMP 中斷來傳遞訊息。內存的管理由主核負責。
AMP 系統在每個通信方向上都有兩個緩沖區,分別是 USED 和 AVAIL,這個緩沖區可以按照 RPMsg 中消息的格式分成一塊一塊鏈接形成一個環。
當主核需要和從核進行通信的時候可以分為四步:
主核先從USED中取得一塊內存(Allocate)
將消息按照消息協議填充
將該內存鏈接到 AVAIL 緩沖區中(Send)
觸發中斷,通知輔助核有消息處理
反之,從核需要和主核通信的時候也類似:
主核先從AVAIL中取得一塊內存(Allocate)
將消息按照消息協議填充
將該內存鏈接到 USED 緩沖區中(Send)
觸發中斷,通知主核有消息處理。
既然 RPMsg 是一種信息交換的協議,與TCP/IP類似,RPMsg 協議也有分層,主要分為三層,分別是傳輸層、MAC層和物理層。
其中 MAC層 的 VirtIO 是一種I/O 半虛擬化解決方案,是一套通用 I/O 設備虛擬化的程序,是對半虛擬化 Hypervisor 中的一組通用 I/O 設備的抽象。提供了一套上層應用與各 Hypervisor 虛擬化設備之間的通信框架和編程接口,減少跨平臺所帶來的兼容性問題,大大提高驅動程序開發效率。
RPMsg 總線上的消息都具有以下結構,包含消息頭和數據兩個固定的部分,該消息格式的定義位于drivers/rpmsg/virtio_rpmsg_bus.c中,具體定義如下:
struct rpmsg_hdr { u32 src; u32 dst; u32 reserved; u16 len; u16 flags; u8 data[];} __packed;
異構系統的控制
在異構系統中,不止需要消息的傳輸,還需要相關控制。例如主核對輔助核心的開啟,加載固件,關閉等等。這就需要用到 remoteproc 框架。
remoteproc 框架支持對不同平臺,不同架構的處理器進行控制,可以監控輔助核心的運行情況。
對于 V853 來說,remoteproc 用于對 E907 進行生命周期管理,一般來說包含有加載固件、 檢測遠端處理器是否崩潰等功能。它在加載遠端處理器的固件時,會根據固件中定義的 resource table 來申請資源,并創建 VirtIO 設備。
審核編輯 :李倩
-
處理器
+關注
關注
68文章
19440瀏覽量
231322 -
Linux系統
+關注
關注
4文章
596瀏覽量
27526 -
通訊
+關注
關注
9文章
916瀏覽量
35113
原文標題:詳解全志V853上的ARM A7和RISC-V E907之間的通信方式
文章出處:【微信號:gh_79acfa3aa3e3,微信公眾號:全志在線】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Arm與RISC-V架構的優劣勢比較
RISC-V 與 ARM 架構的區別 RISC-V與機器學習的關系
全志T536系列處理器特性概述 集成RISC-V E907協處理器
![全志T536系列處理器特性概述 集成<b class='flag-5'>RISC-V</b> <b class='flag-5'>E907</b>協處理器](https://file1.elecfans.com/web1/M00/F5/54/wKgaoWc67QGAAGPdAAEzKNH0ZmA144.jpg)
評論