I have this working although imperfectly. I want to share my tips for anyone in the future that tries to do it.
First the background... cc2430f128 and cc2431f128 both contain an 8051 cpu and 128 KB of flash code memory. The layout of the flash ram is 4 contiguous banks with addresses 0000...7fff, 8000...ffff, 10000...17ffff, and 18000....1ffff. The FMAP SFR functions the same way as the PSBANK SFR in the example trampoline crtbank.asm. These are the flags to use on the sdcc command line. I list them as Makefile defines. They should be added to the linking step of your build. LDFLAGS += -Wl-bCSEG=0x000000 LDFLAGS += -Wl-bBANK1=0x018000 LDFLAGS += -Wl-bBANK2=0x028000 LDFLAGS += -Wl-bBANK3=0x038000 LDFLAGS += -Wl-r A simple gotcha, that burned me, is an issue with the linker. It is important for the object file containing the "main" routine to be listed first on the linker command line. In my case, working with the Contiki OS, the main object was linked through a library module! This led to various routines (typically the bank switch routines) getting placed into the HOME area before the program startup routines. An easy way to check for this is to look in the map file generated by the linker. look for a section labeled HOME like this: Hexadecimal Area Addr Size Decimal Bytes (Attributes) -------------------------------- ---- ---- ------- ----- ------------ HOME 0000 05C8 = 1480. bytes (REL,CON,CODE) Value Global -------- -------------------------------- 0C:0086 __sdcc_program_startup 0C:008B _some_routine1 0C:0097 _some_routine2 The routine __sdcc_program_startup should be first. If anything comes before it your 8051 will not start correctly. The next difficulty is that the bank addresses produced by the linker do not match the actual addresses in memory. Notice that BANK1 is listed as occurring at 0x018000 but in reality it begins at 0x8000. A post processing step is required to modify the intel hex file that aslink produces with the correct bank/page addressing. I was given a converter program that handles this step. I plan to contact the source to request permission to release this code. Anthony* ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user