MDK5使用AC6优化等级问题
大家晚上好啊
stm32G071RBT6跑TOUCHGFX的时候使用仪表控件,更新数值的时候会卡死,怎么解决
STM32G070 I2C主机只发送设备地址读测试是否产生stop位
STM32G030K6Tx使用ADC+DMA进行6通道ADC采集,DMA传输错位问题。
夜深了,睡不着
晚上好啊,兄弟们
第三季度啦,兄弟们
STM32G070RBT6TR ADC采集定点电压误差较大,有没有优化方向
LIS2MDL X轴数据读取问题
微信公众号
手机版
Kimi的答案:
这是一个非常细节但关键的链接脚本(
.ld文件)问题,涉及到 嵌入式系统中堆(heap)和栈(stack)的内存布局与初始化行为 。✅ 先解释
(NOLOAD)的含义:在 GNU LD 脚本中:
换句话说:
.stack(NOLOAD)或.heap(NOLOAD)只是在链接时分配地址空间 ,但不会生成实际的段数据 。❓那
(COPY)是什么?(COPY)是一个非标准的、社区常用的“伪指令” ,它不是 GNU LD 官方支持的属性 ,但在某些工具链或环境中被“借用”来表示:换句话说:
(COPY)的人,通常是想让链接器生成一个段,告诉启动代码:这块内存需要处理 。✅ 总结:什么时候用
(COPY)?表格复制
(COPY)(NOLOAD)(NOLOAD)会跳过它 → 改用(COPY)或不加任何属性(COPY)或不加属性✅ 举个例子:
✅ 默认做法(大多数 STM32 项目):
ld复制
❗但如果你有一个安全 bootloader ,它会在跳转到 app 前清零所有 RAM :
(NOLOAD),这段内存不会出现在段表中 ,bootloader 就不会清零它 。(COPY),让这段内存被“看到” 。✅ 结论一句话:
但请记住:
(COPY)不是官方语法 ,只是社区约定俗成 ;