Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
STM32CubeF4
STM32Cube MCU Full Package for the STM32F4 series - (HAL + LL Drivers, CMSIS Core, CMSIS Device, MW libraries plus a set of Projects running on all boards provided by ST (Nucleo, Evaluation and Discovery Kits))
There are free gcc based cross tools (compilers, debuggers, emulators) for a lot of MCUs (ARM, MIPS, riscv, etc).
Debugging: Learn gdb. You can use it for assembly. You can use it for C on a MCU. You can use it for Go on a Linux system. It’s ubiquitous, versatile, and worth understanding. You can pretty-print the output with something like this to help you out at first. There are 2 things you need, however: on chip debugger and a debug probe (though you don’t need an expensive one). Effectively, you talk to GDB, GDB talks to the server exposed by OCD, OCD knows the debug probe protocol, and the debug probe can use the MCU debug peripheral via SWD or JTAG to get those details.
Lastly, and I think these were the hardest things to find when I was transitioning away from Keil, is all of the vendor-specific and compiler-specific “glue” like startup files and linker scripts. For example, STM32F4 startup, system config, and linker scripts can be found here for various MCUs
Related posts
- Cyrus-and/GDB-dashboard: Modular visual interface for GDB in Python
- Everything You Never Wanted to Know About CMake (Redux)
- Need help getting Zephyr RTOS native_posix target working from an x86_64 host
- Are there any cpu emulators that could help me learn i386 assembly?
- Usage of GDB over command line