AnsweredAssumed Answered

CW4.6: 9S12XDP512: Assembly SECTION/SEGMENT problems

Question asked by Paul Harness on Sep 9, 2008
Latest reply on Oct 13, 2008 by Paul Harness
We are in the process of converting our existing assembly to C. The first step we are trying is to get the existing files to build in Codewarrior. We have several tables of constant data that is placed in flash.

Using Codewarrior, it appears to just ignore the data. The data is in separate files, included into the assembly. Adding SEGMENTS to the linker command file, and trying to use them as SECTIONS in the code isn't working. The tables are present in the listing file, are present in the *.dbg file, but are missing from the *.s19.

Interestingly and irritatingly, the linker doesn't give an error or warning when code/data is assigned to a missing section. However, it typically just puts the code/data into DEFAULT_ROM, which it isn't in this case. I have checked the syntax, the names, everything I can think of with no luck. I have tried changing the names, even shortened them in case there was some length restriction.

Here is an excerpt of the linker command file:

SEGMENTS       PAGE_FA       = READ_ONLY   0x7E8000 TO 0x7EBFFF;       PAGE_FB       = READ_ONLY   0x7EC000 TO 0x7EFFFF;       PAGE_FC       = READ_ONLY   0x7F0000 TO 0x7F3FFF; /*    PAGE_FD       = READ_ONLY   0xFD8000 TO 0xFDBFFF; intentionally not defined: =ROM_4000 */      PG_FE         = READ_ONLY   0x7F8000 TO 0x7F86FF;       PG_FE_A       = READ_ONLY   0x7F8700 TO 0x7F8DFF;       PG_FE_B       = READ_ONLY   0x7F8E00 TO 0x7F94FF;       PG_FE_C       = READ_ONLY   0x7F9500 TO 0x7F9BFF;       PG_FE_D       = READ_ONLY   0x7F9C00 TO 0x7FA2FF;       PG_FE_E       = READ_ONLY   0x7FA300 TO 0x7FA9FF;       PG_FE_F       = READ_ONLY   0x7FAA00 TO 0x7FBFFF; /*    PAGE_FF       = READ_ONLY   0xFF8000 TO 0xFFBFFF; intentionally not defined: =ROM_C000 */ENDPLACEMENT     FPAGE_FE      INTO    PG_FE;    FPAGE_FEA     INTO    PG_FE_A;    FPAGE_FEB     INTO    PG_FE_B;    FPAGE_FEC     INTO    PG_FE_C;    FPAGE_FED     INTO    PG_FE_D;    FPAGE_FEE     INTO    PG_FE_E;    FPAGE_FEF     INTO    PG_FE_F;    DEFAULT_ROM   INTO    PAGE_FC, PAGE_FB, PAGE_FA, PAGE_F9,                          PAGE_F7, PAGE_F6, PAGE_F5, PAGE_F4, PAGE_F3, PAGE_F2, PAGE_F1, PAGE_F0,                           PAGE_EF, PAGE_EE, PAGE_ED, PAGE_EC, PAGE_EB, PAGE_EA, PAGE_E9, PAGE_E8, END

And here is an excerpt of the assembly code:

 And finally an excerpt of the table1.asm:
DC.B  $B0,$BA,$98,$A8,$B4,$A7,$B5,$89DC.B  $B1,$BA,$98,$A8,$B4,$A7,$B5,$89DC.B  $B2,$BA,$98,$A8,$B4,$A7,$B5,$89....

 This all shows up in the listing file, and in the *.dbg file. No errors or warnings are thrown, but the data doesn't get included in the *.s19 file.

Thanks for any help. Paul.

Message Edited by paulcsf on 2008-09-09 04:44 AM