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

理解 VMA 与 LMA

文章目录

  • 理解 VMA 与 LMA
    • 什么是 VMA(Virtual Memory Address)
    • 什么是 LMA(Load Memory Address)
    • VMA 和 LMA 的区别
    • 变量示例
    • 链接脚本配置
    • 启动代码如何处理 VMA 和 LMA
    • VMA 和 LMA 示例
      • FLASH+RAM
      • 全 RAM
    • 如何生成 VMA 和 LMA 信息

理解 VMA 与 LMA

在嵌入式开发或裸机程序中,经常会听到 VMALMA 这两个词。链接脚本(*.ld 文件)和启动代码(startup.S)中这两个地址概念对准确配置 .text、.data、.bss 等段的布局至关重要。

什么是 VMA(Virtual Memory Address)

VMA(虚拟地址 / 运行地址)是程序在运行时访问内存的地址。

  • 程序访问变量、执行代码时看到的是 VMA。
  • 比如在程序中访问 int a = 5;,实际用的就是 VMA。

在裸机嵌入式系统中,VMA 通常是实际的物理地址(因为没有 MMU),但在操作系统中它可能映射到物理地址。

什么是 LMA(Load Memory Address)

LMA(加载地址)是程序在镜像文件中所保存的位置,通常是数据从 Flash 或 ROM 加载时的位置。

  • 镜像文件(如 ELF、BIN、HEX)中每个段都有它的 LMA。
  • 系统上电启动时,一般 start.s 或者 bootloader 中会将 LMA 中的数据拷贝到 VMA。

http://www.dtcms.com/a/286894.html

相关文章:

  • 【实战】Dify从0到100进阶--文档解读(8)文档列表节点
  • 深入剖析 Delta Live Tables (DLT):声明式数据管道的核心原理与底层实现
  • git:tag标签远程管理
  • 公贝固定资产管理系统对接HR、财务及采购系统的方案与效益
  • 【实用工具】HDCleaner:高效、安全、免费的系统清洁工具,免费的电脑清理垃圾神器,20秒扫出20G垃圾!
  • LP-MSPM0G3507学习--05中断及管脚中断
  • 习题4.1 输出3个人的顺序
  • APIs案例及知识点串讲(下)
  • NFS读写性能评估与优化指南(上)
  • Android性能优化之电量优化
  • C 语言字符大小写互转:tolower / toupper 详解与实战
  • MySQL使用any_value()函数解决only_full_group_by报错
  • IT 和OT指的什么?
  • 短视频矩阵的时代结束了吗?
  • 智能点餐推荐网站,解决选择困难
  • Linux基础IO通关秘籍:从文件描述符到重定向
  • 使用wrk对api接口进行性能测试
  • 机器视觉基础(直播回放)
  • git从本地仓库添加到远程仓库
  • 人工智能day9——模块化编程概念(模块、包、导入)及常见系统模块总结和第三方模块管理
  • MinIO 分布式文件系统
  • 阿里云ubuntu建一个简单网页+公网访问+域名访问
  • android14截屏
  • 短视频矩阵系统:从源头到开发的全面解析
  • 电源PCB设计的热管理攻坚战:从散热瓶颈到高功率密度突破
  • 3.0 - 指针-序列化
  • 傅里叶积分法求解偏微分方程
  • 第七章 愿景09 海波龙的坑
  • 【Python练习】048. 编写一个函数,实现简单的命令行接口,接受用户输入并响应
  • springCloud -- 微服务01