修改链接脚本

STM32F407_OpenEdv\liteos.ld是新开发板的链接脚本,需要根据开发板实际情况修改stack,flash,ram的值,可以参考裸机工程链接脚本STM32F407ZGTx_FLASH.ld中的设定值进行设置。

  • stack在链接脚本中对应的是“_estack”变量。
  • flash 对应的是“FLASH”变量。
  • ram对应的是“RAM ”变量。

同时为适配LiteOS操作系统,链接脚本中增加了如下代码:

  1. 增加了一个vector,用于初始化LiteOS:

    1. /* used by the startup to initialize liteos vector */
    2. _si_liteos_vector_data = LOADADDR(.vector_ram);
    3. /* Initialized liteos vector sections goes into RAM, load LMA copy after code */
    4. .vector_ram :
    5. {
    6. . = ORIGIN(RAM);
    7. _s_liteos_vector = .;
    8. *(.data.vector) /* liteos vector in ram */
    9. _e_liteos_vector = .;
    10. } > RAM AT> FLASH
  2. 在.bss段中增加“__bss_end”变量的定义,因为在LiteOS中使用的是这个变量而非“__bss_end__”变量:

    1. __bss_end = _ebss;
  3. 设置LiteOS使用的内存池的地址,包括起始地址和结束地址:

    1. . = ALIGN(8);
    2. __los_heap_addr_start__ = .;
    3. __los_heap_addr_end__ = ORIGIN(RAM) + LENGTH(RAM) - _Min_Stack_Size - 1;