I've been working on trying to get the DSP to boot from the ARM on the OMAP L138. I downloaded the packages and followed the instructions on this page http://processors.wiki.ti.com/index.php/Boot_Images_for_OMAP-L138#Debug
After working through the example I copied over the relevant pieces of code to a Starterware I2C example (blinks LED) and ran into a couple of issues.
Issues:
1. Link above states that boot.asm is required to put the ARM into supervisor mode (to write pinmux registers). I included boot.asm when building my starterware app, removed the reference to the Entry symbol and init.obj in the linker command file. With these changes I am able to build and load the code but even the portions of the code that are supposed to run on the ARM do not work (removing the reference to init.obj and the Entry symbol modifies the entry point to the default _c_int00). Stepping through the code I find that it waits forever at the following line
while(flag); (see i2cLedBlink.c in attachment)
2. The entry point (labeled Entry) used by the Starterware examples is in init.asm in the starterware system_config library. From what I can gather this does not switch the ARM into supervisor mode. Yet, I am able to write to a PINMUX register and HOST1CFG register, reset the DSP, and get code running on the DSP.
Questions:
1. What are the differences between the init.asm (in Starteware system_config library) and boot.asm (from the example package). Both asm files attached.
Steps to reproduce:
To get the example working I followed the instructions on this page and used the code samples provided.
http://processors.wiki.ti.com/index.php/Boot_Images_for_OMAP-L138#Debug
For Starterware example, locate the i2c example in the starterware directory and replace the i2cLedBlink.c with the version in the attached zip file. Use updated linker.cmd (removes references to init.obj) and makefile (includes boot.asm) to build the project.
I noticed one significant difference between the build steps in the Starterware example and the example package from here http://processors.wiki.ti.com/index.php/Boot_Images_for_OMAP-L138#Debug. The example package invokes gmake but my app does not. Build logs in attached zip file.
Attachment includes
boot.asm -- file recommended to be used in all projects that needs the ARM to start in supervisor mode. Entry point defined here.
makefile -- shows how the code was built
i2cLedBlink.cmd -- memory map and other linker commands
i2cLedBlink.c -- modified app code. Blinks LED from the ARM and then boots DSP.
init.asm -- Entry point used in my setup provided by system_config library.
makdefs -- shows compiler and linker flags used.
build_log_example_boot_app.txt -- log files from building the example app.
build_log_starterware_app.txt -- log files from building the modified starterware example.
Thanks,
Dinesh