Hello again. I'm having difficulty getting my FreeRTOS application to work. It works fine as long I link the application at 80000000. The problem arises when I change the link address to an area high in flash (80020000). I have another application (not based on FreeRTOS) that loads at 80004000, and a boot loader that sits at 80000000. Those two are working fine.
I have a suspicion that this is related to the runtime library initialization code which is being linked from a pre-compiled object file, "crt0.o". In my other application at 80004000 (NOT FreeRTOS-based), there is a comment in the "Startup-UC3.S" file which states the following: "_stext is placed outside the .reset section so that the program entry point can be changed without affecting the C runtime startup." What is the significance of this statement? Also contained in that startup assembly file is code to do the basic initialization (set the stack pointer, set the EVBA, enable exceptions, and initialize data), and is labeled "_stext". This same code is NOT in the startup file in the FreeRTOS project. Rather, part of it is coming from "crt0.o", and part of it is in Port.c.
Given that background, anyone know how to build a FreeRTOS application that is linked at some address other than 80000000?