查看: 1547|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    2023-6-12 14:34
  • 签到天数: 165 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2021-1-8 10:58:56 | 显示全部楼层 |阅读模式
    分享到:
    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设置为项目目录中的链接器脚本。

    2.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.png
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 22:46 , Processed in 0.112906 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.