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
- 2024-12-02
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
- 2024-12-02
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
- 2024-12-02
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
- 2024-12-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
- 2024-12-02
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
- 2024-12-02
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. - 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...