sudo mkdir Nuttx
cd Nuttx
config//
board-name:是开发板的名称;config-dir:包含该板配置的子目录。
配置Nuttx只需要将config-dir文件中的三个文件复制到nuttx目录下即可。
copy configs/<board-name>/<config-dir>/Make.def to ${TOPDIR}/Make.defs
Make.defs文件:描述了工具链编译和链接代码所需的规则。匹配工具链的特定需求时修改此文件。
copy configs/<board-name>/<config-dir>/setenv.sh to ${TOPDIR}/setenv.sh
setenv.sh文件:可用来设置工具链二进制文件的PATH变量。(可选)
copy configs/<board-name>/<config-dir>/defconfig to ${TOPDIR}/defconfig
defconfig文件:保存实际构建配置。被其他所有make文件包含,以确定构建中的包含内容。此文件还用于在
include/nuttx/config.h中生成C配置头。
此时在Nuttx下面有三个文件夹 nuttx apps tools
cd nuttx
以stm32f4discovery为例:(nuttx支持的开发板在nuttx/configs下查看)
将configs/stm32f4dicovery/winbuild 中的三个文件拷贝到nuttx目录下:
sudo cp configs/stm32f4discovery/winbuild/Make.defs ./Make.defs
sudo cp configs/stm32f4discovery/winbuild/setenv.bat ./setenv.sh
sudo cp configs/stm32f4discovery/winbuild/defconfig ./.config
有关Nuttx的配置信息在:
${TOPDIR}/configs/README.txt
${TOPDIR}/configs/README.txt
在tools目录下有一个配置脚本,接下来我们需要使用它进行配置。
cd ${TOPDIR}/tools
./configure.sh /
同样的 参考tools/README.txt来学习此脚本。
随着新配置设置的添加或删除等操作,可能造成依赖关系的更改,默认配置的内容可能会与构建系统不同步。因此,在配置之后和制作之前刷新每个配置。
make oldconfig
配置步骤将.config文件复制到顶层nuttx目录中的位置,make oldconfig则将他们操作的.config文件更新。
接着上个实例说:
进入到nuttx文件夹,把下载解压后的buildroot放在nuttx目录下:
sudo mv …/buildroot ./
进入到buildroot目录下:
cd buildroot
执行:
sudo cp configs/cortexm3-eabi-defconfig-4.8.5 .config
sudo make menuconfig ------> 直接退出即可。
sudo make
这一步可能会出现:没有规则可以创建目标"include/arch"的错误
解决方法
我们进入到Nuttx目录下,进入到tools目录:
cd tools
cd kconfig-frontends
sudo ./configure --enable-mconf
sudo make
sudo make install
然后在进入到
cd …
cd nuttx/tools
执行
sudo ./configure.sh stm32f4discovery/nsh(nsh是通过usb链接的,uartnsh是通过串口链接的,这个后面再解释)
回到nuttx下,执行
make menuconfig
kconfig-mconf: error while loading shared libraries: libkconfig-parser-3.12.0.so: cannot open shared object file: No such file or directory
解决方法:将kconfig-frontends的安装路径(一般为 /usr/local/lib)添加到 /etc 目录下的 ld.so.conf 文件中,然后执行ldconfig工具:
sudo vim /etc/ld.so.conf
在文件中添加: include /usr/local/lib,保存并退出
sudo ldconfig
然后继续执行:
sudo make menuconfig
根据需求进行设置:
Build Setup---->
Build host platform(选择linux)
其余的根据自己的需求而定.
最后执行:sudo make
可能会出现:LN: include/arch to arch/arm/include
include/arch already exists but is not a symbolic link的错误
解决方法:sudo rm -r include/arch
继续执行sudo make
会生成:
CP: nuttx.hex
CP: nuttx.bin