Tag Archives: avr handheld

ELF Files Explained Part 3

ELF Files Explained - Part 3 Hero

ELF Files Explained – Part 3: AVR ELF Production Files – The Complete Firmware Image


Part 3 of the "ELF Files Explained" Series

In Part 1, we explored the history of executable file formats and saw how ELF became the industry standard for modern operating systems and GCC-based development toolchains. In Part 2, we looked inside the format itself, examining the headers, sections, symbol tables and debugging information that let compilers, linkers and debuggers work together using a common file format.

Understanding the internal structure of an ELF file is valuable, but it naturally leads to another question: what does all of this mean for an embedded firmware project?

In this article, we turn to AVR development and examine the AVR ELF Production File generated by Atmel Studio and the AVR-GCC toolchain. We will see how it becomes the definitive output of the build process, bringing together executable code, EEPROM data, fuse settings, lock bits, User Signature memory and debugging information into a single engineering artefact that represents the complete firmware project.


Continue reading “ELF Files Explained Part 3” »

ELF Files Explained Part 2

ELF Files Explained - Part 2 Hero

ELF Files Explained – Part 2: Inside the ELF Format – Headers, Sections, Symbols and Debug Information


Part 2 of the "ELF Files Explained" Series

In Part 1, we explored the history of executable file formats and the evolution from early UNIX formats such as a.out and COFF to the Executable and Linkable Format. We also saw how ELF became the standard executable format for Linux and a fundamental component of modern embedded development toolchains.

In this article, we move beyond that historical perspective and begin examining the internal structure of an ELF file. Rather than treating it as an opaque binary, we will break it down into its major components and see how linkers, loaders and debuggers each interpret the information it contains.


Continue reading “ELF Files Explained Part 2” »

UPDI Explained: The Complete Guide to Programming and Debugging Modern AVR Microcontrollers

Unified Program and Debug Interface architecture showing host PC, USB-UART adapter and AVR microcontroller connected through a single-wire UPDI interface

UPDI Explained: The Complete Guide to Programming and Debugging Modern AVR Microcontrollers

A comprehensive guide to the Unified Program and Debug Interface (UPDI), including architecture, signalling, security, memory programming, debugging, recovery techniques and programmers.

Continue reading “UPDI Explained: The Complete Guide to Programming and Debugging Modern AVR Microcontrollers” »

What is a Standalone Programmer?

A standalone microcontroller programmer is a device that can be used to program microcontrollers without the need for a computer. This makes them ideal for use in portable applications, or for programming microcontrollers that are not easily accessible by a computer. They also simplify production tasks as the operator can be relatively unskilled.

Continue reading “What is a Standalone Programmer?” »

All You Need to Know About AVR ISP, UPDI, JTAG, PDI and TPI.

AVR microcontrollers were first introduced almost 30 years ago and since then there have been a few changes, especially since Microchip absorbed Atmel. The AVR was one of the first microcontrollers to have onboard flash memory that could be electrically erased and reprogrammed and this enabled the introduction of In System Programming or ISP.

Read more: All You Need to Know About AVR ISP, UPDI, JTAG, PDI and TPI. Continue reading “All You Need to Know About AVR ISP, UPDI, JTAG, PDI and TPI.” »