隨著市場(chǎng)對(duì)嵌入式設(shè)備的功能需求越來(lái)越高,集成了嵌入式處理器和實(shí)時(shí)處理器的主控方案日益增多,以便更好地平衡性能與效率——實(shí)時(shí)核負(fù)責(zé)高實(shí)時(shí)性任務(wù),A核處理復(fù)雜任務(wù),兩核間需實(shí)時(shí)交換數(shù)據(jù)。然而在數(shù)據(jù)傳輸方面,傳統(tǒng)串行接口盡管成本較低,但其傳輸速率相對(duì)較慢;反之,并行接口雖然傳輸速度快,但成本卻比較高。因此,單芯片多核異構(gòu)處理器就成為能夠滿足需求的理想選擇。 RISC-V作為一種開(kāi)源指令集架構(gòu),以其簡(jiǎn)潔性、一致性、可擴(kuò)展性以及高編譯效率,為實(shí)時(shí)性處理場(chǎng)景提供了強(qiáng)大的支持。將A核與RISC-V核結(jié)合作為單芯多核異構(gòu)方案,可以有效利用RISC-V的這些優(yōu)勢(shì),實(shí)現(xiàn)高性能與高實(shí)時(shí)性的有效結(jié)合。 本文將以OK113i-S開(kāi)發(fā)板為例,為大家介紹RISC-V核的資源和應(yīng)用案例。 1.OK113i-S開(kāi)發(fā)板的RISC-V核 飛凌嵌入式OK113i-S開(kāi)發(fā)板是一款基于全志T113-i工業(yè)級(jí)處理器開(kāi)發(fā)的高性價(jià)比開(kāi)發(fā)板,集成了雙核Cortex-A7 CPU、64位玄鐵C906 RISC-V和DSP,能夠提供高效的計(jì)算能力和性價(jià)比。尤為值得一提的是,其內(nèi)置的RISC-V核心作為一款超高能效的實(shí)時(shí)處理器,主頻峰值可達(dá)1008MHz,并標(biāo)準(zhǔn)配備了內(nèi)存管理單元,能夠流暢運(yùn)行RTOS系統(tǒng)或裸機(jī)程序,進(jìn)一步提升了應(yīng)用靈活性。 1.1 RISC-V核的特性 (1) 最高主頻可達(dá)1008MHz; (2) 32KB指令緩存; (3) 32KB數(shù)據(jù)緩存; (4) 可運(yùn)行于超大容量的DDR ... ... 1.2 RISC-V核的接口資源 2.應(yīng)用實(shí)例 2.1 SPI數(shù)據(jù)收發(fā) 本案例為SPI回環(huán)測(cè)試,即將SPI的MOSI和MISO兩個(gè)引腳短接進(jìn)行數(shù)據(jù)收發(fā)。 (1) 功能介紹 (2) 效果實(shí)現(xiàn) SPI發(fā)送和接收的FIFO均為64個(gè),在底層hal庫(kù)程序中,當(dāng)數(shù)據(jù)長(zhǎng)度小于64字節(jié)時(shí),采用中斷方式,當(dāng)FIFO大于等于64字節(jié)時(shí),采用DMA模式。 中斷方式傳輸效果: DMA方式傳輸效果: 在DMA傳輸方式下,SPI速率默認(rèn)為5Mbit/s,案例中平均傳輸速率為580.43KB/s,即4.6Mbit/s,接近理論值。 2.2 核間通信RPbuf RPbuf是全志基于RPMsg所實(shí)現(xiàn)一套高帶寬數(shù)據(jù)傳輸?shù)目蚣堋?/font>RPMsg是基于共享內(nèi)存和Msgbox中斷實(shí)現(xiàn)的一套核間通信機(jī)制,RPMsg除去頭部的16字節(jié)數(shù)據(jù)外,單次最多可發(fā)送496字節(jié)有效數(shù)據(jù)。因此,全志基于RPMsg實(shí)現(xiàn)了一套大數(shù)據(jù)量傳輸機(jī)制RPbuf,實(shí)現(xiàn)原理是在DDR中放置傳輸?shù)臄?shù)據(jù),通過(guò)RPMsg傳輸DDR的地址和大小。我們以單次32KB數(shù)據(jù)傳輸為例進(jìn)行展示。 (1) 功能介紹 • VirtIO:一套虛擬化數(shù)據(jù)傳輸框架,用于管理共享內(nèi)存VRING; • VRING:由VirtIO管理的一個(gè)環(huán)形共享內(nèi)存; • Msgbox:全志提供的一套消息中斷機(jī)制,已與linux內(nèi)核中原生的mailbox框架適配; • MSGBOX_IRQ:Msgbox中斷; • RPMsg:基于VirtIO管理的共享內(nèi)存所實(shí)現(xiàn)一套少量數(shù)據(jù)傳輸?shù)目蚣埽?/font> • RPbuf:全志基于RPMsg所實(shí)現(xiàn)一套大量數(shù)據(jù)傳輸?shù)目蚣堋?/font> 由上圖可知(以RISC-V核向A核發(fā)送數(shù)據(jù)為例),RPbuf首先將數(shù)據(jù)放置在DDR中,再將緩沖區(qū)首地址和大小通過(guò)RPMsg發(fā)送至A核(RPMsg將緩沖區(qū)首地址和大小放入VRING,然后請(qǐng)求Msgbox中斷,A核收到這個(gè)中斷后,在回調(diào)函數(shù)中使用RPMsg接口函數(shù)來(lái)從VRING中取出cmd)。 隨后A核從cmd handler中獲取緩沖區(qū)內(nèi)的地址和長(zhǎng)度,最后在應(yīng)用層讀取數(shù)據(jù),從而完成雙核間的數(shù)據(jù)傳輸。 (2) 效果展示由上圖測(cè)試效果可以看到,帶寬大約為27~30Mbps。 以上就是飛凌嵌入式OK113i-S開(kāi)發(fā)板RISC-V核部分外設(shè)的使用方法,是不是感覺(jué)和單片機(jī)的開(kāi)發(fā)一樣簡(jiǎn)單方便呢?點(diǎn)擊下圖進(jìn)入飛凌嵌入式官網(wǎng),即可獲得OK113i-S開(kāi)發(fā)板的SDK及RISC-V核的資料。 |