在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Nuttx實時操作系統學習筆記

CHANBAEK ? 來源: 非典型技術宅 ? 作者: 非典型技術宅 ? 2023-11-24 09:53 ? 次閱讀

之前在論壇看到過一篇帖子,說怎么在 STM32 上移植 Linux ,帖子寫了很長,最后才發現使用的 uclinux,而且還是只啟動一個 uboot。

現在想想為什么需要在 STM32 這種 MCU 上移植 Linux 呢,個人猜測可能是因為 Linux 環境豐富的組件和軟件可移植性吧。

可是如果有一個 mini 版的 Linux 系統可以用呢,而且還不需要移植,上手即用,這個就是 Nuttx。

NUTTX 簡介

NuttX 可拓展的實時操作系統,在2017年由 Gregory Nutt 發布, 并在2019年正式進入Apache基金會,成為 Apache 孵化項目。

它最大的特點是:

  • 高度可擴展性 :Nuttx 支持8位到64位多種 CPU,其功能全部可進行裁剪和配置,可根據需要選擇所需的組件。
  • 合規性 :Nuttx 的系統 API 原生支持標準 POSIX 接口和完整的 C 標準庫,這讓一些 Linux/Unix 的程序可以很方便的移植到 Nuttx 中使用,而不需要做太多更改。

(吐槽一下:在之前使用其他 RTOS 的 Posix 接口使用體驗并不太友好:FreeRTOS 支持的 POSIX 接口僅包含線程的的部分,缺少文件按系統支持使用總感覺有點雞肋。RT-Thread 在組件中支持了 POSIX 線程接口也有文件系統支持,但是使用的時候總會有一兩處不同讓人心煩意亂)

除此之外 Nuttx 還有豐富的系統組件:

  • 文件系統 :Nuttx 支持多種不同的文件系統,包括但不限于 LittleFS、 ROMFS、NFS、FATFS 等等,甚至你還可以在 Nuttx 中掛載一個 FTP 服務器~
  • 設備驅動 :Nuttx 提供了豐富統一的設備和總線驅動,在不同芯片平臺可使用相同的方式訪問設備。包括網絡USBSDIO、TFT 等多種總線或者設備。
  • 網絡支持 :Nuttx 中支持了 IPv4、IPv6、TCP/IP、ICMP、BT、BLE 等多種協議棧,還支持 DHCP、SMTP、Telnet 、FTP、HTTP 等多種服務端和客戶端,在使用中可無縫對接 Linux 程序。
  • 多核支持 :在一些復雜應用的所使用 SOC,往往不止一個 CPU,Nuttx 中基于 OpenAMP 提供了一個強大的多核框架,能夠在使用時完全忽略多核差異。

支持的平臺

根據官方的文檔,現在 Nuttx 已經支持了 16 種不同芯片架構,累計 280+ 種芯片。包括 TINXP、ST、樂鑫在內的眾多常用芯片都已支持在內。

更重要的是 Nuttx 支持,在電腦中使用模擬器運行 nuttx。在開發時先在 sim 中調試驗證完成后,再使用硬件進行調試,能夠提高開發效率和縮短開發時間。

快速開始

開發 Nuttx 推薦使用 Ubuntu 20.04 進行開發,在 windows 中可以使用 wsl2 安裝 Ubuntu 20.04 可獲得相同體驗。以下以 WSL2 (Ubuntu 20.04)為例進行說明。

安裝開發環境

安裝編譯工具: 由于 nuttx 在編譯時會使用到一些額外的工具,所以需要提前安裝依賴的工具。(其實下面有些也不常用。。)

sudo apt install 
bison flex gettext texinfo libncurses5-dev libncursesw5-dev 
gperf automake libtool pkg-config build-essential gperf genromfs 
libgmp-dev libmpc-dev libmpfr-dev libisl-dev binutils-dev libelf-dev 
libexpat-dev gcc-multilib g++-multilib picocom u-boot-tools util-linux
sudo apt install kconfig-frontends
sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi

