各類系統搞了這麼多年,感覺關於os的各類底層機制已經摸透了,直到兩年前遇到nuttx,大致瀏覽了目錄結構和原始碼readme後,感覺nuttx應該是乙個不錯的系統,有瓜可挖。 只是一直忙於專案,沒有時間深入研究。 直到翻出之前參加某活動獲贈的frdm-k64f開發板在那靜靜吃灰,有了想動一動的衝動。
廢話不多說,下面直入主題寫步驟,會比較幹,喜歡文藝范的繞行.
主機配置:ubuntu14.04.4 lts
編譯器:
sudo apt-get install gcc-arm-none-eabi
sudo apt-get install flex libncurses5-dev
sudo apt-get install gperf
建立工作目錄nuttx
mkdir nuttx && cd nuttx
git clone nuttx
git clone tools
不墨跡,不管你之前裝沒裝,autoconf和automake公升級到最新版, 我用的是 autoconf-2.69 和 automake-1.15
不排除你的環境還會遇到沒安裝的依賴包,沒關係,兵來將擋,水來土掩,找最新版的安裝就是了。
nuttx使用類似於linux的menuconfig和qconfig配置方式,需要kconfig工具的支援,這裡進行這一步
進入到./tools/kconfig-frontends目錄
./configure --enable-mconf
結束後:
nuttx還支援qconfig配置,使能選項是--enable-qconf, 不過我嫌安裝qt5過於麻煩,沒有選擇。
接著執行make && sudo make install編譯安裝
進入到./nuttx/tools目錄, 執行./configure.sh freedom-k64f:nsh
一開始的時候,我遇到找不到libkconfig-parser-4.11.0.so的問題,實際上這個庫檔案在上一步的編譯過程中已經生成了,並且安裝成功了,我沒有細究原因,直接通過用ld_library_path暴露庫路徑的方式解決。
libkconfig-parser-4.11.0.so:
export ld_library_path=$ld_library_path:*********/nuttx/tools/kconfig-frontends/libs/parser/.libs
接著進入主目錄先執行 make distclean(可能上一步雖然沒執行成功但生成了臨時檔案,需要清理)
再次執行上述命令./configure.sh freedom-k64f:nsh,成功執行
預設情況下,最終編譯結果只有.hex和.srec檔案,沒有elf的binary輸出,需要手動開啟。
進入到nuttx主目錄,執行make menuconfig,進入到相關項選擇raw binary format.
step4:燒錄nuttx.bin
frdm-k64f自帶板載偵錯程式st-link,支援工具燒錄和虛擬磁碟燒錄,這裡使用虛擬磁碟燒錄的方式.
nuttx.bin是nuttx elf檔案的binary轉製版,可以通過objcopy -o binary生成,拷貝 nuttx.bin到frdm-k64f掛載後的磁碟目錄。
拷貝完畢,系統會自動重啟,進入到nsh主shell.
使用minicom工具鍊錶埠節點:
sudo minicom -d /dev/ttyacm0
可以看到shell控制台
Nuttx的編譯與構建
nuttx是乙個實時作業系統 rtos 可以執行在8位至32位微控制器。它符合posix和ansi標準 是乙個類linux的作業系統。維基百科 編譯環境 xubuntu 14.10 32位 在編譯之前要先安裝各種依賴包。sudo apt get install autoconf libtool gp...
nuttx配置說明及編譯
nuttx的配置全在configs資料夾當中,裡面預先提供了多種開發板的配置。以stm32f746g disco為例 include資料夾中只包含乙個檔案board.h board.h中,採用巨集定義的方式設定各引數 1.對時鐘系統設定 2.對引腳配置 如 definegpio usart6 rx ...
編譯原理初探
編譯的第乙個過程是詞法分析,目的就是在連續的字元中識別出乙個乙個的符號,並盡可能的識別出符號的屬性,再詞法分析階段,能夠識別出一些符號的意義,它們包括關鍵字,數字字串,分隔符等,它們不需要其他符號的輔助就能確定本身的意義,如int代表整型 但是有一些符號需要通過前後的其它符號才能確定,更多的資訊需要...