Hard Fault from UAVCAN param command

I’ve been experimenting with the different UAVCAN device such as the Pomegranate Systems Power Module (https://p-systems.io/product/power_module), NEO V2 Pro GNSS and the Kotleta20 and I’m getting some unexpected behavior. Running any uavcan param command will result on a hard fault on 1.10.1. I’ve tried on a Pixhawk 4 as well as a V5 Nano.

For exemple on the following setup:

HW arch: PX4_FMU_V5
HW type: V500
HW version: 0x00000000
HW revision: 0x00000000
FW git-hash: e0f016c2b3db160284bbaaadaf70bef84592d81e
FW version: Release 1.10.1 (17433087)
OS: NuttX
OS version: Release 7.29.0 (119341311)
OS git-hash: 427238133be2b0ecd068a11e886ee8fdbc31f6dc
Build datetime: Jan 21 2020 19:03:45
Build uri: localhost
Toolchain: GNU GCC, 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
PX4GUID: 00020000000035343633313851190021002f
MCU: STM32F76xxx, rev. Z

I will get this result:

uavcan param list 125
name: enable_can_auto_baud 1
name: enable_can_term 1
name: enable_current_track 1
name: enable_dynamic_id_allocation 1
name: enable_external_i2c 0
name: enable_firmware_updates 1
name: enable_identify 0
name: enable_status_led 1
name: can_baud_kbps 1000
name: can_auto_baud_retry_timout_ms 1500
name: can_auto_baud_max_retries 0
name: uavcan_default_node_id 0
name: battery_id 0
name: battery_instance_id 0
name: battery_capacity_mAh 5000
name: battery_empty_V 9.6000
name: battery_full_V 12.5000
name: battery_I_limit_max_A 75.0000
name: battery_V_limit_min_V 6.0000
name: battery_V_limit_max_V 26.5000
name: canbus_I_limit_max_A 2.0000
name: canbus_V_limit_min_V 4.9000
name: canbus_V_limit_max_V 5.5000
name: circuit_id_3V 2
name: circuit_id_5V 1
name: circuit_id_battery 0
name: temp_sensor_device_id_PCB 0
name: temp_sensor_device_id_MCU 1
name: dynamic_id_allocation_retry_time_ms 1500
name: dynamic_id_allocation_max_retries 5
name: rgb_led_r_scale 255
up_hardfault: Hard Fault:
up_hardfault: IRQ: 3 regs: 0x200076cc
up_hardfault: BASEPRI: 000000f0 PRIMASK: 00000000 IPSR: 00000003 CONTROL: 00000000
up_hardfault: CFAULTS: 01000000 HFAULTS: 40000000 DFAULTS: 00000000 BFAULTADDR: 00000000 AFAULTS: 00000000
up_hardfault: PANIC!!! Hard fault: 40000000
up_assert: Assertion failed at file:armv7-m/up_hardfault.c line: 148 task: wq:lp_default
up_registerdump: R0: 2007bff8 ffffffe9 00000003 20034ceb 00000000 200077cc 0000a0db 20025530
up_registerdump: R8: 00000010 00000010 00000001 20025554 00000000 200077a0 0800b699 0801c648
up_registerdump: xPSR: 21000000 BASEPRI: 000000f0 CONTROL: 00000000
up_registerdump: EXC_RETURN: ffffffe9
up_dumpstate: sp: 20021398
up_dumpstate: IRQ stack:
up_dumpstate: base: 20021400
up_dumpstate: size: 00000200
up_dumpstate: used: 00000158
up_stackdump: 20021380: 00000000 20007900 20021398 20021400 000006a4 08009b09 000000f0 00000000
up_stackdump: 200213a0: 20025554 00000000 200077a0 0800b699 0801c648 200213c0 08009645 00000003
up_stackdump: 200213c0: 20025554 0800964d 40000000 00000000 00000000 00000000 20021400 0800b327
up_stackdump: 200213e0: 000000f0 08008371 000000f0 200076cc 200077cc 0000a0db 20025530 08008237
up_dumpstate: sp: 200077a0
up_dumpstate: User stack:
up_dumpstate: base: 20007900
up_dumpstate: size: 000006a4
up_dumpstate: used: 0000032c
up_stackdump: 200077a0: 49742420 200077cc 00000000 200077f4 00000000 000921b4 00000000 20006ff0
up_stackdump: 200077c0: 00000000 0801c485 00000000 00000000 00000002 20007118 20025744 2002a488
up_stackdump: 200077e0: 04ca73d2 00000000 04d39586 0808cf15 20006ff0 000f4242 00000000 49742420
up_stackdump: 20007800: 04ca73d2 00000000 04d39586 0808cfbd 000f4242 00000000 00000000 00000000
up_stackdump: 20007820: 3ecd97dc 00000000 00000000 00000000 20006ff0 20007008 20007888 20007880
up_stackdump: 20007840: 00000000 00000000 00000000 0808d2b9 20007878 08127e47 00000000 20007878
up_stackdump: 20007860: 2007fa70 2002a6f8 2007f154 08127ed9 2007f028 2007fa74 00000000 0800c8f0
up_stackdump: 20007880: 00000000 00000000 00010000 00000000 00000000 00000000 00000000 08156778
up_stackdump: 200078a0: 20008990 00000000 00000001 00000000 00000000 00000000 00000000 0001ffff
up_stackdump: 200078c0: 00000000 00000000 00000000 00000000 00000000 20007000 20007090 20007220
up_stackdump: 200078e0: 2007f130 0801cb1f 00000000 00000000 00000000 00000000 00000000 00000000
up_taskdump: Idle Task: PID=0 Stack Used=0 of 0
up_taskdump: hpwork: PID=1 Stack Used=344 of 1260
up_taskdump: lpwork: PID=2 Stack Used=604 of 1516
up_taskdump: init: PID=3 Stack Used=1728 of 2604
up_taskdump: wq:manager: PID=4 Stack Used=368 of 1252
up_taskdump: wq:att_pos_ctrl: PID=197 Stack Used=1720 of 6596
up_taskdump: logger: PID=486 Stack Used=1240 of 3644
up_taskdump: commander: PID=199 Stack Used=1864 of 3212
up_taskdump: wq:rate_ctrl: PID=200 Stack Used=892 of 1596
up_taskdump: commander_low_prio: PID=201 Stack Used=576 of 2996
up_taskdump: uavcan: PID=522 Stack Used=1996 of 1996
up_taskdump: log_writer_file: PID=491 Stack Used=368 of 1164
up_taskdump: wq:SPI1: PID=140 Stack Used=1064 of 1396
up_taskdump: navigator: PID=430 Stack Used=888 of 1764
up_taskdump: camera_feedback: PID=208 Stack Used=912 of 1572
up_taskdump: dataman: PID=17 Stack Used=752 of 1180
up_taskdump: wq:lp_default: PID=20 Stack Used=812 of 1700
up_taskdump: uavcan: PID=213 Stack Used=1624 of 2380
up_taskdump: gps: PID=311 Stack Used=1056 of 1620
up_taskdump: uavcan fw srv: PID=216 Stack Used=3048 of 5996
up_taskdump: mavlink_if1: PID=377 Stack Used=1648 of 2484
up_taskdump: mavlink_rcv_if1: PID=378 Stack Used=2432 of 3916
up_taskdump: wq:I2C3: PID=155 Stack Used=820 of 1244
up_taskdump: wq:hp_default: PID=28 Stack Used=1076 of 1596
up_taskdump: mavlink_if0: PID=221 Stack Used=1416 of 2572
up_taskdump: wq:SPI4: PID=158 Stack Used=600 of 1396
up_taskdump: sensors: PID=191 Stack Used=1180 of 1964

However when ran a custom version of 1.9.2 on a Pixhawk 4 there is not problem.

HW arch: PX4_FMU_V5
HW type: V500
HW version: 0x00000000
HW revision: 0x00000000
FW git-hash: 1491ceb9d5286a653b2a7cda9e782ee5a5bf6ced
FW version: 1.9.2 0 (17367552)
FW git-branch: feature/turn_direction
OS: NuttX
OS version: Release 7.28.0 (119275775)
OS git-hash: 423371c7d4012e725ac4ca51323a18df64e581b3
Build datetime: Sep 11 2019 14:35:16
Build uri: localhost
Toolchain: GNU GCC, 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
PX4GUID: 0002000000003236343532375118002d001a
MCU: STM32F76xxx, rev. Z

Also on a unrelated note I was surprise to see that on the Pixhawk 4 the power module could power up the pixhawk from the CAN bus connection. However on the V5 Nano, the pixhawk wouldn’t power up from the can connect but if it was already running and usb power was remove it would remain running from the CAN bus.