LPC2148_RAM.xcl
上传用户:sourcesun
上传日期:2013-09-23
资源大小:362k
文件大小:7k
源码类别:

DNA

开发平台:

Asm

  1. //*************************************************************************
  2. // XLINK command file template for EWARM/ICCARM
  3. //
  4. // Usage:  xlink  -f lnkarm  <your_object_file(s)>
  5. //                -s <program start label>  <C/C++ runtime library>
  6. //
  7. // $Revision: 1.1 $
  8. //*************************************************************************
  9. //*************************************************************************
  10. //
  11. // -------------
  12. // Code segments - may be placed anywhere in memory.
  13. // -------------
  14. //
  15. //   INTVEC     -- Exception vector table.
  16. //   SWITAB     -- Software interrupt vector table.
  17. //   ICODE      -- Startup (cstartup) and exception code.
  18. //   DIFUNCT    -- Dynamic initialization vectors used by C++.
  19. //   CODE       -- Compiler generated code.
  20. //   CODE_I     -- Compiler generated code declared __ramfunc (executes in RAM)
  21. //   CODE_ID    -- Initializer for CODE_I (ROM).
  22. //
  23. // -------------
  24. // Data segments - may be placed anywhere in memory.
  25. // -------------
  26. //
  27. //   CSTACK     -- The stack used by C/C++ programs (system and user mode).
  28. //   IRQ_STACK  -- The stack used by IRQ service routines.
  29. //   SVC_STACK  -- The stack used in supervisor mode
  30. //                 (Define other exception stacks as needed for
  31. //                 FIQ, ABT, UND).
  32. //   HEAP       -- The heap used by malloc and free in C and new and
  33. //                 delete in C++.
  34. //   INITTAB    -- Table containing addresses and sizes of segments that
  35. //                 need to be initialized at startup (by cstartup).
  36. //   CHECKSUM   -- The linker places checksum byte(s) in this segment,
  37. //                 when the -J linker command line option is used.
  38. //   DATA_y     -- Data objects.
  39. //
  40. // Where _y can be one of:
  41. //
  42. //   _AN        -- Holds uninitialized located objects, i.e. objects with
  43. //                 an absolute location given by the @ operator or the
  44. //                 #pragma location directive. Since these segments
  45. //                 contain objects which already have a fixed address,
  46. //                 they should not be mentioned in this linker command
  47. //                 file.
  48. //   _C         -- Constants (ROM).
  49. //   _I         -- Initialized data (RAM).
  50. //   _ID        -- The original content of _I (copied to _I by cstartup) (ROM).
  51. //   _N         -- Uninitialized data (RAM).
  52. //   _Z         -- Zero initialized data (RAM).
  53. //
  54. // Note:  Be sure to use end values for the defined address ranges.
  55. //        Otherwise, the linker may allocate space outside the
  56. //        intended memory range.
  57. //*************************************************************************
  58. //************************************************
  59. // Inform the linker about the CPU family used.
  60. //************************************************
  61. -carm
  62. //*************************************************************************
  63. // Segment placement - General information
  64. //
  65. // All numbers in the segment placement command lines below are interpreted
  66. // as hexadecimal unless they are immediately preceded by a '.', which
  67. // denotes decimal notation. 
  68. //
  69. // When specifying the segment placement using the -P instead of the -Z
  70. // option, the linker is free to split each segment into its segment parts
  71. // and randomly place these parts within the given ranges in order to
  72. // achieve a more efficient memory usage. One disadvantage, however, is
  73. // that it is not possible to find the start or end address (using
  74. // the assembler operators .sfb./.sfe.) of a segment which has been split
  75. // and reformed. 
  76. //
  77. // When generating an output file which is to be used for programming
  78. // external ROM/Flash devices, the -M linker option is very useful 
  79. // (see xlink.pdf for details).
  80. //*************************************************************************
  81. //*************************************************************************
  82. // Read-only segments mapped to ROM.
  83. //*************************************************************************
  84. -DROMSTART=40000040
  85. -DROMEND=40007FFF
  86. //************************************************
  87. // Address range for reset and exception
  88. // vectors (INTVEC).
  89. // The vector area is 32 bytes, 
  90. // an additional 32 bytes is allocated for the
  91. // constant table used by ldr PC in cstartup.s79.
  92. //************************************************
  93. -Z(CODE)INTVEC=40000000-4000003F
  94. //************************************************
  95. // Startup code and exception routines (ICODE).
  96. //************************************************
  97. -Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND
  98. -Z(CODE)SWITAB=ROMSTART-ROMEND
  99. //************************************************
  100. // Code segments may be placed anywhere.
  101. //************************************************
  102. -Z(CODE)CODE=ROMSTART-ROMEND
  103. //************************************************
  104. // Original ROM location for __ramfunc code copied
  105. // to and executed from RAM.
  106. //************************************************
  107. -Z(CONST)CODE_ID=ROMSTART-ROMEND
  108. //************************************************
  109. // Various constants and initializers.
  110. //************************************************
  111. -Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND
  112. -Z(CONST)CHECKSUM=ROMSTART-ROMEND
  113. //*************************************************************************
  114. // Read/write segments mapped to RAM.
  115. //*************************************************************************
  116. -DRAMSTART=40000040
  117. -DRAMEND=40007FFF
  118. //************************************************
  119. // Data segments.
  120. //************************************************
  121. -Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND
  122. //************************************************
  123. // __ramfunc code copied to and executed from RAM.
  124. //************************************************
  125. -Z(DATA)CODE_I=RAMSTART-RAMEND
  126. //************************************************
  127. // ICCARM produces code for __ramfunc functions in
  128. // CODE_I segments. The -Q XLINK command line
  129. // option redirects XLINK to emit the code in the
  130. // CODE_ID segment instead, but to keep symbol and
  131. // debug information associated with the CODE_I
  132. // segment, where the code will execute.
  133. //************************************************
  134. -QCODE_I=CODE_ID
  135. //*************************************************************************
  136. // Stack and heap segments.
  137. //*************************************************************************
  138. -D_CSTACK_SIZE=200
  139. -D_IRQ_STACK_SIZE=200
  140. -D_FIR_STACK_SIZE=200
  141. -D_SVC_STACK_SIZE=200
  142. -D_ABT_STACK_SIZE=200
  143. -D_UND_STACK_SIZE=200
  144. -D_HEAP_SIZE=500
  145. -Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
  146. -Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND
  147. -Z(DATA)FIR_STACK+_FIR_STACK_SIZE=RAMSTART-RAMEND
  148. -Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND
  149. -Z(DATA)ABT_STACK+_ABT_STACK_SIZE=RAMSTART-RAMEND
  150. -Z(DATA)UND_STACK+_UND_STACK_SIZE=RAMSTART-RAMEND
  151. -Z(DATA)HEAP+_HEAP_SIZE=RAMSTART-RAMEND
  152. //*************************************************************************
  153. // ELF/DWARF support.
  154. //
  155. // Uncomment the line "-Felf" below to generate ELF/DWARF output.
  156. // Available format specifiers are:
  157. //
  158. //   "-yn": Suppress DWARF debug output
  159. //   "-yp": Multiple ELF program sections
  160. //   "-yas": Format suitable for debuggers from ARM Ltd (also sets -p flag)
  161. //
  162. // "-Felf" and the format specifiers can also be supplied directly as
  163. // command line options, or selected from the Xlink Output tab in the
  164. // IAR Embedded Workbench.
  165. //*************************************************************************
  166. // -Felf