Hi everyone,
I am bringing up a custom STM32F427 board based on the PX4 FMUv4 architecture on PX4 v1.14.
Hi everyone,
I am bringing up a custom STM32F427 board based on the PX4 FMUv4 architecture on PX4 v1.14.
I currently have a USB issue that I cannot fully isolate:
The board boots and PX4 app firmware runs
I can connect through telemetry UART
mavlink status shows one active MAVLink instance on:
/dev/ttyS1 @ 57600Bootloader flashing over USB works
QGroundControl does not connect over USB
In NSH, ls /dev does not show /dev/ttyACM0
So it looks like USB CDC ACM is not being created in the app firmware
From NSH:
param show MAV_0_CONFIG
# MAV_0_CONFIG = 101
param show MAV_1_CONFIG
# MAV_1_CONFIG = 0
param show MAV_2_CONFIG
# MAV_2_CONFIG = 0
mavlink status
# instance #0 on /dev/ttyS1 @57600
ls /dev shows only:
/dev:
console
led0
mmcsd0
null
ttyS0
ttyS1
ttyS2
ttyS3
ttyS4
ttyS5
ttyS6
So there is no /dev/ttyACM0.
My custom board does not have USB VBUS detect connected to PA9 like the original FMUv4.
Because of that, I modified board_config.h to force USB as connected/valid:
#define BOARD_ADC_USB_CONNECTED (1)
#define BOARD_ADC_USB_VALID (1)
My defconfig already has USB-related options enabled, including:
CONFIG_CDCACM=y
CONFIG_SYSTEM_CDCACM=y
CONFIG_STM32_OTGFS=y
CONFIG_STM32_OTGFSDEV=y
CONFIG_USBDEV=y
In my custom board init.c, I call:
stm32_usbinitialize();
However, my board usb.c currently has a very minimal implementation:
__EXPORT void stm32_usbinitialize(void)
{
/* The OTG FS has an internal soft pull-up */
/* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */
}
So basically the function is empty.
For PX4 v1.14 on a custom FMUv4-style board without PA9 VBUS detect:
Is forcing
#define BOARD_ADC_USB_CONNECTED (1)
#define BOARD_ADC_USB_VALID (1)
the correct approach?
Should stm32_usbinitialize() remain empty in this case, or does it still need some board-specific USB FS setup even without a VBUS detect pin?
If bootloader USB works but app firmware never creates /dev/ttyACM0, what would be the next file/path to inspect in v1.14:
board usb.c
NuttX board USB init
startup scripts
something else?
Any guidance from someone who has ported PX4 v1.14 to a custom STM32F4/FMUV4-like board would be really appreciated.
Thanks.