diff --git a/Tools/ardupilotwaf/boards.py b/Tools/ardupilotwaf/boards.py index cdf657fb4c..f7987de43d 100644 --- a/Tools/ardupilotwaf/boards.py +++ b/Tools/ardupilotwaf/boards.py @@ -811,6 +811,7 @@ class skyviper_v2450_px4(px4_v3): LAND_DETECTOR_ACCEL_MAX = 2 ) env.PX4_RC_S_SCRIPT = 'init.d/rcS_no_microSD' + env.BUILD_ABIN = True class px4_v4(px4): name = 'px4-v4' diff --git a/Tools/ardupilotwaf/chibios.py b/Tools/ardupilotwaf/chibios.py index e08ade3c32..8c4c7331c4 100644 --- a/Tools/ardupilotwaf/chibios.py +++ b/Tools/ardupilotwaf/chibios.py @@ -63,7 +63,7 @@ class generate_fw(Task.Task): run_str='${OBJCOPY} -O binary ${SRC} ${SRC}.bin && \ python ${UPLOAD_TOOLS}/px_mkfw.py --image ${SRC}.bin \ --prototype ${BUILDROOT}/apj.prototype > ${TGT} && \ - ${CHIBIOS_SCRIPTS}/make_abin.sh ${SRC}.bin ${SRC}.abin' + ${TOOLS_SCRIPTS}/make_abin.sh ${SRC}.bin ${SRC}.abin' always_run = True def keyword(self): return "Generating" @@ -117,6 +117,7 @@ def configure(cfg): env.PT_DIR = srcpath('Tools/ardupilotwaf/chibios/image') env.UPLOAD_TOOLS = srcpath('Tools/ardupilotwaf') env.CHIBIOS_SCRIPTS = srcpath('libraries/AP_HAL_ChibiOS/hwdef/scripts') + env.TOOLS_SCRIPTS = srcpath('Tools/scripts') env.APJ_TOOL = srcpath('Tools/scripts/apj_tool.py') env.SERIAL_PORT = srcpath('/dev/serial/by-id/*_STLink*') diff --git a/Tools/ardupilotwaf/px4.py b/Tools/ardupilotwaf/px4.py index 3c5af7560f..506e6d4a90 100644 --- a/Tools/ardupilotwaf/px4.py +++ b/Tools/ardupilotwaf/px4.py @@ -72,6 +72,24 @@ class px4_copy(Task.Task): def __str__(self): return self.outputs[0].path_from(self.generator.bld.bldnode) +class create_abin(Task.Task): + '''create an abin file - used for uploading to a skyviper''' + color = 'CYAN' + + def run(self): + from subprocess import call + elf_name = self.inputs[0].abspath() + bin_name = elf_name + ".bin" + abin_name = self.outputs[0].abspath() + call(['arm-none-eabi-objcopy', '-Obinary', elf_name, bin_name]) + call(['Tools/scripts/make_abin.sh', bin_name, abin_name]) + + def keyword(self): + return "Creating abin for %s to" % self.inputs[0].name + + def __str__(self): + return self.outputs[0].path_from(self.generator.bld.bldnode) + class px4_add_git_hashes(Task.Task): run_str = '${PYTHON} ${PX4_ADD_GIT_HASHES} --ardupilot ${PX4_APM_ROOT} --px4 ${PX4_ROOT} --nuttx ${PX4_NUTTX_ROOT} ${SRC} ${TGT}' color = 'CYAN' @@ -159,6 +177,11 @@ def px4_firmware(self): cp_elf.set_run_after(fw_task) _firmware_semaphorish_tasks.append(cp_elf) + if self.env.BUILD_ABIN: + fw_abin_dest = self.bld.bldnode.make_node(os.path.join(self.program_dir, self.program_name + '.abin')) + create_abin = self.create_task('create_abin', fw_elf, fw_abin_dest) + create_abin.set_run_after(fw_task) + self.build_summary = dict( target=self.name, binary=fw_elf_dest.path_from(self.bld.bldnode),