README文档的第三部分:
- Toolchains
- Cross-Development Toolchains
- NuttX Buildroot Toolchain
这一部分是讲NuttX的编译链的。
Cross-Development Toolchains
交叉编译链,看起来每个板子的CPU用的编译工具可能不同,详细记录在
config/<board>/README.txt
里,这个文档已经看过了,并没有说道需要什么特殊的编译链,下一个。NuttX Buildroot Toolchain
NuttX 编译工具?这个工具在 buildroot 里,详细说明在
buildroot/configs/README.txt
文档中。使用这个编译工具有两点好处:- 所需头文件全部包括在编译器中;
NXFLAT tools, the ROMFS, genromfs tools, and the kconfig-frontends tools 这些工具都可以被编译出来。
先来看看这四个工具:
- NXFLAT tools
NXFLAT 是可以从文件系统芯片内执行的二进制格式。类似于exe的东西? - the ROMFS
只读文件系统,在嵌入式linux中通常使用这中文件系统来作为引导系统的文件系统。 - genromfs tools
生成上面的 ROMFS 文件系统的工具? - kconfig-frontends
编译NuttX的工具。
- NXFLAT tools
还有点不完善的地方:
没有其他编译工具那样好,比如 ARM 的 EABI(嵌入式应用程序二进制接口,EABI的目的是使不同的编译器编译出来的二进制文件可以互相使用,这样软件开发人员就可以混合使用不同厂商提供的符合EABI标准的二进制库)这个看起来就很伤啊。
README的第四部分:
- Shells
NuttX的工具有很多shell的脚本,shell脚本?我只会用,并不会写,有空再说。
REAMME的第五部分:
- Building NuttX
- Building
- Re-building
- Build Targets an
- Native Windows Build
- Install GNUWin32
终于到这里了,编译 NuttX 系统。
Building
大概是说 在编译之前setenv.sh 这个脚本必须先运行一次,而且交叉编译工具必须包含在 PATH 系统变量中,执行。
cd ${TOPDIR}
. ./setenv.sh
make
好,来执行一次看看。首先这个TOPDIR,应该是 ~/nuttx 目录下,执行一次。
文件又找不到了,好,我记得这个文件应该是在nuttx下的。
果然在这里。虽然说很不合理,但就在这里执行吧。果然正常,但是
make
的时候磁县了问题:看样子总是有问题,不是么?,明显这个叫 arm-none-eabi-gcc 的程序并没有找到,拿过来单独运行一次:
问题不大,的确没有安装,这里系统给出了该程序的安装代码:
sudo apt install gcc-arm-none-eabi
安装完成后再 make 一遍。
难道不该高兴一下么,编译完成,出现了 nuttx.hex 和 nuttx.bin 两个文件。赶快把开发板拿来下载。
stlinkv2下载很方便,把文件直接复制进开发板连接电脑后出现的移动存储器中,为了显得更有bigger,使用指令:
cp nuttx.bin /media/godenfreemans/DIS_F429ZI/
RGBLED疯狂闪烁,下载完成,下面要用串口调试开发板的 NuttX Shell 。
在/dev/
下有:发现有个叫
stlinkv2_console
的文件,查看一下:详细显示一下,是个软连接文件,连接到
ttyACM0
。看样子这个就是开发板的串口了,百度一下,找到串口调试工具minicom
安装,打开。配置好串口,串口名称为
/dev/stlinkv2_console
重开软件显示果断输入
ls
回车显示:哈哈,到这里就完成了。编译部分就完成了。再玩一下这个
shell
:看起来还不错,就是根目录下的东西怎么只有个
dev
。没有发现bin
文件夹。还真只是个例程啊。继续看文档。
Re-building
顾名思义,重新编译,当更换了开发板,重新使用 configure.sh 链接文件后直接使用 make 就可以编译系统了。
Build Targets and Options
make编译选项:
all
重新编译所有clean
移除 make 生成的过程文件distclean
移除 clean 移除的文件,而且还移除 configure 文件apps_clean
移除用户的 app 程序apps_distclean
和上上面的一样export
打包库文件和头文件download
下载到开发板,这个命令需要自己设置,设置文件在 Make.defs 文件中。depend
Windows上的,用不到。context
读不懂,运行一下看看。显示出了 make 过程中经历到的目录。经历?这个词用的好么?
clean_context
删除上面的指令创建的文件V=1
显示执行的每一条命令,对于了解编译过程很有帮助。
剩下的都是 Windows 的事情了,直接跳过。
这个 README 文档就到此结束了