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