近年來,隨著半導(dǎo)體產(chǎn)業(yè)的快速發(fā)展和技術(shù)的不斷迭代,物聯(lián)網(wǎng)設(shè)備種類繁多(如智能家居、工業(yè)傳感器),對(duì)算力、功耗、實(shí)時(shí)性要求差異大,單一架構(gòu)無法滿足所有需求。因此米爾推出MYD-YT113i開發(fā)板(基于全志T113-i)來應(yīng)對(duì)這一市場需求。
米爾基于全志T113-i核心板及開發(fā)板
一、T113-i芯片及OpenAMP簡介
- T113-i芯片簡介
T113-i由兩顆ARM A7 、一顆C906(RISC-V)和一顆DSP(HIFI 4)組成。
C906(RISC-V核)特性:
1.主頻最高1008MHz
2.32KB I-cache+32 KB D-cache
3.操作系統(tǒng)支持裸跑和FreeRTOS實(shí)時(shí)操作系統(tǒng)
4.支持少量數(shù)據(jù)核間通訊(RPMsg)和大量核間數(shù)據(jù)(RPBuf)
- DSP(HIFI 4)特性:
1.最高主頻600MHz
2.32KB L1 I-cache+32 KB L1 D-cache?64KB?I-ram+64KB D-ram
3.操作系統(tǒng)支持裸跑和FreeRTOS實(shí)時(shí)操作系統(tǒng)
4.支持少量數(shù)據(jù)核間通訊(RPMsg)和大量核間數(shù)據(jù)(RPBuf)
- OpenAMP系統(tǒng)原理
T113-i=2×ARM A7 + 1×C906(RISC-V) + 1×DSP(HIFI 4)組成,其中兩個(gè)A7核為主核心,C906(RISC-V核)和DSP為雙副核心。而其中的RISC-V屬于超高能效副核心,標(biāo)配內(nèi)存管理單元,可運(yùn)行RTOS或裸機(jī)程序,T113的主核運(yùn)行Linux進(jìn)行人機(jī)界面的交互和應(yīng)用流程,而RISC-V則是后臺(tái)可進(jìn)行大數(shù)據(jù)數(shù)據(jù)采集,或者相關(guān)編碼器的控制等,降低主核被中斷的次數(shù),大大提供了主核的運(yùn)行效率。每個(gè)處理器核心相互隔離,擁有屬于自己的內(nèi)存,既可各自獨(dú)立運(yùn)行不同的任務(wù),又可多個(gè)核心之間進(jìn)行核間通信,這些不同架構(gòu)的核心以及他們上面所運(yùn)行的軟件組合在一起,就成了 AMP 系統(tǒng)(Asymmetric Multiprocessing System 異構(gòu)多處理系統(tǒng))即非對(duì)稱多處理架構(gòu)。
二、AMP系統(tǒng)通信機(jī)制詳解
- AMP通信原理
由于兩個(gè)核心存在的目的是協(xié)同的處理,因此在異構(gòu)多處理系統(tǒng)中往往會(huì)形成Master-Remote結(jié)構(gòu)。主核心啟動(dòng)后啟動(dòng)從核心。當(dāng)兩個(gè)核心上的系統(tǒng)都啟動(dòng)完成后,他們之間就通過IPC(Inter Processor Communication)方式進(jìn)行通信,而 RPMsg就是IPC中的一種。
在AMP系統(tǒng)中,兩個(gè)核心通過共享內(nèi)存的方式進(jìn)行通信。兩個(gè)核心通過AMP中斷來傳遞訊息。內(nèi)存的管理由主核負(fù)責(zé)。
- 使用 RPMsg進(jìn)行核間通信
RPMsg整體通訊框架
上面介紹了通訊原理,這里講解如何通訊,AMP使用RPMsg框架進(jìn)行通訊,該框架用于AMP場景下處理器之間進(jìn)行相互通信。OpenAMP內(nèi)部實(shí)現(xiàn)了可用于RTOS或裸機(jī)系統(tǒng)中的RPMsg框架,與Linux內(nèi)核的RPMsg框架兼容。
其通信鏈路建立流程如下:
1.RTOS 端調(diào)用 rpmsg_create_ept 創(chuàng)建指定 name 的端點(diǎn)。
2.Linux 端 rpmsg core 層收到端點(diǎn)創(chuàng)建消息,調(diào)用 rpmsg_register_device 將其作為一個(gè)設(shè)備注冊到 rpmsg bus。
3.Linux 端 rpmsg bus 匹配到相應(yīng)的驅(qū)動(dòng),觸發(fā)其 probe 函數(shù)。
4.Linux 端驅(qū)動(dòng) probe 函數(shù)完成一些資源的分配以及文件節(jié)點(diǎn)的生成。
5.Linux 端驅(qū)動(dòng)的 probe 函數(shù)調(diào)用完后,rpmsg bus 會(huì)回復(fù)一個(gè) ACK。
6.RTOS 端收到 ACK 后設(shè)置端點(diǎn)的狀態(tài),此時(shí)使用 is_rpmsg_ept_ready 函數(shù)會(huì)返回 true。
RPMsg數(shù)據(jù)傳輸流程如下:
下面展示一次RPMsg數(shù)據(jù)傳輸?shù)耐ㄐ胚^程,下面詳細(xì)說明:
1.arm端把數(shù)據(jù)拷貝到buffer中,在初始化時(shí)已經(jīng)將buffer和payload memory地址綁定,因此數(shù)據(jù)拷貝后相當(dāng)于存放到了payloadmemory中。
2.在消息傳輸命令后加上數(shù)據(jù)在payload memory中的起始地址和長度,組成數(shù)據(jù)包,調(diào)用RPMsg接口發(fā)送。
RPBuf:基于共享內(nèi)存和RPMsg消息通知,實(shí)現(xiàn)傳輸大數(shù)據(jù)傳輸?shù)目蚣堋?/p>
RPMsg:基于VirtIO管理的共享內(nèi)存,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)目蚣堋?/p>
VirtIO:原本是一套用在虛擬化環(huán)境中傳輸數(shù)據(jù)的框架,這里用作共享內(nèi)存(VRING)的管理。
OpenAMP:OpenAMP框架為RTOS、裸機(jī)和Linux用戶空間提供了RPMsg、VirtIO、re-moteproc(未列出)的實(shí)現(xiàn),并且與Linux內(nèi)核兼容。
Msgbox:是全志平臺(tái)提供的一套消息中斷機(jī)制,已通過linux內(nèi)核中原生的mailbox框架作適配。
MSGBOX_IRO_REG:Msgbox的中斷相關(guān)寄存器。
buffer:表示申請到的共享內(nèi)存。用戶通過操作buffer對(duì)象,可直接訪問對(duì)應(yīng)的共享內(nèi)存。payload memory:用來存放實(shí)際傳輸數(shù)據(jù)的共享內(nèi)存,因此稱為payload(有效負(fù)載)。VRING:由Virtl0管理的一個(gè)環(huán)形共享內(nèi)存。
三、案例與性能測試
- A核與RISC-V核通訊流程
A核與RISC-V核通訊流程如下:
1. 首先監(jiān)聽端點(diǎn)
2. 創(chuàng)建端點(diǎn)
3. 節(jié)點(diǎn)通訊
linux向riscv發(fā)送
4. riscv接收數(shù)據(jù)
- A核與RISC-V核數(shù)據(jù)傳輸性能測試
A核與RISC-V核數(shù)據(jù)傳輸性能測試,使用rpmsg_test命令對(duì)rpmsg進(jìn)行性能測試,測試發(fā)送方向和接收方向各自的耗時(shí)以及速率。
1. 主核測試結(jié)果:
2. 從核測試結(jié)果:
3. 通過輸出的結(jié)果可以得到:
[rpmsg1] send: 496.000000Kb 20.000000ms 24.799999M/s
[rpmsg1] receive : 496.000000Kb 9980.000000ms 0.049699Mb/s
發(fā)送496KB數(shù)據(jù)耗時(shí)20ms發(fā)送速率為24.79Mb/s
接收496KB數(shù)據(jù)耗時(shí)9980ms發(fā)送速率為0.049699Mb/s
- DSP GPADC采集測試
采集流程如下:
1. 開啟DSP
2. DSP核打印
3. 開啟DSP后,把GPADC0引腳接入1.8V電源,此時(shí)用戶可以執(zhí)行A核應(yīng)用程序與DSP進(jìn)行通訊,使DSP進(jìn)行GPADC采集并返回?cái)?shù)據(jù)
可以看到GPADC0收的電壓數(shù)據(jù)為1792,轉(zhuǎn)換為電壓值為:1792/1000=1.792V。
米爾T113-i核心板配置型號(hào)
表?MYC-YT113-i核心板選型表
米爾T113-i開發(fā)板配置型號(hào)
表?MYD-YT113-i開發(fā)板選型表
如需了解板卡的具體介紹,您可以通過訪問以下米爾電子官網(wǎng)鏈接了解更多:https://www.myir.cn/sho?ws/148/78.html