I am using CCS V 4 and flashing the SPI memory on a Logic PD Sitara ARM MPU Am1808 eXperimenter Kit.
I am writing a custom User Boot Loader (UBL) to read an application image from SPI flash, load it, and then execute it. I started with a TI sample boot loader.
If I run the application from Code Composer Studio (CCS) on the target hardware, it runs fine.
If I try to have my UBL load the application, I think it is running, but it doesn't work properly. I use the same GEL file for both this and running the application by itself. I don't do any low level hardware initialization in the UBL such as clocks. That should be taken care of by GEL in CCS and AIS when booting from flash. The UBL runs from internal RAM (0x8000000), the application runs in external ram (0xC0000000).
Using CCS, I can run my UBL in CCS and see that it loads the application from flash. I can set a breakpoint and then single step into the application from the jump point in the UBL. I can single step and see the main function initialize the hardware, create some tasks, and finally disappear into BIOS_start (). If I set breakpoints in the task, none of them are ever hit. Sometimes, I can see one of the tasks display a message using System_printf that indicates that it has started running. It doesn't blink the LED's like it is supposed to though.
It's unclear to me what is different that this application will run by itself but not when my UBL loads it.
I have the same problem if I flash my UBL and application and do a flash boot.