AnsweredAssumed Answered

Second stage boot loader (EE-345)

Question asked by Tomas.Radil on Jul 29, 2010
Latest reply on Aug 5, 2010 by Tomas.Radil



I've designed a system with an ADSP-21369 processor booting from a SPI Flash memory (M25P20). The system will communicate with another (master) processor and should have the ability to update its firmware. Since the communication with the master processor using the SPI interface and SPI Flash programming seems to be too much to fit into the 256 instructions reserved for the boot kernel, I've decided to follow the application note EE-345 rev.1 and to implement a second-stage loader. However, after reading the application note and after examining the code supplied with it I still have some doubts.


1) When I build the project "369_SSL.dpj" supplied with the EE-345 application note, I receive the following warning:


[Warning ea1092] "C:\Users\User1\AppData\Local\Temp\acc1e5cabaa000\acc1e5cabaa001.s":26 Symbol '_load_application_parallel' is undefined.
Check spelling. If '_load_application_parallel' is defined in a different file, use ".extern".


although the file main.c contains the following declaration:


extern load_application_parallel();


Can I ignore this warning or is there an error in the supplied code?


2) The main.c file included in the "369_SSL.dpj" project uses the following line to load the application:


asm("jump _load_application_parallel;");


Is this approach safe? In the "C/C++ Compiler Manual for SHARC Processors" the use of jumps and labels in the asm() construct is discouraged.


3) Are there any limitations (size, placement in the memory, etc.) to the code included in the second stage loader (i.e., the code that would be placed in the main.c)?


I will appreaciate any help and comments.


Thank you.