近年來,隨著半導體產業的快速發展和技術的不斷迭代,物聯網設備種類繁多(如智能家居、工業傳感器),對算力、功耗、實時性要求差異大,單一架構無法滿足所有需求。因此米爾推出MYD-YT113i開發板(基于全志T113-i)來應對這一市場需求。 米爾基于全志T113-i核心板及開發板 part 01 T113-i芯片及OpenAMP簡介
T113-i=2×ARM A7 + 1×C906(RISC-V) + 1×DSP(HIFI 4)組成,其中兩個A7核為主核心,C906(RISC-V核)和DSP為雙副核心。而其中的RISC-V屬于超高能效副核心,標配內存管理單元,可運行RTOS或裸機程序,T113的主核運行Linux進行人機界面的交互和應用流程,而RISC-V則是后臺可進行大數據數據采集,或者相關編碼器的控制等,降低主核被中斷的次數,大大提供了主核的運行效率。每個處理器核心相互隔離,擁有屬于自己的內存,既可各自獨立運行不同的任務,又可多個核心之間進行核間通信,這些不同架構的核心以及他們上面所運行的軟件組合在一起,就成了 AMP 系統(Asymmetric Multiprocessing System 異構多處理系統)即非對稱多處理架構。 part 02 AMP系統通信機制詳解
由于兩個核心存在的目的是協同的處理,因此在異構多處理系統中往往會形成Master-Remote結構。主核心啟動后啟動從核心。當兩個核心上的系統都啟動完成后,他們之間就通過IPC(Inter Processor Communication)方式進行通信,而 RPMsg就是IPC中的一種。 在AMP系統中,兩個核心通過共享內存的方式進行通信。兩個核心通過AMP中斷來傳遞訊息。內存的管理由主核負責。
上面介紹了通訊原理,這里講解如何通訊,AMP使用RPMsg框架進行通訊,該框架用于AMP場景下處理器之間進行相互通信。OpenAMP內部實現了可用于RTOS或裸機系統中的RPMsg框架,與Linux內核的RPMsg框架兼容。 其通信鏈路建立流程如下:
下面展示一次RPMsg數據傳輸的通信過程,下面詳細說明:
RPBuf:基于共享內存和RPMsg消息通知,實現傳輸大數據傳輸的框架。RPMsg:基于VirtIO管理的共享內存,實現數據傳輸的框架。VirtIO:原本是一套用在虛擬化環境中傳輸數據的框架,這里用作共享內存(VRING)的管理。OpenAMP:OpenAMP框架為RTOS、裸機和Linux用戶空間提供了RPMsg、VirtIO、re-moteproc(未列出)的實現,并且與Linux內核兼容。Msgbox:是全志平臺提供的一套消息中斷機制,已通過linux內核中原生的mailbox框架作適配。MSGBOX_IRO_REG:Msgbox的中斷相關寄存器。buffer:表示申請到的共享內存。用戶通過操作buffer對象,可直接訪問對應的共享內存。payload memory:用來存放實際傳輸數據的共享內存,因此稱為payload(有效負載)。VRING:由Virtl0管理的一個環形共享內存。 part 03 案例與性能測試
A核與RISC-V核通訊流程如下: 1. 首先監聽端點 2. 創建端點 3. 節點通訊 linux向riscv發送 4. riscv接收數據
1. 主核測試結果: 2. 從核測試結果: 3. 通過輸出的結果可以得到: [rpmsg1] send: 496.000000Kb 20.000000ms 24.799999M/s [rpmsg1] receive : 496.000000Kb 9980.000000ms 0.049699Mb/s 發送496KB數據耗時20ms發送速率為24.79Mb/s 接收496KB數據耗時9980ms發送速率為0.049699Mb/s
采集流程如下: 1. 開啟DSP 2. DSP核打印 3. 開啟DSP后,把GPADC0引腳接入1.8V電源,此時用戶可以執行A核應用程序與DSP進行通訊,使DSP進行GPADC采集并返回數據 可以看到GPADC0收的電壓數據為1792,轉換為電壓值為:1792/1000=1.792V。 |