mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-19 01:33:33 +08:00
Fresh import of the PX4 firmware sources.
This commit is contained in:
@@ -0,0 +1 @@
|
||||
/img
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
#
|
||||
# Makefile to generate a PX4FMU ROMFS image.
|
||||
#
|
||||
# In normal use, 'make install' will generate a new ROMFS header and place it
|
||||
# into the px4fmu configuration in the appropriate location.
|
||||
#
|
||||
|
||||
#
|
||||
# Directories of interest
|
||||
#
|
||||
SRCROOT ?= $(dir $(lastword $(MAKEFILE_LIST)))
|
||||
BUILDROOT ?= $(SRCROOT)/img
|
||||
ROMFS_HEADER ?= $(SRCROOT)/../nuttx/configs/px4fmu/include/nsh_romfsimg.h
|
||||
|
||||
#
|
||||
# List of files to install in the ROMFS, specified as <source>~<destination>
|
||||
#
|
||||
ROMFS_FSSPEC := $(SRCROOT)/scripts/rcS~init.d/rcS \
|
||||
$(SRCROOT)/scripts/rc.sensors~init.d/rc.sensors \
|
||||
$(SRCROOT)/scripts/rc.logging~init.d/rc.logging \
|
||||
$(SRCROOT)/scripts/rc.standalone~init.d/rc.standalone \
|
||||
$(SRCROOT)/scripts/rc.PX4IO~init.d/rc.PX4IO \
|
||||
$(SRCROOT)/scripts/rc.PX4IOAR~init.d/rc.PX4IOAR
|
||||
|
||||
#
|
||||
# Add the PX4IO firmware to the spec if someone has dropped it into the
|
||||
# source directory, or otherwise specified its location.
|
||||
#
|
||||
# Normally this is only something you'd do when working on PX4IO; most
|
||||
# users will upgrade with firmware off the microSD card.
|
||||
#
|
||||
PX4IO_FIRMWARE ?= $(SRCROOT)/px4io.bin
|
||||
ifneq ($(wildcard $(PX4IO_FIRMWARE)),)
|
||||
ROMFS_FSSPEC += $(PX4IO_FIRMWARE)~px4io.bin
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# No user-serviceable parts below
|
||||
################################################################################
|
||||
|
||||
#
|
||||
# Just the source files from the ROMFS spec, so that we can fail cleanly if they don't
|
||||
# exist
|
||||
#
|
||||
ROMFS_SRCFILES = $(foreach spec,$(ROMFS_FSSPEC),$(firstword $(subst ~, ,$(spec))))
|
||||
|
||||
#
|
||||
# Just the destination directories from the ROMFS spec
|
||||
#
|
||||
ROMFS_DIRS = $(sort $(dir $(foreach spec,$(ROMFS_FSSPEC),$(lastword $(subst ~, ,$(spec))))))
|
||||
|
||||
|
||||
#
|
||||
# Intermediate products
|
||||
#
|
||||
ROMFS_IMG = $(BUILDROOT)/romfs.img
|
||||
ROMFS_WORKDIR = $(BUILDROOT)/romfs
|
||||
|
||||
#
|
||||
# Convenience target for rebuilding the ROMFS header
|
||||
#
|
||||
all: $(ROMFS_HEADER)
|
||||
|
||||
$(ROMFS_HEADER): $(ROMFS_IMG) $(dir $(ROMFS_HEADER))
|
||||
@echo Generating the ROMFS header...
|
||||
@(cd $(dir $(ROMFS_IMG)) && xxd -i $(notdir $(ROMFS_IMG))) > $@
|
||||
|
||||
$(ROMFS_IMG): $(ROMFS_WORKDIR)
|
||||
@echo Generating the ROMFS image...
|
||||
@genromfs -f $@ -d $(ROMFS_WORKDIR) -V "NSHInitVol"
|
||||
|
||||
$(ROMFS_WORKDIR): $(ROMFS_SRCFILES)
|
||||
@echo Rebuilding the ROMFS work area...
|
||||
@rm -rf $(ROMFS_WORKDIR)
|
||||
@mkdir -p $(ROMFS_WORKDIR)
|
||||
@for dir in $(ROMFS_DIRS) ; do mkdir -p $(ROMFS_WORKDIR)/$$dir; done
|
||||
@for spec in $(ROMFS_FSSPEC) ; do \
|
||||
echo $$spec | sed -e 's%^.*~% %' ;\
|
||||
`echo "cp $$spec" | sed -e 's%~% $(ROMFS_WORKDIR)/%'` ;\
|
||||
done
|
||||
|
||||
$(BUILDROOT):
|
||||
@mkdir -p $(BUILDROOT)
|
||||
|
||||
clean:
|
||||
@rm -rf $(BUILDROOT)
|
||||
|
||||
distclean: clean
|
||||
@rm -f $(PX4IO_FIRMWARE) $(ROMFS_HEADER)
|
||||
|
||||
.PHONY: all install clean distclean
|
||||
|
||||
#
|
||||
# Hacks and fixups
|
||||
#
|
||||
SYSTYPE = $(shell uname)
|
||||
|
||||
ifeq ($(SYSTYPE),Darwin)
|
||||
# PATH inherited by Eclipse may not include toolchain install location
|
||||
export PATH := $(PATH):/usr/local/bin
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
#!nsh
|
||||
#
|
||||
# Flight startup script for PX4FMU with PX4IO carrier board.
|
||||
#
|
||||
|
||||
echo "[init] doing PX4IO startup..."
|
||||
|
||||
#
|
||||
# Start the ORB
|
||||
#
|
||||
uorb start
|
||||
|
||||
#
|
||||
# Start the sensors.
|
||||
#
|
||||
sh /etc/init.d/rc.sensors
|
||||
|
||||
#
|
||||
# Start MAVLink
|
||||
#
|
||||
mavlink -d /dev/ttyS0 -b 57600 &
|
||||
|
||||
#
|
||||
# Start the commander.
|
||||
#
|
||||
# XXX this should be '<command> start'.
|
||||
#
|
||||
commander &
|
||||
|
||||
#
|
||||
# Start the attitude estimator
|
||||
#
|
||||
# XXX this should be '<command> start'.
|
||||
#
|
||||
attitude_estimator_bm &
|
||||
#position_estimator &
|
||||
|
||||
#
|
||||
# Configure PX4FMU for operation with PX4IO
|
||||
#
|
||||
# XXX arguments?
|
||||
#
|
||||
px4fmu start
|
||||
|
||||
#
|
||||
# Start the fixed-wing controller
|
||||
#
|
||||
# XXX this should be '<command> start'.
|
||||
#
|
||||
fixedwing_control &
|
||||
|
||||
#
|
||||
# Fire up the PX4IO interface.
|
||||
#
|
||||
px4io start
|
||||
|
||||
#
|
||||
# Start looking for a GPS.
|
||||
#
|
||||
# XXX this should not need to be backgrounded
|
||||
#
|
||||
gps -d /dev/ttyS3 -m all &
|
||||
|
||||
#
|
||||
# Start logging to microSD if we can
|
||||
#
|
||||
sh /etc/init.d/rc.logging
|
||||
|
||||
#
|
||||
# startup is done; we don't want the shell because we
|
||||
# use the same UART for telemetry (dumb).
|
||||
#
|
||||
echo "[init] startup done, exiting."
|
||||
exit
|
||||
@@ -0,0 +1,69 @@
|
||||
#!nsh
|
||||
#
|
||||
# Flight startup script for PX4FMU on PX4IOAR carrier board.
|
||||
#
|
||||
|
||||
echo "[init] doing PX4IOAR startup..."
|
||||
|
||||
#
|
||||
# Start the ORB
|
||||
#
|
||||
uorb start
|
||||
|
||||
#
|
||||
# Start the sensors.
|
||||
#
|
||||
sh /etc/init.d/rc.sensors
|
||||
|
||||
#
|
||||
# Start MAVLink
|
||||
#
|
||||
mavlink -d /dev/ttyS0 -b 57600 &
|
||||
|
||||
#
|
||||
# Start the commander.
|
||||
#
|
||||
# XXX this should be '<command> start'.
|
||||
#
|
||||
commander &
|
||||
|
||||
#
|
||||
# Start the attitude estimator
|
||||
#
|
||||
# XXX this should be '<command> start'.
|
||||
#
|
||||
attitude_estimator_bm &
|
||||
#position_estimator &
|
||||
|
||||
#
|
||||
# Configure PX4FMU for operation with PX4IOAR
|
||||
#
|
||||
# XXX arguments?
|
||||
#
|
||||
px4fmu start
|
||||
|
||||
#
|
||||
# Fire up the AR.Drone controller.
|
||||
#
|
||||
# XXX this should be '<command> start'.
|
||||
#
|
||||
ardrone_control -d /dev/ttyS1 -m attitude &
|
||||
|
||||
#
|
||||
# Start looking for a GPS.
|
||||
#
|
||||
# XXX this should not need to be backgrounded
|
||||
#
|
||||
gps -d /dev/ttyS3 -m all &
|
||||
|
||||
#
|
||||
# Start logging to microSD if we can
|
||||
#
|
||||
sh /etc/init.d/rc.logging
|
||||
|
||||
#
|
||||
# startup is done; we don't want the shell because we
|
||||
# use the same UART for telemetry (dumb).
|
||||
#
|
||||
echo "[init] startup done, exiting."
|
||||
exit
|
||||
@@ -0,0 +1,10 @@
|
||||
#!nsh
|
||||
#
|
||||
# Test jig startup script
|
||||
#
|
||||
|
||||
echo "[testing] doing production test.."
|
||||
|
||||
tests jig
|
||||
|
||||
echo "[testing] testing done"
|
||||
@@ -0,0 +1,10 @@
|
||||
#!nsh
|
||||
#
|
||||
# Initialise logging services.
|
||||
#
|
||||
|
||||
if [ -d /fs/microsd ]
|
||||
then
|
||||
# XXX this should be '<command> start'.
|
||||
# sdlog &
|
||||
fi
|
||||
@@ -0,0 +1,28 @@
|
||||
#!nsh
|
||||
#
|
||||
# Standard startup script for PX4FMU onboard sensor drivers.
|
||||
#
|
||||
|
||||
#
|
||||
# Start sensor drivers here.
|
||||
#
|
||||
|
||||
#ms5611 start
|
||||
|
||||
#
|
||||
# Start the sensor collection task.
|
||||
#
|
||||
# XXX should be 'sensors start'
|
||||
#
|
||||
sensors &
|
||||
|
||||
#
|
||||
# Test sensor functionality
|
||||
#
|
||||
# XXX integrate with 'sensors start' ?
|
||||
#
|
||||
#if sensors quicktest
|
||||
#then
|
||||
# echo "[init] sensor initialisation FAILED."
|
||||
# reboot
|
||||
#fi
|
||||
@@ -0,0 +1,67 @@
|
||||
#!nsh
|
||||
#
|
||||
# Flight startup script for PX4FMU standalone configuration.
|
||||
#
|
||||
|
||||
echo "[init] doing standalone PX4FMU startup..."
|
||||
|
||||
#
|
||||
# Start the ORB
|
||||
#
|
||||
#uorb start
|
||||
|
||||
#
|
||||
# Start the sensors.
|
||||
#
|
||||
#sh /etc/init.d/rc.sensors
|
||||
|
||||
#
|
||||
# Start MAVLink
|
||||
#
|
||||
# mavlink -d /dev/ttyS0 -b 57600 &
|
||||
|
||||
#
|
||||
# Start the commander.
|
||||
#
|
||||
# XXX this should be 'commander start'.
|
||||
#
|
||||
#commander &
|
||||
|
||||
#
|
||||
# Start the attitude estimator
|
||||
#
|
||||
# XXX this should be '<command> start'.
|
||||
#
|
||||
#attitude_estimator_bm &
|
||||
#position_estimator &
|
||||
|
||||
#
|
||||
# Start the fixed-wing controller.
|
||||
#
|
||||
# XXX should this be looking for configuration to decide
|
||||
# whether the board is configured for fixed-wing use?
|
||||
#
|
||||
# XXX this should be 'fixedwing_control start'.
|
||||
#
|
||||
#fixedwing_control &
|
||||
|
||||
#
|
||||
# Configure FMU for standalone mode
|
||||
#
|
||||
# XXX arguments?
|
||||
#
|
||||
#px4fmu start
|
||||
|
||||
#
|
||||
# Start looking for a GPS.
|
||||
#
|
||||
# XXX this should not need to be backgrounded
|
||||
#
|
||||
#gps -d /dev/ttyS3 -m all &
|
||||
|
||||
#
|
||||
# Start logging to microSD if we can
|
||||
#
|
||||
sh /etc/init.d/rc.logging
|
||||
|
||||
echo "[init] startup done"
|
||||
Executable
+120
@@ -0,0 +1,120 @@
|
||||
#!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_ALLOWED yes
|
||||
set USB no
|
||||
|
||||
#
|
||||
# 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
|
||||
|
||||
#
|
||||
# Check for USB host
|
||||
#
|
||||
if [ $USB_ALLOWED == yes ]
|
||||
then
|
||||
if sercon
|
||||
then
|
||||
echo "[init] USB interface connected"
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# 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 -t 7
|
||||
then
|
||||
set BOARD PX4IOAR
|
||||
if [ -f /etc/init.d/rc.PX4IOAR ]
|
||||
then
|
||||
echo "[init] reading /etc/init.d/rc.PX4IOAR"
|
||||
sh /etc/init.d/rc.PX4IOAR
|
||||
fi
|
||||
else
|
||||
echo "[init] PX4IOAR not detected"
|
||||
fi
|
||||
|
||||
#
|
||||
# Are we attached to a PX4IO?
|
||||
#
|
||||
if boardinfo -t 6
|
||||
then
|
||||
set BOARD PX4IO
|
||||
if [ -f /etc/init.d/rc.PX4IO ]
|
||||
then
|
||||
echo "[init] reading /etc/init.d/rc.PX4IO"
|
||||
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
|
||||
Reference in New Issue
Block a user