SPRADD1A August   2023  – September 2024 AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM625SIP , AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62D-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

Introduction

TI provides a Software Development Kit (SDK) to accelerate development on the AM62x SoC. This software package is tuned for evaluation modules (EVMs), like Starter Kits (SKs). The SDK and SKs are designed for quick evaluation of the SoC's many capabilities for a variety of use cases. All features and capabilities, such as a variety of boot modes, are enabled and optimized. While this flexibility is great for an evaluation platform, this added complexity may not be needed on custom boards designed for specific use cases. In such cases, for example, only a couple of these boot modes would be used in an end product.

Removing complexity from the complete configurations that are provided in the SDK is not efficient and can extend custom board bring up time from days to weeks. This process can involve arbitrarily disabling features to determine how to configure a simpler use case. The interconnected nature of the system works against developers to discern where problems start. Instead of peeling back the layers of a complex system to find the problem, the recommended approach is to start with a minimal configuration as a strong foundation and iterate toward a complete and optimized configuration. Incrementally adding one feature at a time quickly identifies what aspects of the board are functional and which ones are not. Non-functional areas can be targeted for debugging.

This application note details adding custom board support using the SDK. The SDK contains source code repositories for the Linux kernel and U-Boot, which is used as the bootloader. To enable a new custom board, both Linux and U-Boot need to be ported to the custom board. First, the U-Boot environment is configured for the new board. Next, the U-Boot board port begins by creating the required custom board files and making initial modifications to the board's new devicetree, a software structure that describes the underlying hardware. Finally, individual features and peripherals are incrementally added to the devicetree until it is complete and all board features are functional as required by U-Boot to boot the board. The same devicetree is used to enable the Linux kernel on the new board to complete the porting process. To navigate any errors that arise during the bring-up process, this document also includes guidance on debugging.

It is recommended to go through the process detailed in this document using a TI EVM prior to receiving the custom board. This makes for an efficent bring up process once the custom board arrives, and also validates the steps in this document on a board that is known to be functional.

Software file download links can be found in Section 10. While this guide and the provided files were developed for the AM62x family, it can be expanded to other TI SoCs as described further in Section 8.