0

I've ported uavcan (dronecan) to stm32 nucleo-f413 board. The firmware is chibios based rtos.

During node initialization, execution is jumping to "_unhandled_exception" by executing the statement

mem_blocks_per_iface = allocator.getBlockCapacity() / (num_ifaces_ + 1U) + 1U;

inside the CanIOManager::CanIOManager constructor.

I've verified the callstack for the same and it is as below:

VectorFC() at vectors.S:1,021 0x80002da 
<signal handler called>() at 0xfffffffd 
uavcan::PoolAllocator<16384u, (unsigned char)48, char>::getBlockCapacity at dynamic_memory.hpp:80 0x801f110 
uavcan::CanIOManager::CanIOManager() at uc_can_io.cpp:298 0x8012690 
uavcan::Dispatcher::Dispatcher() at dispatcher.hpp:146 0x801bac6    
uavcan::Scheduler::Scheduler() at scheduler.hpp:100 0x801bcac   
uavcan::Node<16384u>::Node() at node.hpp:85 0x801d768   
app::(anonymous namespace)::getNode at main.cpp:121 0x801caa6   
configureNodeInfo() at main.cpp:159 0x801cb4c   

I"m unable to identify the reason for exception handler.

I've tried varing the stack size, poolsize and blocksizes but still not helpful. If anyone faced similar issue, kindly help. Thanks

Ullagaddi
  • 21
  • 6
  • The callstack isn't going to be very useful. Instead put a breakpoint in your hardfault handler and check stack and heap memory from there. Also make sure `num_ifaces_` doesn't have the value -1 or something silly like that. – Lundin Nov 17 '22 at 07:52

0 Answers0