搜索
查看: 827|回复: 0

[原创] Embedded Studio中如何从GCC Linker移植到SEGGER Linker?

[复制链接]

该用户从未签到

39

主题

173

帖子

2

蝴蝶豆

金牌会员

最后登录
2021-3-29
发表于 2021-1-8 10:24:53 | 显示全部楼层 |阅读模式
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
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-29 18:36 , Processed in 1.179050 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表