- 1
- 2
- 3
- 4
- 5
链接脚本内存布局的落地验收检查表
资料介绍
链接脚本内存布局落地验收检查表——一个真实案例的复盘 开场先问一句:你有没有遇到过程序跑着跑着突然进 HardFault,或者明明没写越界的代码,变量却神秘地被改写?如果是,我们来看看这一章要讲的链接脚本内存布局问题,多半答案就在里面。 第1章 现象描述 我们来看一个发生在嵌入式固件开发中的真实案例。项目采用一块带片内 SRAM 的 MCU,软件工程师按照惯例编写了链接脚本(linker script),把程序段、只读数据段和可读写数据段分别安排在合适的地址。固件初版编译运行一切正常,但当我加入一块较大的查找表数组后,程序开始随机出现异常:有的地方表现为全局变量被莫名篡改,有的地方表现为函数返回值不可理喻,甚至偶尔直接进入 HardFault。 起初大家怀疑是代码逻辑的问题,在中断和临界区上反复排查,却始终找不到根源。后来一位同事偶然发现,只要把那个查找表数组挪一个位置,现象就消失了。这一下点醒了我们,问题极可能出在内存布局上,而不是代码逻辑上。于是我们正式把排查方向转向链接脚本。 第2章 数据采集 为了定位问题,我们先做了一轮系统性的数据采集。第一步是查看编译输出生成的符号表(map 文件),把各个段落的起始地址、大小、以及变量在内存中的具体位置全部列出来。我们注意到,加入查找表数组后,某些变量的地址发生了明显变化,而有的变量地址则与新数组发生了重叠。 第二步是在现场复现异常,并在 HardFault 中断里抓取故障现场。通过调试器读取栈指针和关键寄存器,我们发现程序跑飞时的访问地址落在了一段看似"合法"的区域内,但这段区域实际上已经被其他数据占用。这说明问题不是非法地址访问,而是地址重叠导致的相互覆盖。 第三步是测量实际的堆和栈使用情况。我们通过向堆栈填充特征字节,然后运行一段时间再检查,发现栈的增长已经突破了预留的栈区边界,溢出的数据写入了相邻的堆区或全局数据区。
部分文件列表
| 文件名 | 大小 |
| 链接脚本内存布局的落地验收检查表.docx | 40K |
相关下载
- 大唐杯仿真平台使用方法介绍
- PCB做板阻抗要求计算.xls
- PCB转Gerber方法.doc
- USB3.0-ALTERA-DDR2开发板入门指南.pdf
- EZ-USB FX3 I2C Boot Option.pdf
- EZ-USB FX3 Hardware Design Guidelines.pdf
- CYPRESS USB3.0 FX3 DEBUG仿真设置——Eslips...
- CYUSB3KIT-001 FX3 DVK Schematic PDF 硬件原...
- CYUSB3KIT-001 FX3 DVK Schematic CADENCE 设...
- Altera_cyclone III -DDR2-USB3.0开发板CADEN...
最新上传
-
yahuang001 打赏3.00元 3天前
-
yahuang001 打赏1.00元 3天前
-
zhongshaoxiong 打赏3.00元 3天前
-
他山之石可攻玉 打赏60.00元 3天前
用户:烟雨
-
江岚 打赏210.00元 3天前
用户:潇潇江南
-
江岚 打赏100.00元 3天前
-
21ic下载 打赏310.00元 3天前
用户:gsy幸运
-
21ic下载 打赏310.00元 3天前
用户:zhengdai
-
21ic下载 打赏310.00元 3天前
用户:江岚
-
21ic下载 打赏210.00元 3天前
用户:潇潇江南
-
21ic下载 打赏60.00元 3天前
用户:他山之石可攻玉
-
21ic下载 打赏60.00元 3天前
用户:烟雨
-
21ic下载 打赏60.00元 3天前
用户:w178191520
-
21ic下载 打赏60.00元 3天前
用户:w993263495
-
21ic下载 打赏110.00元 3天前
用户:xzxbybd
-
21ic下载 打赏60.00元 3天前
用户:zq_1943
-
21ic下载 打赏20.00元 3天前
用户:kk1957135547
-
21ic下载 打赏20.00元 3天前
用户:sun2152
-
21ic下载 打赏20.00元 3天前
用户:铁蛋锅
-
21ic下载 打赏20.00元 3天前
用户:xuzhen1
-
21ic下载 打赏20.00元 3天前
用户:w1966891335
-
21ic下载 打赏35.00元 3天前
用户:有理想666
-
21ic下载 打赏15.00元 3天前
用户:nuaanuaa111
-
21ic下载 打赏20.00元 3天前
用户:liqiang9090
-
21ic下载 打赏15.00元 3天前
用户:ningmengge
-
21ic下载 打赏10.00元 3天前
用户:mulanhk
-
21ic下载 打赏5.00元 3天前
用户:asys
-
21ic下载 打赏10.00元 3天前
用户:舞蹈荀彧
-
21ic小能手 打赏5.00元 3天前
资料:磁编码器开源方案
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
江岚 打赏20.00元 3天前
-
江岚 打赏50.00元 3天前
-
江岚 打赏20.00元 3天前
-
江岚 打赏10.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏8.00元 3天前
-
21ic小能手 打赏8.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏3.00元 3天前




全部评论(0)