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