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