Hello,
I've some questions to AISgen (Version 1.7c).
We will start soon to replace the L137 with L138, where the boot concept is different, as the L138 is an ARM-boot device.
On the following page
http://processors.wiki.ti.com/index.php/Boot_Images_for_OMAP-L138
under "Description" of "Booting DSP Binaries" it is stated:
"The ARM and DSP programs are combined into a single AIS image which can be flashed and booted directly."
I downloaded the sample code and the AISgen tool from the links provided on this page under "Obtaining the software"
Q1: For the case I want to have is a single bin file and a generated C header format file (*.h), each with a modified entrypoint for the ARM are the following steps correct to generate the *.h and *.bin files?
01. Load a configuration file (always select Device Type ARM, other selections except Enable CRC/Specify Entrypoint are HW dependent)
For my example I've choosen OMAPL138-DSP-LED-NAND-SPI-UART.cfg from the sample code and set the "Boot Mode:" to SPI0 Flash
02. First select ARM application file then DSP application file, separated by a semicolon (;) in "ARM Application File:"
For the downloaded sample code this would be:
C:\boot_examples\OMAPL138-DSP-LED\ARM\Debug\OMAPL138-DSP-LED-ARM.out;C:\boot_examples\OMAPL138-DSP-LED\DSP\Debug\OMAPL138-DSP-LED-DSP.out
03. Select the output file in "AIS Output file:"
As example:
C:\boot_examples\OMAPL138-DSP-LED\binary_no_entry_point.bin
04. Hit the "Generate AIS" button
Status is now indicating: "Wrote 3280 bytes to file C:\boot_examples\OMAPL138-D..."
05. Mark check box before "Specify Entrypoint:" and set the entry point
I've choosen 0x80000bbc, which is the "ENTRY POINT SYMBOL: "_c_int00" address: 80000bbc" according the OMAPL138-DSP-LED-ARM.map from the code examples.
06. Select the generated bin file in "ARM Application File:"
C:\boot_examples\OMAPL138-DSP-LED\binary_no_entry_point.bin@0x80000000
07. Select the output file in "AIS Output file:"
As example:
C:\boot_examples\OMAPL138-DSP-LED\binary_with_entry_point.bin
08. Hit the "Generate AIS" button
Status is now indicating: "Wrote 3316 bytes to file C:\boot_examples\OMAPL138-D..."
09. Select the output file in "AIS Output file:"
As example:
C:\boot_examples\OMAPL138-DSP-LED\header_with_entry_point.h
10. Hit the "Generate AIS" button
Status is now indicating: "Wrote 9986 bytes to file C:\boot_examples\OMAPL138-D..."
==================================================================================================
When I now generate a header file without entry point (directly from both out files) and compare them, there are two differences.
One at the begining (7 lines added) of the file and one at the end (2 lines added).
header_no_entry_point.h:
const unsigned int data_array[] = {
0x41504954,
0x5853590D,
0x00010002,
0x0000000B,
0x58535901,
0x80000800,
0x00000464,
0xE3520000,
...
header_with_entry_point.h
const unsigned int data_array[] = {
0x41504954,
0x5853590D,
0x00010002,
0x0000000B,
0x58535901, <- added for ARM entry point, Section Load Command according sprab41c
0x80000000, <- added for ARM entry point, Address according sprab41c
0x00000CD0, <- added for ARM entry point, Size according sprab41c
0x41504954, <- added for ARM entry point, Data according sprab41c, is also the magic word
0x5853590D, <- added for ARM entry point, Data according sprab41c, is also the Function Execute Command
0x00010002, <- added for ARM entry point, Data according sprab41c, FXN NUM & ARG CNT (PLL1 Configuration (Index = 1, Argument Count = 2))
0x0000000B, <- added for ARM entry point, Data according sprab41c, Argument
0x58535901,
0x80000800,
0x00000464,
0xE3520000,
Q2: If I decoded it right, the function called is PLL1 Configuration (Index = 1, Argument Count = 2). For the case when an ARM entry point is specified this function is then called twice, correct?
Q3: Is this a function which will be loaded in the SHAREDRAM then executed and afterwards the boot code will return to the next Section Load Command?
Q4: If so, the next Section Load Command in this example will overwrite the PLL1 Configuration function, correct?
Q5: What is the purpose of the added the magic word?
header_no_entry_point.h
0x00000000,
0x00000000,
0x58535906,
0x80000BBC
};
header_with_entry_point.h
0x00000000,
0x00000000,
0x58535906, <- added for ARM entry point, Jump & Close Command
0x80000BBC, <- added for ARM entry point, Jump to ARM entry point
0x58535906,
0x80000BBC
};
Thanks,
Frank