I read the ARM docs wrong about the alignment of the vector table (round up to power of 2 of your table size). I read it as it always need to be 64 words.
With the alignment fixed, everything is working, thanks for the tips!
I'm doing exactly the same, inside the bootloader I am also using a "magic value" (in RAM though) to read after a soft reset, only to set addresses and VTOR and then jump to my ChibiOS code. Just to be safe I checked with the debugger that all registers are correctly set ...
I have been testing to write a bootloader, and all seems fine. ChibiOS starts up after the bootloader calls the binary, initialization works, HAL init goes fine and LEDs go on.
However, whenever I call a chThdSleep, I get an _unhandled_exception and it seems to happen on the return to ...
I have been adding mutexes to a piece of code, but I always get the following error when I have debug checks enabled: #0 chSysHalt (reason=reason@entry=0x800e5cc <func.7893> "chSchReadyI") at ../../src/ChibiOS/os/rt/src/chsys.c:207 #1 0x0800189a in chSchReadyI ...
What's the reason for declaring most of the classes final? IMHO it takes out the elegancy from interfacing ChibiOS with C++. For example, with the old wrapper you could derive a class from BaseStaticThread, define a main() member function and call any thread-related function implicitly ...
If you want an intrinsically safer language and no not want to go with C++ or Rust, I would recommend to just make a high level language that decomposes into C++ / Rust to leverage the decades of ideas already implemented in the languages.
If you check the RTFM language I liked earlier, it is ...