ATSAMV7Xult板卡調試Nuttx系統----NuttX系統的編譯

1. NUTTX以及APP源碼下載

下載Nuttx以及APP的源碼包
https://sourceforge.net/projects/nuttx/files/nuttx/nuttx-7.17/nuttx-7.17.tar.gz
https://sourceforge.net/projects/nuttx/files/nuttx/nuttx-7.17/apps-7.17.tar.gz

下載完成後,解壓縮至同一個目錄下,比如/home/user/nuttx
/home/user/nuttx/nuttx-7.17

/home/user/nuttx/apps-7.17

注意:nuttx-7.17與apps-7.17一定要放在同一個目錄下,編譯的時候回自動尋找apps目錄;


2.Nuttx的編譯主要分爲如下幾個步驟

2.1 生成編譯板卡的默認配置信息
以ATMEL板卡samv71-xult爲例,TOPDIR爲/home/user/nuttx/nuttx-7.17
$ cd /home/user/nuttx/nuttx-7.17/tools 
$ ./configure.sh samv71-xult/nsh
注意:
必須切換到tools目錄下再執行 ./configure.sh samv71-xult/nsh,否則會提示無法找到../configs目錄

說明:
A> samv71-xult
位於TOPDIR/configs目錄下,是一種待編譯的板卡配置;
上述操作完成如下內容
把TOPDIR/configs/samv71-xult/nsh/defconfig複製到NUTTX工程目錄(TOPDIR下命名爲.config,
把TOPDIR/configs/samv71-xult/nsh/setenv.sh複製到NUTTX工程目錄TOPDIR/)下;
把TOPDIR/configs/samv71-xult/nsh/Make.defs複製到NUTTX工程目錄(TOPDIR/)下;

B>NSH位於目錄/home/user/nuttx/nuttx-7.17/configs/samv71-xult/下,samv7-xult平臺的一個應用,後用戶定製自己的應用時,可以改成自定義APP的名字,

此時用戶可以手動執行make menuconfig進入圖形界面進行詳細配置,首次編譯建議使用對應板卡形態的默認配置,隨着對板卡的熟悉,逐步對系統進行裁剪和定製,添加和刪除相關選項;

2.2 加載環境變量
切換至NUTTX工程目錄(/home/user/nuttx/nuttx-7.17/),加載剛剛copy好的env文件
$ cd /home/user/nuttx/nuttx-7.17/
$ source ./setenv.sh

3.3 系統編譯
切換至Nuttx工程目錄,執行Make進行工程構建
$ cd /home/user/nuttx/nuttx-7.17/
$ make CROSSDEV=arm-none-eabi-

說明:

A> 由於前面環境配置時,已經把toolchain路徑添加至PATH路徑,因此這裏直接執行make即可完成構建

B> 用戶的toolchain名字如果不是arm-none-eabi-,這裏的CROSSDEV可以其他的toolchain名字,比如CROSSDEV=arm-linux-


3.4 編譯時遇到問題:
編譯時會提示如下錯誤” error: target CPU does not support ARM mode”,
arm-none-eabi-gcc -M -fno-builtin -Wall -Wstrict-prototypes -Wshadow -Wundef -Os -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer -mcpu=cortex-m3 -mfloat-abi=soft -I. -isystem /home/user/nuttx/nuttx-7.17/include -D__KERNEL__ -pipe
error: target CPU does not support ARM mode

定位下來是由於未打開如下兩個編譯選項導致
CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL=y 
CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=n

解決方法:
把上述編譯選項添加至公共的Config.mk中

打開文件/home/user/nuttx/nuttx-7.17/tools/Config.mk
在最後面添加如下內容後再次編譯OK
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
    CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL=y
    CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=n
endif


最後筆者文檔水平有限,希望大家多多指點!!謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章