ardupilot编译过程,通过makefile的形式编译,分析make px4-v2指令
我们都知道平时用的编译命令是make px4-v2 但是为什么是这个呢,这个命令是怎样执行的呢,挑干货唠! 我们首先是打开“\ardupilot\ArduCopter”路径,找的makefile 这个makefile中只有一条指令,然后我们对应地找到apm.mk文件,这个文件的内容就比较多, 3行判断系统类型,,56789这几行代码是要确定MK_DIR,这个在下面查找mk文件时都会用到,根据我们电脑的操作系统类型确定,如果是Windows应该是执行第一个指令,所以 MK_DIR = “…/mk”。也就是“…\ardupilot\mk”文件夹,该文件夹中有许多mk文件,有好多都是我们后面要用到的。 继续,15,20,23,24,25包含了一些其他的make都是我们可能用到的 先看第一个打开environ.mk,这个用来配置环境变量 这里有好多环境变量如:GIT_VERSION、EXTRAFLAGS、SRCROOT、SKETCHBOOK等等,在这里对这些变量赋值。
这里有个比较重要的就是对HAL_BOARD也进行赋值了,如果你的编译命令里有PX4的字符,就把HAL_BOARD赋值为PX4。 然后再回到APM.mk。继续向下看
这里表示不同类型的板子运行不同的mk文件。 这就说明了,对于不同的板子,make指令是怎么运行不同的mk文件。 然后我们针对其中的一种来说明,比如说PX4.mk文件看一看里面都有设么内容。 我们打开board_px4.mk文件 这里包含两个mk文件,打开一个重要的看看px4_targets.mk。我们找到px4的含义了,再找-v2是啥意思, 这里就区分了PX4-V1、PX4-V2、PX4-V3、PX4-V4,,,,,他们都有不同的配置文件,针对PX4-V2 打开config_px4fmu-v2_APM.mk。 这个.mk文件指定了固件编译需要哪些驱动及任务模块,又包括了px4_common.mk文件。 再打开px4_common.mk文件。 编译固件所需要的驱动和任务模块都在这里,多说一句,如果你自己写了一模块或者驱动,就在px4_common.mk文件这里添加一下驱动,源文件写在mk/modules/px4Firmware/src/drivers里面。 再回到px4_target.mk中, 这里就px4_v2指令的解释。 这里还解释了px4-v2-upload的指令,还有其他的指令。 然后我在回到apm.mk中的其他mk,比如说help,mk configure.mk 这些不是很重要,看看即可。
刚才说添加驱动在px4_common.mk文件,源文件写在mk/modules/px4Firmware/src/drivers里面。如果是在libaraies库里添加了内容,则需要在ardupilot/mk/make.inc中添加上libaries的目录。
这就是大致make编译的过程,希望多多指教,