This section provides information on
how to boot a DSP executable on Arm-boot devices. A user boot loader (UBL) will run
first and is required to wake up the DSP, which will begin execution of the DSP
application. The Arm and the DSP programs are combined into a single AIS image that
can be flashed and booted directly.
Note:
This section does not apply to
AM1808 devices.
A simple test program is used, in
which the DSP repeatedly blinks the LEDs on the OMAP-L138 EVM after booting.
This is a very straightforward
process, with a few key things to remember:
- The Arm must set the HOST1CFG register to change the DSP reset
vector. This should point to the entry point of the DSP executable, but it can
only be set to 1KB boundaries (the bottom 10 bits are reserved and read as 0).
Therefore, the linker command file for the DSP application should specifically
force the entry point to also be aligned to a 1KB boundary. For this example, a
memory region named "entry_point" was created at address 0x80010000, and the
section ".text:_c_int00" was assigned to that memory region.
Note:
If you are using SYS/BIOS,
see Section A for setting c_int00.
- The and DSP .map files cannot overlap. If both programs use
the same memory address, they will overwrite each other and most likely crash.
The linker command files should be written to prevent this.
- For silicon revision 1.0 and 1.1, the KICK registers must be
unlocked before writing to the HOST1CFG register. Additionally, for all
revisions, the Arm must be in supervisor 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 should be included in all
projects that need to access certain SYSCFG registers and require supervisor
mode.
- If any sections of the DSP memory
map are located in DSP L2 RAM (0x11800000), be aware of two things:
- Make sure all L2 RAM addresses in the DSP linker
command file are referenced in the 0x118xxxxx range and not 0x008xxxxx,
as they cannot write to the 0x008xxxxx address range
- Use the "Configure PSC"
function of AISGen to enable the DSP LPSC (PSC0,#15). If the DSP
megamodule is in reset, the L2 RAM will not be accessible and the
section loads will fail. The AISGen CFG file included with this project
enables PSC0,#15 by default.