Skip to content

Commit 6177f5a

Browse files
Sai Vishnu BalajiArkinLabs1Support
authored andcommitted
boards: Add board support for Arkin Labs A2M6X board
This commit introduces initial board support for the A2M6X flight controller developed by Arkin Labs, based on the PX4-V6X standard. Signed-off-by: Sai Vishnu Balaji <sai.vishnu@arkinlabs.in>
1 parent 66b07d8 commit 6177f5a

32 files changed

+3942
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
2+
CONFIG_BOARD_ARCHITECTURE="cortex-m7"
3+
CONFIG_BOARD_ROMFSROOT=""
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
############################################################################
2+
#
3+
# Copyright (c) 2023 PX4 Development Team. All rights reserved.
4+
#
5+
# Redistribution and use in source and binary forms, with or without
6+
# modification, are permitted provided that the following conditions
7+
# are met:
8+
#
9+
# 1. Redistributions of source code must retain the above copyright
10+
# notice, this list of conditions and the following disclaimer.
11+
# 2. Redistributions in binary form must reproduce the above copyright
12+
# notice, this list of conditions and the following disclaimer in
13+
# the documentation and/or other materials provided with the
14+
# distribution.
15+
# 3. Neither the name PX4 nor the names of its contributors may be
16+
# used to endorse or promote products derived from this software
17+
# without specific prior written permission.
18+
#
19+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22+
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23+
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24+
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25+
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
26+
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27+
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28+
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29+
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30+
# POSSIBILITY OF SUCH DAMAGE.
31+
#
32+
############################################################################
33+
34+
35+
set(PX4_FW_NAME ${PX4_BINARY_DIR}/${PX4_BOARD_VENDOR}_${PX4_BOARD_MODEL}_${PX4_BOARD_LABEL}.px4)
36+
37+
add_custom_target(upload_skynode_usb
38+
COMMAND ${PX4_SOURCE_DIR}/Tools/auterion/upload_skynode.sh --file=${PX4_FW_NAME}
39+
DEPENDS ${PX4_FW_NAME}
40+
COMMENT "Uploading PX4"
41+
USES_TERMINAL
42+
)
43+
44+
add_custom_target(upload_skynode_wifi
45+
COMMAND ${PX4_SOURCE_DIR}/Tools/auterion/upload_skynode.sh --file=${PX4_FW_NAME} --wifi
46+
DEPENDS ${PX4_FW_NAME}
47+
COMMENT "Uploading PX4"
48+
USES_TERMINAL
49+
)
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
2+
CONFIG_BOARD_ARCHITECTURE="cortex-m7"
3+
CONFIG_BOARD_ETHERNET=y
4+
CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS0"
5+
CONFIG_BOARD_SERIAL_GPS2="/dev/ttyS7"
6+
CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS6"
7+
CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS4"
8+
CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS1"
9+
CONFIG_BOARD_SERIAL_EXT2="/dev/ttyS3"
10+
CONFIG_DRIVERS_ADC_ADS1115=y
11+
CONFIG_DRIVERS_ADC_BOARD_ADC=y
12+
CONFIG_DRIVERS_BAROMETER_BMP388=y
13+
CONFIG_DRIVERS_BAROMETER_INVENSENSE_ICP201XX=y
14+
CONFIG_DRIVERS_BAROMETER_MS5611=y
15+
CONFIG_DRIVERS_CAMERA_CAPTURE=y
16+
CONFIG_DRIVERS_CAMERA_TRIGGER=y
17+
CONFIG_DRIVERS_CDCACM_AUTOSTART=y
18+
CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y
19+
CONFIG_COMMON_DISTANCE_SENSOR=y
20+
CONFIG_DRIVERS_DSHOT=y
21+
CONFIG_DRIVERS_GNSS_SEPTENTRIO=y
22+
CONFIG_DRIVERS_GPS=y
23+
CONFIG_DRIVERS_HEATER=y
24+
CONFIG_DRIVERS_IMU_ANALOG_DEVICES_ADIS16470=y
25+
CONFIG_DRIVERS_IMU_BOSCH_BMI088=y
26+
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602=y
27+
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20649=y
28+
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20948=y
29+
CONFIG_DRIVERS_IMU_INVENSENSE_ICM42670P=y
30+
CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y
31+
CONFIG_DRIVERS_IMU_INVENSENSE_ICM45686=y
32+
CONFIG_DRIVERS_IMU_INVENSENSE_IIM42652=y
33+
CONFIG_COMMON_INS=y
34+
CONFIG_COMMON_LIGHT=y
35+
CONFIG_COMMON_MAGNETOMETER=y
36+
CONFIG_DRIVERS_OSD_MSP_OSD=y
37+
CONFIG_DRIVERS_POWER_MONITOR_INA226=y
38+
CONFIG_DRIVERS_POWER_MONITOR_INA228=y
39+
CONFIG_DRIVERS_POWER_MONITOR_INA238=y
40+
CONFIG_DRIVERS_POWER_MONITOR_PM_SELECTOR_AUTERION=y
41+
CONFIG_DRIVERS_PWM_OUT=y
42+
CONFIG_DRIVERS_PX4IO=y
43+
CONFIG_DRIVERS_RC_INPUT=y
44+
CONFIG_DRIVERS_SAFETY_BUTTON=y
45+
CONFIG_DRIVERS_TONE_ALARM=y
46+
CONFIG_DRIVERS_UAVCAN=y
47+
CONFIG_BOARD_UAVCAN_TIMER_OVERRIDE=2
48+
CONFIG_MODULES_AIRSPEED_SELECTOR=y
49+
CONFIG_MODULES_BATTERY_STATUS=y
50+
CONFIG_MODULES_CAMERA_FEEDBACK=y
51+
CONFIG_MODULES_COMMANDER=y
52+
CONFIG_MODULES_CONTROL_ALLOCATOR=y
53+
CONFIG_MODULES_DATAMAN=y
54+
CONFIG_MODULES_EKF2=y
55+
CONFIG_MODULES_ESC_BATTERY=y
56+
CONFIG_MODULES_EVENTS=y
57+
CONFIG_MODULES_FLIGHT_MODE_MANAGER=y
58+
CONFIG_MODULES_FW_ATT_CONTROL=y
59+
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=y
60+
CONFIG_MODULES_FW_RATE_CONTROL=y
61+
CONFIG_MODULES_GIMBAL=y
62+
CONFIG_MODULES_GYRO_CALIBRATION=y
63+
CONFIG_MODULES_LAND_DETECTOR=y
64+
CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=y
65+
CONFIG_MODULES_LOAD_MON=y
66+
CONFIG_MODULES_LOGGER=y
67+
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
68+
CONFIG_MODULES_MANUAL_CONTROL=y
69+
CONFIG_MODULES_MAVLINK=y
70+
CONFIG_MODULES_MC_ATT_CONTROL=y
71+
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
72+
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
73+
CONFIG_MODULES_MC_POS_CONTROL=y
74+
CONFIG_MODULES_MC_RATE_CONTROL=y
75+
CONFIG_MODULES_NAVIGATOR=y
76+
CONFIG_MODE_NAVIGATOR_VTOL_TAKEOFF=y
77+
CONFIG_MODULES_RC_UPDATE=y
78+
CONFIG_MODULES_SENSORS=y
79+
CONFIG_MODULES_TEMPERATURE_COMPENSATION=y
80+
CONFIG_MODULES_UXRCE_DDS_CLIENT=y
81+
CONFIG_MODULES_VTOL_ATT_CONTROL=y
82+
CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y
83+
CONFIG_SYSTEMCMDS_BSONDUMP=y
84+
CONFIG_SYSTEMCMDS_DMESG=y
85+
CONFIG_SYSTEMCMDS_GPIO=y
86+
CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y
87+
CONFIG_SYSTEMCMDS_I2C_LAUNCHER=y
88+
CONFIG_SYSTEMCMDS_I2CDETECT=y
89+
CONFIG_SYSTEMCMDS_LED_CONTROL=y
90+
CONFIG_SYSTEMCMDS_MFT=y
91+
CONFIG_SYSTEMCMDS_MTD=y
92+
CONFIG_SYSTEMCMDS_NETMAN=y
93+
CONFIG_SYSTEMCMDS_NSHTERM=y
94+
CONFIG_SYSTEMCMDS_PARAM=y
95+
CONFIG_SYSTEMCMDS_PERF=y
96+
CONFIG_SYSTEMCMDS_REBOOT=y
97+
CONFIG_SYSTEMCMDS_SYSTEM_TIME=y
98+
CONFIG_SYSTEMCMDS_TOP=y
99+
CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y
100+
CONFIG_SYSTEMCMDS_TUNE_CONTROL=y
101+
CONFIG_SYSTEMCMDS_UORB=y
102+
CONFIG_SYSTEMCMDS_VER=y
103+
CONFIG_SYSTEMCMDS_WORK_QUEUE=y
104+
CONFIG_ARCH_CHIP_STM32H7=y
45.8 KB
Binary file not shown.
39.2 KB
Binary file not shown.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"board_id": 53,
3+
"magic": "A2M6Xv1",
4+
"description": "Firmware for the A2M6X board",
5+
"image": "",
6+
"build_time": 0,
7+
"summary": "A2M6X",
8+
"version": "0.1",
9+
"image_size": 0,
10+
"image_maxsize": 1966080,
11+
"git_identity": "",
12+
"board_revision": 0
13+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/sh
2+
#
3+
# board specific defaults
4+
#------------------------------------------------------------------------------
5+
6+
# Mavlink ethernet (CFG 1000)
7+
param set-default MAV_2_CONFIG 1000
8+
param set-default MAV_2_BROADCAST 1
9+
param set-default MAV_2_MODE 0
10+
param set-default MAV_2_RADIO_CTL 0
11+
param set-default MAV_2_RATE 100000
12+
param set-default MAV_2_REMOTE_PRT 14550
13+
param set-default MAV_2_UDP_PRT 14550
14+
15+
# By disabling all 3 INA modules, we use the
16+
# i2c_launcher instead.
17+
param set-default SENS_EN_INA238 0
18+
param set-default SENS_EN_INA228 0
19+
param set-default SENS_EN_INA226 0
20+
21+
if ver hwbasecmp 009 010 011
22+
then
23+
# Skynode: use the "custom participant" config for uxrce_dds_client
24+
param set-default UXRCE_DDS_PTCFG 2
25+
fi
26+
27+
safety_button start
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/sh
2+
#
3+
# PX4 FMUv6X specific board MAVLink startup script.
4+
#------------------------------------------------------------------------------
5+
6+
# if skynode base board is detected start Mavlink on Telem2
7+
if ver hwbasecmp 009 010 011
8+
then
9+
mavlink start -d /dev/ttyS4 -b 3000000 -r 290000 -m onboard_low_bandwidth -x -z
10+
11+
# Ensure nothing else starts on TEL2 (ttyS4)
12+
set PRT_TEL2_ 1
13+
fi
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
#!/bin/sh
2+
#
3+
# PX4 FMUv6X specific board sensors init
4+
#------------------------------------------------------------------------------
5+
set HAVE_PM2 yes
6+
set INA_CONFIGURED no
7+
8+
if mft query -q -k MFT -s MFT_PM2 -v 0
9+
then
10+
set HAVE_PM2 no
11+
fi
12+
if param compare -s ADC_ADS1115_EN 1
13+
then
14+
ads1115 start -X
15+
board_adc start -n
16+
else
17+
board_adc start
18+
fi
19+
20+
21+
if param compare SENS_EN_INA226 1
22+
then
23+
# Start Digital power monitors
24+
ina226 -X -b 1 -t 1 -k start
25+
26+
if [ $HAVE_PM2 = yes ]
27+
then
28+
ina226 -X -b 2 -t 2 -k start
29+
fi
30+
31+
set INA_CONFIGURED yes
32+
fi
33+
34+
if param compare SENS_EN_INA228 1
35+
then
36+
# Start Digital power monitors
37+
ina228 -X -b 1 -t 1 -k start
38+
if [ $HAVE_PM2 = yes ]
39+
then
40+
ina228 -X -b 2 -t 2 -k start
41+
fi
42+
43+
set INA_CONFIGURED yes
44+
fi
45+
46+
if param compare SENS_EN_INA238 1
47+
then
48+
# Start Digital power monitors
49+
ina238 -X -b 1 -t 1 -k start
50+
if [ $HAVE_PM2 = yes ]
51+
then
52+
ina238 -X -b 2 -t 2 -k start
53+
fi
54+
55+
set INA_CONFIGURED yes
56+
fi
57+
58+
59+
if [ $INA_CONFIGURED = no ]
60+
then
61+
# INA226, INA228, INA238 auto-start
62+
i2c_launcher start -b 1
63+
if [ $HAVE_PM2 = yes ]
64+
then
65+
i2c_launcher start -b 2
66+
fi
67+
fi
68+
69+
70+
#A2M6X Sensor Set
71+
icm45686 -b 3 -s -R 0 start
72+
icm45686 -b 2 -s -R 0 start
73+
icm45686 -b 1 -s -R 8 start
74+
75+
rm3100 -I -b 4 start
76+
77+
# External compass on GPS1/I2C1 (the 3rd external bus): standard Holybro Pixhawk 4 or CUAV V5 GPS/compass puck (with lights, safety button, and buzzer)
78+
ist8310 -X -b 1 -R 10 start
79+
80+
# Possible internal Baro
81+
if param compare SENS_INT_BARO_EN 1
82+
then
83+
icp201xx -I -b 4 start
84+
icp201xx -I -b 2 start
85+
fi
86+
87+
88+
unset INA_CONFIGURED
89+
unset HAVE_PM2
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CONFIG_COMMON_DIFFERENTIAL_PRESSURE=n
2+
CONFIG_MODE_NAVIGATOR_VTOL_TAKEOFF=n
3+
CONFIG_MODULES_AIRSPEED_SELECTOR=n
4+
CONFIG_MODULES_FW_ATT_CONTROL=n
5+
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=n
6+
CONFIG_MODULES_FW_POS_CONTROL=n
7+
CONFIG_MODULES_FW_RATE_CONTROL=n
8+
CONFIG_MODULES_VTOL_ATT_CONTROL=n
9+
CONFIG_COMMON_RC=y
10+
CONFIG_EKF2_AUX_GLOBAL_POSITION=y
11+
# CONFIG_EKF2_SIDESLIP is not set
12+
CONFIG_MODULES_SIMULATION_SIMULATOR_SIH=y
13+
# CONFIG_SENSORS_VEHICLE_AIRSPEED is not set

0 commit comments

Comments
 (0)