Enginursday: Exploring the Embedded Startup Process
Let's take a look at what makes 'main()' feel so cozy and welcoming - what has to happen to have variables initialized, objects constructed and stacks a-stackin?
Artemis, my close friend, has urged me to learn much more about the bare-metal details of getting code running and supporting the familiar features that we often take for granted in C++. It is actually a very interesting topic and a beneficial thing to understand when working on embedded systems. Sadly, however, it is a fairly challenging topic to find information about on the internet - and what you can find is daunting, to say the least.
Since we are not fans of reinventing the wheel we've developed some examples you can follow along with using an Artemis board. After doing so you will know:
- How the linker organizes compiled code
- How startup code initializes variables
- How the stack and heap are managed
- How global/static object constructors are conveniently called before you get to
main()
Check out the examples, explanation and instructions on the embedded-startup exploration repo!
Here are some useful tools to have along the way:
Artemis Boards
WRL-15484
The Artemis Module from SparkFun is the first FCC certified, open-source, Cortex-M4F with BLE 5.0 running up to 96MHz and wit…
WRL-18712
With a clear view of the sky, the Artemis Global Tracker allows you to send and receive short data messages thanks to the Iri…
KIT-20673
The Base version of the SparkFun OpenLog Data Collector Kit with Machinechat is an easy way to organize and display your data…
KIT-20683
The Environmental Monitoring version of the OpenLog Data Collector Kit with Machinechat allows you to display your data with …
Debuggers
DEV-17588
The BGM220 Explorer Kit is an ultra-low cost, small form factor development and evaluation platform for the BGM220P Wireless …
PGM-24078
The J-Link EDU Mini is a stripped-down, budget-friendly model of the J-Link debug probe created for educational use.
Accessories
DEV-15096
This SparkFun Serial Basic Breakout is an easy-to-use USB-to-Serial adapter based on the CH340G and takes advantage of the ha…
CAB-15092
USB C is fantastic. But until we have converted all our hubs, chargers, and ports over to USB C this is the cable you're goin…
Retired