5 changed files with 381 additions and 0 deletions
@ -0,0 +1,148 @@ |
|||||||
|
#!nsh |
||||||
|
|
||||||
|
# APM startup script for NuttX on VRBRAIN |
||||||
|
|
||||||
|
# To disable APM startup add a /fs/microsd/APM/nostart file |
||||||
|
|
||||||
|
# check for an old file called APM, caused by |
||||||
|
# a bug in an earlier firmware release |
||||||
|
if [ -f /fs/microsd/APM ] |
||||||
|
then |
||||||
|
echo "[APM] APM file found - renaming" |
||||||
|
mv /fs/microsd/APM /fs/microsd/APM.old |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -f /fs/microsd/APM/nostart ] |
||||||
|
then |
||||||
|
echo "[APM] APM/nostart found - skipping APM startup" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
# mount binfs so we can find the built-in apps |
||||||
|
if [ -f /bin/reboot ] |
||||||
|
then |
||||||
|
echo "[APM] binfs already mounted" |
||||||
|
else |
||||||
|
echo "[APM] Mounting binfs" |
||||||
|
if mount -t binfs /dev/null /bin |
||||||
|
then |
||||||
|
echo "[APM] binfs mounted OK" |
||||||
|
else |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
if rm /fs/microsd/APM/boot.log |
||||||
|
then |
||||||
|
echo "[APM] Removed old boot.log" |
||||||
|
fi |
||||||
|
set logfile /fs/microsd/APM/BOOT.LOG |
||||||
|
|
||||||
|
if [ ! -f /bin/ArduPilot ] |
||||||
|
then |
||||||
|
echo "[APM] /bin/ArduPilot not found" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
if mkdir /fs/microsd/APM > /dev/null |
||||||
|
then |
||||||
|
echo "[APM] Created APM directory" |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APM] Starting UORB" |
||||||
|
if uorb start |
||||||
|
then |
||||||
|
echo "[APM] UORB started OK" |
||||||
|
else |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APM] Starting ADC" |
||||||
|
if adc start |
||||||
|
then |
||||||
|
echo "[APM] ADC started OK" |
||||||
|
else |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APM] Starting APM sensors" |
||||||
|
if ms5611 start |
||||||
|
then |
||||||
|
echo "[APM] MS5611 started OK" |
||||||
|
else |
||||||
|
echo "[APM] MS5611 start failed" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
if hmc5883 start |
||||||
|
then |
||||||
|
echo "[APM] HMC5883 started OK" |
||||||
|
else |
||||||
|
echo "[APM] HMC5883 start failed" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
if mpu6000 start |
||||||
|
then |
||||||
|
echo "[APM] MPU6000 started OK" |
||||||
|
else |
||||||
|
echo "[APM] MPU6000 start failed" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APM] Starting MTD driver" |
||||||
|
if mtd start /fs/mtd |
||||||
|
then |
||||||
|
echo "[APM] MTD driver started OK" |
||||||
|
else |
||||||
|
echo "[APM] MTD driver start failed" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APM] MTD driver read test" |
||||||
|
if mtd readtest /fs/mtd |
||||||
|
then |
||||||
|
echo "[APM] MTD driver readtest OK" |
||||||
|
else |
||||||
|
echo "[APM] MTD driver failed to read" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APM] Starting VROUTPUT driver" |
||||||
|
vroutput mode_pwm |
||||||
|
#if vroutput mode_pwm |
||||||
|
#then |
||||||
|
# echo "[APM] VROUTPUT driver started OK" |
||||||
|
#else |
||||||
|
# echo "[APM] VROUTPUT driver start failed" |
||||||
|
# sh /etc/init.d/rc.error |
||||||
|
#fi |
||||||
|
|
||||||
|
echo "[APM] Starting VRINPUT driver" |
||||||
|
vrinput start |
||||||
|
#if vrinput start |
||||||
|
#then |
||||||
|
# echo "[APM] VRINPUT driver started OK" |
||||||
|
#else |
||||||
|
# echo "[APM] VRINPUT driver start failed" |
||||||
|
# sh /etc/init.d/rc.error |
||||||
|
#fi |
||||||
|
|
||||||
|
set sketch NONE |
||||||
|
set deviceA /dev/ttyACM0 |
||||||
|
set deviceC /dev/ttyS2 |
||||||
|
|
||||||
|
echo "[APM] Starting ArduPilot" $deviceA $deviceC |
||||||
|
if ArduPilot -d $deviceA -d2 $deviceC start |
||||||
|
then |
||||||
|
echo "[APM] ArduPilot started OK" |
||||||
|
else |
||||||
|
echo "[APM] ArduPilot start failed" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APM] Exiting from nsh shell" |
||||||
|
exit |
||||||
|
|
||||||
|
echo "[APM] Script finished" |
||||||
|
|
@ -0,0 +1,121 @@ |
|||||||
|
#!nsh |
||||||
|
|
||||||
|
# APM startup script for NuttX on VRBRAIN |
||||||
|
|
||||||
|
# mount binfs so we can find the built-in apps |
||||||
|
if [ -f /bin/reboot ] |
||||||
|
then |
||||||
|
echo "[APMNS] binfs already mounted" |
||||||
|
else |
||||||
|
echo "[APMNS] Mounting binfs" |
||||||
|
if mount -t binfs /dev/null /bin |
||||||
|
then |
||||||
|
echo "[APMNS] binfs mounted OK" |
||||||
|
else |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
if [ ! -f /bin/ArduPilot ] |
||||||
|
then |
||||||
|
echo "[APMNS] /bin/ArduPilot not found" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APMNS] Starting UORB" |
||||||
|
if uorb start |
||||||
|
then |
||||||
|
echo "[APMNS] UORB started OK" |
||||||
|
else |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APMNS] Starting ADC" |
||||||
|
if adc start |
||||||
|
then |
||||||
|
echo "[APMNS] ADC started OK" |
||||||
|
else |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APMNS] Starting APM sensors" |
||||||
|
if ms5611 start |
||||||
|
then |
||||||
|
echo "[APMNS] MS5611 started OK" |
||||||
|
else |
||||||
|
echo "[APMNS] MS5611 start failed" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
if hmc5883 start |
||||||
|
then |
||||||
|
echo "[APMNS] HMC5883 started OK" |
||||||
|
else |
||||||
|
echo "[APMNS] HMC5883 start failed" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
if mpu6000 start |
||||||
|
then |
||||||
|
echo "[APMNS] MPU6000 started OK" |
||||||
|
else |
||||||
|
echo "[APMNS] MPU6000 start failed" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APMNS] Starting MTD driver" |
||||||
|
if mtd start /fs/mtd |
||||||
|
then |
||||||
|
echo "[APMNS] MTD driver started OK" |
||||||
|
else |
||||||
|
echo "[APMNS] MTD driver start failed" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APMNS] MTD driver read test" |
||||||
|
if mtd readtest /fs/mtd |
||||||
|
then |
||||||
|
echo "[APMNS] MTD driver readtest OK" |
||||||
|
else |
||||||
|
echo "[APMNS] MTD driver failed to read" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APMNS] Starting VROUTPUT driver" |
||||||
|
vroutput mode_pwm |
||||||
|
#if vroutput mode_pwm |
||||||
|
#then |
||||||
|
# echo "[APMNS] VROUTPUT driver started OK" |
||||||
|
#else |
||||||
|
# echo "[APMNS] VROUTPUT driver start failed" |
||||||
|
# sh /etc/init.d/rc.error |
||||||
|
#fi |
||||||
|
|
||||||
|
echo "[APMNS] Starting VRINPUT driver" |
||||||
|
vrinput start |
||||||
|
#if vrinput start |
||||||
|
#then |
||||||
|
# echo "[APMNS] VRINPUT driver started OK" |
||||||
|
#else |
||||||
|
# echo "[APMNS] VRINPUT driver start failed" |
||||||
|
# sh /etc/init.d/rc.error |
||||||
|
#fi |
||||||
|
|
||||||
|
set sketch NONE |
||||||
|
set deviceA /dev/ttyACM0 |
||||||
|
set deviceC /dev/ttyS2 |
||||||
|
|
||||||
|
echo "[APMNS] Starting ArduPilot" $deviceA $deviceC |
||||||
|
if ArduPilot -d $deviceA -d2 $deviceC start |
||||||
|
then |
||||||
|
echo "[APMNS] ArduPilot started OK" |
||||||
|
else |
||||||
|
echo "[APMNS] ArduPilot start failed" |
||||||
|
sh /etc/init.d/rc.error |
||||||
|
fi |
||||||
|
|
||||||
|
echo "[APMNS] Exiting from nsh shell" |
||||||
|
exit |
||||||
|
|
||||||
|
echo "[APMNS] Script finished" |
||||||
|
|
@ -0,0 +1,14 @@ |
|||||||
|
echo "Error in startup" |
||||||
|
|
||||||
|
tone_alarm MNCC |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
nshterm /dev/ttyACM0 & |
||||||
|
sleep 1 |
||||||
|
nshterm /dev/ttyS0 & |
||||||
|
sleep 1 |
||||||
|
exit |
@ -0,0 +1,97 @@ |
|||||||
|
#!nsh |
||||||
|
# |
||||||
|
# VRBRAIN 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 |
||||||
|
|
||||||
|
# |
||||||
|
# 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" |
||||||
|
set HAVE_MICROSD 1 |
||||||
|
# Start playing the startup tune |
||||||
|
tone_alarm start |
||||||
|
else |
||||||
|
echo "[init] no microSD card found" |
||||||
|
set HAVE_MICROSD 0 |
||||||
|
# Play SOS |
||||||
|
tone_alarm 2 |
||||||
|
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 [ $HAVE_MICROSD == 1 ] |
||||||
|
then |
||||||
|
if [ ! -f /fs/microsd/APM/nostart ] |
||||||
|
then |
||||||
|
if [ -f /etc/init.d/rc.APM ] |
||||||
|
then |
||||||
|
echo "[init] Running rc.APM" |
||||||
|
# if APM startup is successful then nsh will exit |
||||||
|
sh /etc/init.d/rc.APM |
||||||
|
else |
||||||
|
nshterm /dev/ttyACM0 & |
||||||
|
fi |
||||||
|
else |
||||||
|
nshterm /dev/ttyACM0 & |
||||||
|
fi |
||||||
|
else |
||||||
|
if [ -f /etc/init.d/rc.APMNS ] |
||||||
|
then |
||||||
|
echo "[init] Running rc.APM without SD" |
||||||
|
# if APM startup is successful then nsh will exit |
||||||
|
sh /etc/init.d/rc.APMNS |
||||||
|
else |
||||||
|
nshterm /dev/ttyACM0 & |
||||||
|
fi |
||||||
|
fi |
Loading…
Reference in new issue