Hi,everybody!
ccs5.3 & c6678
I'm trying to run a reference demo of dynamic loader ,unified_ridl,on the 6678. I hope all eight cores could execute a same dll.
In unified_ridl , first load base image,then load dll, then exec.
I pick the case EXECUTE PROGRAM part out of the while(1), and place it elsewhere. Because I want the dll to be executed directly without the command line.
I let only core0 to do "base image" and "load dll",but another core,say core2, to do the execute.
And I define the varibles DLOAD_HANDLE handle,prog_handle and loaded_program which are needed in execute_program() the way below:
#pragma DATA_SECTION (loaded_program, ".my_sec");
int (*loaded_program)() = NULL;
and I set my_sec's runAddress as 0x90000000,which in DDR3, so these varibles are shared among all cores.
I set breakpoints to watch these varibles, they get their values and are same for all eight cores.
but core2 just can't execute the dll right. There's only a simple printf in the dll. Sometimes it returned without printing anything ,sometimes it just got no symbol define for.....
Is it because core0 loaded the dll under its private memory, even though core2 get the loaded_program pointer, but actually there's no code in the memory where loaded_program points to , or core2 is not allowed to access and can't get the code?
what data (any detail?) should be shared between all cores so one can execute a dll which is not loaded by itself?
How can core2 execute the dll which other cores loaded?
I hope only one core need to load ,then all eight cores can run the same dll.
Thank you !