NuttX操作系統(tǒng)
NuttX是免費的開源RTOS,專注于標準合規(guī)性和小尺寸。NuttX的基本版本可以在低成本和低內(nèi)存微控制器(MCU)上運行。
由于NuttX是一個POSIX RTOS,你可以在POSIX操作系統(tǒng)(如Linux或MacOS)中編寫一個應(yīng)用程序,并對其進行驗證和編譯以在NuttX上運行,而無需學(xué)習(xí)新的API。
NuttX也有許多與Linux并行的子系統(tǒng)。幾個示例包括虛擬文件系統(tǒng) (VFS)、內(nèi)存技術(shù)設(shè)備 (MTD)、音頻子系統(tǒng)和支持 USB 復(fù)合的 USB 系統(tǒng)。一些主要功能包括:
模塊 化
微內(nèi)核
完全搶占
自然可擴展
高度可配置
可輕松擴展到新的處理器架構(gòu)
實時
確定性
支持優(yōu)先級繼承
極火?芯片芯片
Linux 操作系統(tǒng) (OS) 的靈活性和實時系統(tǒng)控制硬件的確定性是安全關(guān)鍵系統(tǒng)、系統(tǒng)控制和安全應(yīng)用的關(guān)鍵。盡管典型的對稱多處理 (SMP) 實現(xiàn)提供了靈活性,但它們對于確定性性能并不理想。
PolarFire SoC FPGA 支持確定性非對稱多處理 (AMP) Linux 應(yīng)用和與內(nèi)存子系統(tǒng)兼容的多核 Linux 處理器。這支持在單個多核中央處理器單元集群中混合使用確定性實時系統(tǒng)和 Linux 操作系統(tǒng),該集群可以在運行 Linux 操作系統(tǒng)的同時以最高性能運行實時應(yīng)用程序。也就是說,此解決方案提供了一個不完全確定的高性能系統(tǒng)。
PolarFire SoC FPGA 中的 NuttX
使用AMP模式,我們現(xiàn)在能夠在PolarFire SoC FPGA中同時運行NuttX RTOS和Linux,這有助于將NuttX和Linux的優(yōu)勢整合到一個系統(tǒng)中。
NuttX RTOS在航空無人機行業(yè)非常受歡迎;它還用于各種應(yīng)用,例如智能手機和錄音機。
無人機對PX4自動駕駛軟件的需求不斷增長,Microchip的PolarFire SoC FPGA的電源效率使得在PolarFire SoC FPGA上實現(xiàn)NuttX端口非常相關(guān)和必要。
阿聯(lián)酋阿布扎比技術(shù)創(chuàng)新研究所(TII)的安全系統(tǒng)研究中心(SSRC)擁有并領(lǐng)導(dǎo)了該集成項目。SSRC首先將基本端口分包給Offcode,Offcode是為該項目提供基本編碼服務(wù)的Mi-V生態(tài)系統(tǒng)合作伙伴。這要歸功于公共RISC-V標準,開源代碼,強大的硬件,現(xiàn)有的工具鏈以及有價值的供應(yīng)商工具,如SoftConsole和Libero? SoC設(shè)計套件。NuttX組織良好,進一步提升了移植任務(wù)本身。
SSRC進一步定義了NuttX工作所需的驅(qū)動程序和功能,并在NuttX實施之前測試了PX4功能和環(huán)境。該中心與開源社區(qū)密切合作,上游內(nèi)容。SSRC的工程師也為上游NuttX內(nèi)核的開發(fā)做出了貢獻。
SSRC對內(nèi)核開發(fā)的主要貢獻包括:
RISC-V Sv39 MMU 驅(qū)動程序
在S模式下運行NuttX的配置選項
RISC-V PMP功能改進
支持CONFIG_BUILD_PROTECTED和CONFIG_BUILD_KERNEL
用于地址環(huán)境和頁面分配器的RISC-V實現(xiàn)
NuttX CONFIG_BUILD_KERNEL任務(wù)環(huán)境初始化、elf 加載器、Crt0 編譯和進程退出的更正
用于 SBI 集成的膠水邏輯
初始端口的詳細信息可在此 GitHub 社區(qū)中找到。
大多數(shù)代碼位于以下文件夾中:
arch/risc-v/src/mpfs/
板/RISC-V/MPFS/冰柱/
程序集文件mpfs_head。S 位于 arch/risc-v/src/mpfs -directory 下,包含代碼執(zhí)行的起點。安裝機器陷阱-矢量基址寄存器(mtvec)也是其中的主要步驟。它指向所有中斷和異常的陷阱處理程序。
Microchip有一個名為Hart軟件系統(tǒng)(HSS)的引導(dǎo)加載程序。它包含 DDR 內(nèi)存訓(xùn)練序列和其他硬件塊初始化,在處理任何內(nèi)存訪問之前必須到位。因此,HSS最初用于加快移植速度。
后來,所有必需的設(shè)備驅(qū)動程序和功能也被整合到NuttX中。截至 2022 年 <> 月,NuttX 還可以作為支持 OpenSBI 的引導(dǎo)加載程序。這意味著基于 NuttX 的引導(dǎo)加載程序可以在其他 harts 上啟動 U-boot 和 Linux。
現(xiàn)在,PolarFire Icicle套件支持NuttX的以下外圍驅(qū)動程序:
串行端口
通用信息總組織
SPI
脈寬調(diào)制
DMA(內(nèi)存到內(nèi)存)
除了外圍驅(qū)動程序外,它還具有所有必要的時鐘設(shè)置,計時器,DDR培訓(xùn),OpenSBI支持,通過哈特間通信(IHC)的RPMSG和其他一些功能。
AMP將Linux內(nèi)核和NuttX粘合在一起。此功能是通過遠程處理器消息傳遞 (RPMSG) 構(gòu)建的。如果一個操作系統(tǒng)使用網(wǎng)絡(luò)硬件,則另一個操作系統(tǒng)不會通過同時初始化和使用硬件來沖突。不過,可以做的是通過RPMSG框架使用該接口。但是,出于任何原因,消息可能會在不同的操作系統(tǒng)之間共享。
2022 年 <> 月,一個補丁被合并到 NuttX 中,該補丁支持兩個不同的 NuttX 操作系統(tǒng)通過自己的 RPMSG 路徑與 Linux 內(nèi)核進行通信。當然,這也需要一些小的 Linux 內(nèi)核修改。測試的設(shè)置具有以下 hart 設(shè)置:
哈特0:NuttX引導(dǎo)加載程序
Hart1:NuttX OS(獨立),使用 RPMSG 通道 1
Hart2:NuttX OS(獨立),使用 RPMSG 通道 2
Hart3:Linux 內(nèi)核
Hart4:Linux 內(nèi)核
Linux 內(nèi)核與 harts 1 和 2 上的兩個 NuttX 進行通信。如果需要編寫任何實時車輛、無人機或任何時間關(guān)鍵型任務(wù),我們建議考慮使用 NuttX 作為選項。
我們強烈推薦NuttX操作系統(tǒng)。
考慮一下將時間關(guān)鍵層合并到 NuttX 中,同時保持對 Linux 的良好關(guān)注是否對您來說是一個可行的選擇。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
48文章
7947瀏覽量
154886 -
usb
+關(guān)注
關(guān)注
60文章
8177瀏覽量
272719 -
Linux
+關(guān)注
關(guān)注
87文章
11509瀏覽量
213700
發(fā)布評論請先 登錄
Microchip發(fā)布業(yè)界首款基于 RISC-V 指令集架構(gòu)的 SoC FPGA 開發(fā)工具包
NuttX實時操作系統(tǒng)
Microchip FPGA 和基于 SoC 的 RISC-V 生態(tài)系統(tǒng)簡介
嵌入式實時操作系統(tǒng)μC_OS_在LPC1788上的移植及應(yīng)用

Microchip將啟動PolarFire片上系統(tǒng)FPGA EAP
Microchip計劃啟動PolarFire片上系統(tǒng)FPGA
嵌入式實時操作系統(tǒng)FreeRTOS在ARM7上移植實現(xiàn)

評論