RISC-V產(chǎn)業(yè)化,工業(yè)場(chǎng)景難以忽視。自昉·驚鴻-7110(JH-7110)芯片量產(chǎn)交付以來(lái),賽昉科技積極推動(dòng)JH-7110在工業(yè)控制、防火墻、路由器、網(wǎng)關(guān)等工業(yè)場(chǎng)景的落地。JH-7110搭載64位四核RISC-V CPU,采用28nm工藝,工作頻率1.5GHz。JH-7110擁有極佳的PPA平衡,提供工業(yè)場(chǎng)景所需豐富接口,滿足工業(yè)寬溫要求,并且已經(jīng)實(shí)現(xiàn)量產(chǎn),可穩(wěn)定給客戶供貨。
根據(jù)賽昉科技的芯片落地經(jīng)驗(yàn),在芯片規(guī)格達(dá)標(biāo)的前提下,不同的工業(yè)場(chǎng)景將催生出數(shù)量眾多的軟件需求,最終軟件的成熟度將決定芯片能否被廣泛應(yīng)用。賽昉科技在RISC-V軟件生態(tài)建設(shè)上貢獻(xiàn)頗多。
近期,為了應(yīng)對(duì)工業(yè)自動(dòng)化、電力互聯(lián)網(wǎng)等工業(yè)場(chǎng)景對(duì)實(shí)時(shí)性的需求,賽昉科技在芯片實(shí)時(shí)性系統(tǒng)適配上取得突破性進(jìn)展!JH-7110軟件系統(tǒng)迎來(lái)重磅升級(jí),支持Linux+ RT-Thread的異構(gòu)AMP雙系統(tǒng),為芯片帶來(lái)更強(qiáng)的系統(tǒng)實(shí)時(shí)性和穩(wěn)定性,加速RISC-V工業(yè)實(shí)時(shí)解決方案落地。
一. JH-7110運(yùn)行異構(gòu)AMP
AMP,即非對(duì)稱(chēng)多處理,是指多核處理器的每個(gè)核之間相互隔離,可以相對(duì)獨(dú)立地運(yùn)行不同的操作系統(tǒng)或裸機(jī)應(yīng)用程序,例如此次的Linux + RT-Thread。這種運(yùn)行模式可提高系統(tǒng)實(shí)時(shí)性、穩(wěn)定性,降低系統(tǒng)硬件成本,通常用于要求高度定制化、實(shí)時(shí)性和可靠性的工業(yè)領(lǐng)域。
1.降低系統(tǒng)硬件成本
為了解決Linux系統(tǒng)主控實(shí)時(shí)性不足的問(wèn)題,在傳統(tǒng)應(yīng)用中通常會(huì)采取外掛單片機(jī)的方式專(zhuān)門(mén)執(zhí)行高實(shí)時(shí)性的程序,而采用AMP系統(tǒng)可以舍棄掉外置的單片機(jī)。
JH-7110搭載四核RISC-V CPU,此次實(shí)現(xiàn)的異構(gòu)AMP使得3個(gè)CPU運(yùn)行Linux,1個(gè)CPU運(yùn)行RT-Thread RTOS,從而在開(kāi)發(fā)中無(wú)需額外搭建其他系統(tǒng)硬件設(shè)備支持,僅需一套硬件電路可以實(shí)現(xiàn)復(fù)雜功能,大大降低了系統(tǒng)硬件成本。
2.提高系統(tǒng)實(shí)時(shí)性與穩(wěn)定性
在RTOS的CPU運(yùn)行實(shí)時(shí)的進(jìn)程中,把部分實(shí)時(shí)驅(qū)動(dòng)運(yùn)行在RTOS中進(jìn)行數(shù)據(jù)采集,將數(shù)據(jù)通過(guò)共享內(nèi)存方式發(fā)回到Linux上,Linux端可以運(yùn)行各種非實(shí)時(shí)的應(yīng)用程序。這種方式既能保證系統(tǒng)實(shí)時(shí)性,又能保證在Linux上的應(yīng)用進(jìn)程不受影響。
隨著工業(yè)自動(dòng)化等領(lǐng)域?qū)?shí)時(shí)性能的高要求,RTOS的需求正不斷增加。近期,Linux Kernel v6.6的PREEMPT_RT補(bǔ)丁也已正式支持RISC-V架構(gòu)。此外,賽昉科技已成功將JH-7110的大部分驅(qū)動(dòng)代碼合入v6.6的主線。
二. AMP雙系統(tǒng)(Linux + RT-Thread)示例
目前賽昉科技已展示在新一代SoC平臺(tái)昉·驚鴻-7110(JH-7110)上運(yùn)行異構(gòu)AMP雙系統(tǒng)(Linux + RT-Thread)的演示示例。
1.核間通信方式
兩核通信使用標(biāo)準(zhǔn)的virtio-base的RPMsg(Remote Processor Messaging)協(xié)議,它定義了異構(gòu)多核處理系統(tǒng)AMP中核與核之間進(jìn)行通信時(shí)所使用的標(biāo)準(zhǔn)二進(jìn)制接口。
Linux:在Linux內(nèi)核代碼中,RPMsg的代碼主要位于drivers/rpmsg/下,相關(guān)的代碼如下:
driver/rpmsg/virtio_rpmsg_bus.cdrivers/rpmsg/virtio_rpmsg_starfive.c
RT-Thread:使用開(kāi)源的rpmsg-lite代碼,也是開(kāi)源的virtio-base的RPMsg代碼,能夠按照協(xié)議和Linux收發(fā)數(shù)據(jù)。核間的IPI中斷和共享內(nèi)存配合能實(shí)現(xiàn)異構(gòu)核間的數(shù)據(jù)傳輸。RT-Thread代碼路徑如下:
bsp/starfive/jh7110/driver/rpmsg_lite
2.編譯&運(yùn)行
(1)連接Linux和RTOS的調(diào)試串口(https://doc.rvspace.org/VisionFive2/Application_Notes/RT-Thread/VisionFive_2/RT_Thread/debug_serial.html),串口的波特率均設(shè)置為115,200。
(2)將編譯(https://doc.rvspace.org/VisionFive2/Application_Notes/RT-Thread/VisionFive_2/RT_Thread/configuration.html)出來(lái)的u-boot-spl.bin.normal.out和visionfive2_fw_payload.img文件刷寫(xiě)到SPI NOR FLASH上。
(3)上電啟動(dòng):RT-Thread啟動(dòng)很快,并且運(yùn)行rpmsg linux test的測(cè)試程序,RT-Thread在等待Linux端發(fā)送IPI中斷,Linux端是Rpmsg的master,需要配置virtio queue的控制內(nèi)存和共享內(nèi)存。
RT-Thread上電啟動(dòng)
(4)啟動(dòng)Linux:?jiǎn)?dòng)linux過(guò)程中,virtio_rpmsg_bus驅(qū)動(dòng)會(huì)注冊(cè),virtio_rpmsg_starfive驅(qū)動(dòng)也會(huì)被注冊(cè),注冊(cè)完成后會(huì)發(fā)IPI中斷給RT-Thread。
Linux啟動(dòng)
RT-Thread接受到IPI中斷后,rpmsg_linux_test會(huì)繼續(xù)執(zhí)行,這時(shí)RT-Thread的finsh shell也能正常使用。
RT-Thread進(jìn)程
(5)Linux端運(yùn)行以下命令能看到 RT-thread發(fā)給Linux的IPI中斷:
cat /proc/interrupts
IPI中斷
(6)運(yùn)行以下測(cè)試程序:
rpsmg_echo
測(cè)試結(jié)果
IPI中斷情況:
cat /proc/interruptIPI5: 12 0 0 AMP rpmsg interrupts
-
Amp
+關(guān)注
關(guān)注
0文章
81瀏覽量
47160 -
RISC-V
+關(guān)注
關(guān)注
45文章
2277瀏覽量
46157 -
賽昉科技
+關(guān)注
關(guān)注
3文章
153瀏覽量
14279
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論