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