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