From c49c3f469ecc204bfaef2657960ecd663595cc9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Wed, 5 Oct 2016 16:31:40 -0300 Subject: [PATCH] aerofc: add upload command AeroFC is updated by Aero board using the UART between AeroFC and Aero board. This script will copy firmware and px_uploader.py to Aero board and run px_uploader.py with the correct paremeters. User only needs to have a network connection (Ethernet over USB or WiFi) with Aero board to update AeroFC firmware. The IP/hostname can be given by AERO_HOSTNAME environment variable. --- Tools/aero_upload.sh | 53 +++++++++++++++++++++++++++++++ cmake/common/px4_base.cmake | 17 ++++++++++ src/firmware/nuttx/CMakeLists.txt | 9 ++++-- 3 files changed, 77 insertions(+), 2 deletions(-) create mode 100755 Tools/aero_upload.sh diff --git a/Tools/aero_upload.sh b/Tools/aero_upload.sh new file mode 100755 index 0000000000..74ea5ab80a --- /dev/null +++ b/Tools/aero_upload.sh @@ -0,0 +1,53 @@ +#!/bin/bash +############################################################################ +# +# Copyright (C) 2016 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +set -e + +USER=${AERO_USER:-root} +HOSTNAME=${AERO_HOSTNAME:-intel-aero.local} +SCRIPT_DIR=$(dirname $(realpath ${BASH_SOURCE[0]})) + +target=$USER@$HOSTNAME +firmware=$1 +px_uploader=${SCRIPT_DIR}/px_uploader.py + +echo "Copying files to Aero board ($target)..." +scp -v $firmware $px_uploader $target: + +echo "Running px_uploader.py on Aero to update firmware in AeroFC..." +ssh $target 'PATH=$PATH":/usr/sbin" && /etc/init.d/mavlink_bridge.sh stop' +ssh $target "./px_uploader.py --port /dev/ttyS1 --baud-flightstack 1500000 $(basename $firmware)" +ssh $target 'PATH=$PATH":/usr/sbin" && /etc/init.d/mavlink_bridge.sh start' + +echo "Firmware updated" diff --git a/cmake/common/px4_base.cmake b/cmake/common/px4_base.cmake index bfb6a93043..52922ad875 100644 --- a/cmake/common/px4_base.cmake +++ b/cmake/common/px4_base.cmake @@ -580,6 +580,23 @@ function(px4_add_scp_push) ) endfunction() +function(px4_add_upload_aero) + px4_parse_function_args( + NAME px4_add_upload_aero + ONE_VALUE OS BOARD OUT BUNDLE + REQUIRED OS BOARD OUT BUNDLE + ARGN ${ARGN}) + + add_custom_target(${OUT} + COMMAND ${PX4_SOURCE_DIR}/Tools/aero_upload.sh ${BUNDLE} + DEPENDS ${BUNDLE} + WORKING_DIRECTORY ${PX4_BINARY_DIR} + COMMENT "uploading ${BUNDLE}" + VERBATIM + USES_TERMINAL + ) +endfunction() + #============================================================================= # diff --git a/src/firmware/nuttx/CMakeLists.txt b/src/firmware/nuttx/CMakeLists.txt index a617e093c5..d0d16e5ee6 100644 --- a/src/firmware/nuttx/CMakeLists.txt +++ b/src/firmware/nuttx/CMakeLists.txt @@ -113,8 +113,13 @@ if(NOT ${BOARD} STREQUAL "sim") ${CMAKE_CURRENT_BINARY_DIR}/.gdbinit ) - px4_add_upload(OUT upload OS ${OS} BOARD ${BOARD} - BUNDLE ${fw_file}) + if ("${BOARD}" STREQUAL "aerofc-v1") + px4_add_upload_aero(OUT upload OS ${OS} BOARD ${BOARD} + BUNDLE ${fw_file}) + else() + px4_add_upload(OUT upload OS ${OS} BOARD ${BOARD} + BUNDLE ${fw_file}) + endif() endif() install(FILES ${fw_file} DESTINATION .)