Embedded systems

Skip to main content (skip navigation menu)






Embedded systems

 

A collection of technical articles that are related to embedded systems and the programming of microcontrollers and small systems.

Implementing FAT on CompactFlash cards, SD/MMC cards and USB sticks
2019-05-23
When writing the software for our programmable MP3 player, we had to find out how a file system, such as FAT16 and FAT32, is fitted on a CompactFlash card. In the end, it turned out to be all pretty standard. However, two published reference implementations of similar projects as ours were quite terse and... they turned out to work only "in most circumstances". Hence, we decided that our insight might very well be useful to others.
    Most recent update: Information on SD/MMC cards has been added.
minIni: a portable INI file parser
2021-07-01
The minIni library is a minimal INI file parser that supports reading, writing and deleting keys from an INI file and that requires little memory or other resources. It is adaptable to non-standard file I/O libraries, which are often found in embedded systems.
Debouncing switches with vertical counters
2019-07-13
An efficient software method to debounce multiple switch inputs concurrently. The article explains "vertical counters" and how these can be used to filter out "contact bounces" in switches with a minimum of overhead.
Configuring a micro-controller for low-speed USB communication
2018-03-21
All device controllers that support full-speed, also support low-speed. This is inherent to the protocol. However, since only few programmers are have knowledge of the USB physical layer (signal levels), and few circuit designers have knowledge of the programming intricacies, low-speed configuration of an USB device is becoming "lost knowledge". This article fills the void.
The Dhrystone benchmark, the LPC2106 and GNU GCC
2019-05-23
Our running of the Dhrystone benchmark on the LPC2106 microcontroller (a NXP/Philips chip with an ARM7 core) produced significantly different results than those reported by a compiler vendor. We publish our data to point out the risks in interpreting benchmarks.
    Most recent update: KEIL no longer lists its controversial tables on its site. For completeness, our discussion now contains a link to an archived copy of that page.
Debugging with the Black Magic Probe
2023-06-10
The “Black Magic Probe” is a combined hardware & software project, for programming & debugging ARM Cortex micro-controllers. We wrote a book on the Black Magic Probe, and a set of software tools to make working with this tool more convenient.
ICSP programming tool/adapter
2022-02-24
This tiny adapter enables In-System Programming of the NXP LPC1000 and LPC2000 microcontroller series using the tag-connect cable and an FTDI TTL-232R interface cable. It may also apply to other microcontrollers that use ICSP.
LPC2100: Entering ISP mode from user code
2019-05-23
Our notes and code modifications on the NXP/Philips application note AN10356, pertaining to a simple solution to in-field firmware updating.
The STA013 MP3 decoder
2018-03-03
This paper is a collection of hardware notes on the use of the STA013 MP3 decoder from STMicroelectronics. The paper also contains some notes on the MP3 file format.
An RS232 "spy" cable
2018-03-17
The RS232 norm defines a one-on-one communication link between two devices. With a special cable, though, it is possible to have a third device (a PC) "listen in" on the data —a useful trick in debugging serial protocols or for deciphering an unknown protocol.
A MIDI to RS232 converter
2018-03-03
The MIDI protocol is a serial data communications protocol using on a "current loop" physical layer, and using a Baud rate of 31250 bps. This article shows the electronics needed to convert between current loop and the RS232 signal levels. In the second part, it talks about the "software protocol" of MIDI.
    Most recent update: A link to USB-to-RS232 adapters that support the required (non-standard) Baud rate of 31250 bps was added.
Extending TFTP
2019-05-23
The "Trivial File Transfer Protocol" is a file transfer protocol that is suitable for timy implementations (in embedded systems). This article discusses and proposes a few extensions on the protocol, to improve performance, allow larger files, enable peer-to-peer file transfers, and more...