研究pixhawk的makefile的结构(2)

上一篇讲到
apm.mk 执行到 
ifeq ($(HAL_BOARD),HAL_BOARD_PX4)
include $(MK_DIR)/board_px4.mk
endif
我们进入到board_px4.mk 
TOOLCHAIN = NATIVE
include $(MK_DIR)/find_tools.mk
include $(MK_DIR)/px4_targets.mk


find_tools.mk 就是将定义了我们编译是需要的编译工具
px4_targets.mk 看看干了什么
开始做了初始变量的工作 
主要看看 我们经常用的mpx4-v2 干了什么


px4-v2:  $(BUILDROOT)/make.flags CHECK_MODULES $(PX4_ROOT)/Archives/px4fmu-v2.export $(SKETCHCPP) module_mk px4-io-v2
$(RULEHDR)
$(v) rm -f $(PX4_ROOT)/makefiles/$(PX4_V2_CONFIG_FILE)
$(v) cp $(PX4_V2_CONFIG_FILE) $(PX4_ROOT)/makefiles/nuttx/
$(PX4_MAKE) px4fmu-v2_APM
$(v) /bin/rm -f $(SKETCH)-v2.px4
$(v) cp $(PX4_ROOT)/Images/px4fmu-v2_APM.px4 $(SKETCH)-v2.px4
$(v) $(SKETCHBOOK)/Tools/scripts/add_git_hashes.py $(HASHADDER_FLAGS) "$(SKETCH)-v2.px4" "$(SKETCH)-v2.px4"
$(v) echo "PX4 $(SKETCH) Firmware is in $(SKETCH)-v2.px4"

分析 $(BUILDROOT)/make.flags CHECK_MODULES $(PX4_ROOT)/Archives/px4fmu-v2.export $(SKETCHCPP) module_mk px4-io-v2
这些就是命令
/e/ardupilot/Build.ArduCopter/make.flags  目标
CHECK_MODULES  目标
/e/ardupilot/modules/PX4Firmware/Archives/px4fmu-v2.export 文件
/e/ardupilot/ArduCopter/ArduCopter.cpp 文件
module_mk  目标
px4-io-v2  目标
通过$(RULEHDR) 命令的定义是在 sketch_sources.mk 
# common header for rules, prints what is being built
define RULEHDR
@echo %% $(subst $(BUILDROOT)/,,$@)
@mkdir -p $(dir $@)
endef

执行 px4-io-v2 这个目标 实际也是这个目标 在modules.mk 的

.PHONY: CHECK_MODULES


# PX4 build needs submodules
px4-%: CHECK_MODULES


CHECK_MODULES:
$(v)$(MK_DIR)/check_modules.sh

执行 check_modules.sh 我们的nuttx 已经是 存在了

执行 px4-io-v2 这个目标 实际也是这个目标 px4_targets.mk 的
px4-io-v2: $(PX4_ROOT)/Archives/px4io-v2.export
$(v)+ $(MAKE) -C $(PX4_ROOT) px4io-v2_default
$(v) /bin/rm -f px4io-v2.bin
$(v) cp $(PX4_ROOT)/Build/px4io-v2_default.build/firmware.bin px4io-v2.bin
$(v) cp $(PX4_ROOT)/Images/px4io-v2_default.bin px4io-v2.bin
$(v) cp $(PX4_ROOT)/Build/px4io-v2_default.build/firmware.elf px4io-v2.elf
$(v) mkdir -p $(MK_DIR)/PX4/ROMFS/px4io/
$(v) rm -f $(MK_DIR)/PX4/ROMFS/px4io/px4io.bin
$(v) cp px4io-v2.bin $(MK_DIR)/PX4/ROMFS/px4io/px4io.bin
$(v) mkdir -p $(MK_DIR)/PX4/ROMFS/bootloader/
$(v) rm -f $(MK_DIR)/PX4/ROMFS/bootloader/fmu_bl.bin
$(v) cp $(SKETCHBOOK)/mk/PX4/bootloader/px4fmuv2_bl.bin $(MK_DIR)/PX4/ROMFS/bootloader/fmu_bl.bin
$(v) echo "PX4IOv2 Firmware is in px4io-v2.bin"
实际的内容是
make -C /e/ardupilot/modules/PX4Firmware px4io-v2_default 编译firmware基本文件
/bin/rm -f px4io-v2.bin
cp /e/ardupilot/modules/PX4Firmware/Build/px4io-v2_default.build/firmware.bin px4io-v2.bin
cp /e/ardupilot/modules/PX4Firmware/Images/px4io-v2_default.bin px4io-v2.bin
cp /e/ardupilot/modules/PX4Firmware/Build/px4io-v2_default.build/firmware.elf px4io-v2.elf
mkdir -p ../mk/PX4/ROMFS/px4io/
rm -f ../mk/PX4/ROMFS/px4io/px4io.bin
cp px4io-v2.bin ../mk/PX4/ROMFS/px4io/px4io.bin
mkdir -p ../mk/PX4/ROMFS/bootloader/
rm -f ../mk/PX4/ROMFS/bootloader/fmu_bl.bin
cp /e/ardupilot/mk/PX4/bootloader/px4fmuv2_bl.bin ../mk/PX4/ROMFS/bootloader/fmu_bl.bin
PX4IOv2 Firmware is in px4io-v2.bin
生成.bin .elf 文件
 
执行 module_mk 这个目标 实际也是这个目标 px4_targets.mk 的 
    .PHONY: module_mk
    module_mk:
$(v) echo "Building $(SKETCHBOOK)/module.mk"
$(RULEHDR)
$(v) echo "# Auto-generated file - do not edit" > $(SKETCHBOOK)/module.mk.new
$(v) echo "MODULE_COMMAND = ArduPilot" >> $(SKETCHBOOK)/module.mk.new
$(v) echo "SRCS = $(wildcard $(SRCROOT)/*.cpp) $(SKETCHLIBSRCSRELATIVE)" >> $(SKETCHBOOK)/module.mk.new
$(v) echo "MODULE_STACKSIZE = 4096" >> $(SKETCHBOOK)/module.mk.new
$(v) echo "EXTRACXXFLAGS = -Wframe-larger-than=1200" >> $(SKETCHBOOK)/module.mk.new
$(v) cmp $(SKETCHBOOK)/module.mk $(SKETCHBOOK)/module.mk.new 2>/dev/null || mv $(SKETCHBOOK)/module.mk.new $(SKETCHBOOK)/module.mk
$(v) rm -f $(SKETCHBOOK)/module.mk.new
实际的内容是 写东西到module.mk 里

执行 $(BUILDROOT)/make.flags 这个目标 实际也是这个目标 sketch_sources.mk  的   
也是更新一些东西

$(BUILDROOT)/make.flags CHEC 。。。。。
$(RULEHDR)
的内容就讲完了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值