SPRACM8A June   2019  – January 2021 OMAP-L132 , OMAP-L132 , OMAP-L138 , OMAP-L138 , TMS320C6742 , TMS320C6742 , TMS320C6746 , TMS320C6746 , TMS320C6748 , TMS320C6748

 

  1.   Trademarks
  2. 1OMAP-L138 Boot Process
    1. 1.1 During Reset
    2. 1.2 After Reset
  3. 2Boot Utilities
    1. 2.1 AISgen
    2. 2.2 Serial Boot and Flash Loading Utility
      1. 2.2.1 Compiling
        1. 2.2.1.1 Under Windows
        2. 2.2.1.2 Under Linux
      2. 2.2.2 Running
        1. 2.2.2.1 Under Windows
        2. 2.2.2.2 Under Linux
      3. 2.2.3 Serial Flasher Options
    3. 2.3 Modifications for Custom Boards
    4. 2.4 Rebuilding and Customization of Boot Utilities
      1. 2.4.1 Download the Flash and Boot Utilities
      2. 2.4.2 Install and Configure the Required Software
        1. 2.4.2.1 Cygwin
        2. 2.4.2.2 Microsoft .NET Framework
      3. 2.4.3 Compiler Tools
        1. 2.4.3.1 Compiler Tools (CODESOURCERY G++ LITE)
        2. 2.4.3.2 C6X Compiler Tools
        3. 2.4.3.3 Newer CCS
      4. 2.4.4 Rebuilding the Serial Flash and Boot Utils Package for a Particular Platform
      5. 2.4.5 Rebuilding the HexAIS Utility for OMAPL13x
  4. 3Boot Examples
    1. 3.1 Booting Binaries
      1. 3.1.1 Description
      2. 3.1.2 Obtaining the Software
      3. 3.1.3 Running
    2. 3.2 Booting DSP Binaries on AM1808/OMAPL138
      1. 3.2.1 Description
      2. 3.2.2 Obtaining the Software
      3. 3.2.3 Running
        1. 3.2.3.1 OMAP-L138 EVM
        2. 3.2.3.2 C6748 EVM
  5. 4Debugging Bootloader
  6. 5OMAP-L138 Boot Benchmarks
    1. 5.1 Host Boot Performance
    2. 5.2 Test Details
      1. 5.2.1 Methodology
      2. 5.2.2 43
      3. 5.2.3 Software
      4. 5.2.4 Hardware
      5. 5.2.5 Discussion
  7. 6OMAP-L138 Bootloader FAQ
  8. 7References
  9.   A Setting c_int00 Using SYS/BIOS
  10.   Revision History

OMAP-L138 Bootloader FAQ

Question: How do I boot an executable?

Answer: The executable in COFF/ELF must be converted to AIS format using the AISgen tool. For more details and examples on this process, see Section 3.1.

Question: How do I boot a DSP executable?

Answer: Since OMAP-L138 is an ARM-boot device, an executable must be booted first to wake up the DSP. For C6748, the DSP AIS binary can be booted directly. For more details and examples on this process, see Section 3.2.

Question: Are there any sample AISgen config files that work with the EVM?

Answer: The following file contains AISgen config files that set up the core/mDDR frequencies to 456/150 MHz and 300/132 MHz.

Download Sample AISgen Config Files. These are available with the AISgen package at the location: AISgen for D800K008\cfg_files.

Note that the core voltage must be scaled appropriately when choosing an OPP.

Question: Why does my program work in CCS but does not boot from flash?

Answer: Gel File Reliance

The most common problem is that some configuration is done in the GEL file that the code needs, such as external memory configuration, pinmux configuration, or PLL configuration. Most of these functions can also be performed by the bootloader using the AISgen tool. Compare the PLL, pinmux, and DDR registers after booting and verify they match what the GEL file sets them to.

Answer: Incorrect External Memory Configuration

If your code has sections in external memory, the bootloader must configure the controller settings before the code is copied. Verify that the DDR configuration settings used in AISgen match those used in the GEL file. You should be able to poke the DDR memory region in CCS (0xC0000000) if the DDR is configured correctly.

Answer: Supervisor vs User Mode

The SOC design requires the Arm core to be in supervisor mode to configure pin multiplexing (PINMUX) registers. The TI Arm toolchain configures the core in user mode during initialization so the Arm application needs to include a boot.asm source file to change the Arm execution state to supervisor mode. This file can be found in the zip file in Section 3.2.2. In CCS, the "Search libraries in priority order (--priority, -priority)" box should be checked in the project linker options to avoid linking errors.

Answer: Kick Register Unlocking

On previous revision devices (1.0 and 1.1), the KICK registers must be unlocked before accessing certain protected registers. While your GEL file in CCS may do this automatically, it should be done once at the beginning of your code to make it portable. For more information on this process, see the OMAP-L138 C6000 DSP+ARM Processor Technical Reference Manual.

Answer: Incorrect Boot Mode

Double check that the boot pins are at proper voltages by the rising edge of RESET. Use the Debug GEL file in Section 4 to determine what boot mode the device latched and see any other ROM error messages. Also, verify that TRST is externally pulled down.

Answer: Using the Bootloader Shared Memory

The ROM bootloader itself uses 16 KB of Shared RAM starting from 0x80000000 for multiple purposes. This memory should not be used by any initialized section of the user application.

Answer: RAM vs ROM Autoinitialization Model

When booting code through the ROM, make sure you are using the ROM autoinitialization model (-c) in your linker options. If the RAM autoinitialization model is used (-cr), some memory locations will never get loaded even though they did under CCS. You can find the build option here:

  • CCS3.3: Build Options -> Linker -> Autoinit Model
  • CCS4+: Build Options -> Runtime Environment

Question: Do I need a secondary bootloader (UBL)?

Answer: A secondary bootloader, aka, User Bootloader (UBL), was required on older devices where the bootloader could not parse AIS files. By using the AISgen tool with the OMAP-L138 bootloader, most of the functions previously performed by the UBL can be done instead by the bootloader.

For a typical Linux application, the old flow looked something like this:

  • UBL (sets up DDR, PSC, and copies U-Boot to memory)
  • U-Boot (loads Linux and file system)
  • Linux

The flow for the OMAP-L138 would look like this:

  • AIS-signed U-boot (sets up DDR, PSC, and loads Linux and file system)
  • Linux

So in general, there is not a need for a separate UBL, as the AIS functions can perform most of the same tasks.

Question: How do I prepare an image for nor direct or nor legacy boot modes?

Answer: For instructions on creating the boot image, see the Boot section of the Processor SDK Software Developer's Guide.

Question: How should an SD/MMC card be formatted in order to boot?

Answer: For details on preparing the SD/MMC card, see the Boot section of the Processor SDK Software Developer's Guide..