SPRACM8A June 2019 – January 2021 OMAP-L132 , OMAP-L132 , OMAP-L138 , OMAP-L138 , TMS320C6742 , TMS320C6742 , TMS320C6746 , TMS320C6746 , TMS320C6748 , TMS320C6748
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:
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:
The flow for the OMAP-L138 would look like this:
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..