diff --git a/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rc.APM b/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rc.APM new file mode 100644 index 0000000000..e13db9fda3 --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rc.APM @@ -0,0 +1,177 @@ +#!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_onboard start +then + echo "[APM] HMC5883 onboard started OK" +# if hmc5883 calibrate +# then +# echo "[APM] HMC5883 onboard calibrate OK" +# else +# echo "[APM] HMC5883 onboard calibrate failed" +# fi +else + echo "[APM] HMC5883 onboard start failed" + sh /etc/init.d/rc.error +fi + +#if hmc5883_external start +#then +# echo "[APM] HMC5883 external started OK" +# if hmc5883 calibrate +# then +# echo "[APM] HMC5883 external calibrate OK" +# else +# echo "[APM] HMC5883 external calibrate failed" +# fi +#else +# echo "[APM] HMC5883 external start failed" +# sh /etc/init.d/rc.error +#fi + +if mpu6000_onboard start +then + echo "[APM] MPU6000 onboard started OK" +else + echo "[APM] MPU6000 onboard start failed" + sh /etc/init.d/rc.error +fi + +#if mpu6000_external start +#then +# echo "[APM] MPU6000 external started OK" +#else +# echo "[APM] MPU6000 external 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" +#if ArduPilot -d $deviceA -d2 $deviceC start +if ArduPilot 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" + diff --git a/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rc.APMNS b/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rc.APMNS new file mode 100644 index 0000000000..c0a02c3c5a --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rc.APMNS @@ -0,0 +1,150 @@ +#!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_onboard start +then + echo "[APMNS] HMC5883 onboard started OK" +# if hmc5883 calibrate +# then +# echo "[APMNS] HMC5883 onboard calibrate OK" +# else +# echo "[APMNS] HMC5883 onboard calibrate failed" +# fi +else + echo "[APMNS] HMC5883 onboard start failed" + sh /etc/init.d/rc.error +fi + +if hmc5883_external start +then + echo "[APMNS] HMC5883 external started OK" +# if hmc5883 calibrate +# then +# echo "[APMNS] HMC5883 external calibrate OK" +# else +# echo "[APMNS] HMC5883 external calibrate failed" +# fi +else + echo "[APMNS] HMC5883 external start failed" +# sh /etc/init.d/rc.error +fi + +if mpu6000_onboard start +then + echo "[APMNS] MPU6000 onboard started OK" +else + echo "[APMNS] MPU6000 onboard start failed" + sh /etc/init.d/rc.error +fi + +if mpu6000_external start +then + echo "[APMNS] MPU6000 external started OK" +else + echo "[APMNS] MPU6000 external 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" +#if ArduPilot -d $deviceA -d2 $deviceC start +if ArduPilot 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" + diff --git a/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rc.error b/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rc.error new file mode 100644 index 0000000000..a14e763476 --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rc.error @@ -0,0 +1,7 @@ +echo "Error in startup" + +nshterm /dev/ttyACM0 & +sleep 1 +nshterm /dev/ttyS0 & +sleep 1 +exit diff --git a/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rcS b/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rcS new file mode 100644 index 0000000000..37eab9f8b6 --- /dev/null +++ b/mk/VRBRAIN/ROMFS_VRBRAIN51_APM/init.d/rcS @@ -0,0 +1,93 @@ +#!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 +else + echo "[init] no microSD card found" + set HAVE_MICROSD 0 +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 diff --git a/mk/VRBRAIN/config_vrbrain-v51_APM.mk b/mk/VRBRAIN/config_vrbrain-v51_APM.mk new file mode 100644 index 0000000000..ee79853c71 --- /dev/null +++ b/mk/VRBRAIN/config_vrbrain-v51_APM.mk @@ -0,0 +1,173 @@ +# +# Makefile for the VRBRAIN 5.1 APM configuration +# + +# +# Use the configuration's ROMFS. +# +ROMFS_ROOT = $(SKETCHBOOK)/mk/VRBRAIN/ROMFS_VRBRAIN51_APM + +MODULES += $(APM_MODULE_DIR) + +# +# Board support modules +# +MODULES += drivers/device +MODULES += drivers/stm32 +MODULES += drivers/stm32/adc +MODULES += drivers/stm32/tone_alarm +MODULES += drivers/led +MODULES += drivers/buzzer + + +MODULES += drivers/boards/vrbrain-v51 +MODULES += drivers/vrbrain/vroutput +MODULES += drivers/vrbrain/vrinput/controls +MODULES += drivers/vrbrain/vrinput + + + +#MODULES += drivers/mpu6000 +MODULES += drivers/mpu6000_external +MODULES += drivers/mpu6000_onboard +#MODULES += drivers/hmc5883 +MODULES += drivers/hmc5883_external +MODULES += drivers/hmc5883_onboard +MODULES += drivers/ms5611 + + + + + + + + + + + + + + + + +# +# System commands +# +MODULES += systemcmds/mtd + + + + + + +MODULES += systemcmds/pwm + +MODULES += systemcmds/top +MODULES += systemcmds/reboot + + +MODULES += systemcmds/tests + +MODULES += systemcmds/nshterm + +# +# General system control +# + + + + + + +# +# Estimation modules (EKF/ SO3 / other filters) +# + + + + + + +# +# Vehicle Control +# + + + + + + + + +# +# Logging +# + + +# +# Unit tests +# + + + +# +# Library modules +# +MODULES += modules/systemlib + + +MODULES += modules/uORB + +# +# Libraries +# + + +MODULES += lib/mathlib/math/filter + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# +# Transitional support - add commands from the NuttX export archive. +# +# In general, these should move to modules over time. +# +# Each entry here is ... but we use a helper macro +# to make the table a bit more readable. +# +define _B + $(strip $1).$(or $(strip $2),SCHED_PRIORITY_DEFAULT).$(or $(strip $3),CONFIG_PTHREAD_STACK_DEFAULT).$(strip $4) +endef + +# command priority stack entrypoint +BUILTIN_COMMANDS := \ + $(call _B, sercon, , 2048, sercon_main ) \ + $(call _B, serdis, , 2048, serdis_main ) \ + $(call _B, msconn, , 2048, msconn_main ) \ + $(call _B, msdis, , 2048, msdis_main ) \ + $(call _B, sysinfo, , 2048, sysinfo_main )