嵌入式技术论坛
直播中

麦克泰技术

7年用户 423经验值
擅长:嵌入式技术
私信 关注
[经验]

Embedded Studio中如何从GCC Linker移植到SEGGER Linker?

Segger的链接器快速、灵活、使用简单、支持 Cortex-M微控制器,并是专门针对嵌入式开发人员的需求而设计的。其链接程序脚本文件的指令和IAR的相似,从零开始编写,没有任何难度。SEGGER Linker可以轻松地用于在现有项目中取代GNU Linker。
在现有的Embedded Studio项目上移植
在标准Embedded Studio项目中,目标的内存布局在* _MemoryMap.xml中定义。可以使用SEGGER Linker重用该内存映射文件,以便在大多数情况下可以直接使用示例链接程序脚本SEGGER_Flash.icf。
SEGGER Linker未使用节放置文件* _placement.xml,而是使用SEGGER链接程序脚本(* .icf)。编写SEGGER链接脚本比GNU链接脚本更简单。
对于只有一个FLASH和一个RAM区域的默认项目,需要完成以下步骤:
1、将SEGGER链接器脚本模板文件从$(StudioDir)/samples/SEGGER_Flash.icf复制到您的项目目录中。
2、将匹配的启动文件从$(StudioDir)/samples/SEGGER_THUMB_Startup.s复制到您的项目目录中。
2.png
3、将项目选项中的链接器选项的Linker设置为“SEGGER”。

4、将项目选项中链接器选项的Linker Script File设置为项目目录中的链接器脚本。
3.png
5、从项目中删除thumb_crt0.s

6、将SEGGER_THUMB_Startup.s添加到您的项目中
如果在您的内存布局中包含多个FLASH或RAM区域,则可以告诉SEGGER Linker自动放入多个区域:
   place in RAM1 then RAM2 { ... };
如果您在* _placement.xml中添加了其他部分,则也可以在SEGGER Linker脚本中执行以下操作:
place in RAM { ..., .myregion };
SEGGER Linker还提供了更多的功能,可为您提供更广泛的放置选择,以便更好,以便更好地利用你的目标内存。要了解详细情况,请参阅在Embedded Studio中的《SEGGER Linker User Guide》。具体位置如下:从Embedded Studio的菜单Help->Contents-> Using the SEGGER Linker -> SEGGER Linker User Guide
4.png

更多回帖

发帖
×
20
完善资料,
赚取积分