Introduction
The SAM-BA® Monitor program performs basic internal memory read, write, and execute commands. It is embedded in the ROM Boot Code of the target device (Microchip Technology Arm®-based MPU or MCU). The SAM-BA Monitor is controlled by and communicates with the SAM-BA Host over a serial communications link. For additional information, refer to the SAM-BA Host to Monitor Serial Communications topic.
The SAM-BA Host to Monitor Serial Communications link is a dedicated serial port separate from the Target Console serial communications.
Boot Process Overview (SAMA5D2 Series MPUs)
The following describes the boot process for a SAMA5D2 Series MPU from RESET to the execution of the SAM-BA Monitor. This is the first-stage bootloader that is resident in the internal ROM of the device, known as the ROM Boot Code.
Operation of the SAM-BA Monitor is specific to the target device. Refer to the device data sheet for more details.
The Boot Process for a device begins with a Processor Reset followed by the execution of the ROM Boot Code, also known as the Stage One Bootloader. The ROM Boot Code will:
- Configure external memories
- Configure the UART port used as a terminal console
- Initialize master clock
- If external memory is available and valid code is detected, read contents to SRAM
If external memory is not available, or no valid code is detected, and the SAM-BA Monitor has not been disabled, the ROM Boot Code will begin the execution of the SAM-BA Monitor.
The first step of the SAM-BA Monitor is to detect if there is an external 12 MHz clock signal or if there is an external quartz crystal resonator connected to the 12 MHz Crystal Oscillator.
- If there is, then the SAM-BA Monitor will configure the Clock Generator to supply the Main Clock signal from this source.
- If there is not, then the SAM-BA Monitor will configure the Clock Generator to supply the Main Clock signal from the internal 12 MHz RC Oscillator.
Next, the SAM-BA Monitor will initialize the Universal Asynchronous Receiver Transmitter (UART) pins specified in the Boot Configuration Word (UART_CONSOLE) and, if the source of the Main Clock signal is from an external 12 MHz clock signal or the 12 MHz Crystal Oscillator, it will initialize the USB High-Speed Device Port (UDPHS).
The UART will be initialized for: 115,200 baud, eight bits of data, no parity, and one stop bit.
The USB Device Port will communicate using the Communication Device Class (CDC).
SAM-BA Monitor will print RomBOOT to the Target Console.
The SAM-BA Monitor will check if the USB Device Port has enumerated, indicating there are serial communications available, and wait for a command.
If the USB Device Port has not enumerated, it will check if characters are received on the Target Console. If characters are received, the SAM-BA Monitor will continue communicating through the UART and wait for further commands.