From our blog

Notes, experiences and many techs eggs from our designers and experst.

Remote control via semihosting

By Martin Ribelotta on November 2, 2020

In this article, we communicate our embedded cortex-m with the PC during debug session using a trick called semihosting. This trick provides access to host IO (console, filesystem, shell execution) remotely from our embedded device.

Continue reading

Armv7m Startup (3) - Make and build process

By Martin Ribelotta on September 30, 2020

In the previous articles, you learned how to write initialization code and put it in the correct place in the processor memory. Now you will learn how to generate the proper binary for send to ROM and will see various tricks to simplify your live with gnu make and Makefile.

Continue reading

Armv7m Startup (2) - Linker script

By Martin Ribelotta on September 21, 2020

In the previous article, we learned how to write an efficient startup code and play with the options of the compiler to produce the desired code from C, but it is still necessary to put the code in the correct memory locations to produce an executable suitable for the cortex-m.

In the present article, we will work with the linker script to join all our code into a single well structured executable.

Continue reading

Armv7m Startup

By Martin Ribelotta on September 5, 2020

One of the most successful families of microcontrollers has been the cortex-m in its different versions (m0, m0+, m3, m4, m7, m33, etc), and one of the main reasons of its success is its simple boot process. In this article, we will travel through the magical land of code writing and look around the different implementations across some vendors, culminating with a proposed vendor-neutral startup schema with many advantages for your projects.

In this series of articles I will try to explain the tricks around code compilation, linker scripts and build systems, proposing a vendor neutral startup system for your cortex-m project.

Continue reading