f8w2530.xcl 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. ////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // File: Modeled upon lnk51ew_cc2530b_PG2_0.xcl
  4. //
  5. // Description:
  6. // This is a extended command line file for XLINK tool to be used when
  7. // debug applications written for the TI CC2530.
  8. //
  9. // Works with CC2530 PG2.0
  10. //
  11. // Important:
  12. // Data cannot be located at address zero, this address is reserved for the null pointer.
  13. //
  14. ////////////////////////////////////////////////////////////////////////////////
  15. ////////////////////////////////////////////////////////////////////////////////
  16. //
  17. // Variables (used by lnk_base.xcl)
  18. // ================================
  19. //
  20. // Segment limits
  21. // --------------
  22. //
  23. //
  24. // IDATA
  25. //
  26. -D_IDATA_END=0xFF // Last address of Idata memory
  27. //
  28. //
  29. // PDATA
  30. //
  31. -D_PDATA_START=0x1E00 // First address for PDATA memory.
  32. -D_PDATA_END=0x1EFF // Last address for PDATA memory.
  33. //
  34. //
  35. //
  36. // IXDATA
  37. //
  38. -D_IXDATA_START=0x0100
  39. -D_IXDATA_END=0x1DFF
  40. //
  41. //
  42. // XDATA
  43. //
  44. // The internal XDATA is used as XDATA.
  45. -D_XDATA_START=_IXDATA_START
  46. -D_XDATA_END=_IXDATA_END
  47. //
  48. //
  49. // CODE
  50. //
  51. -D_CODE_START=0x0000
  52. -D_CODE_END=0x7FFF // Last address for ROOT bank.
  53. //
  54. -D_FIRST_BANK_ADDR=0x10000
  55. //
  56. //
  57. //
  58. // Special SFRs
  59. // ------------
  60. //
  61. // Register bank setup
  62. //
  63. -D?REGISTER_BANK=0 // Default register bank (0,1,2,3).
  64. -D_REGISTER_BANK_START=0 // Start address for default register bank (00,08,10,18).
  65. //
  66. //
  67. // PDATA page setup
  68. //
  69. -D?PBANK_NUMBER=1E // High byte of 16-bit address to the PDATA area.
  70. //-D?PBANK=93 // Most significant byte in MOVX A,@R0. (0x93 is sfr MPAGE).
  71. //
  72. //
  73. // Virtual register setup
  74. // ----------------------
  75. //
  76. -D_BREG_START=0x00 // The bit address where the BREG segments starts.
  77. // Must be placed on: _BREG_START%8=0 where _BREG_START <= 0x78.
  78. -D?VB=0x20 // ?VB is used when referencing BREG as whole byte.
  79. // Must be placed on: ?VB=0x20+_BREG_START/8.
  80. //
  81. ////////////////////////////////////////////////////////////////////////////////
  82. ////////////////////////////////////////////////////////////////////////////////
  83. //
  84. // IDATA memory
  85. //
  86. // Setup "bit" segments (only for '__no_init bool' variables).
  87. -Z(BIT)BREG=_BREG_START
  88. -Z(BIT)BIT_N=0-7F
  89. -Z(DATA)REGISTERS+8=_REGISTER_BANK_START
  90. -Z(DATA)BDATA_Z,BDATA_N,BDATA_I=20-2F
  91. -Z(DATA)VREG+_NR_OF_VIRTUAL_REGISTERS=08-7F
  92. -Z(DATA)PSP,XSP=08-7F
  93. -Z(DATA)DOVERLAY=08-7F
  94. -Z(DATA)DATA_I,DATA_Z,DATA_N=08-7F
  95. -U(IDATA)0-7F=(DATA)0-7F
  96. -Z(IDATA)IDATA_I,IDATA_Z,IDATA_N=08-_IDATA_END
  97. -Z(IDATA)ISTACK+_IDATA_STACK_SIZE#08-_IDATA_END
  98. -Z(IDATA)IOVERLAY=08-FF
  99. ////////////////////////////////////////////////////////////////////////////////
  100. //
  101. // ROM memory
  102. //
  103. //
  104. // The following segments *must* be placed in the root bank. The order of
  105. // placement also matters for these segments, which is why we use the -Z
  106. // placement directive.
  107. //
  108. -Z(CODE)INTVEC=_CODE_START
  109. -Z(CODE)BIT_ID,BDATA_ID,DATA_ID,IDATA_ID,IXDATA_ID,PDATA_ID,XDATA_ID=_CODE_START-_CODE_END
  110. -Z(CODE)RAM_CODE_FLASH=_RAM_CODE_FLASH_START-_RAM_CODE_FLASH_END
  111. //
  112. //
  113. // The following segments *must* be placed in the root bank, but the order
  114. // of placement within the root bank is not important, which is why we use the
  115. // -P directive here.
  116. //
  117. -P(CODE)CSTART,BANK_RELAYS,RCODE,DIFUNCT,NEAR_CODE=_CODE_START-_CODE_END
  118. //
  119. // Setup for constants located in code memory:
  120. //
  121. -P(CODE)CODE_C=_CODE_START-_CODE_END
  122. //
  123. // Define segments for const data in flash.
  124. // First the segment with addresses as used by the program (flash mapped as XDATA)
  125. -P(CONST)XDATA_ROM_C=0x8000-0xFFFF
  126. //
  127. // Then the segment with addresses as put in the hex file (flash bank 1)
  128. -P(CODE)XDATA_ROM_C_FLASH=0x18000-0x1FFFF
  129. //
  130. // Finally link these segments (XDATA_ROM_C_FLASH is the initializer segment for XDATA_ROM_C,
  131. // we map the flash in the XDATA address range instead of copying the data to RAM)
  132. -QXDATA_ROM_C=XDATA_ROM_C_FLASH
  133. //
  134. // The directive below ensures that the remaining space in the root bank gets
  135. // filled, then starts filling the banks.
  136. //
  137. -P(CODE)BANKED_CODE=_CODE_START-_CODE_END,\
  138. [(_CODEBANK_START+_FIRST_BANK_ADDR)-(_CODEBANK_END+_FIRST_BANK_ADDR)]*_NR_OF_BANKS+_FIRST_BANK_ADDR
  139. ////////////////////////////////////////////////////////////////////////////////
  140. //
  141. // XDATA memory
  142. //
  143. //
  144. // Stacks located in XDATA
  145. //
  146. -Z(XDATA)PSTACK+_PDATA_STACK_SIZE=_PDATA_START-_PDATA_END
  147. -Z(XDATA)XSTACK+_XDATA_STACK_SIZE=_XDATA_START-_XDATA_END
  148. //
  149. // XDATA - data memory
  150. //
  151. -Z(XDATA)IXDATA_N,IXDATA_Z,IXDATA_I=_IXDATA_START-_IXDATA_END
  152. -Z(XDATA)XDATA_N,XDATA_Z,XDATA_I=_XDATA_START-_XDATA_END
  153. -cx51
  154. ////////////////////////////////////////////////////////////////////////////////
  155. //
  156. // Texas Instruments device specific
  157. // =================================
  158. //
  159. //
  160. // Layout of CODE banks
  161. // -------------------
  162. //
  163. //-D_BANK0_START=0x08000
  164. //-D_BANK0_END=0x0FFFF
  165. //
  166. //-D_BANK1_START=0x18000
  167. //-D_BANK1_END=0x1FFFF
  168. //
  169. //-D_BANK2_START=0x28000
  170. //-D_BANK2_END=0x2FFFF
  171. //
  172. //-D_BANK3_START=0x38000
  173. //-D_BANK3_END=0x3FFFF
  174. //
  175. //-D_BANK4_START=0x48000
  176. //-D_BANK4_END=0x4FFFF
  177. //
  178. //-D_BANK5_START=0x58000
  179. //-D_BANK5_END=0x5FFFF
  180. //
  181. //-D_BANK6_START=0x68000
  182. //-D_BANK6_END=0x6FFFF
  183. //
  184. //-D_BANK7_START=0x78000
  185. -D_BANK7_END=0x7FFFF
  186. //
  187. //
  188. // Include these two lines when generating a .hex file for banked code model:
  189. -M(CODE)[(_CODEBANK_START+_FIRST_BANK_ADDR)-(_CODEBANK_END+_FIRST_BANK_ADDR)]*\
  190. _NR_OF_BANKS+_FIRST_BANK_ADDR=0x8000
  191. //-ww69=i
  192. //
  193. //
  194. //
  195. // Any code that will be run from RAM by setting XMAP of MEMCTL must have the same bank-relative
  196. // address as the address in RAM to which the CODE will be copied to run.
  197. // Thus, any part of the first 8k of any bank can be dedicated to code that will run from RAM as
  198. // long as the corresponding relative address range is reserved in RAM by RAM_CODE_XDATA.
  199. //
  200. -D_RAM_CODE_XDATA_START=0x01DDD
  201. -D_RAM_CODE_XDATA_END=(_RAM_CODE_XDATA_START+0x22)
  202. -Z(XDATA)RAM_CODE_XDATA=_RAM_CODE_XDATA_START-_RAM_CODE_XDATA_END
  203. //
  204. -D_RAM_CODE_FLASH_START=0x39DDD
  205. -D_RAM_CODE_FLASH_END=(_RAM_CODE_FLASH_START+0x22)
  206. //
  207. //
  208. //
  209. // Internal flash used for NV address space: reserving 6 pages.
  210. //
  211. -D_ZIGNV_ADDRESS_SPACE_START=(_BANK7_END+1-0x3800)
  212. -D_ZIGNV_ADDRESS_SPACE_END=(_ZIGNV_ADDRESS_SPACE_START+0x2FFF)
  213. -Z(CODE)ZIGNV_ADDRESS_SPACE=_ZIGNV_ADDRESS_SPACE_START-_ZIGNV_ADDRESS_SPACE_END
  214. //
  215. //
  216. //
  217. // IEEE address space (EUI-64) put at last 8 bytes of last page before the flash lock bits.
  218. //
  219. -D_IEEE_ADDRESS_SPACE_START=(_BANK7_END+1-0x18)
  220. -D_IEEE_ADDRESS_SPACE_END=(_IEEE_ADDRESS_SPACE_START+7)
  221. -Z(CODE)IEEE_ADDRESS_SPACE=_IEEE_ADDRESS_SPACE_START-_IEEE_ADDRESS_SPACE_END
  222. //
  223. //
  224. //
  225. -D_SLEEP_CODE_SPACE_START=(_IEEE_ADDRESS_SPACE_START-8)
  226. -D_SLEEP_CODE_SPACE_END=(_SLEEP_CODE_SPACE_START+7)
  227. -Z(CODE)SLEEP_CODE=_SLEEP_CODE_SPACE_START-_SLEEP_CODE_SPACE_END
  228. //
  229. ////////////////////////////////////////////////////////////////////////////////