You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将sam-ba的samd21j18a链接脚本适配到samd21e16b芯片

参考资源

  • Microchip官方SAM-BA用户指南,包含完整的链接脚本配置规范、applet内存布局要求
  • SAMD21系列数据手册第9章内存映射部分,可查询所有内存段的基地址、大小参数
  • ASF框架自带的SAMD21系列板级支持包,包含同系列不同型号的默认SAM-BA链接脚本可做参考
  • GNU链接器(ld)官方文档,用于理解链接脚本基础语法、内存段定义规则

appletAddr与appletMailboxAddr含义

  • appletAddr:SAM-BA bootloader加载功能小应用(applet,例如Flash擦写、外设读写等功能小程序)的SRAM起始地址,必须落在bootloader未占用的SRAM区间,不能和bootloader自身运行的内存空间重叠
  • appletMailboxAddr:bootloader和applet之间传递命令、参数、返回值的共享内存邮箱的起始地址,要求4字节对齐,且落在bootloader和applet都可访问的SRAM区间,通常放在applet加载地址前后的预留固定大小区间

SAMD21E16B的SRAM配置修改方案

原脚本适配的是SRAM更大的samd21j18a,原配置ORIGIN = 0x20002000, LENGTH = 0x00002000表示该版本bootloader占用了SRAM起始的8KB(0x2000)空间,剩下4KB给applet使用。

针对总SRAM为8KB(0x2000)、基地址为0x20000000的samd21e16b,首先确认你使用的SAM-BA bootloader实际占用的SRAM大小:官方默认的SAMD21 SAM-BA bootloader固定占用SRAM前2KB(0x800),修改后的SRAM配置如下:

sram (W!RX) : ORIGIN = 0x20000800, LENGTH = 0x00001800 /* sram, 总8KB - 2KB(bootloader占用) = 6KB分配给applet */

如果你的bootloader做了功能裁剪/扩展,占用大小有变化,只需按照以下规则调整即可:

  • ORIGIN = SRAM基地址(0x20000000) + bootloader实际占用SRAM大小
  • LENGTH = 总SRAM大小(0x2000) - bootloader实际占用SRAM大小

注意:tcl_lib中的appletAddr要和上述ORIGIN值保持一致,appletMailboxAddr建议放在applet SRAM区间的末尾预留256字节位置,按上述配置计算为0x20001F00。修改后需验证bootloader占用区间、applet加载区间、邮箱区间三者无重叠,否则会出现applet加载失败、命令无响应的问题。

内容的提问来源于stack exchange,提问作者Mary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:45:01