- ////////////////////////////////////////////////////////////////////////////////
- //
- // File: f8w2430.xcl
- //
- // Description:
- // This is an extended command line file for XLINK tool to be used when
- // developing/debugging applications written for the Chipcon CC2430.
- // This file was originally created by concatenation of default files
- // provided by IAR: lnk51ew_cc2430.xcl and lnk_base.xcl.
- //
- // Important:
- // Data cannot be located at address zero, this address is reserved for
- // the null pointer.
- //
- ////////////////////////////////////////////////////////////////////////////////
-
- ////////////////////////////////////////////////////////////////////////////////
- //
- // Variables (used by lnk_base.xcl)
- // ================================
- //
- // Segment limits
- // --------------
- //
- //
- // IDATA
- //
- -D_IDATA_END=0xFF // Last address of Idata memory
- //
- //
- // PDATA
- //
- -D_PDATA_START=0xEF00 // First address for PDATA memory.
- -D_PDATA_END=0xEFFF // Last address for PDATA memory.
- //
- //
- // IXDATA
- //
- // These settings are used for devices that don't use PM2/PM3
- -D_IXDATA_START=E000 // The internal IXDATA block is 8K,
- -D_IXDATA_END=FEFF // End of IXDATA if PM2/PM3 are not used
- //
- // These settings must be used for devices that use PM2/PM3.
- // Note that the IXDATA_START allows the XSTACK to grow down into the non-persistent RAM, but
- // checks in HAL Sleep insure that the stack is back into persistent RAM before entering PM2/PM3.
- //-D_IXDATA_START=EE00 // The internal IXDATA block is 4K+,
- //-D_IXDATA_END=FD55 // FD56-FEFF is used for saving the CC2430 registers before sleep.
- //
- // FF00-FFFF is mapped to IDATA.
- //
- //
- // XDATA
- //
- -D_XDATA_START=_IXDATA_START // The IXDATA is used as XDATA.
- -D_XDATA_END=_IXDATA_END
- //
- //
- // NEAR CODE
- //
- -D_NEAR_CODE_END=0x7FFF // Last address for near code, near code segment is 32KB in banked code model.
- //
- //
- // TINY CODE
- //
- -D_TINY_CODE_END=0x7FF // Last address for tiny code.
- //
- //
- // CODE
- //
- // These settings determine the size/location of the ROOT segment.
- // Increase _CODE_END to increase ROOT memory, i.e. for constants.
- -D_CODE_START=0x0000 // Code size = 128k for CC2430-F128
- //-D_CODE_END=0x28FF // Last address for ROOT bank 原来的默认配置
- -D_CODE_END=0x27FF // Last address for ROOT bank 自定义的配置
- //
- //-D_BANK1A=(10000+_CODE_END+1) // First address for BANK1 原来的默认配置
- //
- ///////////////自定义的BANK0分区//////////////////////////////////////////////////
- ///////////////自定义的BANK0分区//////////////////////////////////////////////////
- //把BANK0区域自定义为3块 注意:0X0000-0X27FF前面这些有关于中断等的地址,不要乱动。
- -D_BLCODE1_START=0x2800 // 自定义的8K
- -D_BLCODE1_END=0x47FF
- //可以在函数定义前用#pragma location="BLCODE1" 把该函数的存储地址定位到BLCODE1区域中。多个函数可以//多次使用,地址默认连续存储 BLCODE1在下面定义
- -D_BLCODE2_START=0x4800 //自定义的8K
- -D_BLCODE2_END=0x67FF
- //
- -D_BLCODE3_START=0x6800 //自定义的6K
- -D_BLCODE3_END=0x7FFF //BANK0 的32K从0X0000-0X07FFF 这里把BANK0分区3块
- //
- -D_BANK1A=(10000+_BLCODE3_END+1) // First address for BANK1 0x18000 这个10000是16进制的,注意
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- // ZigBee Stack Non-Volatile Storage
- //默认的配置,不要动
- -D_ZIGNV_START=0x3E000 // The two pages before the last two pages of the 3rd overlayed bank.
- -D_ZIGNV_SIZE=0x1000 // Size of ZigBee NV (2 pages)
- -D_ZIGNV_END=(_ZIGNV_START+_ZIGNV_SIZE-1)
- //
- //
- // HEX FILE GENERATION
- //
- // Include the following line when generating hex file:
- //-M(CODE)_BANK1A-1FFFF,28000-2FFFF,38000-3DFFF,3F000-3fff7=(_CODE_END+1)-0xFFFF,0x10000-0x17FFF,0x18000-0x1DFFF,0x1F000-0x1FFF7
- //
- //
- // Special SFRs
- // ------------
- //
- //
- // Register bank setup
- //默认的配置,不要动
- -D?REGISTER_BANK=0 // Default register bank (0,1,2,3).
- -D_REGISTER_BANK_START=0 // Start address for default register bank (00,08,10,18).
- -D_FIRST_BANK_ADDR=0x10000
- -D_NR_OF_BANKS=0x03
- //
- //
- // PDATA bank setup
- //
- -D?PBANK_NUMBER=EF // High byte of 16-bit address to the PDATA area
- -D?PBANK=93 // Most significant byte in MOVX A,@R0. (0x93 is sfr MPAGE)
- //
- //
- // Virtual register setup
- // ----------------------
- //
- -D_BREG_START=0x00 // The bit address where the BREG segments starts.
- // Must be placed on: _BREG_START%8=0 where _BREG_START <= 0x78.
- -D?VB=0x20 // ?VB is used when referencing BREG as whole byte.
- // Must be placed on: ?VB=0x20+_BREG_START/8
- //
- //
- //
- // To the reader: Ignore this section ------------------------------------------
- //默认的配置,不要动
- // Dummy definitions needed to satisfy lnk_base.xcl
- -D_FAR_DATA_NR_OF_BANKS=0x0E // Number of banks in far data memory.
- -D_FAR_DATA_START=0x010001 // First address of far memory.
- -D_FAR_DATA_END=0xFFFFFF // Last address of far memory.
- -D_FAR_CODE_START=_CODE_START // First address for far code.
- -D_FAR_CODE_END=_CODE_END // Last address for far code.
- // End of the section to ignore ------------------------------------------------
- //
- ////////////////////////////////////////////////////////////////////////////////
-
- ////////////////////////////////////////////////////////////////////////////////
- //
- // File: the following defintions are extracted from the lnkbase.xcl file
- //
- ////////////////////////////////////////////////////////////////////////////////
- //
- //
- // IDATA memory
- //默认的配置,不要动
- // Setup "bit" segments (only for '__no_init bool' variables).
- -Z(BIT)BREG=_BREG_START
- -Z(BIT)BIT_N=0-7F
- //
- -Z(DATA)REGISTERS+8=_REGISTER_BANK_START
- -Z(DATA)BDATA_Z,BDATA_N,BDATA_I=20-2F
- -Z(DATA)VREG+_NR_OF_VIRTUAL_REGISTERS=08-7F
- -Z(DATA)PSP,XSP=08-7F
- -Z(DATA)DOVERLAY=08-7F
- -Z(DATA)DATA_I,DATA_Z,DATA_N=08-7F
- //
- -U(IDATA)0-7F=(DATA)0-7F
- -Z(IDATA)IDATA_I,IDATA_Z,IDATA_N=08-_IDATA_END
- -Z(IDATA)ISTACK+_IDATA_STACK_SIZE#08-_IDATA_END
- -Z(IDATA)IOVERLAY=08-FF
- //
- //
- // ROM memory
- //
- // Note: INTVEC must be placed first.
- // Note: CSTART Must be located in first 64k.
- //
- // Program memory
- //默认的配置,不要动
- -Z(CODE)INTVEC=0
- -Z(CODE)CSTART=_CODE_START-_CODE_END
- -Z(CODE)RCODE=_CODE_START-_CODE_END
- -Z(CODE)TINY_CODE=_CODE_START-_TINY_CODE_END
- -Z(CODE)NEAR_CODE=_CODE_START-_NEAR_CODE_END
- -Z(CODE)DIFUNCT=_CODE_START-_CODE_END
- -Z(CODE)FAR_CODE=_CODE_START-_CODE_END
- -Z(CODE)BANK_RELAYS=_CODE_START-_CODE_END
- //
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- //可以在函数定义前用#pragma location="BLCODE1" 把该函数的存储地址定位到BLCODE1区域中。多个函数可以//多次使用,地址默认连续存储
- -Z(CODE)BLCODE1=_BLCODE1_START-_BLCODE1_END //自定义的BANK0中的块8K
- -Z(CODE)BLCODE2=_BLCODE2_START-_BLCODE2_END //自定义的BANK0中的块8K
- -Z(CODE)BLCODE3=_BLCODE3_START-_BLCODE3_END //自定义的BANK0中的块6K
- //
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- //默认的配置,不用管
- -P(CODE)BANKED_CODE=_BANK1_START-_BANK1_END,_BANK2_START-_BANK2_END,_BANK3_START-_BANK3_END,_BANK3b_START-_BANK3b_END
- //
- //
- // Initializers
- //默认的配置,不用管
- -Z(CODE)BIT_ID,BDATA_ID,DATA_ID,IDATA_ID,IXDATA_ID,PDATA_ID,XDATA_ID=_CODE_START-_CODE_END
- -Z(CODE)HUGE_ID=_FAR_CODE_START-_FAR_CODE_END
- //
- //
- // Constants located in code memory
- //默认的配置,不用管
- -Z(CODE)CODE_C=_CODE_START-_CODE_END
- -Z(CODE)FAR_CODE_C=_FAR_CODE_START-_FAR_CODE_END
- -Z(CODE)HUGE_CODE_C=_FAR_CODE_START-_FAR_CODE_END
- -Z(CODE)CHECKSUM#_CODE_END
- //
- //
- // Stacks located in XDATA
- //默认的配置,不用管
- -Z(XDATA)EXT_STACK+_EXTENDED_STACK_SIZE=_EXTENDED_STACK_START-_EXTENDED_STACK_END
- -Z(XDATA)PSTACK+_PDATA_STACK_SIZE=_PDATA_START-_PDATA_END
- -Z(XDATA)XSTACK+_XDATA_STACK_SIZE=_XDATA_START-_XDATA_END
- //
- //
- // PDATA - data memory
- //默认的配置,不用管
- -Z(XDATA)PDATA_N,PDATA_Z,PDATA_I=_PDATA_START-_PDATA_END
- //
- //
- // XDATA - data memory
- //默认的配置,不用管
- -Z(XDATA)IXDATA_N,IXDATA_Z,IXDATA_I=_IXDATA_START-_IXDATA_END
- -Z(XDATA)XDATA_N,XDATA_Z,XDATA_I=_XDATA_START-_XDATA_END
- -Z(XDATA)XDATA_HEAP+_XDATA_HEAP_SIZE=_XDATA_START-_XDATA_END
- -Z(CONST)XDATA_ROM_C=_XDATA_START-_XDATA_END
- //
- //
- // FAR - extended data memory
- //默认的配置,不用管
- // Initialized FAR data
- // Note: The segment FAR_I and FAR_ID must start at the same address within a 64k bank,
- // they must therefore be located first in the FAR data area, and in the xlink linker file
- // Note: *_I segment is located in RAM but *_ID segments is located in ROM
- -Z(SPLIT-XDATA)FAR_Z=[_FAR_DATA_START-_FAR_DATA_END]/10000
- -Z(SPLIT-XDATA)FAR_I=[_FAR_DATA_START-_FAR_DATA_END]/10000
- -Z(SPLIT-CODE)FAR_ID=[_FAR_CODE_START-_FAR_CODE_END]/10000
- -Z(SPLIT-XDATA)FAR_HEAP+_FAR_HEAP_SIZE=[_FAR_DATA_START-_FAR_DATA_END]/10000
- -P(XDATA)FAR_N=[_FAR_DATA_START-_FAR_DATA_END]*_FAR_DATA_NR_OF_BANKS+10000
- -P(CONST)FAR_ROM_C=[_FAR_DATA_START-_FAR_DATA_END]*E+10000
- //
- //
- // HUGE - extended data memory
- //默认的配置,不用管
- -Z(XDATA)HUGE_N,HUGE_Z,HUGE_I=_FAR_DATA_START-_FAR_DATA_END
- -Z(XDATA)HUGE_HEAP+_HUGE_HEAP_SIZE=_FAR_DATA_START-_FAR_DATA_END
- -Z(CONST)HUGE_ROM_C=_FAR_DATA_START-_FAR_DATA_END
- //
- //
- -cx51
- //
- //
- // CC2430 Device Specific
- // ======================
- //
- // Overlayed Code Bank Addresses
- //逻辑地址定义,便于识别,逻辑地址并不连续,对应的物理地址就是连续的,从0-1FFFF是BANK0-BANK3
- -D_BANK1_START=_BANK1A // 1st overlayed code bank
- -D_BANK1_END=0x1FFFF //这是逻辑地址,并不是实际地址,这样写便于识别1代码BANK1
- //
- -D_BANK2_START=0x28000 // 2nd overlayed code bank
- -D_BANK2_END=0x2FFFF //这是逻辑地址,并不是实际地址,这样写便于识别2代码BANK2
- //
- -D_BANK3_START=0x38000 // 3rd overlayed code bank
- -D_BANK3_END=0x3DFFF //这是逻辑地址,并不是实际地址,这样写便于识别3代码BANK3
- //
- -D_BANK3b_START=(_ZIGNV_END+1) // 3rd overlayed code bank after the pages dedicated to NV.
- -D_BANK3b_END=0x3FFF7 // Last 8 bytes of last Flash page reserved for IEEE address.
- //
- -P(CODE)BANK1=_BANK1_START-_BANK1_END
- -P(CODE)BANK2=_BANK2_START-_BANK2_END
- -P(CODE)BANK3=_BANK3_START-_BANK3_END
- -P(CODE)ZIGNV=_ZIGNV_START-_ZIGNV_END
- -P(CODE)BANK3b=_BANK3b_START-_BANK3b_END
- //
- // IEEE Address Space
- //默认的配置,不用管
- -D_IEEE_ADDR_START=0x3FFF8 // Last 8 bytes of flash
- -D_IEEE_ADDR_END=0x3FFFF
- //
- ////////////////////////////////////////////////////////////////////////////////
复制代码
|