mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-26 16:13:35 +08:00
px4_fmu-v5x:Use BOARD_HAS_HW_SPLIT_VERSIONING & common PAB manifest
This commit is contained in:
committed by
Daniel Agar
parent
4b8b30914a
commit
dc73d5d634
@@ -16,7 +16,7 @@ param set-default SENS_EN_INA238 0
|
|||||||
param set-default SENS_EN_INA228 0
|
param set-default SENS_EN_INA228 0
|
||||||
param set-default SENS_EN_INA226 1
|
param set-default SENS_EN_INA226 1
|
||||||
|
|
||||||
if ver hwtypecmp V5X009000 V5X009001 V5X00a000 V5X00a001 V5X008000 V5X008001 V5X010001
|
if ver hwbasecmp 008 009 00a 010
|
||||||
then
|
then
|
||||||
# Skynode: use the "custom participant" config for uxrce_dds_client
|
# Skynode: use the "custom participant" config for uxrce_dds_client
|
||||||
param set-default UXRCE_DDS_PTCFG 2
|
param set-default UXRCE_DDS_PTCFG 2
|
||||||
@@ -25,12 +25,12 @@ fi
|
|||||||
safety_button start
|
safety_button start
|
||||||
|
|
||||||
# GPIO Expander driver on external I2C3
|
# GPIO Expander driver on external I2C3
|
||||||
if ver hwtypecmp V5X009000 V5X009001
|
if ver hwbasecmp 009
|
||||||
then
|
then
|
||||||
# No USB
|
# No USB
|
||||||
mcp23009 start -b 3 -X -D 0xf0 -O 0xf0 -P 0x0f -U 10
|
mcp23009 start -b 3 -X -D 0xf0 -O 0xf0 -P 0x0f -U 10
|
||||||
fi
|
fi
|
||||||
if ver hwtypecmp V5X00a000 V5X00a001 V5X008000 V5X008001
|
if ver hwbasecmp 00a 008
|
||||||
then
|
then
|
||||||
mcp23009 start -b 3 -X -D 0xf1 -O 0xf0 -P 0x0f -U 10
|
mcp23009 start -b 3 -X -D 0xf1 -O 0xf0 -P 0x0f -U 10
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# board specific MAVLink startup script.
|
# board specific MAVLink startup script.
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
if ver hwtypecmp V5X009000 V5X009001 V5X00a000 V5X00a001 V5X008000 V5X008001 V5X010001
|
if ver hwbasecmp 008 009 00a 010
|
||||||
then
|
then
|
||||||
# Start MAVLink on the UART connected to the mission computer
|
# Start MAVLink on the UART connected to the mission computer
|
||||||
mavlink start -d /dev/ttyS4 -b 3000000 -r 290000 -m onboard_low_bandwidth -x -z
|
mavlink start -d /dev/ttyS4 -b 3000000 -r 290000 -m onboard_low_bandwidth -x -z
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
set HAVE_PM2 yes
|
set HAVE_PM2 yes
|
||||||
|
|
||||||
if ver hwtypecmp V5X005000 V5X005001 V5X005002
|
if mft query -q -k MFT -s MFT_PM2 -v 0
|
||||||
then
|
then
|
||||||
set HAVE_PM2 no
|
set HAVE_PM2 no
|
||||||
fi
|
fi
|
||||||
@@ -49,33 +49,11 @@ then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ver hwtypecmp V5X000000 V5X000001 V5X000002 V5X001000 V5X004000 V5X004001 V5X004002 V5X005001 V5X005002
|
if ver hwbasecmp 008 009 00a 010
|
||||||
then
|
then
|
||||||
#FMUv5Xbase board orientation
|
|
||||||
|
|
||||||
if ver hwtypecmp V5X000000 V5X000001 V5X004000 V5X004001 V5X005001
|
|
||||||
then
|
|
||||||
# Internal SPI BMI088
|
|
||||||
bmi088 -A -R 4 -s start
|
|
||||||
bmi088 -G -R 4 -s start
|
|
||||||
else
|
|
||||||
# Internal SPI bus ICM20649
|
|
||||||
icm20649 -s -R 6 start
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Internal SPI bus ICM42688p
|
|
||||||
icm42688p -R 6 -s start
|
|
||||||
|
|
||||||
# Internal SPI bus ICM-20602 (hard-mounted)
|
|
||||||
icm20602 -R 10 -s start
|
|
||||||
|
|
||||||
# Internal magnetometer on I2c
|
|
||||||
bmm150 -I start
|
|
||||||
|
|
||||||
else
|
|
||||||
#SKYNODE base fmu board orientation
|
#SKYNODE base fmu board orientation
|
||||||
|
|
||||||
if ver hwtypecmp V5X009000 V5X009001 V5X00a000 V5X00a001 V5X008000 V5X008001 V5X010001
|
if ver hwtypecmp V5X000 V5X001
|
||||||
then
|
then
|
||||||
# Internal SPI BMI088
|
# Internal SPI BMI088
|
||||||
bmi088 -A -R 2 -s start
|
bmi088 -A -R 2 -s start
|
||||||
@@ -97,6 +75,27 @@ else
|
|||||||
# Auto start power monitors
|
# Auto start power monitors
|
||||||
pm_selector_auterion start
|
pm_selector_auterion start
|
||||||
|
|
||||||
|
else
|
||||||
|
#FMUv5Xbase board orientation
|
||||||
|
|
||||||
|
if ver hwtypecmp V5X000 V5X001
|
||||||
|
then
|
||||||
|
# Internal SPI BMI088
|
||||||
|
bmi088 -A -R 4 -s start
|
||||||
|
bmi088 -G -R 4 -s start
|
||||||
|
else
|
||||||
|
# Internal SPI bus ICM20649
|
||||||
|
icm20649 -s -R 6 start
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Internal SPI bus ICM42688p
|
||||||
|
icm42688p -R 6 -s start
|
||||||
|
|
||||||
|
# Internal SPI bus ICM-20602 (hard-mounted)
|
||||||
|
icm20602 -R 10 -s start
|
||||||
|
|
||||||
|
# Internal magnetometer on I2c
|
||||||
|
bmm150 -I start
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 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)
|
# 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)
|
||||||
@@ -108,7 +107,7 @@ ist8310 -X -b 1 -R 10 start
|
|||||||
if param compare SENS_INT_BARO_EN 1
|
if param compare SENS_INT_BARO_EN 1
|
||||||
then
|
then
|
||||||
bmp388 -I -a 0x77 start
|
bmp388 -I -a 0x77 start
|
||||||
if ver hwtypecmp V5X000000 V5X001000 V5X008000 V5X009000 V5X00a000
|
if ver hwtypecmp V5X000
|
||||||
then
|
then
|
||||||
bmp388 -I start
|
bmp388 -I start
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ add_library(drivers_board
|
|||||||
i2c.cpp
|
i2c.cpp
|
||||||
init.cpp
|
init.cpp
|
||||||
led.c
|
led.c
|
||||||
manifest.c
|
|
||||||
mtd.cpp
|
mtd.cpp
|
||||||
sdio.c
|
sdio.c
|
||||||
spi.cpp
|
spi.cpp
|
||||||
|
|||||||
@@ -179,31 +179,17 @@
|
|||||||
|
|
||||||
/* HW Version and Revision drive signals Default to 1 to detect */
|
/* HW Version and Revision drive signals Default to 1 to detect */
|
||||||
|
|
||||||
#define BOARD_HAS_HW_VERSIONING // migrate to Split
|
#define BOARD_HAS_HW_SPLIT_VERSIONING
|
||||||
|
|
||||||
#define GPIO_HW_VER_REV_DRIVE /* PG0 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTG|GPIO_PIN0)
|
#define GPIO_HW_VER_REV_DRIVE /* PG0 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTG|GPIO_PIN0)
|
||||||
#define GPIO_HW_REV_SENSE /* PF5 */ ADC3_GPIO(15)
|
#define GPIO_HW_REV_SENSE /* PF5 */ ADC3_GPIO(15)
|
||||||
#define GPIO_HW_VER_SENSE /* PF4 */ ADC3_GPIO(14)
|
#define GPIO_HW_VER_SENSE /* PF4 */ ADC3_GPIO(14)
|
||||||
#define HW_INFO_INIT_PREFIX "V5X"
|
#define HW_INFO_INIT_PREFIX "V5X"
|
||||||
#define BOARD_NUM_SPI_CFG_HW_VERSIONS 7
|
#define BOARD_NUM_SPI_CFG_HW_VERSIONS 3
|
||||||
// Base FMUM
|
|
||||||
#define V5X00 HW_VER_REV(0x0,0x0) // FMUV5X, Rev 0
|
#define V5X_0 HW_FMUM_ID(0x0) // FMUV5X, Auterion FMUv5x RC13 (baro2 BMP388 on I2C4) Sensor Set Rev 0
|
||||||
#define V5X10 HW_VER_REV(0x1,0x0) // NO PX4IO, Rev 0
|
#define V5X_1 HW_FMUM_ID(0x1) // FMUV5X, Auterion, HB FMUv5x RC15 (baro2 BMP388 on I2C2) Sensor Set Rev 1
|
||||||
#define V5X01 HW_VER_REV(0x0,0x1) // FMUV5X I2C2 BMP388, Rev 1
|
#define V5X_2 HW_FMUM_ID(0x2) // FMUV5X, HB FMUv5x Sensor Set Rev 2
|
||||||
#define V5X02 HW_VER_REV(0x0,0x2) // FMUV5X, Rev 2
|
|
||||||
#define V5X40 HW_VER_REV(0x4,0x0) // FMUV5X, HB CM4 base Rev 0
|
|
||||||
#define V5X41 HW_VER_REV(0x4,0x1) // FMUV5X I2C2 BMP388, HB CM4 base Rev 1
|
|
||||||
#define V5X42 HW_VER_REV(0x4,0x2) // FMUV5X, HB CM4 base Rev 2
|
|
||||||
#define V5X50 HW_VER_REV(0x5,0x0) // FMUV5X, HB Mini Rev 0
|
|
||||||
#define V5X51 HW_VER_REV(0x5,0x1) // FMUV5X I2C2 BMP388, HB Mini Rev 1
|
|
||||||
#define V5X52 HW_VER_REV(0x5,0x2) // FMUV5X, HB Mini Rev 2
|
|
||||||
#define V5X90 HW_VER_REV(0x9,0x0) // NO USB, Rev 0
|
|
||||||
#define V5X91 HW_VER_REV(0x9,0x1) // NO USB I2C2 BMP388, Rev 1
|
|
||||||
#define V5X92 HW_VER_REV(0x9,0x2) // NO USB I2C2 BMP388, Rev 2
|
|
||||||
#define V5Xa0 HW_VER_REV(0xa,0x0) // NO USB (Q), Rev 0
|
|
||||||
#define V5Xa1 HW_VER_REV(0xa,0x1) // NO USB (Q) I2C2 BMP388, Rev 1
|
|
||||||
#define V5Xa2 HW_VER_REV(0xa,0x2) // NO USB (Q) I2C2 BMP388, Rev 2
|
|
||||||
#define V5X101 HW_VER_REV(0x10,0x1) // NO USB (Q) I2C2 BMP388, Rev 1
|
|
||||||
|
|
||||||
#define UAVCAN_NUM_IFACES_RUNTIME 1
|
#define UAVCAN_NUM_IFACES_RUNTIME 1
|
||||||
|
|
||||||
|
|||||||
@@ -1,222 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
*
|
|
||||||
* Copyright (c) 2018-2021 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.
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file manifest.c
|
|
||||||
*
|
|
||||||
* This module supplies the interface to the manifest of hardware that is
|
|
||||||
* optional and dependent on the HW REV and HW VER IDs
|
|
||||||
*
|
|
||||||
* The manifest allows the system to know whether a hardware option
|
|
||||||
* say for example the PX4IO is an no-pop option vs it is broken.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Included Files
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include <nuttx/config.h>
|
|
||||||
#include <board_config.h>
|
|
||||||
|
|
||||||
#include <inttypes.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <syslog.h>
|
|
||||||
|
|
||||||
#include "systemlib/px4_macros.h"
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Pre-Processor Definitions
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint32_t hw_ver_rev; /* the version and revision */
|
|
||||||
const px4_hw_mft_item_t *mft; /* The first entry */
|
|
||||||
uint32_t entries; /* the lenght of the list */
|
|
||||||
} px4_hw_mft_list_entry_t;
|
|
||||||
|
|
||||||
typedef px4_hw_mft_list_entry_t *px4_hw_mft_list_entry;
|
|
||||||
#define px4_hw_mft_list_uninitialized (px4_hw_mft_list_entry) -1
|
|
||||||
|
|
||||||
static const px4_hw_mft_item_t device_unsupported = {0, 0, 0};
|
|
||||||
|
|
||||||
// List of components on a specific board configuration
|
|
||||||
// The index of those components is given by the enum (px4_hw_mft_item_id_t)
|
|
||||||
// declared in board_common.h
|
|
||||||
static const px4_hw_mft_item_t hw_mft_list_v0500[] = {
|
|
||||||
{
|
|
||||||
// PX4_MFT_PX4IO
|
|
||||||
.present = 1,
|
|
||||||
.mandatory = 1,
|
|
||||||
.connection = px4_hw_con_onboard,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// PX4_MFT_USB
|
|
||||||
.present = 1,
|
|
||||||
.mandatory = 1,
|
|
||||||
.connection = px4_hw_con_onboard,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// PX4_MFT_CAN2
|
|
||||||
.present = 1,
|
|
||||||
.mandatory = 1,
|
|
||||||
.connection = px4_hw_con_onboard,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static const px4_hw_mft_item_t hw_mft_list_v0550[] = {
|
|
||||||
{
|
|
||||||
// PX4_MFT_PX4IO
|
|
||||||
.present = 1,
|
|
||||||
.mandatory = 1,
|
|
||||||
.connection = px4_hw_con_onboard,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// PX4_MFT_USB
|
|
||||||
.present = 1,
|
|
||||||
.mandatory = 1,
|
|
||||||
.connection = px4_hw_con_onboard,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// PX4_MFT_CAN2
|
|
||||||
.present = 0,
|
|
||||||
.mandatory = 0,
|
|
||||||
.connection = px4_hw_con_unknown,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static const px4_hw_mft_item_t hw_mft_list_v0510[] = {
|
|
||||||
{
|
|
||||||
// PX4_MFT_PX4IO
|
|
||||||
.present = 0,
|
|
||||||
.mandatory = 0,
|
|
||||||
.connection = px4_hw_con_unknown,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// PX4_MFT_USB
|
|
||||||
.present = 1,
|
|
||||||
.mandatory = 1,
|
|
||||||
.connection = px4_hw_con_onboard,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// PX4_MFT_CAN2
|
|
||||||
.present = 1,
|
|
||||||
.mandatory = 1,
|
|
||||||
.connection = px4_hw_con_onboard,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static const px4_hw_mft_item_t hw_mft_list_v0509[] = {
|
|
||||||
{
|
|
||||||
// PX4_MFT_PX4IO
|
|
||||||
.present = 1,
|
|
||||||
.mandatory = 1,
|
|
||||||
.connection = px4_hw_con_onboard,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// PX4_MFT_USB
|
|
||||||
.present = 0,
|
|
||||||
.mandatory = 0,
|
|
||||||
.connection = px4_hw_con_unknown,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// PX4_MFT_CAN2
|
|
||||||
.present = 1,
|
|
||||||
.mandatory = 1,
|
|
||||||
.connection = px4_hw_con_onboard,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static px4_hw_mft_list_entry_t mft_lists[] = {
|
|
||||||
// ver_rev
|
|
||||||
{V5X00, hw_mft_list_v0500, arraySize(hw_mft_list_v0500)}, // FMUV5X, Rev 0
|
|
||||||
{V5X01, hw_mft_list_v0500, arraySize(hw_mft_list_v0500)}, // FMUV5X, Rev 1
|
|
||||||
{V5X02, hw_mft_list_v0500, arraySize(hw_mft_list_v0500)}, // FMUV5X, Rev 2
|
|
||||||
{V5X10, hw_mft_list_v0510, arraySize(hw_mft_list_v0510)}, // NO PX4IO, Rev 0
|
|
||||||
{V5X41, hw_mft_list_v0500, arraySize(hw_mft_list_v0500)}, // FMUV5X, HB CM4 base Rev 1
|
|
||||||
{V5X42, hw_mft_list_v0500, arraySize(hw_mft_list_v0500)}, // FMUV5X, HB CM4 base Rev 2
|
|
||||||
{V5X51, hw_mft_list_v0550, arraySize(hw_mft_list_v0550)}, // FMUV5X, HB Mini Rev 1
|
|
||||||
{V5X52, hw_mft_list_v0550, arraySize(hw_mft_list_v0550)}, // FMUV5X, HB Mini Rev 2
|
|
||||||
{V5X90, hw_mft_list_v0509, arraySize(hw_mft_list_v0509)}, // NO USB, Rev 0
|
|
||||||
{V5X91, hw_mft_list_v0509, arraySize(hw_mft_list_v0509)}, // NO USB I2C2 BMP388, Rev 1
|
|
||||||
{V5X92, hw_mft_list_v0509, arraySize(hw_mft_list_v0509)}, // NO USB I2C2 BMP388, Rev 2
|
|
||||||
{V5Xa0, hw_mft_list_v0509, arraySize(hw_mft_list_v0509)}, // NO USB (Q), Rev 0
|
|
||||||
{V5Xa1, hw_mft_list_v0509, arraySize(hw_mft_list_v0509)}, // NO USB (Q) I2C2 BMP388, Rev 1
|
|
||||||
{V5Xa2, hw_mft_list_v0509, arraySize(hw_mft_list_v0509)}, // NO USB (Q) I2C2 BMP388, Rev 2
|
|
||||||
{V5X101, hw_mft_list_v0509, arraySize(hw_mft_list_v0509)}, // NO USB I2C2 BMP388, Rev 1
|
|
||||||
};
|
|
||||||
|
|
||||||
/************************************************************************************
|
|
||||||
* Name: board_query_manifest
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Optional returns manifest item.
|
|
||||||
*
|
|
||||||
* Input Parameters:
|
|
||||||
* manifest_id - the ID for the manifest item to retrieve
|
|
||||||
*
|
|
||||||
* Returned Value:
|
|
||||||
* 0 - item is not in manifest => assume legacy operations
|
|
||||||
* pointer to a manifest item
|
|
||||||
*
|
|
||||||
************************************************************************************/
|
|
||||||
|
|
||||||
__EXPORT px4_hw_mft_item board_query_manifest(px4_hw_mft_item_id_t id)
|
|
||||||
{
|
|
||||||
static px4_hw_mft_list_entry boards_manifest = px4_hw_mft_list_uninitialized;
|
|
||||||
|
|
||||||
if (boards_manifest == px4_hw_mft_list_uninitialized) {
|
|
||||||
uint32_t ver_rev = board_get_hw_version() << 16;
|
|
||||||
ver_rev |= board_get_hw_revision();
|
|
||||||
|
|
||||||
for (unsigned i = 0; i < arraySize(mft_lists); i++) {
|
|
||||||
if (mft_lists[i].hw_ver_rev == ver_rev) {
|
|
||||||
boards_manifest = &mft_lists[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (boards_manifest == px4_hw_mft_list_uninitialized) {
|
|
||||||
syslog(LOG_ERR, "[boot] Board %08" PRIx32 " is not supported!\n", ver_rev);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
px4_hw_mft_item rv = &device_unsupported;
|
|
||||||
|
|
||||||
if (boards_manifest != px4_hw_mft_list_uninitialized &&
|
|
||||||
id < boards_manifest->entries) {
|
|
||||||
rv = &boards_manifest->mft[id];
|
|
||||||
}
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
@@ -31,6 +31,9 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
#include <board_config.h>
|
||||||
|
|
||||||
#include <nuttx/spi/spi.h>
|
#include <nuttx/spi/spi.h>
|
||||||
#include <px4_platform_common/px4_manifest.h>
|
#include <px4_platform_common/px4_manifest.h>
|
||||||
// KiB BS nB
|
// KiB BS nB
|
||||||
@@ -114,10 +117,16 @@ static const px4_mft_entry_s mtd_mft = {
|
|||||||
.pmft = (void *) &board_mtd_config,
|
.pmft = (void *) &board_mtd_config,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const px4_mft_entry_s mft_mft = {
|
||||||
|
.type = MFT,
|
||||||
|
.pmft = (void *) system_query_manifest,
|
||||||
|
};
|
||||||
|
|
||||||
static const px4_mft_s mft = {
|
static const px4_mft_s mft = {
|
||||||
.nmft = 1,
|
.nmft = 2,
|
||||||
.mfts = {
|
.mfts = {
|
||||||
&mtd_mft
|
&mtd_mft,
|
||||||
|
&mft_mft,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
#include <nuttx/spi/spi.h>
|
#include <nuttx/spi/spi.h>
|
||||||
|
|
||||||
constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSIONS] = {
|
constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSIONS] = {
|
||||||
initSPIHWVersion(V5X00, {
|
initSPIFmumID(V5X_0, {
|
||||||
initSPIBus(SPI::Bus::SPI1, {
|
initSPIBus(SPI::Bus::SPI1, {
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
|
initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
|
||||||
}, {GPIO::PortI, GPIO::Pin11}),
|
}, {GPIO::PortI, GPIO::Pin11}),
|
||||||
@@ -60,7 +60,7 @@ constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSION
|
|||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
|
|
||||||
initSPIHWVersion(V5X01, {
|
initSPIFmumID(V5X_1, {
|
||||||
initSPIBus(SPI::Bus::SPI1, {
|
initSPIBus(SPI::Bus::SPI1, {
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
|
initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
|
||||||
}, {GPIO::PortI, GPIO::Pin11}),
|
}, {GPIO::PortI, GPIO::Pin11}),
|
||||||
@@ -84,7 +84,7 @@ constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSION
|
|||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
|
|
||||||
initSPIHWVersion(V5X02, {
|
initSPIFmumID(V5X_2, {
|
||||||
initSPIBus(SPI::Bus::SPI1, {
|
initSPIBus(SPI::Bus::SPI1, {
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
|
initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
|
||||||
}, {GPIO::PortI, GPIO::Pin11}),
|
}, {GPIO::PortI, GPIO::Pin11}),
|
||||||
@@ -107,99 +107,6 @@ constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSION
|
|||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
|
|
||||||
initSPIHWVersion(V5X41, {
|
|
||||||
initSPIBus(SPI::Bus::SPI1, {
|
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
|
|
||||||
}, {GPIO::PortI, GPIO::Pin11}),
|
|
||||||
initSPIBus(SPI::Bus::SPI2, {
|
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortH, GPIO::Pin5}, SPI::DRDY{GPIO::PortH, GPIO::Pin12}),
|
|
||||||
}, {GPIO::PortD, GPIO::Pin15}),
|
|
||||||
initSPIBus(SPI::Bus::SPI3, {
|
|
||||||
initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortI, GPIO::Pin8}, SPI::DRDY{GPIO::PortI, GPIO::Pin7}),
|
|
||||||
initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortI, GPIO::Pin4}),
|
|
||||||
}, {GPIO::PortE, GPIO::Pin7}),
|
|
||||||
// initSPIBus(SPI::Bus::SPI4, {
|
|
||||||
// // no devices
|
|
||||||
// TODO: if enabled, remove GPIO_VDD_3V3_SENSORS4_EN from board_config.h
|
|
||||||
// }, {GPIO::PortG, GPIO::Pin8}),
|
|
||||||
initSPIBus(SPI::Bus::SPI5, {
|
|
||||||
initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortG, GPIO::Pin7})
|
|
||||||
}),
|
|
||||||
initSPIBusExternal(SPI::Bus::SPI6, {
|
|
||||||
initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin10}, SPI::DRDY{GPIO::PortD, GPIO::Pin11}),
|
|
||||||
initSPIConfigExternal(SPI::CS{GPIO::PortA, GPIO::Pin15}, SPI::DRDY{GPIO::PortD, GPIO::Pin12}),
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
|
|
||||||
initSPIHWVersion(V5X42, {
|
|
||||||
initSPIBus(SPI::Bus::SPI1, {
|
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
|
|
||||||
}, {GPIO::PortI, GPIO::Pin11}),
|
|
||||||
initSPIBus(SPI::Bus::SPI2, {
|
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortH, GPIO::Pin5}, SPI::DRDY{GPIO::PortH, GPIO::Pin12}),
|
|
||||||
}, {GPIO::PortD, GPIO::Pin15}),
|
|
||||||
initSPIBus(SPI::Bus::SPI3, {
|
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM20649, SPI::CS{GPIO::PortI, GPIO::Pin4}, SPI::DRDY{GPIO::PortI, GPIO::Pin7}),
|
|
||||||
}, {GPIO::PortE, GPIO::Pin7}),
|
|
||||||
// initSPIBus(SPI::Bus::SPI4, {
|
|
||||||
// // no devices
|
|
||||||
// TODO: if enabled, remove GPIO_VDD_3V3_SENSORS4_EN from board_config.h
|
|
||||||
// }, {GPIO::PortG, GPIO::Pin8}),
|
|
||||||
initSPIBus(SPI::Bus::SPI5, {
|
|
||||||
initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortG, GPIO::Pin7})
|
|
||||||
}),
|
|
||||||
initSPIBusExternal(SPI::Bus::SPI6, {
|
|
||||||
initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin10}, SPI::DRDY{GPIO::PortD, GPIO::Pin11}),
|
|
||||||
initSPIConfigExternal(SPI::CS{GPIO::PortA, GPIO::Pin15}, SPI::DRDY{GPIO::PortD, GPIO::Pin12}),
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
|
|
||||||
initSPIHWVersion(V5X51, {
|
|
||||||
initSPIBus(SPI::Bus::SPI1, {
|
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
|
|
||||||
}, {GPIO::PortI, GPIO::Pin11}),
|
|
||||||
initSPIBus(SPI::Bus::SPI2, {
|
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortH, GPIO::Pin5}, SPI::DRDY{GPIO::PortH, GPIO::Pin12}),
|
|
||||||
}, {GPIO::PortD, GPIO::Pin15}),
|
|
||||||
initSPIBus(SPI::Bus::SPI3, {
|
|
||||||
initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortI, GPIO::Pin8}, SPI::DRDY{GPIO::PortI, GPIO::Pin7}),
|
|
||||||
initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortI, GPIO::Pin4}),
|
|
||||||
}, {GPIO::PortE, GPIO::Pin7}),
|
|
||||||
// initSPIBus(SPI::Bus::SPI4, {
|
|
||||||
// // no devices
|
|
||||||
// TODO: if enabled, remove GPIO_VDD_3V3_SENSORS4_EN from board_config.h
|
|
||||||
// }, {GPIO::PortG, GPIO::Pin8}),
|
|
||||||
initSPIBus(SPI::Bus::SPI5, {
|
|
||||||
initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortG, GPIO::Pin7})
|
|
||||||
}),
|
|
||||||
initSPIBusExternal(SPI::Bus::SPI6, {
|
|
||||||
initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin10}, SPI::DRDY{GPIO::PortD, GPIO::Pin11}),
|
|
||||||
initSPIConfigExternal(SPI::CS{GPIO::PortA, GPIO::Pin15}, SPI::DRDY{GPIO::PortD, GPIO::Pin12}),
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
|
|
||||||
initSPIHWVersion(V5X52, {
|
|
||||||
initSPIBus(SPI::Bus::SPI1, {
|
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
|
|
||||||
}, {GPIO::PortI, GPIO::Pin11}),
|
|
||||||
initSPIBus(SPI::Bus::SPI2, {
|
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortH, GPIO::Pin5}, SPI::DRDY{GPIO::PortH, GPIO::Pin12}),
|
|
||||||
}, {GPIO::PortD, GPIO::Pin15}),
|
|
||||||
initSPIBus(SPI::Bus::SPI3, {
|
|
||||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM20649, SPI::CS{GPIO::PortI, GPIO::Pin4}, SPI::DRDY{GPIO::PortI, GPIO::Pin7}),
|
|
||||||
}, {GPIO::PortE, GPIO::Pin7}),
|
|
||||||
// initSPIBus(SPI::Bus::SPI4, {
|
|
||||||
// // no devices
|
|
||||||
// TODO: if enabled, remove GPIO_VDD_3V3_SENSORS4_EN from board_config.h
|
|
||||||
// }, {GPIO::PortG, GPIO::Pin8}),
|
|
||||||
initSPIBus(SPI::Bus::SPI5, {
|
|
||||||
initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortG, GPIO::Pin7})
|
|
||||||
}),
|
|
||||||
initSPIBusExternal(SPI::Bus::SPI6, {
|
|
||||||
initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin10}, SPI::DRDY{GPIO::PortD, GPIO::Pin11}),
|
|
||||||
initSPIConfigExternal(SPI::CS{GPIO::PortA, GPIO::Pin15}, SPI::DRDY{GPIO::PortD, GPIO::Pin12}),
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static constexpr bool unused = validateSPIConfig(px4_spi_buses_all_hw);
|
static constexpr bool unused = validateSPIConfig(px4_spi_buses_all_hw);
|
||||||
|
|||||||
Reference in New Issue
Block a user