尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Keil中如何检查代码空间是否超限,.lds/.sct文件的核心作用?
Keil中如何检查代码空间是否超限由.lds/.sct文件来实现。一、.lds/.sct文件的核心作用1、定义Falsh、ram空间边界在链接脚本中需明确指定Flash的起始地址ORIGIN和容量LENGTHMEMORY { LR_IROM1 (rwx) : ORIGIN SRAM_BASE_ADDR, LENGTH BOOT_VECTOR_AREA_SZ LR_IROM2 (rwx) : ORIGIN SRAM_BASE_ADDR BOOT_VECTOR_AREA_SZ, LENGTH PATCH_TABLE_AREA_SZ LR_IROM3 (rwx) : ORIGIN CODE_AREA_BASE, LENGTH CODE_AREA_SIZE LR_RETAINED_RAM0 (rw) : ORIGIN RET_MEM_BASE_ADDR, LENGTH RET_MEM_SIZE /* After this theres only BLE Exchange Memory, externally defined by the __SCT_BLE_BASE address and with custom zeroing code in arch_rom.c */ /* Free area to be used by the application (free areas are zero initialized after reset) */ #if (CFG_MAX_TX_PACKET_LENGTH 27) LR_FREE_AREA_AT_TX_CNTL_BUFFER (rwx) : ORIGIN FREE_AREA_AT_TX_CNTL_BUFFER_BASE_ADDR, LENGTH FREE_AREA_AT_TX_CNTL_BUFFER_SIZE LR_FREE_AREA_AT_TX_ADV_1_BUFFER (rwx) : ORIGIN FREE_AREA_AT_TX_ADV_1_BUFFER_BASE_ADDR, LENGTH FREE_AREA_AT_TX_ADV_1_BUFFER_SIZE LR_FREE_AREA_AT_TX_ADV_2_BUFFER (rwx) : ORIGIN FREE_AREA_AT_TX_ADV_2_BUFFER_BASE_ADDR, LENGTH FREE_AREA_AT_TX_ADV_2_BUFFER_SIZE LR_FREE_AREA_AT_TX_ADV_3_BUFFER (rwx) : ORIGIN FREE_AREA_AT_TX_ADV_3_BUFFER_BASE_ADDR, LENGTH FREE_AREA_AT_TX_ADV_3_BUFFER_SIZE #endif LR_FREE_AREA (rwx) : ORIGIN FREE_AREA_BASE_ADDR, LENGTH FREE_AREA_SIZE /* Fixed area used by TRNG */ LR_RETAINED_TRNG_STATE (rw) : ORIGIN TRNG_STATE_BASE_ADDR, LENGTH RET_DATA_UNINIT_TRNG_STATE_SIZE /* Fixed area used by CHACHA20 */ LR_RETAINED_CHACHA_STATE (rw) : ORIGIN CHACHA_STATE_BASE_ADDR, LENGTH RET_DATA_UNINIT_CHACHA_STATE_SIZE }如LR_IROM3 (rwx) : ORIGIN CODE_AREA_BASE, LENGTH CODE_AREA_SIZE这里限制了code存放起始地址和结束地址。当链接分配时间检查到超限则立即报错。这里可以建议大家使用Keil5_disp_size_bar等工具编译后自动显示Flash/RAM占用百分比直观识别超限风险。2、控制段的地址分配通过SECTIONS指令将代码段.text、常量.rodata等映射到Flash区域ER_IROM3 CODE_AREA_BASE CODE_AREA_SIZE { *(InRoot$$Sections) ; All library sections that must be in a ; root region, for example, __main.o, ; __scatter*.o, __dc*.o, and * Region$$Table startup_Telink_TL3218.o (RO) *(system_Telink_TL3218) .ANY(RO) .ANY(RW) }二、配合编译结果验证实际占用仅靠.lds文件无法直接显示占用大小必须结合以下输出信息1、 编译报告中的关键指标Keil编译完成后输出Program Size: Code29864, RO-data123592, RW-data60, ZI-data3900Flash占用公式Code RO-data RW-data单位字节。例如29864 123592 60 153516 Bytes ≈ 150KB若Flash定义为128KB则超限。2、.map文件分析在工程目录的Listings文件夹中查看.map文件搜索Execution Region ROM或自定义Flash区域名检查各段地址范围是否在LENGTH范围内[[3]4。重点关注Section Cross References部分列出所有段的大小及地址。总结.lds文件通过硬件地址约束为Code超限提供基础防护但需结合编译输出、.map文件分析及工具验证才能完整覆盖存储溢出的检测需求。开发中建议始终保持.lds中的LENGTH与芯片实际Flash一致Disclaimer / 免责声明:本文仅代表作者在撰写和修改时的个人观点不代表当前或未来立场。文中观点和内容未经学术机构或标准组织验证作者不对其准确性、完整性或可靠性作任何保证。请读者仅供参考并自行核实相关信息。本文旨在探索与经验分享因篇幅及作者水平所限难免存在疏漏欢迎批评指正。如有问题或交流建议请联系flourishinggardenoutlook.com。copyright / 版权声明:本文为作者原创。引用或转载需注明“转自或引用自 flourishinggardenoutlook.com”。 未经注明来源的擅自使用、抄袭或传播行为均被禁止。
RELATED

相关推荐

画师约稿平台:自由职业服务交易闭环的工程实现

画师约稿平台:自由职业服务交易闭环的工程实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/6 13:53:28
从零跑通 Reflex 项目:初始化到部署的完整实战指南

从零跑通 Reflex 项目:初始化到部署的完整实战指南

从零跑通 Reflex 项目:初始化到部署的完整实战指南 【免费下载链接】reflex 🕸️ Web apps in pure Python 🐍 项目地址: https://gitcode.com/GitHub_Trending/re/reflex Reflex(reflex)是一个用纯 Python 编写…

📅 2026/10/28 18:46:01
3步把ESP32变成AI语音助手:xiaozhi-esp32上手指南

3步把ESP32变成AI语音助手:xiaozhi-esp32上手指南

3步把ESP32变成AI语音助手:xiaozhi-esp32上手指南 【免费下载链接】xiaozhi-esp32 An MCP-based chatbot | 一个基于MCP的聊天机器人 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 面包板通电,对着麦克风喊一声"你好小…

📅 2026/9/20 22:38:43
MORE NEWS

更多资讯

📰

Python+MySQL图书馆管理系统实战:Tkinter GUI与数据库安全联动

简介:这是一套基于Python与MySQL开发的图形化界面图书馆管理系统实战项目,面向Python初学者、数据库入门学习者及课程设计学生,解决传统图书管理效率低、操作不直观等实际问题。资源包共13个文件,含6个核心Python源码(…

📰

BP神经网络电力负荷预测:MATLAB实现全流程与避坑指南

简介:基于BP神经网络的电力负荷预测完整方案,系统讲解利用历史负荷数据预测未来电力需求的方法,面向电力系统调度与规划人员、电气类专业学生,以及希望掌握神经网络建模的开发者。资源共8个文件,压缩包约410KB&#xf…

📰

倾转旋翼机悬停仿真代码拆解:MATLAB/Simulink配平、线性化与避坑指南

简介:这份资源面向倾转旋翼机飞行动力学与控制方向的初学者及研究人员,聚焦悬停状态下的仿真建模与代码实现,帮助读者理解旋翼气动、动力系统与飞行控制之间的耦合关系。压缩包共7个文件,约59KB,以MATLAB脚本&#xff…

📰

Python+PyQt5+MySQL酒店管理系统课设源码与避坑指南

简介:这是一套面向高校数据库课程设计场景的酒店管理系统完整项目,采用Python结合PyQt5与MySQL实现,适合正在准备课设或想练习GUI编程与数据库应用开发的学生参考。项目围绕酒店住宿、餐饮与娱乐服务管理展开,涵盖员工管理、客房管…

📰

小区网络规划论文写作:拓扑选型、LAN接入与IP规划

简介:围绕智能化小区网络规划展开的毕业设计文档,面向通信、网络工程及计算机相关专业学生与小区组网方案初学者,可用于课程设计、毕业设计选题参考及宽带接入方案梳理。内容从智能化小区系统组成与基本功能切入,依次讨论宽带网络…

📰

PDFMathTranslate 从零部署:完整保留排版的 PDF 全文翻译服务实战

PDFMathTranslate 从零部署:完整保留排版的 PDF 全文翻译服务实战 【免费下载链接】PDFMathTranslate [EMNLP 2025 Demo] PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/O…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