Basic knowledge

This section is a good starting point for those who aren’t familiar with embedded systems: it contains a series of articles not related to a specific topic. They should be read to build a background knowledge required to work with embedded systems.

Wide box Tiny box List
Ascent Descent

What is the difference between a bootloader and a debugger

Since I have started to hold seminars and hands-on to newbie developers and engineering students, one of the most controversial things people don’t get used to is the debugging. Many of them often confuse between a bootloader and an on-chip debugger because both are used to test the firmware functional behavior.

A bootloader is a piece of software that loads the downloads the firmware from a host, usually a PC, into the microcontroller main memory. Typically, once the bootload procedure is over, the microcontroller starts to execute the freshly loaded code and the continue reading...

C Library design for embedded applications: tips and hints

C Library design: tips and hints

Write reusable code is one of the most powerful and time-saving thing that an embedded programmer should learn. Compose well-arranged libraries makes things easiest, especially when we want to add old code in a new project. Citing one of the most talented programmers I have ever met, “Well done code should be like a LEGO: must fit perfectly and without any effort”. So a good library should be quite abstract, with a simple hierarchy and should provide some well documented APIs.

Even if this is a generic embedded article, we will provide some concrete example.

When we want continue reading...

Registers and bit masks

Registers and bit masks

When I started with embedded my knowledge about programming was (and probably still is) very elementary. I often used logical operator like logical NOT (!), logical OR (| |) and logical AND (&&) but was almost ignoring the bitwise operators.

Handling registers is actually so simple that at first approach I wasted a couple of days and this was because bitwise operators are required to. Talking with friends of mine coming from Arduino, this problem seems to be much diffused. The trap seems to be a lack of basic knowledge of informatics and electronics. So in this article we continue reading...