下載代碼

mkdir nuttx-learning
cd nuttx-learning
git clone --depth=1 -b nuttx-10.2.0 https://github.com/apache/incubator-nuttx.git nuttx
git clone --depth=1 -b nuttx-10.2.0 https://github.com/apache/incubator-nuttx-apps apps

配置編譯

在 Nuttx 的代碼中默認包含所有支持的芯片驅動,所有無需下載額外的代碼,只要根據需要選擇你需要使用配置即可:

# 進入 nuttx 目錄
cd nuttx
# c查看所有可用的配置
./tools/configure.sh -L

輸入命令后會打印非常多配置,以 sim:minibaisc 為例,其中冒號前面的 sim 表示使用芯片,冒號后面的 minibasic 表示具體配置名稱。

sim:minibasic 表示在模擬器中運行的最小程序配置,它編譯完后它只包含一個 shell 和一個 hello world。

# 生成指定配置的配置信息
./tools/configure.sh -l sim:minibasic
# 編譯程序
make -j

編譯完成后,在 nuttx 目錄下(執行 make 的當前目錄),會生成一個 ./nuttx 文件。

圖片

運行 ./nuttx 后會出現一個新的 shell,這個是 Nuttx 的終端 nsh,輸入 help 命令可查看當前可用命令。

輸入 hello 后按回車,即執行 hello 的程序,然后打印出 hello world。退出 nsh 需要使用命令 poweroff,而不能使用 Ctrl-C 結束程序。

修改文件

hello 程序所在位置為:apps/examples/hello/hello_main.c 中,打開文件可以可進行修改然后編譯運行。

將我之前移植 FreeRTOS 時所自帶的 Posix 測試程序,替換 hello_main.c 的內容,修改入口函數名為 main,然后重新編譯運行。

無需任何移植,即可完美兼容 POSIX 接口的程序。

圖片

結語

這是我關于 Nuttx 學習記錄的第一篇文章,如有不嚴謹或者錯誤的地方歡迎大家指出。
在下一篇會講到如何新建一個自己的工程以及如何修改 Nuttx 的配置,給 Nuttx 添加功能。

該項目的兩個倉庫,我已合并成一個 github 倉庫方便下載,后續學習記錄的代碼和筆記都會同步到該倉庫,有需要可點文末閱讀原文自取。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10878

    瀏覽量

    212166
  • Linux
    +關注

    關注

    87

    文章

    11319

    瀏覽量

    209830
  • STM32
    +關注

    關注

    2270

    文章

    10906

    瀏覽量

    356560
  • 移植
    +關注

    關注

    1

    文章

    379

    瀏覽量

    28150
  • 實時操作系統

    關注

    1

    文章

    199

    瀏覽量

    30776
