mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-06-02 11:59:17 +08:00
Merge working changes into export-build branch.
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
.built
|
.built
|
||||||
|
.context
|
||||||
*.context
|
*.context
|
||||||
*.bdat
|
*.bdat
|
||||||
*.pdat
|
*.pdat
|
||||||
@@ -56,3 +57,6 @@ core
|
|||||||
mkdeps
|
mkdeps
|
||||||
Archives
|
Archives
|
||||||
Build
|
Build
|
||||||
|
!ROMFS/*/*.d
|
||||||
|
!ROMFS/*/*/*.d
|
||||||
|
!ROMFS/*/*/*/*.d
|
||||||
|
|||||||
@@ -42,12 +42,12 @@ include $(PX4_BASE)makefiles/setup.mk
|
|||||||
#
|
#
|
||||||
# Canned firmware configurations that we build.
|
# Canned firmware configurations that we build.
|
||||||
#
|
#
|
||||||
CONFIGS ?= px4fmu_default px4io_default
|
CONFIGS ?= $(subst config_,,$(basename $(notdir $(wildcard $(PX4_MK_DIR)config_*.mk))))
|
||||||
|
|
||||||
#
|
#
|
||||||
# Boards that we build NuttX export kits for.
|
# Boards that we build NuttX export kits for.
|
||||||
#
|
#
|
||||||
BOARDS = px4fmu px4io
|
BOARDS := $(subst board_,,$(basename $(notdir $(wildcard $(PX4_MK_DIR)board_*.mk))))
|
||||||
|
|
||||||
#
|
#
|
||||||
# Debugging
|
# Debugging
|
||||||
@@ -62,11 +62,26 @@ MQUIET = --no-print-directory
|
|||||||
#
|
#
|
||||||
# If the user has listed a config as a target, strip it out and override CONFIGS.
|
# If the user has listed a config as a target, strip it out and override CONFIGS.
|
||||||
#
|
#
|
||||||
|
FIRMWARE_GOAL = firmware
|
||||||
EXPLICIT_CONFIGS := $(filter $(CONFIGS),$(MAKECMDGOALS))
|
EXPLICIT_CONFIGS := $(filter $(CONFIGS),$(MAKECMDGOALS))
|
||||||
ifneq ($(EXPLICIT_CONFIGS),)
|
ifneq ($(EXPLICIT_CONFIGS),)
|
||||||
CONFIGS := $(EXPLICIT_CONFIGS)
|
CONFIGS := $(EXPLICIT_CONFIGS)
|
||||||
.PHONY: $(EXPLICIT_CONFIGS)
|
.PHONY: $(EXPLICIT_CONFIGS)
|
||||||
$(EXPLICIT_CONFIGS): all
|
$(EXPLICIT_CONFIGS): all
|
||||||
|
|
||||||
|
#
|
||||||
|
# If the user has asked to upload, they must have also specified exactly one
|
||||||
|
# config.
|
||||||
|
#
|
||||||
|
ifneq ($(filter upload,$(MAKECMDGOALS)),)
|
||||||
|
ifneq ($(words $(EXPLICIT_CONFIGS)),1)
|
||||||
|
$(error In order to upload, exactly one board config must be specified)
|
||||||
|
endif
|
||||||
|
FIRMWARE_GOAL = upload
|
||||||
|
.PHONY: upload
|
||||||
|
upload:
|
||||||
|
@:
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -95,11 +110,11 @@ $(FIRMWARES): $(BUILD_DIR)%.build/firmware.px4:
|
|||||||
@echo %%%% Building $(config) in $(work_dir)
|
@echo %%%% Building $(config) in $(work_dir)
|
||||||
@echo %%%%
|
@echo %%%%
|
||||||
$(Q) mkdir -p $(work_dir)
|
$(Q) mkdir -p $(work_dir)
|
||||||
$(Q) make -C $(work_dir) \
|
$(Q) make -r -C $(work_dir) \
|
||||||
-f $(PX4_MK_DIR)firmware.mk \
|
-f $(PX4_MK_DIR)firmware.mk \
|
||||||
CONFIG=$(config) \
|
CONFIG=$(config) \
|
||||||
WORK_DIR=$(work_dir) \
|
WORK_DIR=$(work_dir) \
|
||||||
firmware
|
$(FIRMWARE_GOAL)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Build the NuttX export archives.
|
# Build the NuttX export archives.
|
||||||
@@ -118,15 +133,21 @@ NUTTX_ARCHIVES = $(foreach board,$(BOARDS),$(ARCHIVE_DIR)$(board).export)
|
|||||||
.PHONY: archives
|
.PHONY: archives
|
||||||
archives: $(NUTTX_ARCHIVES)
|
archives: $(NUTTX_ARCHIVES)
|
||||||
|
|
||||||
|
# We cannot build these parallel; note that we also force -j1 for the
|
||||||
|
# sub-make invocations.
|
||||||
|
ifneq ($(filter archives,$(MAKECMDGOALS)),)
|
||||||
|
.NOTPARALLEL:
|
||||||
|
endif
|
||||||
|
|
||||||
$(ARCHIVE_DIR)%.export: board = $(notdir $(basename $@))
|
$(ARCHIVE_DIR)%.export: board = $(notdir $(basename $@))
|
||||||
$(ARCHIVE_DIR)%.export: configuration = $(if $(filter $(board),px4io),io,nsh)
|
$(ARCHIVE_DIR)%.export: configuration = $(if $(filter $(board),px4io),io,nsh)
|
||||||
$(NUTTX_ARCHIVES): $(ARCHIVE_DIR)%.export: $(NUTTX_SRC) $(NUTTX_APPS)
|
$(NUTTX_ARCHIVES): $(ARCHIVE_DIR)%.export: $(NUTTX_SRC) $(NUTTX_APPS)
|
||||||
@echo %% Configuring NuttX for $(board)
|
@echo %% Configuring NuttX for $(board)
|
||||||
$(Q) (cd $(NUTTX_SRC) && $(RMDIR) nuttx-export)
|
$(Q) (cd $(NUTTX_SRC) && $(RMDIR) nuttx-export)
|
||||||
$(Q) make -C $(NUTTX_SRC) -r $(MQUIET) distclean
|
$(Q) make -r -j1 -C $(NUTTX_SRC) -r $(MQUIET) distclean
|
||||||
$(Q) (cd $(NUTTX_SRC)tools && ./configure.sh $(board)/$(configuration))
|
$(Q) (cd $(NUTTX_SRC)tools && ./configure.sh $(board)/$(configuration))
|
||||||
@echo %% Exporting NuttX for $(board)
|
@echo %% Exporting NuttX for $(board)
|
||||||
$(Q) make -C $(NUTTX_SRC) -r $(MQUIET) export
|
$(Q) make -r -j1 -C $(NUTTX_SRC) -r $(MQUIET) export
|
||||||
$(Q) mkdir -p $(dir $@)
|
$(Q) mkdir -p $(dir $@)
|
||||||
$(Q) $(COPY) $(NUTTX_SRC)nuttx-export.zip $@
|
$(Q) $(COPY) $(NUTTX_SRC)nuttx-export.zip $@
|
||||||
|
|
||||||
@@ -162,9 +183,7 @@ help:
|
|||||||
@echo ""
|
@echo ""
|
||||||
@echo " all"
|
@echo " all"
|
||||||
@echo " Build all firmware configs: $(CONFIGS)"
|
@echo " Build all firmware configs: $(CONFIGS)"
|
||||||
@echo " A limited set of configs can be built with:"
|
@echo " A limited set of configs can be built with CONFIGS=<list-of-configs>"
|
||||||
@echo ""
|
|
||||||
@echo " CONFIGS=<list-of-configs>"
|
|
||||||
@echo ""
|
@echo ""
|
||||||
@for config in $(CONFIGS); do \
|
@for config in $(CONFIGS); do \
|
||||||
echo " $$config"; \
|
echo " $$config"; \
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
#!nsh
|
||||||
|
#
|
||||||
|
# Flight startup script for PX4FMU with PWM outputs.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Disable the USB interface
|
||||||
|
set USB no
|
||||||
|
|
||||||
|
# Disable autostarting other apps
|
||||||
|
set MODE custom
|
||||||
|
|
||||||
|
echo "[init] doing PX4FMU Quad startup..."
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the ORB
|
||||||
|
#
|
||||||
|
uorb start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Load microSD params
|
||||||
|
#
|
||||||
|
echo "[init] loading microSD params"
|
||||||
|
param select /fs/microsd/parameters
|
||||||
|
if [ -f /fs/microsd/parameters ]
|
||||||
|
then
|
||||||
|
param load /fs/microsd/parameters
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Force some key parameters to sane values
|
||||||
|
# MAV_TYPE 1 = fixed wing, 2 = quadrotor, 13 = hexarotor
|
||||||
|
# see https://pixhawk.ethz.ch/mavlink/
|
||||||
|
#
|
||||||
|
param set MAV_TYPE 2
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start MAVLink
|
||||||
|
#
|
||||||
|
mavlink start -d /dev/ttyS0 -b 57600
|
||||||
|
usleep 5000
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the sensors and test them.
|
||||||
|
#
|
||||||
|
sh /etc/init.d/rc.sensors
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the commander.
|
||||||
|
#
|
||||||
|
commander start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the attitude estimator
|
||||||
|
#
|
||||||
|
attitude_estimator_ekf start
|
||||||
|
|
||||||
|
echo "[init] starting PWM output"
|
||||||
|
fmu mode_pwm
|
||||||
|
mixer load /dev/pwm_output /etc/mixers/FMU_quad_x.mix
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start attitude control
|
||||||
|
#
|
||||||
|
multirotor_att_control start
|
||||||
|
|
||||||
|
echo "[init] startup done, exiting"
|
||||||
|
exit
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
#!nsh
|
||||||
|
|
||||||
|
# Disable USB and autostart
|
||||||
|
set USB no
|
||||||
|
set MODE camflyer
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the ORB
|
||||||
|
#
|
||||||
|
uorb start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Load microSD params
|
||||||
|
#
|
||||||
|
echo "[init] loading microSD params"
|
||||||
|
param select /fs/microsd/parameters
|
||||||
|
if [ -f /fs/microsd/parameters ]
|
||||||
|
then
|
||||||
|
param load /fs/microsd/parameters
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Force some key parameters to sane values
|
||||||
|
# MAV_TYPE 1 = fixed wing, 2 = quadrotor, 13 = hexarotor
|
||||||
|
# see https://pixhawk.ethz.ch/mavlink/
|
||||||
|
#
|
||||||
|
param set MAV_TYPE 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the sensors.
|
||||||
|
#
|
||||||
|
sh /etc/init.d/rc.sensors
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start MAVLink
|
||||||
|
#
|
||||||
|
mavlink start -d /dev/ttyS1 -b 57600
|
||||||
|
usleep 5000
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the commander.
|
||||||
|
#
|
||||||
|
commander start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start GPS interface
|
||||||
|
#
|
||||||
|
gps start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the attitude estimator
|
||||||
|
#
|
||||||
|
kalman_demo start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start PX4IO interface
|
||||||
|
#
|
||||||
|
px4io start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Load mixer and start controllers
|
||||||
|
#
|
||||||
|
mixer load /dev/pwm_output /etc/mixers/FMU_Q.mix
|
||||||
|
control_demo start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start logging
|
||||||
|
#
|
||||||
|
sdlog start -s 10
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start system state
|
||||||
|
#
|
||||||
|
if blinkm start
|
||||||
|
then
|
||||||
|
echo "using BlinkM for state indication"
|
||||||
|
blinkm systemstate
|
||||||
|
else
|
||||||
|
echo "no BlinkM found, OK."
|
||||||
|
fi
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
#!nsh
|
||||||
|
#
|
||||||
|
# Flight startup script for PX4FMU on PX4IOAR carrier board.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Disable the USB interface
|
||||||
|
set USB no
|
||||||
|
|
||||||
|
# Disable autostarting other apps
|
||||||
|
set MODE ardrone
|
||||||
|
|
||||||
|
echo "[init] doing PX4IOAR startup..."
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the ORB
|
||||||
|
#
|
||||||
|
uorb start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Init the parameter storage
|
||||||
|
#
|
||||||
|
echo "[init] loading microSD params"
|
||||||
|
param select /fs/microsd/parameters
|
||||||
|
if [ -f /fs/microsd/parameters ]
|
||||||
|
then
|
||||||
|
param load /fs/microsd/parameters
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Force some key parameters to sane values
|
||||||
|
# MAV_TYPE 1 = fixed wing, 2 = quadrotor, 13 = hexarotor
|
||||||
|
# see https://pixhawk.ethz.ch/mavlink/
|
||||||
|
#
|
||||||
|
param set MAV_TYPE 2
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the sensors.
|
||||||
|
#
|
||||||
|
sh /etc/init.d/rc.sensors
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start MAVLink
|
||||||
|
#
|
||||||
|
mavlink start -d /dev/ttyS0 -b 57600
|
||||||
|
usleep 5000
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the commander.
|
||||||
|
#
|
||||||
|
commander start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the attitude estimator
|
||||||
|
#
|
||||||
|
attitude_estimator_ekf start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Configure PX4FMU for operation with PX4IOAR
|
||||||
|
#
|
||||||
|
fmu mode_gpio_serial
|
||||||
|
|
||||||
|
#
|
||||||
|
# Fire up the multi rotor attitude controller
|
||||||
|
#
|
||||||
|
multirotor_att_control start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Fire up the AR.Drone interface.
|
||||||
|
#
|
||||||
|
ardrone_interface start -d /dev/ttyS1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start GPS capture
|
||||||
|
#
|
||||||
|
gps start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start logging
|
||||||
|
#
|
||||||
|
sdlog start -s 10
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start system state
|
||||||
|
#
|
||||||
|
if blinkm start
|
||||||
|
then
|
||||||
|
echo "using BlinkM for state indication"
|
||||||
|
blinkm systemstate
|
||||||
|
else
|
||||||
|
echo "no BlinkM found, OK."
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# startup is done; we don't want the shell because we
|
||||||
|
# use the same UART for telemetry
|
||||||
|
#
|
||||||
|
echo "[init] startup done"
|
||||||
|
exit
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
#!nsh
|
||||||
|
#
|
||||||
|
# If we are still in flight mode, work out what airframe
|
||||||
|
# configuration we have and start up accordingly.
|
||||||
|
#
|
||||||
|
if [ $MODE != autostart ]
|
||||||
|
then
|
||||||
|
echo "[init] automatic startup cancelled by user script"
|
||||||
|
else
|
||||||
|
echo "[init] detecting attached hardware..."
|
||||||
|
|
||||||
|
#
|
||||||
|
# Assume that we are PX4FMU in standalone mode
|
||||||
|
#
|
||||||
|
set BOARD PX4FMU
|
||||||
|
|
||||||
|
#
|
||||||
|
# Are we attached to a PX4IOAR (AR.Drone carrier board)?
|
||||||
|
#
|
||||||
|
if boardinfo test name PX4IOAR
|
||||||
|
then
|
||||||
|
set BOARD PX4IOAR
|
||||||
|
if [ -f /etc/init.d/rc.PX4IOAR ]
|
||||||
|
then
|
||||||
|
echo "[init] reading /etc/init.d/rc.PX4IOAR"
|
||||||
|
usleep 500
|
||||||
|
sh /etc/init.d/rc.PX4IOAR
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "[init] PX4IOAR not detected"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Are we attached to a PX4IO?
|
||||||
|
#
|
||||||
|
if boardinfo test name PX4IO
|
||||||
|
then
|
||||||
|
set BOARD PX4IO
|
||||||
|
if [ -f /etc/init.d/rc.PX4IO ]
|
||||||
|
then
|
||||||
|
echo "[init] reading /etc/init.d/rc.PX4IO"
|
||||||
|
usleep 500
|
||||||
|
sh /etc/init.d/rc.PX4IO
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "[init] PX4IO not detected"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Looks like we are stand-alone
|
||||||
|
#
|
||||||
|
if [ $BOARD == PX4FMU ]
|
||||||
|
then
|
||||||
|
echo "[init] no expansion board detected"
|
||||||
|
if [ -f /etc/init.d/rc.standalone ]
|
||||||
|
then
|
||||||
|
echo "[init] reading /etc/init.d/rc.standalone"
|
||||||
|
sh /etc/init.d/rc.standalone
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# We may not reach here if the airframe-specific script exits the shell.
|
||||||
|
#
|
||||||
|
echo "[init] startup done."
|
||||||
|
fi
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#!nsh
|
||||||
|
#
|
||||||
|
# Test jig startup script
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "[testing] doing production test.."
|
||||||
|
|
||||||
|
tests jig
|
||||||
|
|
||||||
|
echo "[testing] testing done"
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#!nsh
|
||||||
|
#
|
||||||
|
# Initialise logging services.
|
||||||
|
#
|
||||||
|
|
||||||
|
if [ -d /fs/microsd ]
|
||||||
|
then
|
||||||
|
sdlog start
|
||||||
|
fi
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
#!nsh
|
||||||
|
#
|
||||||
|
# Standard startup script for PX4FMU onboard sensor drivers.
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start sensor drivers here.
|
||||||
|
#
|
||||||
|
|
||||||
|
ms5611 start
|
||||||
|
adc start
|
||||||
|
|
||||||
|
if mpu6000 start
|
||||||
|
then
|
||||||
|
echo "using MPU6000 and HMC5883L"
|
||||||
|
hmc5883 start
|
||||||
|
else
|
||||||
|
echo "using L3GD20 and LSM303D"
|
||||||
|
l3gd20 start
|
||||||
|
lsm303 start
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the sensor collection task.
|
||||||
|
# IMPORTANT: this also loads param offsets
|
||||||
|
# ALWAYS start this task before the
|
||||||
|
# preflight_check.
|
||||||
|
#
|
||||||
|
sensors start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check sensors - run AFTER 'sensors start'
|
||||||
|
#
|
||||||
|
preflight_check
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#!nsh
|
||||||
|
#
|
||||||
|
# Flight startup script for PX4FMU standalone configuration.
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "[init] doing standalone PX4FMU startup..."
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start the ORB
|
||||||
|
#
|
||||||
|
uorb start
|
||||||
|
|
||||||
|
echo "[init] startup done"
|
||||||
Executable
+79
@@ -0,0 +1,79 @@
|
|||||||
|
#!nsh
|
||||||
|
#
|
||||||
|
# PX4FMU startup script.
|
||||||
|
#
|
||||||
|
# This script is responsible for:
|
||||||
|
#
|
||||||
|
# - mounting the microSD card (if present)
|
||||||
|
# - running the user startup script from the microSD card (if present)
|
||||||
|
# - detecting the configuration of the system and picking a suitable
|
||||||
|
# startup script to continue with
|
||||||
|
#
|
||||||
|
# Note: DO NOT add configuration-specific commands to this script;
|
||||||
|
# add them to the per-configuration scripts instead.
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Default to auto-start mode. An init script on the microSD card
|
||||||
|
# can change this to prevent automatic startup of the flight script.
|
||||||
|
#
|
||||||
|
set MODE autostart
|
||||||
|
set USB autoconnect
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start playing the startup tune
|
||||||
|
#
|
||||||
|
tone_alarm start
|
||||||
|
|
||||||
|
#
|
||||||
|
# Try to mount the microSD card.
|
||||||
|
#
|
||||||
|
echo "[init] looking for microSD..."
|
||||||
|
if mount -t vfat /dev/mmcsd0 /fs/microsd
|
||||||
|
then
|
||||||
|
echo "[init] card mounted at /fs/microsd"
|
||||||
|
else
|
||||||
|
echo "[init] no microSD card found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Look for an init script on the microSD card.
|
||||||
|
#
|
||||||
|
# To prevent automatic startup in the current flight mode,
|
||||||
|
# the script should set MODE to some other value.
|
||||||
|
#
|
||||||
|
if [ -f /fs/microsd/etc/rc ]
|
||||||
|
then
|
||||||
|
echo "[init] reading /fs/microsd/etc/rc"
|
||||||
|
sh /fs/microsd/etc/rc
|
||||||
|
fi
|
||||||
|
# Also consider rc.txt files
|
||||||
|
if [ -f /fs/microsd/etc/rc.txt ]
|
||||||
|
then
|
||||||
|
echo "[init] reading /fs/microsd/etc/rc.txt"
|
||||||
|
sh /fs/microsd/etc/rc.txt
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check for USB host
|
||||||
|
#
|
||||||
|
if [ $USB != autoconnect ]
|
||||||
|
then
|
||||||
|
echo "[init] not connecting USB"
|
||||||
|
else
|
||||||
|
if sercon
|
||||||
|
then
|
||||||
|
echo "[init] USB interface connected"
|
||||||
|
else
|
||||||
|
echo "[init] No USB connected"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if this is an APM build then there will be a rc.APM script
|
||||||
|
# from an EXTERNAL_SCRIPTS build option
|
||||||
|
if [ -f /etc/init.d/rc.APM ]
|
||||||
|
then
|
||||||
|
echo Running rc.APM
|
||||||
|
# if APM startup is successful then nsh will exit
|
||||||
|
sh /etc/init.d/rc.APM
|
||||||
|
fi
|
||||||
+17
-16
@@ -54,7 +54,6 @@ import sys
|
|||||||
import argparse
|
import argparse
|
||||||
import binascii
|
import binascii
|
||||||
import serial
|
import serial
|
||||||
import os
|
|
||||||
import struct
|
import struct
|
||||||
import json
|
import json
|
||||||
import zlib
|
import zlib
|
||||||
@@ -64,6 +63,7 @@ import array
|
|||||||
|
|
||||||
from sys import platform as _platform
|
from sys import platform as _platform
|
||||||
|
|
||||||
|
|
||||||
class firmware(object):
|
class firmware(object):
|
||||||
'''Loads a firmware file'''
|
'''Loads a firmware file'''
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ class firmware(object):
|
|||||||
0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
|
0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
|
||||||
0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
|
0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
|
||||||
0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
|
0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
|
||||||
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d ])
|
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d])
|
||||||
crcpad = bytearray('\xff\xff\xff\xff')
|
crcpad = bytearray('\xff\xff\xff\xff')
|
||||||
|
|
||||||
def __init__(self, path):
|
def __init__(self, path):
|
||||||
@@ -132,6 +132,7 @@ class firmware(object):
|
|||||||
state = self.__crc32(self.crcpad, state)
|
state = self.__crc32(self.crcpad, state)
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
|
||||||
class uploader(object):
|
class uploader(object):
|
||||||
'''Uploads a firmware file to the PX FMU bootloader'''
|
'''Uploads a firmware file to the PX FMU bootloader'''
|
||||||
|
|
||||||
@@ -167,7 +168,7 @@ class uploader(object):
|
|||||||
|
|
||||||
def __init__(self, portname, baudrate):
|
def __init__(self, portname, baudrate):
|
||||||
# open the port, keep the default timeout short so we can poll quickly
|
# open the port, keep the default timeout short so we can poll quickly
|
||||||
self.port = serial.Serial(portname, baudrate, timeout=0.25)
|
self.port = serial.Serial(portname, baudrate, timeout=0.5)
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
if self.port is not None:
|
if self.port is not None:
|
||||||
@@ -177,7 +178,7 @@ class uploader(object):
|
|||||||
# print("send " + binascii.hexlify(c))
|
# print("send " + binascii.hexlify(c))
|
||||||
self.port.write(str(c))
|
self.port.write(str(c))
|
||||||
|
|
||||||
def __recv(self, count = 1):
|
def __recv(self, count=1):
|
||||||
c = self.port.read(count)
|
c = self.port.read(count)
|
||||||
if len(c) < 1:
|
if len(c) < 1:
|
||||||
raise RuntimeError("timeout waiting for data")
|
raise RuntimeError("timeout waiting for data")
|
||||||
@@ -234,13 +235,13 @@ class uploader(object):
|
|||||||
def __erase(self):
|
def __erase(self):
|
||||||
self.__send(uploader.CHIP_ERASE
|
self.__send(uploader.CHIP_ERASE
|
||||||
+ uploader.EOC)
|
+ uploader.EOC)
|
||||||
# erase is very slow, give it 10s
|
# erase is very slow, give it 20s
|
||||||
deadline = time.time() + 10
|
deadline = time.time() + 20
|
||||||
while time.time() < deadline:
|
while time.time() < deadline:
|
||||||
try:
|
try:
|
||||||
self.__getSync()
|
self.__getSync()
|
||||||
return
|
return
|
||||||
except RuntimeError as ex:
|
except RuntimeError:
|
||||||
# we timed out, that's OK
|
# we timed out, that's OK
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -262,8 +263,8 @@ class uploader(object):
|
|||||||
self.port.flush()
|
self.port.flush()
|
||||||
programmed = self.__recv(len(data))
|
programmed = self.__recv(len(data))
|
||||||
if programmed != data:
|
if programmed != data:
|
||||||
print(("got " + binascii.hexlify(programmed)))
|
print("got " + binascii.hexlify(programmed))
|
||||||
print(("expect " + binascii.hexlify(data)))
|
print("expect " + binascii.hexlify(data))
|
||||||
return False
|
return False
|
||||||
self.__getSync()
|
self.__getSync()
|
||||||
return True
|
return True
|
||||||
@@ -307,8 +308,8 @@ class uploader(object):
|
|||||||
report_crc = self.__recv_int()
|
report_crc = self.__recv_int()
|
||||||
self.__getSync()
|
self.__getSync()
|
||||||
if report_crc != expect_crc:
|
if report_crc != expect_crc:
|
||||||
print(("Expected 0x%x" % expect_crc))
|
print("Expected 0x%x" % expect_crc)
|
||||||
print(("Got 0x%x" % report_crc))
|
print("Got 0x%x" % report_crc)
|
||||||
raise RuntimeError("Program CRC failed")
|
raise RuntimeError("Program CRC failed")
|
||||||
|
|
||||||
# get basic data about the board
|
# get basic data about the board
|
||||||
@@ -319,7 +320,7 @@ class uploader(object):
|
|||||||
# get the bootloader protocol ID first
|
# get the bootloader protocol ID first
|
||||||
self.bl_rev = self.__getInfo(uploader.INFO_BL_REV)
|
self.bl_rev = self.__getInfo(uploader.INFO_BL_REV)
|
||||||
if (self.bl_rev < uploader.BL_REV_MIN) or (self.bl_rev > uploader.BL_REV_MAX):
|
if (self.bl_rev < uploader.BL_REV_MIN) or (self.bl_rev > uploader.BL_REV_MAX):
|
||||||
print(("Unsupported bootloader protocol %d" % uploader.INFO_BL_REV))
|
print("Unsupported bootloader protocol %d" % uploader.INFO_BL_REV)
|
||||||
raise RuntimeError("Bootloader protocol mismatch")
|
raise RuntimeError("Bootloader protocol mismatch")
|
||||||
|
|
||||||
self.board_type = self.__getInfo(uploader.INFO_BOARD_ID)
|
self.board_type = self.__getInfo(uploader.INFO_BOARD_ID)
|
||||||
@@ -330,7 +331,7 @@ class uploader(object):
|
|||||||
def upload(self, fw):
|
def upload(self, fw):
|
||||||
# Make sure we are doing the right thing
|
# Make sure we are doing the right thing
|
||||||
if self.board_type != fw.property('board_id'):
|
if self.board_type != fw.property('board_id'):
|
||||||
raise RuntimeError("Firmware not suitable for this board (run 'make configure_px4fmu && make clean' or 'make configure_px4io && make clean' to reconfigure).")
|
raise RuntimeError("Firmware not suitable for this board")
|
||||||
if self.fw_maxsize < fw.property('image_size'):
|
if self.fw_maxsize < fw.property('image_size'):
|
||||||
raise RuntimeError("Firmware image is too large for this board")
|
raise RuntimeError("Firmware image is too large for this board")
|
||||||
|
|
||||||
@@ -360,7 +361,7 @@ args = parser.parse_args()
|
|||||||
|
|
||||||
# Load the firmware file
|
# Load the firmware file
|
||||||
fw = firmware(args.firmware)
|
fw = firmware(args.firmware)
|
||||||
print(("Loaded firmware for %x,%x, waiting for the bootloader..." % (fw.property('board_id'), fw.property('board_revision'))))
|
print("Loaded firmware for %x,%x, waiting for the bootloader..." % (fw.property('board_id'), fw.property('board_revision')))
|
||||||
|
|
||||||
# Spin waiting for a device to show up
|
# Spin waiting for a device to show up
|
||||||
while True:
|
while True:
|
||||||
@@ -393,7 +394,7 @@ while True:
|
|||||||
try:
|
try:
|
||||||
# identify the bootloader
|
# identify the bootloader
|
||||||
up.identify()
|
up.identify()
|
||||||
print(("Found board %x,%x bootloader rev %x on %s" % (up.board_type, up.board_rev, up.bl_rev, port)))
|
print("Found board %x,%x bootloader rev %x on %s" % (up.board_type, up.board_rev, up.bl_rev, port))
|
||||||
|
|
||||||
except:
|
except:
|
||||||
# most probably a timeout talking to the port, no bootloader
|
# most probably a timeout talking to the port, no bootloader
|
||||||
@@ -406,7 +407,7 @@ while True:
|
|||||||
except RuntimeError as ex:
|
except RuntimeError as ex:
|
||||||
|
|
||||||
# print the error
|
# print the error
|
||||||
print(("ERROR: %s" % ex.args))
|
print("ERROR: %s" % ex.args)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
# always close the port
|
# always close the port
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
############################################################################
|
|
||||||
#
|
|
||||||
# Copyright (C) 2012 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.
|
|
||||||
#
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
APPNAME = attitude_estimator_ekf
|
|
||||||
PRIORITY = SCHED_PRIORITY_DEFAULT
|
|
||||||
STACKSIZE = 2048
|
|
||||||
|
|
||||||
CXXSRCS = attitude_estimator_ekf_main.cpp
|
|
||||||
|
|
||||||
CSRCS = attitude_estimator_ekf_params.c \
|
|
||||||
codegen/eye.c \
|
|
||||||
codegen/attitudeKalmanfilter.c \
|
|
||||||
codegen/mrdivide.c \
|
|
||||||
codegen/rdivide.c \
|
|
||||||
codegen/attitudeKalmanfilter_initialize.c \
|
|
||||||
codegen/attitudeKalmanfilter_terminate.c \
|
|
||||||
codegen/rt_nonfinite.c \
|
|
||||||
codegen/rtGetInf.c \
|
|
||||||
codegen/rtGetNaN.c \
|
|
||||||
codegen/norm.c \
|
|
||||||
codegen/cross.c
|
|
||||||
|
|
||||||
|
|
||||||
# XXX this is *horribly* broken
|
|
||||||
INCLUDES += $(TOPDIR)/../mavlink/include/mavlink
|
|
||||||
|
|
||||||
include $(APPDIR)/mk/app.mk
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
############################################################################
|
|
||||||
#
|
|
||||||
# Copyright (C) 2012 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.
|
|
||||||
#
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
#
|
|
||||||
# Commander application
|
|
||||||
#
|
|
||||||
|
|
||||||
APPNAME = commander
|
|
||||||
PRIORITY = SCHED_PRIORITY_MAX - 30
|
|
||||||
STACKSIZE = 2048
|
|
||||||
|
|
||||||
INCLUDES = $(TOPDIR)/../mavlink/include/mavlink
|
|
||||||
|
|
||||||
include $(APPDIR)/mk/app.mk
|
|
||||||
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
############################################################################
|
|
||||||
#
|
|
||||||
# Copyright (C) 2012 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.
|
|
||||||
#
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
#
|
|
||||||
# Board-specific startup code for the PX4FMU
|
|
||||||
#
|
|
||||||
|
|
||||||
INCLUDES = $(TOPDIR)/arch/arm/src/stm32 $(TOPDIR)/arch/arm/src/common
|
|
||||||
LIBNAME = brd_px4fmu
|
|
||||||
|
|
||||||
include $(APPDIR)/mk/app.mk
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
############################################################################
|
|
||||||
#
|
|
||||||
# Copyright (C) 2012 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.
|
|
||||||
#
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
#
|
|
||||||
# Interface driver for the PX4FMU board
|
|
||||||
#
|
|
||||||
|
|
||||||
APPNAME = fmu
|
|
||||||
PRIORITY = SCHED_PRIORITY_DEFAULT
|
|
||||||
STACKSIZE = 2048
|
|
||||||
|
|
||||||
INCLUDES = $(TOPDIR)/arch/arm/src/stm32 $(TOPDIR)/arch/arm/src/common
|
|
||||||
|
|
||||||
include $(APPDIR)/mk/app.mk
|
|
||||||
@@ -372,7 +372,9 @@ Sensors *g_sensors;
|
|||||||
}
|
}
|
||||||
|
|
||||||
Sensors::Sensors() :
|
Sensors::Sensors() :
|
||||||
|
#ifdef CONFIG_HRT_PPM
|
||||||
_ppm_last_valid(0),
|
_ppm_last_valid(0),
|
||||||
|
#endif
|
||||||
|
|
||||||
_fd_adc(-1),
|
_fd_adc(-1),
|
||||||
_last_adc(0),
|
_last_adc(0),
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
############################################################################
|
|
||||||
#
|
|
||||||
# Copyright (C) 2012 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.
|
|
||||||
#
|
|
||||||
############################################################################
|
|
||||||
|
|
||||||
#
|
|
||||||
# Build the eeprom tool.
|
|
||||||
#
|
|
||||||
|
|
||||||
APPNAME = eeprom
|
|
||||||
PRIORITY = SCHED_PRIORITY_DEFAULT
|
|
||||||
STACKSIZE = 4096
|
|
||||||
MAXOPTIMIZATION = -Os
|
|
||||||
|
|
||||||
include $(APPDIR)/mk/app.mk
|
|
||||||
|
|
||||||
MAXOPTIMIZATION = -Os
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Platform-specific definitions for the PX4FMU
|
# Board-specific definitions for the PX4FMU
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Platform-specific definitions for the PX4IO
|
# Board-specific definitions for the PX4IO
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -5,7 +5,26 @@
|
|||||||
#
|
#
|
||||||
# Use the configuration's ROMFS.
|
# Use the configuration's ROMFS.
|
||||||
#
|
#
|
||||||
ROMFS_ROOT = $(PX4_BASE)/ROMFS/$(CONFIG)
|
ROMFS_ROOT = $(PX4_BASE)/ROMFS/px4fmu_common
|
||||||
|
|
||||||
|
#
|
||||||
|
# Board support modules
|
||||||
|
#
|
||||||
|
MODULES += drivers/px4fmu
|
||||||
|
MODULES += drivers/boards/px4fmu
|
||||||
|
MODULES += drivers/l3gd20
|
||||||
|
MODULES += drivers/ardrone_interface
|
||||||
|
MODULES += systemcmds/eeprom
|
||||||
|
|
||||||
|
#
|
||||||
|
# General system control
|
||||||
|
#
|
||||||
|
MODULES += modules/commander
|
||||||
|
|
||||||
|
#
|
||||||
|
# Estimation modules (EKF / other filters)
|
||||||
|
#
|
||||||
|
#MODULES += modules/attitude_estimator_ekf
|
||||||
|
|
||||||
#
|
#
|
||||||
# Transitional support - add commands from the NuttX export archive.
|
# Transitional support - add commands from the NuttX export archive.
|
||||||
@@ -22,25 +41,19 @@ endef
|
|||||||
# command priority stack entrypoint
|
# command priority stack entrypoint
|
||||||
BUILTIN_COMMANDS := \
|
BUILTIN_COMMANDS := \
|
||||||
$(call _B, adc, , 2048, adc_main ) \
|
$(call _B, adc, , 2048, adc_main ) \
|
||||||
$(call _B, ardrone_interface, SCHED_PRIORITY_MAX-15, 2048, ardrone_interface_main ) \
|
|
||||||
$(call _B, attitude_estimator_ekf, , 2048, attitude_estimator_ekf_main) \
|
|
||||||
$(call _B, bl_update, , 4096, bl_update_main ) \
|
$(call _B, bl_update, , 4096, bl_update_main ) \
|
||||||
$(call _B, blinkm, , 2048, blinkm_main ) \
|
$(call _B, blinkm, , 2048, blinkm_main ) \
|
||||||
$(call _B, bma180, , 2048, bma180_main ) \
|
$(call _B, bma180, , 2048, bma180_main ) \
|
||||||
$(call _B, boardinfo, , 2048, boardinfo_main ) \
|
$(call _B, boardinfo, , 2048, boardinfo_main ) \
|
||||||
$(call _B, commander, SCHED_PRIORITY_MAX-30, 2048, commander_main ) \
|
|
||||||
$(call _B, control_demo, , 2048, control_demo_main ) \
|
$(call _B, control_demo, , 2048, control_demo_main ) \
|
||||||
$(call _B, delay_test, , 2048, delay_test_main ) \
|
$(call _B, delay_test, , 2048, delay_test_main ) \
|
||||||
$(call _B, eeprom, , 4096, eeprom_main ) \
|
|
||||||
$(call _B, fixedwing_att_control, SCHED_PRIORITY_MAX-30, 2048, fixedwing_att_control_main ) \
|
$(call _B, fixedwing_att_control, SCHED_PRIORITY_MAX-30, 2048, fixedwing_att_control_main ) \
|
||||||
$(call _B, fixedwing_pos_control, SCHED_PRIORITY_MAX-30, 2048, fixedwing_pos_control_main ) \
|
$(call _B, fixedwing_pos_control, SCHED_PRIORITY_MAX-30, 2048, fixedwing_pos_control_main ) \
|
||||||
$(call _B, fmu, , 2048, fmu_main ) \
|
|
||||||
$(call _B, gps, , 2048, gps_main ) \
|
$(call _B, gps, , 2048, gps_main ) \
|
||||||
$(call _B, hil, , 2048, hil_main ) \
|
$(call _B, hil, , 2048, hil_main ) \
|
||||||
$(call _B, hmc5883, , 4096, hmc5883_main ) \
|
$(call _B, hmc5883, , 4096, hmc5883_main ) \
|
||||||
$(call _B, hott_telemetry, , 2048, hott_telemetry_main ) \
|
$(call _B, hott_telemetry, , 2048, hott_telemetry_main ) \
|
||||||
$(call _B, kalman_demo, SCHED_PRIORITY_MAX-30, 2048, kalman_demo_main ) \
|
$(call _B, kalman_demo, SCHED_PRIORITY_MAX-30, 2048, kalman_demo_main ) \
|
||||||
$(call _B, l3gd20, , 2048, l3gd20_main ) \
|
|
||||||
$(call _B, math_demo, , 8192, math_demo_main ) \
|
$(call _B, math_demo, , 8192, math_demo_main ) \
|
||||||
$(call _B, mavlink, , 2048, mavlink_main ) \
|
$(call _B, mavlink, , 2048, mavlink_main ) \
|
||||||
$(call _B, mavlink_onboard, , 2048, mavlink_onboard_main ) \
|
$(call _B, mavlink_onboard, , 2048, mavlink_onboard_main ) \
|
||||||
@@ -62,4 +75,5 @@ BUILTIN_COMMANDS := \
|
|||||||
$(call _B, tests, , 12000, tests_main ) \
|
$(call _B, tests, , 12000, tests_main ) \
|
||||||
$(call _B, tone_alarm, , 2048, tone_alarm_main ) \
|
$(call _B, tone_alarm, , 2048, tone_alarm_main ) \
|
||||||
$(call _B, top, SCHED_PRIORITY_DEFAULT-10, 3000, top_main ) \
|
$(call _B, top, SCHED_PRIORITY_DEFAULT-10, 3000, top_main ) \
|
||||||
|
$(call _B, param, SCHED_PRIORITY_DEFAULT-10, 2048, param_main ) \
|
||||||
$(call _B, uorb, , 4096, uorb_main )
|
$(call _B, uorb, , 4096, uorb_main )
|
||||||
|
|||||||
+41
-22
@@ -64,7 +64,16 @@
|
|||||||
# path to this file.
|
# path to this file.
|
||||||
#
|
#
|
||||||
# CONFIG:
|
# CONFIG:
|
||||||
# Used to set the output filename; defaults to 'firmware'.
|
# Used when searching for the configuration file, and available
|
||||||
|
# to module Makefiles to select optional features.
|
||||||
|
# If not set, CONFIG_FILE must be set and CONFIG will be derived
|
||||||
|
# automatically from it.
|
||||||
|
#
|
||||||
|
# CONFIG_FILE:
|
||||||
|
# If set, overrides the configuration file search logic. Sets
|
||||||
|
# CONFIG to the name of the configuration file, strips any
|
||||||
|
# leading config_ prefix and any suffix. e.g. config_board_foo.mk
|
||||||
|
# results in CONFIG being set to 'board_foo'.
|
||||||
#
|
#
|
||||||
# WORK_DIR:
|
# WORK_DIR:
|
||||||
# Sets the directory in which the firmware will be built. Defaults
|
# Sets the directory in which the firmware will be built. Defaults
|
||||||
@@ -97,6 +106,9 @@ ifeq ($(PX4_BASE),)
|
|||||||
export PX4_BASE := $(abspath $(MK_DIR)/..)
|
export PX4_BASE := $(abspath $(MK_DIR)/..)
|
||||||
endif
|
endif
|
||||||
$(info % PX4_BASE = $(PX4_BASE))
|
$(info % PX4_BASE = $(PX4_BASE))
|
||||||
|
ifneq ($(words $(PX4_BASE)),1)
|
||||||
|
$(error Cannot build when the PX4_BASE path contains one or more space characters.)
|
||||||
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# Set a default target so that included makefiles or errors here don't
|
# Set a default target so that included makefiles or errors here don't
|
||||||
@@ -115,13 +127,14 @@ include $(MK_DIR)/setup.mk
|
|||||||
#
|
#
|
||||||
# Locate the configuration file
|
# Locate the configuration file
|
||||||
#
|
#
|
||||||
|
ifneq ($(CONFIG_FILE),)
|
||||||
|
CONFIG := $(subst config_,,$(basename $(notdir $(CONFIG_FILE))))
|
||||||
|
else
|
||||||
|
CONFIG_FILE := $(wildcard $(PX4_MK_DIR)/config_$(CONFIG).mk)
|
||||||
|
endif
|
||||||
ifeq ($(CONFIG),)
|
ifeq ($(CONFIG),)
|
||||||
$(error Missing configuration name or file (specify with CONFIG=<config>))
|
$(error Missing configuration name or file (specify with CONFIG=<config>))
|
||||||
endif
|
endif
|
||||||
CONFIG_FILE := $(firstword $(wildcard $(CONFIG)) $(wildcard $(PX4_MK_DIR)/config_$(CONFIG).mk))
|
|
||||||
ifeq ($(CONFIG_FILE),)
|
|
||||||
$(error Can't find a config file called $(CONFIG) or $(PX4_MK_DIR)/config_$(CONFIG).mk)
|
|
||||||
endif
|
|
||||||
export CONFIG
|
export CONFIG
|
||||||
include $(CONFIG_FILE)
|
include $(CONFIG_FILE)
|
||||||
$(info % CONFIG = $(CONFIG))
|
$(info % CONFIG = $(CONFIG))
|
||||||
@@ -211,10 +224,7 @@ MODULE_OBJS := $(foreach path,$(dir $(MODULE_MKFILES)),$(WORK_DIR)$(path)module
|
|||||||
$(MODULE_OBJS): relpath = $(patsubst $(WORK_DIR)%,%,$@)
|
$(MODULE_OBJS): relpath = $(patsubst $(WORK_DIR)%,%,$@)
|
||||||
$(MODULE_OBJS): mkfile = $(patsubst %module.pre.o,%module.mk,$(relpath))
|
$(MODULE_OBJS): mkfile = $(patsubst %module.pre.o,%module.mk,$(relpath))
|
||||||
$(MODULE_OBJS): $(GLOBAL_DEPS) $(NUTTX_CONFIG_HEADER)
|
$(MODULE_OBJS): $(GLOBAL_DEPS) $(NUTTX_CONFIG_HEADER)
|
||||||
@$(ECHO) %%
|
$(Q) $(MAKE) -r -f $(PX4_MK_DIR)module.mk \
|
||||||
@$(ECHO) %% Building module using $(mkfile)
|
|
||||||
@$(ECHO) %%
|
|
||||||
$(Q) $(MAKE) -f $(PX4_MK_DIR)module.mk \
|
|
||||||
MODULE_WORK_DIR=$(dir $@) \
|
MODULE_WORK_DIR=$(dir $@) \
|
||||||
MODULE_OBJ=$@ \
|
MODULE_OBJ=$@ \
|
||||||
MODULE_MK=$(mkfile) \
|
MODULE_MK=$(mkfile) \
|
||||||
@@ -230,7 +240,7 @@ $(MODULE_CLEANS): relpath = $(patsubst $(WORK_DIR)%,%,$@)
|
|||||||
$(MODULE_CLEANS): mkfile = $(patsubst %clean,%module.mk,$(relpath))
|
$(MODULE_CLEANS): mkfile = $(patsubst %clean,%module.mk,$(relpath))
|
||||||
$(MODULE_CLEANS):
|
$(MODULE_CLEANS):
|
||||||
@$(ECHO) %% cleaning using $(mkfile)
|
@$(ECHO) %% cleaning using $(mkfile)
|
||||||
$(Q) $(MAKE) -f $(PX4_MK_DIR)module.mk \
|
$(Q) $(MAKE) -r -f $(PX4_MK_DIR)module.mk \
|
||||||
MODULE_WORK_DIR=$(dir $@) \
|
MODULE_WORK_DIR=$(dir $@) \
|
||||||
MODULE_MK=$(mkfile) \
|
MODULE_MK=$(mkfile) \
|
||||||
clean
|
clean
|
||||||
@@ -246,6 +256,9 @@ include $(PX4_MK_DIR)/nuttx.mk
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
ifneq ($(ROMFS_ROOT),)
|
ifneq ($(ROMFS_ROOT),)
|
||||||
|
ifeq ($(wildcard $(ROMFS_ROOT)),)
|
||||||
|
$(error ROMFS_ROOT specifies a directory that does not exist)
|
||||||
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# Note that there is no support for more than one root directory or constructing
|
# Note that there is no support for more than one root directory or constructing
|
||||||
@@ -272,7 +285,7 @@ $(ROMFS_OBJ): $(ROMFS_IMG) $(GLOBAL_DEPS)
|
|||||||
|
|
||||||
# Generate the ROMFS image from the root
|
# Generate the ROMFS image from the root
|
||||||
$(ROMFS_IMG): $(ROMFS_DEPS) $(GLOBAL_DEPS)
|
$(ROMFS_IMG): $(ROMFS_DEPS) $(GLOBAL_DEPS)
|
||||||
@$(ECHO) %% generating $@
|
@$(ECHO) "ROMFS: $@"
|
||||||
$(Q) $(GENROMFS) -f $@ -d $(ROMFS_ROOT) -V "NSHInitVol"
|
$(Q) $(GENROMFS) -f $@ -d $(ROMFS_ROOT) -V "NSHInitVol"
|
||||||
|
|
||||||
EXTRA_CLEANS += $(ROMGS_OBJ) $(ROMFS_IMG)
|
EXTRA_CLEANS += $(ROMGS_OBJ) $(ROMFS_IMG)
|
||||||
@@ -298,10 +311,12 @@ endif
|
|||||||
#
|
#
|
||||||
BUILTIN_CSRC = $(WORK_DIR)builtin_commands.c
|
BUILTIN_CSRC = $(WORK_DIR)builtin_commands.c
|
||||||
|
|
||||||
# add command definitions from modules
|
# command definitions from modules (may be empty at Makefile parsing time...)
|
||||||
BUILTIN_COMMAND_FILES := $(wildcard $(WORK_DIR)builtin_commands/COMMAND.*)
|
MODULE_COMMANDS = $(subst COMMAND.,,$(notdir $(wildcard $(WORK_DIR)builtin_commands/COMMAND.*)))
|
||||||
BUILTIN_COMMANDS += $(subst COMMAND.,,$(notdir $(BUILTIN_COMMAND_FILES)))
|
|
||||||
|
|
||||||
|
# We must have at least one pre-defined builtin command in order to generate
|
||||||
|
# any of this.
|
||||||
|
#
|
||||||
ifneq ($(BUILTIN_COMMANDS),)
|
ifneq ($(BUILTIN_COMMANDS),)
|
||||||
|
|
||||||
# (BUILTIN_PROTO,<cmdspec>,<outputfile>)
|
# (BUILTIN_PROTO,<cmdspec>,<outputfile>)
|
||||||
@@ -315,17 +330,19 @@ define BUILTIN_DEF
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
# Don't generate until modules have updated their command files
|
# Don't generate until modules have updated their command files
|
||||||
$(BUILTIN_CSRC): $(GLOBAL_DEPS) $(BUILTIN_COMMAND_FILES)
|
$(BUILTIN_CSRC): $(GLOBAL_DEPS) $(MODULE_OBJS) $(BUILTIN_COMMAND_FILES)
|
||||||
@$(ECHO) %% generating $@
|
@$(ECHO) "CMDS: $@"
|
||||||
$(Q) $(ECHO) '/* builtin command list - automatically generated, do not edit */' > $@
|
$(Q) $(ECHO) '/* builtin command list - automatically generated, do not edit */' > $@
|
||||||
$(Q) $(ECHO) '#include <nuttx/config.h>' >> $@
|
$(Q) $(ECHO) '#include <nuttx/config.h>' >> $@
|
||||||
$(Q) $(ECHO) '#include <nuttx/binfmt/builtin.h>' >> $@
|
$(Q) $(ECHO) '#include <nuttx/binfmt/builtin.h>' >> $@
|
||||||
$(Q) $(foreach spec,$(BUILTIN_COMMANDS),$(call BUILTIN_PROTO,$(subst ., ,$(spec)),$@))
|
$(Q) $(foreach spec,$(BUILTIN_COMMANDS),$(call BUILTIN_PROTO,$(subst ., ,$(spec)),$@))
|
||||||
|
$(Q) $(foreach spec,$(MODULE_COMMANDS),$(call BUILTIN_PROTO,$(subst ., ,$(spec)),$@))
|
||||||
$(Q) $(ECHO) 'const struct builtin_s g_builtins[] = {' >> $@
|
$(Q) $(ECHO) 'const struct builtin_s g_builtins[] = {' >> $@
|
||||||
$(Q) $(foreach spec,$(BUILTIN_COMMANDS),$(call BUILTIN_DEF,$(subst ., ,$(spec)),$@))
|
$(Q) $(foreach spec,$(BUILTIN_COMMANDS),$(call BUILTIN_DEF,$(subst ., ,$(spec)),$@))
|
||||||
|
$(Q) $(foreach spec,$(MODULE_COMMANDS),$(call BUILTIN_DEF,$(subst ., ,$(spec)),$@))
|
||||||
$(Q) $(ECHO) ' {NULL, 0, 0, NULL}' >> $@
|
$(Q) $(ECHO) ' {NULL, 0, 0, NULL}' >> $@
|
||||||
$(Q) $(ECHO) '};' >> $@
|
$(Q) $(ECHO) '};' >> $@
|
||||||
$(Q) $(ECHO) 'const int g_builtin_count = $(words $(BUILTIN_COMMANDS));' >> $@
|
$(Q) $(ECHO) 'const int g_builtin_count = $(words $(BUILTIN_COMMANDS) $(MODULE_COMMANDS));' >> $@
|
||||||
|
|
||||||
SRCS += $(BUILTIN_CSRC)
|
SRCS += $(BUILTIN_CSRC)
|
||||||
|
|
||||||
@@ -358,7 +375,7 @@ endif
|
|||||||
#
|
#
|
||||||
PRODUCT_BUNDLE = $(WORK_DIR)firmware.px4
|
PRODUCT_BUNDLE = $(WORK_DIR)firmware.px4
|
||||||
PRODUCT_BIN = $(WORK_DIR)firmware.bin
|
PRODUCT_BIN = $(WORK_DIR)firmware.bin
|
||||||
PRODUCT_SYM = $(WORK_DIR)firmware.sym
|
PRODUCT_ELF = $(WORK_DIR)firmware.elf
|
||||||
|
|
||||||
.PHONY: firmware
|
.PHONY: firmware
|
||||||
firmware: $(PRODUCT_BUNDLE)
|
firmware: $(PRODUCT_BUNDLE)
|
||||||
@@ -393,10 +410,10 @@ $(PRODUCT_BUNDLE): $(PRODUCT_BIN)
|
|||||||
--git_identity $(PX4_BASE) \
|
--git_identity $(PX4_BASE) \
|
||||||
--image $< > $@
|
--image $< > $@
|
||||||
|
|
||||||
$(PRODUCT_BIN): $(PRODUCT_SYM)
|
$(PRODUCT_BIN): $(PRODUCT_ELF)
|
||||||
$(call SYM_TO_BIN,$<,$@)
|
$(call SYM_TO_BIN,$<,$@)
|
||||||
|
|
||||||
$(PRODUCT_SYM): $(OBJS) $(MODULE_OBJS) $(GLOBAL_DEPS) $(LINK_DEPS) $(MODULE_MKFILES)
|
$(PRODUCT_ELF): $(OBJS) $(MODULE_OBJS) $(GLOBAL_DEPS) $(LINK_DEPS) $(MODULE_MKFILES)
|
||||||
$(call LINK,$@,$(OBJS) $(MODULE_OBJS))
|
$(call LINK,$@,$(OBJS) $(MODULE_OBJS))
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -407,17 +424,19 @@ $(PRODUCT_SYM): $(OBJS) $(MODULE_OBJS) $(GLOBAL_DEPS) $(LINK_DEPS) $(MODULE_MKF
|
|||||||
upload: $(PRODUCT_BUNDLE) $(PRODUCT_BIN)
|
upload: $(PRODUCT_BUNDLE) $(PRODUCT_BIN)
|
||||||
$(Q) $(MAKE) -f $(PX4_MK_DIR)/upload.mk \
|
$(Q) $(MAKE) -f $(PX4_MK_DIR)/upload.mk \
|
||||||
METHOD=serial \
|
METHOD=serial \
|
||||||
PRODUCT=$(PRODUCT) \
|
CONFIG=$(CONFIG) \
|
||||||
|
BOARD=$(BOARD) \
|
||||||
BUNDLE=$(PRODUCT_BUNDLE) \
|
BUNDLE=$(PRODUCT_BUNDLE) \
|
||||||
BIN=$(PRODUCT_BIN)
|
BIN=$(PRODUCT_BIN)
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean: $(MODULE_CLEANS)
|
clean: $(MODULE_CLEANS)
|
||||||
@$(ECHO) %% cleaning
|
@$(ECHO) %% cleaning
|
||||||
$(Q) $(REMOVE) $(PRODUCT_BUNDLE) $(PRODUCT_BIN) $(PRODUCT_SYM)
|
$(Q) $(REMOVE) $(PRODUCT_BUNDLE) $(PRODUCT_BIN) $(PRODUCT_ELF)
|
||||||
$(Q) $(REMOVE) $(OBJS) $(DEP_INCLUDES) $(EXTRA_CLEANS)
|
$(Q) $(REMOVE) $(OBJS) $(DEP_INCLUDES) $(EXTRA_CLEANS)
|
||||||
$(Q) $(RMDIR) $(NUTTX_EXPORT_DIR)
|
$(Q) $(RMDIR) $(NUTTX_EXPORT_DIR)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# DEP_INCLUDES is defined by the toolchain include in terms of $(OBJS)
|
# DEP_INCLUDES is defined by the toolchain include in terms of $(OBJS)
|
||||||
#
|
#
|
||||||
|
|||||||
+27
-7
@@ -75,6 +75,18 @@
|
|||||||
# the list should be formatted as:
|
# the list should be formatted as:
|
||||||
# <command>.<priority>.<stacksize>.<entrypoint>
|
# <command>.<priority>.<stacksize>.<entrypoint>
|
||||||
#
|
#
|
||||||
|
# INCLUDE_DIRS (optional, must be appended)
|
||||||
|
#
|
||||||
|
# The list of directories searched for include files. If non-standard
|
||||||
|
# includes (e.g. those from another module) are required, paths to search
|
||||||
|
# can be added here.
|
||||||
|
#
|
||||||
|
# DEFAULT_VISIBILITY (optional)
|
||||||
|
#
|
||||||
|
# If not set, global symbols defined in a module will not be visible
|
||||||
|
# outside the module. Symbols that should be globally visible must be
|
||||||
|
# marked __EXPORT.
|
||||||
|
# If set, global symbols defined in a module will be globally visible.
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -96,12 +108,7 @@
|
|||||||
ifeq ($(MODULE_MK),)
|
ifeq ($(MODULE_MK),)
|
||||||
$(error No module makefile specified)
|
$(error No module makefile specified)
|
||||||
endif
|
endif
|
||||||
$(info % MODULE_MK = $(MODULE_MK))
|
$(info %% MODULE_MK = $(MODULE_MK))
|
||||||
|
|
||||||
#
|
|
||||||
# Get path and tool config
|
|
||||||
#
|
|
||||||
include $(PX4_BASE)/makefiles/setup.mk
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Get the board/toolchain config
|
# Get the board/toolchain config
|
||||||
@@ -144,12 +151,25 @@ MODULE_COMMAND_FILES := $(addprefix $(WORK_DIR)/builtin_commands/COMMAND.,$(MODU
|
|||||||
$(MODULE_COMMAND_FILES): command = $(word 2,$(subst ., ,$(notdir $(@))))
|
$(MODULE_COMMAND_FILES): command = $(word 2,$(subst ., ,$(notdir $(@))))
|
||||||
$(MODULE_COMMAND_FILES): exclude = $(dir $@)COMMAND.$(command).*
|
$(MODULE_COMMAND_FILES): exclude = $(dir $@)COMMAND.$(command).*
|
||||||
$(MODULE_COMMAND_FILES): $(GLOBAL_DEPS)
|
$(MODULE_COMMAND_FILES): $(GLOBAL_DEPS)
|
||||||
@$(ECHO) COMMAND: $(command)
|
|
||||||
@$(REMOVE) -f $(exclude)
|
@$(REMOVE) -f $(exclude)
|
||||||
@$(MKDIR) -p $(dir $@)
|
@$(MKDIR) -p $(dir $@)
|
||||||
|
@echo "CMD: $(command)"
|
||||||
$(Q) $(TOUCH) $@
|
$(Q) $(TOUCH) $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Adjust compilation flags to implement EXPORT
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
ifeq ($(DEFAULT_VISIBILITY),)
|
||||||
|
DEFAULT_VISIBILITY = hidden
|
||||||
|
else
|
||||||
|
DEFAULT_VISIBILITY = default
|
||||||
|
endif
|
||||||
|
|
||||||
|
CFLAGS += -fvisibility=$(DEFAULT_VISIBILITY) -include $(PX4_INCLUDE_DIR)visibility.h
|
||||||
|
CXXFLAGS += -fvisibility=$(DEFAULT_VISIBILITY) -include $(PX4_INCLUDE_DIR)visibility.h
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Build rules
|
# Build rules
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|||||||
+5
-2
@@ -63,7 +63,10 @@ LDSCRIPT += $(NUTTX_EXPORT_DIR)build/ld.script
|
|||||||
#
|
#
|
||||||
# Add directories from the NuttX export to the relevant search paths
|
# Add directories from the NuttX export to the relevant search paths
|
||||||
#
|
#
|
||||||
INCLUDE_DIRS += $(NUTTX_EXPORT_DIR)include
|
INCLUDE_DIRS += $(NUTTX_EXPORT_DIR)include \
|
||||||
|
$(NUTTX_EXPORT_DIR)arch/chip \
|
||||||
|
$(NUTTX_EXPORT_DIR)arch/common
|
||||||
|
|
||||||
LIB_DIRS += $(NUTTX_EXPORT_DIR)libs
|
LIB_DIRS += $(NUTTX_EXPORT_DIR)libs
|
||||||
LIBS += -lapps -lnuttx
|
LIBS += -lapps -lnuttx
|
||||||
LINK_DEPS += $(NUTTX_EXPORT_DIR)libs/libapps.a \
|
LINK_DEPS += $(NUTTX_EXPORT_DIR)libs/libapps.a \
|
||||||
@@ -71,5 +74,5 @@ LINK_DEPS += $(NUTTX_EXPORT_DIR)libs/libapps.a \
|
|||||||
|
|
||||||
$(NUTTX_CONFIG_HEADER): $(NUTTX_ARCHIVE)
|
$(NUTTX_CONFIG_HEADER): $(NUTTX_ARCHIVE)
|
||||||
@$(ECHO) %% Unpacking $(NUTTX_ARCHIVE)
|
@$(ECHO) %% Unpacking $(NUTTX_ARCHIVE)
|
||||||
$(Q) $(UNZIP) -q -o -d $(WORK_DIR) $(NUTTX_ARCHIVE)
|
$(Q) $(UNZIP_CMD) -q -o -d $(WORK_DIR) $(NUTTX_ARCHIVE)
|
||||||
$(Q) $(TOUCH) $@
|
$(Q) $(TOUCH) $@
|
||||||
|
|||||||
+22
-12
@@ -41,7 +41,8 @@
|
|||||||
# the number of duplicate slashes we have lying around in paths,
|
# the number of duplicate slashes we have lying around in paths,
|
||||||
# and is consistent with joining the results of $(dir) and $(notdir).
|
# and is consistent with joining the results of $(dir) and $(notdir).
|
||||||
#
|
#
|
||||||
export PX4_MODULE_SRC = $(abspath $(PX4_BASE)/src/modules)/
|
export PX4_INCLUDE_DIR = $(abspath $(PX4_BASE)/src/include)/
|
||||||
|
export PX4_MODULE_SRC = $(abspath $(PX4_BASE)/src)/
|
||||||
export PX4_MK_DIR = $(abspath $(PX4_BASE)/makefiles)/
|
export PX4_MK_DIR = $(abspath $(PX4_BASE)/makefiles)/
|
||||||
export NUTTX_SRC = $(abspath $(PX4_BASE)/nuttx)/
|
export NUTTX_SRC = $(abspath $(PX4_BASE)/nuttx)/
|
||||||
export NUTTX_APP_SRC = $(abspath $(PX4_BASE)/apps)/
|
export NUTTX_APP_SRC = $(abspath $(PX4_BASE)/apps)/
|
||||||
@@ -51,24 +52,33 @@ export IMAGE_DIR = $(abspath $(PX4_BASE)/Images)/
|
|||||||
export BUILD_DIR = $(abspath $(PX4_BASE)/Build)/
|
export BUILD_DIR = $(abspath $(PX4_BASE)/Build)/
|
||||||
export ARCHIVE_DIR = $(abspath $(PX4_BASE)/Archives)/
|
export ARCHIVE_DIR = $(abspath $(PX4_BASE)/Archives)/
|
||||||
|
|
||||||
|
#
|
||||||
|
# Default include paths
|
||||||
|
#
|
||||||
|
export INCLUDE_DIRS := $(PX4_MODULE_SRC) \
|
||||||
|
$(PX4_INCLUDE_DIR)
|
||||||
|
|
||||||
|
# Include from legacy app/library path
|
||||||
|
export INCLUDE_DIRS += $(NUTTX_APP_SRC)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Tools
|
# Tools
|
||||||
#
|
#
|
||||||
MKFW = $(PX4_BASE)/Tools/px_mkfw.py
|
export MKFW = $(PX4_BASE)/Tools/px_mkfw.py
|
||||||
UPLOADER = $(PX4_BASE)/Tools/px_uploader.py
|
export UPLOADER = $(PX4_BASE)/Tools/px_uploader.py
|
||||||
COPY = cp
|
export COPY = cp
|
||||||
REMOVE = rm -f
|
export REMOVE = rm -f
|
||||||
RMDIR = rm -rf
|
export RMDIR = rm -rf
|
||||||
GENROMFS = genromfs
|
export GENROMFS = genromfs
|
||||||
TOUCH = touch
|
export TOUCH = touch
|
||||||
MKDIR = mkdir
|
export MKDIR = mkdir
|
||||||
ECHO = echo
|
export ECHO = echo
|
||||||
UNZIP = unzip
|
export UNZIP_CMD = unzip
|
||||||
|
|
||||||
#
|
#
|
||||||
# Host-specific paths, hacks and fixups
|
# Host-specific paths, hacks and fixups
|
||||||
#
|
#
|
||||||
SYSTYPE := $(shell uname -s)
|
export SYSTYPE := $(shell uname -s)
|
||||||
|
|
||||||
ifeq ($(SYSTYPE),Darwin)
|
ifeq ($(SYSTYPE),Darwin)
|
||||||
# Eclipse may not have the toolchain on its path.
|
# Eclipse may not have the toolchain on its path.
|
||||||
|
|||||||
@@ -157,6 +157,7 @@ CXXFLAGS = $(ARCHCXXFLAGS) \
|
|||||||
$(INSTRUMENTATIONDEFINES) \
|
$(INSTRUMENTATIONDEFINES) \
|
||||||
$(ARCHDEFINES) \
|
$(ARCHDEFINES) \
|
||||||
$(EXTRADEFINES) \
|
$(EXTRADEFINES) \
|
||||||
|
-DCONFIG_WCHAR_BUILTIN \
|
||||||
$(addprefix -I,$(INCLUDE_DIRS))
|
$(addprefix -I,$(INCLUDE_DIRS))
|
||||||
|
|
||||||
# Flags we pass to the assembler
|
# Flags we pass to the assembler
|
||||||
|
|||||||
+3
-3
@@ -21,11 +21,11 @@ ifeq ($(SERIAL_PORTS),)
|
|||||||
SERIAL_PORTS = "\\\\.\\COM32,\\\\.\\COM31,\\\\.\\COM30,\\\\.\\COM29,\\\\.\\COM28,\\\\.\\COM27,\\\\.\\COM26,\\\\.\\COM25,\\\\.\\COM24,\\\\.\\COM23,\\\\.\\COM22,\\\\.\\COM21,\\\\.\\COM20,\\\\.\\COM19,\\\\.\\COM18,\\\\.\\COM17,\\\\.\\COM16,\\\\.\\COM15,\\\\.\\COM14,\\\\.\\COM13,\\\\.\\COM12,\\\\.\\COM11,\\\\.\\COM10,\\\\.\\COM9,\\\\.\\COM8,\\\\.\\COM7,\\\\.\\COM6,\\\\.\\COM5,\\\\.\\COM4,\\\\.\\COM3,\\\\.\\COM2,\\\\.\\COM1,\\\\.\\COM0"
|
SERIAL_PORTS = "\\\\.\\COM32,\\\\.\\COM31,\\\\.\\COM30,\\\\.\\COM29,\\\\.\\COM28,\\\\.\\COM27,\\\\.\\COM26,\\\\.\\COM25,\\\\.\\COM24,\\\\.\\COM23,\\\\.\\COM22,\\\\.\\COM21,\\\\.\\COM20,\\\\.\\COM19,\\\\.\\COM18,\\\\.\\COM17,\\\\.\\COM16,\\\\.\\COM15,\\\\.\\COM14,\\\\.\\COM13,\\\\.\\COM12,\\\\.\\COM11,\\\\.\\COM10,\\\\.\\COM9,\\\\.\\COM8,\\\\.\\COM7,\\\\.\\COM6,\\\\.\\COM5,\\\\.\\COM4,\\\\.\\COM3,\\\\.\\COM2,\\\\.\\COM1,\\\\.\\COM0"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: all upload-$(METHOD)-$(PRODUCT)
|
.PHONY: all upload-$(METHOD)-$(BOARD)
|
||||||
all: upload-$(METHOD)-$(PRODUCT)
|
all: upload-$(METHOD)-$(BOARD)
|
||||||
|
|
||||||
upload-serial-px4fmu: $(BUNDLE) $(UPLOADER)
|
upload-serial-px4fmu: $(BUNDLE) $(UPLOADER)
|
||||||
@python -u $(UPLOADER) --port $(SERIAL_PORTS) $(PRODUCT_BUNDLE)
|
@python -u $(UPLOADER) --port $(SERIAL_PORTS) $(BUNDLE)
|
||||||
|
|
||||||
#
|
#
|
||||||
# JTAG firmware uploading with OpenOCD
|
# JTAG firmware uploading with OpenOCD
|
||||||
|
|||||||
@@ -308,6 +308,10 @@
|
|||||||
#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1
|
#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1
|
||||||
#define GPIO_SPI1_SCK GPIO_SPI1_SCK_1
|
#define GPIO_SPI1_SCK GPIO_SPI1_SCK_1
|
||||||
|
|
||||||
|
#define GPIO_SPI2_MISO GPIO_SPI2_MISO_2
|
||||||
|
#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_2
|
||||||
|
#define GPIO_SPI2_SCK GPIO_SPI2_SCK_2
|
||||||
|
|
||||||
#define GPIO_SPI3_MISO GPIO_SPI3_MISO_2
|
#define GPIO_SPI3_MISO GPIO_SPI3_MISO_2
|
||||||
#define GPIO_SPI3_MOSI GPIO_SPI3_MOSI_1
|
#define GPIO_SPI3_MOSI GPIO_SPI3_MOSI_1
|
||||||
#define GPIO_SPI3_SCK GPIO_SPI3_SCK_2
|
#define GPIO_SPI3_SCK GPIO_SPI3_SCK_2
|
||||||
@@ -321,6 +325,8 @@
|
|||||||
#define PX4_SPIDEV_ACCEL 2
|
#define PX4_SPIDEV_ACCEL 2
|
||||||
#define PX4_SPIDEV_MPU 3
|
#define PX4_SPIDEV_MPU 3
|
||||||
|
|
||||||
|
#define PX4_SPIDEV_ACCEL_MAG 2 // external for anti vibration test
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tone alarm output
|
* Tone alarm output
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ CONFIGURED_APPS += systemcmds/perf
|
|||||||
CONFIGURED_APPS += systemcmds/top
|
CONFIGURED_APPS += systemcmds/top
|
||||||
CONFIGURED_APPS += systemcmds/boardinfo
|
CONFIGURED_APPS += systemcmds/boardinfo
|
||||||
CONFIGURED_APPS += systemcmds/mixer
|
CONFIGURED_APPS += systemcmds/mixer
|
||||||
CONFIGURED_APPS += systemcmds/eeprom
|
|
||||||
CONFIGURED_APPS += systemcmds/param
|
CONFIGURED_APPS += systemcmds/param
|
||||||
CONFIGURED_APPS += systemcmds/pwm
|
CONFIGURED_APPS += systemcmds/pwm
|
||||||
CONFIGURED_APPS += systemcmds/bl_update
|
CONFIGURED_APPS += systemcmds/bl_update
|
||||||
@@ -110,20 +109,18 @@ endif
|
|||||||
CONFIGURED_APPS += systemcmds/i2c
|
CONFIGURED_APPS += systemcmds/i2c
|
||||||
|
|
||||||
# Communication and Drivers
|
# Communication and Drivers
|
||||||
CONFIGURED_APPS += drivers/boards/px4fmu
|
#CONFIGURED_APPS += drivers/boards/px4fmu
|
||||||
CONFIGURED_APPS += drivers/device
|
CONFIGURED_APPS += drivers/device
|
||||||
CONFIGURED_APPS += drivers/ms5611
|
CONFIGURED_APPS += drivers/ms5611
|
||||||
CONFIGURED_APPS += drivers/hmc5883
|
CONFIGURED_APPS += drivers/hmc5883
|
||||||
CONFIGURED_APPS += drivers/mpu6000
|
CONFIGURED_APPS += drivers/mpu6000
|
||||||
CONFIGURED_APPS += drivers/bma180
|
CONFIGURED_APPS += drivers/bma180
|
||||||
CONFIGURED_APPS += drivers/l3gd20
|
|
||||||
CONFIGURED_APPS += drivers/px4io
|
CONFIGURED_APPS += drivers/px4io
|
||||||
CONFIGURED_APPS += drivers/stm32
|
CONFIGURED_APPS += drivers/stm32
|
||||||
CONFIGURED_APPS += drivers/led
|
#CONFIGURED_APPS += drivers/led
|
||||||
CONFIGURED_APPS += drivers/blinkm
|
CONFIGURED_APPS += drivers/blinkm
|
||||||
CONFIGURED_APPS += drivers/stm32/tone_alarm
|
CONFIGURED_APPS += drivers/stm32/tone_alarm
|
||||||
CONFIGURED_APPS += drivers/stm32/adc
|
CONFIGURED_APPS += drivers/stm32/adc
|
||||||
CONFIGURED_APPS += drivers/px4fmu
|
|
||||||
CONFIGURED_APPS += drivers/hil
|
CONFIGURED_APPS += drivers/hil
|
||||||
CONFIGURED_APPS += drivers/gps
|
CONFIGURED_APPS += drivers/gps
|
||||||
CONFIGURED_APPS += drivers/mb12xx
|
CONFIGURED_APPS += drivers/mb12xx
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ CONFIG_ARCH_FPU=y
|
|||||||
CONFIG_ARCH_INTERRUPTSTACK=n
|
CONFIG_ARCH_INTERRUPTSTACK=n
|
||||||
CONFIG_ARCH_STACKDUMP=y
|
CONFIG_ARCH_STACKDUMP=y
|
||||||
CONFIG_ARCH_BOOTLOADER=n
|
CONFIG_ARCH_BOOTLOADER=n
|
||||||
CONFIG_ARCH_LEDS=y
|
CONFIG_ARCH_LEDS=n
|
||||||
CONFIG_ARCH_BUTTONS=n
|
CONFIG_ARCH_BUTTONS=n
|
||||||
CONFIG_ARCH_CALIBRATION=n
|
CONFIG_ARCH_CALIBRATION=n
|
||||||
CONFIG_ARCH_DMA=y
|
CONFIG_ARCH_DMA=y
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
############################################################################
|
############################################################################
|
||||||
#
|
#
|
||||||
# Copyright (C) 2012 PX4 Development Team. All rights reserved.
|
# Copyright (C) 2012-2013 PX4 Development Team. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions
|
# modification, are permitted provided that the following conditions
|
||||||
@@ -32,11 +32,9 @@
|
|||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
#
|
#
|
||||||
# Makefile to build the L3GD20 driver.
|
# AR.Drone motor driver
|
||||||
#
|
#
|
||||||
|
|
||||||
APPNAME = l3gd20
|
MODULE_COMMAND = ardrone_interface
|
||||||
PRIORITY = SCHED_PRIORITY_DEFAULT
|
SRCS = ardrone_interface.c \
|
||||||
STACKSIZE = 2048
|
ardrone_motor_control.c
|
||||||
|
|
||||||
include $(APPDIR)/mk/app.mk
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user