lnk.sct 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m33 -xc
  2. ; command above MUST be in first line (no comment above!)
  3. /*
  4. ;-------- <<< Use Configuration Wizard in Context Menu >>> -------------------
  5. */
  6. #include "mem_ARMv81MML.h"
  7. /*--------------------- Flash Configuration ----------------------------------
  8. ; <h> Flash Configuration
  9. ; <o0> Flash Base Address <0x0-0xFFFFFFFF:8>
  10. ; <o1> Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
  11. ; </h>
  12. *----------------------------------------------------------------------------*/
  13. #define __ROM_BASE 0x10000000
  14. #define __ROM_SIZE 0x00400000
  15. /*--------------------- Embedded RAM Configuration ---------------------------
  16. ; <h> RAM Configuration
  17. ; <o0> RAM1 Base Address <0x0-0xFFFFFFFF:8>
  18. ; <o1> RAM1 Size (in Bytes) <0x0-0xFFFFFFFF:8>
  19. ; </h>
  20. *----------------------------------------------------------------------------*/
  21. #define __RAM1_BASE 0x20000000
  22. #define __RAM1_SIZE 0x00400000
  23. /*--------------------- Embedded RAM Configuration ---------------------------
  24. ; <h> RAM Configuration
  25. ; <o0> RAM2 Base Address <0x0-0xFFFFFFFF:8>
  26. ; <o1> RAM2 Size (in Bytes) <0x0-0xFFFFFFFF:8>
  27. ; </h>
  28. *----------------------------------------------------------------------------*/
  29. #define __RAM2_BASE 0x28000000
  30. #define __RAM2_SIZE 0x00400000
  31. /*--------------------- Embedded RAM Configuration ---------------------------
  32. ; <h> RAM Configuration
  33. ; <o0> RAM3 Base Address <0x0-0xFFFFFFFF:8>
  34. ; <o1> RAM3 Size (in Bytes) <0x0-0xFFFFFFFF:8>
  35. ; </h>
  36. *----------------------------------------------------------------------------*/
  37. #define __RAM3_BASE 0x80000000
  38. #define __RAM3_SIZE 0x01000000
  39. /*--------------------- Stack / Heap Configuration ---------------------------
  40. ; <h> Stack / Heap Configuration
  41. ; <o0> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
  42. ; <o1> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
  43. ; </h>
  44. *----------------------------------------------------------------------------*/
  45. #define __STACK_SIZE STACK_SIZE
  46. #define __HEAP_SIZE HEAP_SIZE
  47. #define __RAM2_RW_SIZE (__RAM2_SIZE - __STACK_SIZE - __HEAP_SIZE)
  48. LR_ROM __ROM_BASE __ROM_SIZE { ; load region size_region
  49. ER_ROM +0 { ; load address = execution address
  50. *.o (RESET, +First)
  51. * (InRoot$$Sections)
  52. ; *(Veneer$$CMSE) ; uncomment for secure applications
  53. * (+RO-CODE)
  54. ; * (+XO)
  55. }
  56. RW_RAM1 __RAM1_BASE __RAM1_SIZE { ; RW data
  57. * (+RW +ZI)
  58. }
  59. /* make sure stack-overflow will cause bus-fault (which might be escalated to hardfault) */
  60. ARM_LIB_STACK __RAM2_BASE ALIGN 8 EMPTY __STACK_SIZE { ; Reserve empty region for stack
  61. }
  62. RW_RAM2 +0 __RAM2_RW_SIZE {
  63. * (+RO-DATA)
  64. .ANY (+RW +ZI)
  65. }
  66. ARM_LIB_HEAP +0 ALIGN 8 EMPTY __HEAP_SIZE { ; Reserve empty region for heap
  67. }
  68. RW_RAM3 __RAM3_BASE __RAM3_SIZE { ; RW data
  69. .ANY (+RW +ZI) ; Just in case the RAM1 and RAM2 is not big enough.
  70. }
  71. }