天嵌 ARM开发社区

 找回密码
 注册
查看: 2900|回复: 1

请教ld脚本中涉及的lma(加载地址)有什么作用?特别是在嵌入式应用中有什么作用

[复制链接]
lofeng 发表于 2009-8-17 09:53:48 | 显示全部楼层 |阅读模式
vma比较好理解,是程序运行地址,如果程序运行时的地址不是连接时指定的vma,则会出错
这个在PC应用和嵌入式应用中相同,都是在执行程序时,将相应的段拷贝至内存中的相应位置

lma就不是很好理解了,他的全称是 load memory address,这里的load是什么含义呢?刚开始以为这个load指的是将程序拷贝到内存中这个过程,但是仔细想想又不是很对,从其他的描述来看lma跟生成image有关。ld手册中有如下描述:
This feature is designed to make it easy to build a ROM image.
但是既然是生成image时用到,那为什么要叫load呢?而在生成image时,完全可以通过默认的设置来使生产的image中一个段紧接着一个段,为什么还需要设置lma呢?这点还请大虾指教~~
对于PC端lma得作用,不是明了,这个也请大虾指教~~
在嵌入式应用程序中(我说的是裸奔),基本上都是通过 objcopy 生成最后的bin文件(这里都是一个段紧接着一个段,而不管你有没有设置lma,也不管你lma是怎么设置的),然后将bin文件烧到 flash里面,bin文件的大小只跟实际程序的大小有关,而跟lma无关。所以,我觉得在这里lma没有任何的作用。个人猜测,不知可对,还请指教~~
先行谢过~~
TQ_guoxixiao 发表于 2012-5-12 16:00:01 | 显示全部楼层
:)                                   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-16 19:23 , Processed in 2.045996 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表