forked from Archive/PX4-Autopilot
Tools/auterion: add Skynode upload scripts (#21842)
This commit is contained in:
parent
068b1494fc
commit
0200ef9a60
|
@ -0,0 +1,115 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Flash PX4 to a device running AuterionOS in the local network
|
||||||
|
if [ "$1" == "-h" ] || [ "$1" == "--help" ] || [ $# -lt 2 ]; then
|
||||||
|
echo "Usage: $0 -f <firmware.px4|.elf> [-c <configuration_dir>] -d <IP/Device> [-u <user>] [-p <ssh_port>] [--revert]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ssh_port=22
|
||||||
|
ssh_user=root
|
||||||
|
|
||||||
|
while getopts ":f:c:d:p:u:r" opt; do
|
||||||
|
case ${opt} in
|
||||||
|
f )
|
||||||
|
if [ -n "$OPTARG" ]; then
|
||||||
|
firmware_file="$OPTARG"
|
||||||
|
else
|
||||||
|
echo "ERROR: -f requires a non-empty option argument."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
c )
|
||||||
|
if [ -f "$OPTARG/rc.autostart" ]; then
|
||||||
|
config_dir="$OPTARG"
|
||||||
|
else
|
||||||
|
echo "ERROR: -c configuration directory is empty or does not contain a valid rc.autostart"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
d )
|
||||||
|
if [ "$OPTARG" ]; then
|
||||||
|
device="$OPTARG"
|
||||||
|
else
|
||||||
|
echo "ERROR: -d requires a non-empty option argument."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
p )
|
||||||
|
if [[ "$OPTARG" =~ ^[0-9]+$ ]]; then
|
||||||
|
ssh_port="$OPTARG"
|
||||||
|
else
|
||||||
|
echo "ERROR: -p ssh_port must be a number."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
u )
|
||||||
|
if [ "$OPTARG" ]; then
|
||||||
|
ssh_user="$OPTARG"
|
||||||
|
else
|
||||||
|
echo "ERROR: -u requires a non-empty option argument."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
r )
|
||||||
|
revert=true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$device" ]; then
|
||||||
|
echo "Error: missing device"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
target_dir=/shared_container_dir/fmu
|
||||||
|
target_file_name="update-dev.tar"
|
||||||
|
|
||||||
|
if [ "$revert" == true ]; then
|
||||||
|
# revert to the release version which was originally deployed
|
||||||
|
cmd="cp $target_dir/update.tar $target_dir/$target_file_name"
|
||||||
|
ssh -t -p $ssh_port $ssh_user@$device "$cmd"
|
||||||
|
else
|
||||||
|
# create custom update-dev.tar
|
||||||
|
tmp_dir="$(mktemp -d)"
|
||||||
|
config_path=""
|
||||||
|
firmware_path=""
|
||||||
|
|
||||||
|
if [ -d "$config_dir" ]; then
|
||||||
|
cp -r "$config_dir" "$tmp_dir/config"
|
||||||
|
config_path=config
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$firmware_file" ]; then
|
||||||
|
extension="${firmware_file##*.}"
|
||||||
|
cp "$firmware_file" "$tmp_dir/firmware.$extension"
|
||||||
|
if [ "$extension" == "elf" ]; then
|
||||||
|
# ensure the file is stripped to reduce file size
|
||||||
|
arm-none-eabi-strip "$tmp_dir/firmware.$extension"
|
||||||
|
fi
|
||||||
|
firmware_path="firmware.$extension"
|
||||||
|
fi
|
||||||
|
|
||||||
|
pushd "$tmp_dir" &>/dev/null
|
||||||
|
|
||||||
|
if [ -z $firmware_path ] && [ -z $config_path ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
tar_name="tar"
|
||||||
|
|
||||||
|
if [ -x "$(command -v gtar)" ]; then
|
||||||
|
# check if gnu-tar is installed on macOS and use that instead
|
||||||
|
tar_name="gtar"
|
||||||
|
fi
|
||||||
|
|
||||||
|
$tar_name -C "$tmp_dir" --sort=name --owner=root:0 --group=root:0 --mtime='2019-01-01 00:00:00' -cvf $target_file_name $firmware_path $config_path
|
||||||
|
|
||||||
|
# send it to the target to start flashing
|
||||||
|
scp -P $ssh_port "$target_file_name" $ssh_user@"$device":$target_dir
|
||||||
|
popd &>/dev/null
|
||||||
|
rm -rf "$tmp_dir"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# grab status output for flashing progress
|
||||||
|
cmd="tail --follow=name $target_dir/update_status 2>/dev/null || true"
|
||||||
|
ssh -t -p $ssh_port $ssh_user@$device "$cmd"
|
|
@ -0,0 +1,51 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
DIR="$(dirname $(readlink -f $0))"
|
||||||
|
DEFAULT_AUTOPILOT_HOST=10.41.1.1
|
||||||
|
DEFAULT_AUTOPILOT_PORT=33333
|
||||||
|
DEFAULT_AUTOPILOT_USER=auterion
|
||||||
|
|
||||||
|
for i in "$@"
|
||||||
|
do
|
||||||
|
case $i in
|
||||||
|
--file=*)
|
||||||
|
PX4_BINARY_FILE="${i#*=}"
|
||||||
|
;;
|
||||||
|
--default-ip=*)
|
||||||
|
DEFAULT_AUTOPILOT_HOST="${i#*=}"
|
||||||
|
;;
|
||||||
|
--default-port=*)
|
||||||
|
DEFAULT_AUTOPILOT_PORT="${i#*=}"
|
||||||
|
;;
|
||||||
|
--default-user=*)
|
||||||
|
DEFAULT_AUTOPILOT_USER="${i#*=}"
|
||||||
|
;;
|
||||||
|
--revert)
|
||||||
|
REVERT_AUTOPILOT_ARGUMENT=-r
|
||||||
|
;;
|
||||||
|
--wifi)
|
||||||
|
DEFAULT_AUTOPILOT_HOST=10.41.0.1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# unknown option
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# allow these to be overridden
|
||||||
|
[ -z "$AUTOPILOT_HOST" ] && AUTOPILOT_HOST=$DEFAULT_AUTOPILOT_HOST
|
||||||
|
[ -z "$AUTOPILOT_PORT" ] && AUTOPILOT_PORT=$DEFAULT_AUTOPILOT_PORT
|
||||||
|
[ -z "$AUTOPILOT_USER" ] && AUTOPILOT_USER=$DEFAULT_AUTOPILOT_USER
|
||||||
|
|
||||||
|
ARGUMENTS=()
|
||||||
|
ARGUMENTS+=(-d "$AUTOPILOT_HOST")
|
||||||
|
ARGUMENTS+=(-p "$AUTOPILOT_PORT")
|
||||||
|
ARGUMENTS+=(-u "$AUTOPILOT_USER")
|
||||||
|
ARGUMENTS+=(${PX4_BINARY_FILE:+-f "$PX4_BINARY_FILE"})
|
||||||
|
ARGUMENTS+=($REVERT_AUTOPILOT_ARGUMENT)
|
||||||
|
|
||||||
|
echo "Flashing $AUTOPILOT_HOST ..."
|
||||||
|
|
||||||
|
"$DIR"/remote_update_fmu.sh "${ARGUMENTS[@]}"
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,49 @@
|
||||||
|
############################################################################
|
||||||
|
#
|
||||||
|
# Copyright (c) 2020 PX4 Development Team. 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(PX4_FW_NAME ${PX4_BINARY_DIR}/${PX4_BOARD_VENDOR}_${PX4_BOARD_MODEL}_${PX4_BOARD_LABEL}.px4)
|
||||||
|
|
||||||
|
add_custom_target(upload_skynode_usb
|
||||||
|
COMMAND ${PX4_SOURCE_DIR}/Tools/auterion/upload_skynode.sh --file=${PX4_FW_NAME}
|
||||||
|
DEPENDS ${PX4_FW_NAME}
|
||||||
|
COMMENT "Uploading PX4"
|
||||||
|
USES_TERMINAL
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(upload_skynode_wifi
|
||||||
|
COMMAND ${PX4_SOURCE_DIR}/Tools/auterion/upload_skynode.sh --file=${PX4_FW_NAME} --wifi
|
||||||
|
DEPENDS ${PX4_FW_NAME}
|
||||||
|
COMMENT "Uploading PX4"
|
||||||
|
USES_TERMINAL
|
||||||
|
)
|
|
@ -0,0 +1,49 @@
|
||||||
|
############################################################################
|
||||||
|
#
|
||||||
|
# Copyright (c) 2023 PX4 Development Team. 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(PX4_FW_NAME ${PX4_BINARY_DIR}/${PX4_BOARD_VENDOR}_${PX4_BOARD_MODEL}_${PX4_BOARD_LABEL}.px4)
|
||||||
|
|
||||||
|
add_custom_target(upload_skynode_usb
|
||||||
|
COMMAND ${PX4_SOURCE_DIR}/Tools/auterion/upload_skynode.sh --file=${PX4_FW_NAME}
|
||||||
|
DEPENDS ${PX4_FW_NAME}
|
||||||
|
COMMENT "Uploading PX4"
|
||||||
|
USES_TERMINAL
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(upload_skynode_wifi
|
||||||
|
COMMAND ${PX4_SOURCE_DIR}/Tools/auterion/upload_skynode.sh --file=${PX4_FW_NAME} --wifi
|
||||||
|
DEPENDS ${PX4_FW_NAME}
|
||||||
|
COMMENT "Uploading PX4"
|
||||||
|
USES_TERMINAL
|
||||||
|
)
|
Loading…
Reference in New Issue