收藏 人收藏

    評論

    相關推薦

    實時操作系統nuttx源碼

    實時操作系統nuttx源碼
    發表于 05-07 16:43

    嵌入式Linux操作系統學習規劃,不看肯定后悔

    嵌入式Linux操作系統學習規劃,不看肯定后悔
    發表于 04-28 06:22

    NuttX實時操作系統簡介

    NuttX 介紹NuttX 實時操作系統NuttX 是一個實時
    發表于 08-05 08:27

    NuttX實時操作系統

    (嵌入式 實時操作系統 rtos nuttx 7.1)NuttX 介紹轉載請注明出處: NuttX 實時
    發表于 08-06 07:53

    探討嵌入式操作系統

    嵌入式操作系統學習筆記
    發表于 10-27 06:56

    NuttX實時操作系統有哪些特征呢

    NuttX是什么?NuttX實時操作系統有哪些特征?
    發表于 11-03 06:34

    有關NuttX實時操作系統的基本知識匯總

    NuttX是什么?NuttX實時操作系統有哪些關鍵特征?
    發表于 11-04 06:14

    NuttX實時操作系統的關鍵特征有哪些呢

    NuttX是什么?NuttX實時操作系統的關鍵特征有哪些呢?
    發表于 11-04 07:08

    嵌入式Linux操作系統學習規劃

    嵌入式Linux操作系統學習規劃ARM+LINUX路線,主攻嵌入式Linux操作系統及其上應用軟件開發目標:(1) 掌握主流嵌入式微處理器的結構與原理(初步定為arm9)(2) 必須掌握一個嵌入式
    發表于 11-05 06:45

    實時操作系統的行為同步是什么意思

    《基于嵌入式實時操作系統的編程技術》筆記清單:第三章任務劃分.《基于嵌入式實時操作系統的編程技術》筆記
    發表于 12-22 06:16

    UCOSII操作系統的簡介

    前言這是我將UCOSII操作系統移植在STM32單片機上后進行UCOSII操作系統學習的一些筆記與理解,此文最后會附上我自己在UCOSII操作系統下使用STM32寫
    發表于 01-12 06:00

    嵌入式操作系統學習筆記

    嵌入式操作系統學習筆記
    發表于 10-20 13:51 ?3次下載
    嵌入式<b class='flag-5'>操作系統學習</b><b class='flag-5'>筆記</b>

    51操作系統學習筆記(三):建立一個屬于自己的AVR的RTOS(1)

    這篇筆記雖然是“51操作系統學習筆記”,但沒有找到合適的代碼。用楊明記的感覺還有點難度。因而轉學《建立一個屬于自己的AVR的RTOS》這篇文章絕對是學操作系統入門經典之作。經典之處在于
    發表于 11-15 18:36 ?9次下載
    51<b class='flag-5'>操作系統學習</b><b class='flag-5'>筆記</b>(三):建立一個屬于自己的AVR的RTOS(1)

    51操作系統學習筆記(四):建立一個屬于自己的AVR的RTOS(2)

    承接51操作系統學習筆記(三):建立一個屬于自己的AVR的RTOS(1),在avr中調試一下下面的程序.為了加深學習應用,決定把代碼全部輸一遍,比復制的學些效果應該好一些吧。打開Avr studio
    發表于 11-15 21:06 ?7次下載
    51<b class='flag-5'>操作系統學習</b><b class='flag-5'>筆記</b>(四):建立一個屬于自己的AVR的RTOS(2)

    UCOSIII操作系統學習筆記——任務

    RTOS系統RTOS全程為:Real Time OS,就是實時操作系統實時操作系統分為硬實時
    發表于 12-02 13:51 ?2次下載
    UCOSIII<b class='flag-5'>操作系統學習</b><b class='flag-5'>筆記</b>——任務
    主站蜘蛛池模板: 一级毛片视屏| 怡红院日本一道日本久久| 国产亚洲精品美女2020久久| 免费不卡毛片| 成人黄色免费观看| 一区二区三区亚洲视频| 色视频一区二区三区| 黄a网站| 亚洲bbb| 亚洲天堂一区二区三区| 69xxxxtube日本免费| 国产精品夜夜春夜夜爽久久| 午夜免费视频网站| 色哟永久免费| 国产女在线| 亚洲一区免费视频| 在线三级网址| 色妞色综合久久夜夜| 婷婷99视频精品全部在线观看| 美女张开腿让男生桶出水| 伊人草| 日本高清视频色www在线观看| 久久综合九色综合欧洲色| 高清色视频| 涩涩爱影院| 女69女人poren25| 黄色爽视频| 黄网站色视频大全免费观看| 亚洲www| 男人的天堂在线精品视频| 国产 麻豆| 久久做| 天天躁夜夜躁狠狠躁2021a| 一本到卡二卡三卡四卡| 在线播放你懂| 欧美一级别| 94在线| 成人黄色在线| 综合五月天堂| 欧美日韩国产另类一区二区三区| 国产精品7m凸凹视频分类大全|