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