文章來源:【NuttX】淺析操作系統及NuttX在STM32平台上的移植 - 知乎 (zhihu.com)
操作系統(Operating System),簡稱OS,是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。
根據計算機組成原理,計算機由CPU(運算器+控制器),存儲器,輸入,輸出設備組成。
根據操作系統原理,OS由調度,內存管理,文件系統,進程間通信,計算機網絡組成。
CPU對應OS的調度(Schedule);
內存對應OS的內存管理(Memory Management);
存儲器對應OS的文件系統(File System);
輸入/輸出設備對應OS的驅動,也可以認為是文件系統(一切皆文件);
進程間通信(Internal Process communacation)是OS提供給應用程序的通信方式。
OS的作用就是用來管理計算機的硬件資源,並隔離硬件,提供給應用開發抽象的統一接口。另外,其本身作為系統軟件,也要占用一定的硬件資源。
本文主要介紹nuttx的下載,配置,編譯,燒寫,nsh運行。
1 Nuttx介紹(Introduction)
Linux大家都很熟悉,其有很多發行版本,比如Ubuntu,RedHat,centos等。NuttX是一種類Linux的嵌入式系統,原理和使用都非常類似與Linux。
關鍵功能:
- 符合各類重要標准
- 核心任務管理
- 模組化的微核心
- 完全可搶占
- 可擴展,高度可配置
- 容易移植到各類新的處理器、SoC或者板級架構上
- 先進先出和時間片輪轉調度,並可以采取無節拍內核
- 實時,具備確定性
- 具備和POSIX/ANSI類似的任務控制,有名消息隊列,計數信號量,時鍾、定時器和信號,POSIX線程,環境變量和文件系統
- 具備和VxWorks類似的任務管理和看門狗定時器
- 具備和BSD類似的socket接口
2 下載源代碼(Download)
git下載地址:
git clone https://bitbucket.org/nuttx/nuttx.git nuttx
git clonehttps://bitbucket.org/nuttx/apps.git apps
git clonehttps://bitbucket.org/nuttx/tools.git tools
下載完成:
3 配置(Configuration)
根據主板型號進行配置,我用的是STM32F103C8T6的最小系統板子
nuttx目錄下執行:./tools/configure.sh -l stm32f103-minimum:nsh
這時可使用menuconfig進行可視化配置
nuttx目錄下執行:make menuconfig
注意需要開啟UART1,便於串口登錄終端,進入nsh(nuttx shell)。
可根據自己需要開啟/關閉一些功能,進行裁剪或增加。該配置的目的是修改.config文件,而.config文件是makefile編譯時所依賴的的宏配置。
4 編譯(Compile)
nuttx目錄下執行:make
最終生成hex和bin文件。
5 燒寫bin文件
使用J-Flash進行燒寫,地址選擇0x08000000(Flash的起始地址)
6 串口連接
sudo minicom 選擇波特率與UART1一致(115200),進入nsh終端,完成移植。
至此,就完成了nuttx在STM32F103最小系統上的移植工作,就可以在nuttx的基礎上編寫自己想要的驅動程序以及應用程序啦。愉快的玩耍吧~