Introduction
The term firmware means lots of things to lots of people, and you will see so many definitions that it becomes confusing.
It is apparent from postings by people about (tr)uSDX (trusdx) that the rubbery definition prevails in that environment also.
The term firmware came into being 50 odd years ago, about the time that microcomputers appeared. There was a need for a term to describe something that sat between traditional hardware and software, the programming that was ’embedded’ in the system.
ATmega328P memory
In the case of the ATmega328P (as used in the (tr)uSDX), it contains three main blocks of memory and some auxilliary non-volatile storage, the three main types are:
- RAM (volatile scratch storage used for running programs);
- FLASH (non-volatile memory used for user programs (instructions and constant data); and
- EEPROM (non-volatile memory often used to save settings, calibration data etc).
Firmware
We might reasonably regard that all of the contents of FLASH is firmware.
Bootloader
(tr)uSDX uses a bootloader, user code that can be executed on startup to load user programs into FLASH. In the case of the ATmega328P, the bootloader resides in FLASH at the top of the address range. FUSE settings tell the system to start at the boot section on power on reset, and they can be used to protect the bootloader from corruption on reliable systems (this last feature is NOT used on (tr)uSDX).
Above is a map of FLASH memory for an ATmega328P for the configuration used by (tr)uSDX from the chip datasheet. Continue reading (tr)uSDX firmware, bootloader, application – an explanation