Keil™, An ARM® Company

L166 User's Guide

Example 3

The following L166 Command Line:

L166 inputlist
     CLASSES (ICODE  (0x000000 - 0x007FFFh),
              NCONST (0x004000 - 0x007FFF),
              FCODE  (0x000000 - 0x00EFFF, 0x010000 - 0x01FFFF),
              FCONST (0x000000 - 0x00EFFF, 0x010000 - 0x01FFFF),
              HCONST (0x000000 - 0x00EFFF, 0x010000 - 0x01FFFF),
              XCONST (0x000000 - 0x00EFFF, 0x010000 - 0x01FFFF),
              FDATA  (0x028000 - 0x02FFFF),
              FDATA0 (0x020000 - 0x027FFF),
              HDATA  (0x028000 - 0x02FFFF),
              HDATA0 (0x020000 - 0x027FFF),
              XDATA  (0x028000 - 0x02FFFF),
              XDATA0 (0x020000 - 0x027FFF),
              NDATA  (0x028000 - 0x02BFFF),
              NDATA0 (0x028000 - 0x02BFFF),
     CINITTAB (0x000000 - 0x007FFF)

Defines the memory areas for the following target system to the linker.

Memory
Type
Address
Range
Used By
ROM0x000000-0x01FFFFInterrupt vectors, NEAR constants, start-up code, and program code.
RAM0x020000-0x027FFFFAR/HUGE/XHUGE data.
NVRAM0x028000-0x02FFFFNEAR non-volatile data and FAR non-volatile data.

Note

  • The classname specified in the CLASSES directive overrides the default memory range for that particular classname. Unspecified classes (IDATA, BIT, SDATA, and so on) are not affected.
  • You are not required to specify a range for classes that are not used in your application. For example, if you do not use xhuge objects you need not specify ranges for the XDATA, XDATA0, and XCONST classes.