SPRADD1A August   2023  – September 2024 AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM625SIP , AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62P , AM62P-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. Introduction
  5. Installing the SDK
  6. Configuring the SDK for a Custom Board
  7. Starting U-Boot Board Port
    1. 4.1 Introduction to Devicetrees
    2. 4.2 Capabilities of the Minimal Configuration
    3. 4.3 Preparing Custom Board Files
    4. 4.4 Initial Devicetree Modifications
    5. 4.5 Building U-Boot Binaries
    6. 4.6 U-Boot Deployment Instructions
  8. Expanding the Custom Board Devicetree
    1. 5.1 Devicetree Configuration
    2. 5.2 Describing Peripherals in Nodes
    3. 5.3 Revising the Devicetree Configuration
  9. Booting the Linux Kernel
    1. 6.1 Kernel Boot Overview
    2. 6.2 Kernel Deployment Instructions
  10. Tools and Debugging
    1. 7.1 Kernel Debug Traces
    2. 7.2 OpenOCD Debugging
  11. Future Work
  12. Summary
  13. 10References
  14.   Revision History

U-Boot Deployment Instructions

To boot the device using the custom board configuration, the three boot binaries generated in the previous step are loaded to the board via UART. This method uses a simple, common peripheral to get to a U-Boot command prompt. The custom board needs to be able to configure the bootmode pins on the device for a valid UART boot setting. On TI EVMs, switches are provided to change the bootmode settings to support a variety of boot sources. On production boards, this change is likely accomplished with something as simple as a jumper or other setting. The following steps assume the board has been appropriately configured for UART boot.

The first step is to install a serial communication program, such as minicom, on the host PC. Configure this program to properly communicate with the board. The AM62x Quick Start Guide contains directions to setting up this serial connection. Verify the terminal setup and hardware connection is established by checking for the "C" characters that are continuously output from ROM while searching for the boot image. Example output shown below.

CCCCCCCC

If no terminal output is seen, there are a variety of issues that could be causing this problem. It can be very useful to validate this step with a known good TI board to help isolate problems between the board and host setup. These issues must be resolved before continuing the bring-up process.

  • Board issues (power supply, bootmode pins settings, trace continuity, and so forth)
  • UART instance
  • UART pin configuration
  • Terminal setup

After establishing a serial connection from the host PC to the board, load the boot binaries over UART. The correct order to send the binaries is tiboot3.bin, tispl.bin, u-boot.img. If using minicom or a similar serial communication program, binaries are sent using a built-in application. If not, UART binaries can be sent to the board using the command prompt and the lrzsz package. For a complete description on using UART to load U-Boot binaries, see the AM62x Processor SDK Guide on UART boot. As the document describes, the XMODEM protocol is used to send tiboot3.bin and the YMODEM protocol is used to send tispl.bin and u-boot.img.

The console outputs a block of text after each binary is transferred. If tiboot3.bin and tispl.bin were sucessfully transfered, the final line of each output is seen below.

Trying to boot from UART
CCCCC

After transferring u-boot.img, the device prepares to boot Linux. At this point, U-Boot gives an opportunity to exit autoboot by pressing any key. Use this feature to stop the boot process at the U-Boot prompt. An example bootlog showing successfully reaching the U-Boot command shell is shown below.

U-Boot 2024.04-00006-g49c04dedb6d-dirty (Jul 19 2024 - 14:01:17 -0500)

SoC:   AM62X SR1.0 HS-FS
Model: Texas Instruments AM625 MINIMAL
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -19
DRAM:  2 GiB
Core:  37 devices, 21 uclasses, devicetree: separate
MMC:   mmc@fa00000: 0
Loading Environment from nowhere... OK
In:    serial
Out:   serial
Err:   serial
Failed to probe am65_cpsw_nuss driver
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -19
Net:   No ethernet found.
Hit any key to stop autoboot:  0
=>

Reaching the U-Boot command shell means that the custom board's devicetree configuration for UART is functional. It also shows that the de-tuned DDR settings work well enough to get U-Boot up and running, which is a very good sign. The next step is to boot Linux and reach the kernel command shell. This requires a Linux kernel image, kernel devicetree, and initramfs filesystem. Since this amount of data can not be efficiently transmitted via UART, another peripheral needs to be used to load these images.