当前位置: 首页 > news >正文

.text 段的内存和.rodata的内存区别

结论

物理存储上:都存放在 Flash,地址连续、同一块物理存储芯片,硬件无分区隔离;逻辑 / 访问权限 / CPU 机制上:完全分开,用途、保护、加载规则不同

一、物理层面(硬件 Flash)

  1. 同一片 Flash 存储颗粒.text(Code)+.rodata(常量字符串 /const)+.data初始化副本 全部烧录在同一块 Flash,物理介质没有隔断,只是链接脚本分配了不同地址区间。
  2. 读操作硬件通路完全一样CPU 通过 Flash 控制器读取指令、读取常量数据,走同一套读取总线;Flash 硬件本身不区分这段存的是代码还是字符串。
  3. 擦写特性一致Flash 只能整块擦除、按页编程,不会区分.text.rodata区域。

简单说:硬件看不出两者区别,只是链接器人为划分地址区间

二、逻辑、访问、权限上的本质区别(重点)

1. .text 段(程序代码)

存放:函数汇编指令、中断函数、运算逻辑

  1. CPU 访问方式:取指操作 I-FetchCPU PC 指针指向该区域,读取机器码执行;
  2. 访问权限:只读,禁止数据写访问多数单片机 MPU / 存储器保护单元会配置:.text 区域只允许指令读取,禁止普通数据读写;如果代码里指针强行修改 .text 地址,直接触发内存访问异常 HardFault;
  3. 内容:二进制机器指令,不能被代码当成普通数据遍历修改。

2. .rodata 段(只读常量)

存放:字符串字面量、const全局常量、只读查找表

  1. CPU 访问方式:数据读取 D-Fetch用普通指针、数组下标读取,不是 PC 取指令;
  2. 访问权限:同样只读,但权限属性是「只读数据区」;MPU 配置为允许数据读,不允许写,不允许当成指令执行;如果跳转到 rodata 地址当作函数执行,会取到乱码数据当指令,直接死机;
  3. 用途:纯数据,没有可执行指令。

三、举个直观例子

c

运行

const char log_str[] = "val=%d\n"; // 存在 .rodata void cal_coulometer(uint32_t vbat)// 函数指令存在 .text { unsigned int val=100; LOG(log_str,val); }
  1. CPU 运行 cal_coulometer:PC 指针去.text拿指令执行;
  2. 打印时读取字符串:D 总线去.rodata拿字符串字节;两块物理上挨在一起在 Flash,但 CPU 硬件层面区分「指令总线」「数据总线」访问。

四、补充两个容易混淆的点

  1. 会不会放到不同 Flash 分区?不会,普通 MCU 单块 Flash,链接脚本只是划分虚拟地址;只有带多块独立 Flash 芯片的高端芯片才会物理分开。
  2. 和 RAM 对比区分.text/.rodata 全程在 Flash,运行时不拷贝到 RAM;RW-data/ZI (.bss) 是运行时拷贝 / 清零到 RAM,物理介质完全不同。

总结

  • 物理硬件:无区别,同一块 Flash,同一套读写电路;
  • 逻辑 / CPU 总线 / 权限:有严格区分,一个是指令区,一个是只读数据区,不能混用
http://www.gsyq.cn/news/1605819.html

相关文章:

  • 2026年一键生成论文工具推荐
  • 跳出论文熬夜怪圈:okbiye 一站式 AI 毕业论文写作
  • 行为型模式:对象之间的默契配合
  • Selenium脚本性能优化实战:从等待策略到并行执行
  • Manim实现动态交点计算--从一个动点问题说起
  • 用 AI 一句话查 A 股数据,免费替代 Tushare(附完整教程)
  • 黄金短期有震荡筑底倾向
  • 数字隔离器与光耦合器:筑牢舞台表演机器人运行核心基石
  • 独立开发者如何使用 CSGClaw 管理复杂开发任务
  • 双向依赖同步机制
  • 2026最新智慧园区公司挑选攻略 帮你选出靠谱适配的合作服务商
  • 家庭防水验收标准:宝师傅分享验收要点
  • AIAgent
  • 扬州清宸康养180道菜不重样?真相究竟是怎样,快来一探究竟!
  • ModelEngine QA对生成技术:如何实现60%留用率的高质量训练数据
  • 好用的检测机DD马达哪家靠谱
  • GaussDB(DWS)数据仓库性能压测与调优实战:从0到1全记录
  • 【从0到1构建一个ClaudeAg _
  • 为什么建议中小企业优先考虑开源ERP
  • AI编码代理实战:从网站克隆到Next.js项目生成的工程化指南
  • AI 赋能接口自动化测试系列(一):接口文档智能解析Agent Skill推荐
  • OpenMontage:本地化AI视频全链路制作工具部署与实战指南
  • 计算机毕业设计之基于深度学习的花卉分类检测系统的设计与实现
  • 基于PANDAS的QAbstractTableModel实现高级TableView详细解析(九、在TableView实现多重表头)
  • 2026算力避坑实测!主流GPU租赁平台稳定性深度评测,告别宕机与算力虚标
  • Paxos算法:如何解决分布式系统中的共识问题
  • 民意调查真伪辨别!四招看懂靠谱民调标准
  • 快消品新零售商城小程序开发
  • 全球AI可见性基础建设:从“信息发布”到“AI记忆持续性”的重构
  • gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级