Introduction
Introduction
The MCU bootloader is a configurable flash programming utility that operates over a serial connection on MCU devices. It enables quick and easy programming of the devices through the entire product life cycle including application development, final product manufacturing, and more. The bootloader is preprogrammed by NXP into ROM or flash on select devices. The release also comprises of full source code that is configurable. Host-side command line and GUI tools are available to communicate with the bootloader. Users can utilize host tools to upload and/or download application code via bootloader.
Parent topic:Introduction
Terminology
target
The device running the bootloader firmware (aka the ROM).
host
The device sending commands to the target for execution.
source
The initiator of a communications sequence. For example, the sender of a command or data packet.
destination
Receiver of a command or data packet.
incoming
From host to target.
outgoing
From target to host.
Parent topic:Introduction
Block Diagram
This block diagram describes the overall structure of the MCU bootloader.
Block diagram
Parent topic:Introduction
Features Supported
Here are some of the features supported by the MCU bootloader:
Supports UART, I2C, SPI, CAN, and USB peripheral interfaces.
Automatic detection of an active peripheral.
Ability to disable a peripheral.
UART peripheral implements autobaud.
Common packet-based protocol for all peripherals.
Packet error detection and retransmit.
Flash-resident configuration options.
Supports flash security including mass erase and unlock security via the backdoor key.
Protection of RAM used by the bootloader while it is running.
Provides command to read properties of the device such as flash and RAM size.
Multiple options for executing the bootloader either at system start-up or under application control at runtime.
Supports internal flash, serial QuadSPI, and other external memories.
Supports encrypted image download.
Parent topic:Introduction
Components supported
Components for the bootloader firmware:
Startup code (clocking, pinmux, etc.)
Command phase state machine
Command handlers
GenericResponse
FlashEraseAll
FlashEraseRegion
ReadMemory
ReadMemoryResponse
WriteMemory
FillMemory
FlashSecurityDisable
GetProperty
GetPropertyResponse
Execute
Call
Reset
SetProperty
FlashEraseAllUnsecure
FlashProgramOnce
FlashReadOnce
FlashReadOnceResponse
FlashReadResource
FlashReadResourceResponse
ConfigureMemory
ReliableUpdate
SB file state machine
Encrypted image support (AES-128)
Packet interface
Framing packetizer
Command/data packet processor
Memory interface
Abstract interface
Flash Driver Interface
Low-level flash driver
QuadSPI interface
Low-level QuadSPI driver
On-the-fly QuadSPI decryption engine initialization
Peripheral drivers
I2C slave
SPI slave
CAN
Auto-baud detector
UART
Auto-baud detector
USB device
USB controller driver
USB framework
USB HID class
USB Mass storage class
CRC check engine
CRC algorithm
Parent topic:Introduction