But to avoid confusion between architectures, I open a new thread for ppc.
I am using codewarrior V8.1, and more precisly linker V3.0.4, for mpc565.
Yes , this is an old project.
I simply try to put a string in a specific area of flash.
I have already searched FAQ and forum for a solution, but I still can't manage to do it.
Here is what I currently have in a source file :
Code:
#define BOOT_VERISON "0.8"...#pragma push#pragma section data_type const_type ".boot_version" ".boot_version" data_mode=far_absunsigned char boot_version_string[]=BOOT_VERSION;unsigned long dummy_try=0x55AA55AA;#pragma pop
and here is the interesting part of my .lcf file :
Code:
MEMORY { ram : org = 0xFFF70000, len = 0x00020000 //data en ram externe rom : org = 0x00000000, len = 0x000FDFFE //Code en flash interne boot_info : org = 0x000FFFF0, len = 0x0000000F // Bootloader version}FORCEACTIVE{boot_version_string, dummy_try } SECTIONS { ... //.boot_version (CONST) BIND(0x000FFFF0): {} > boot_info .boot_info: { *(.boot_version) }>boot_info...
}
With linker command line options:
Code:
-lcf $(IRFDIR)5xx_Axiom_ROM_winidea.lcf -L$(CMPDIR)PowerPC_EABI_Support\MSL\MSL_C\PPC_EABI\Lib -fp hard -o $(OUTPUTDIR)$(OUTPUTFILE) -nostdlib -big -proc 56x -g -romaddr 0x00000000 -map debug.map @obj_list.txt -sdata2 2
The "boot_version_string" is locate in .sdata 
I previously tried with this source file extract (and the same .lcf) :
Code:
#pragma push//#pragma readonly_strings//#pragma options(no_conststringconv)//#pragma const_strings on#pragma force_active on#pragma section const_type ".boot_version"__declspec(section ".boot_version") const UINT8 boot_version_string[]=BOOT_VERSION;#pragma section const_type#pragma force_active reset#pragma pop
This way, "boot_version_string" is well located in .boot_info section, but debug.map show that linker has put the variable elswhere in flash and try to copy it at c_init into the desired location (which is obviously not possible, and not what is expected)
Now, If I remove the -romaddr 0x000000 from command line tool, the "boot_version_string" is located at the chosen address 0x000FFFF0 (I verified with ICD probe), but I don't have .data section initialized anymore (all is linked without considering it is a rom image ?). Obvously, nothing works correctly wihtout .data initialization.
I have tried many things... But still can't manage to locate my string into a specific flash area.
Any idea ?
Thanks.