小女子再提一个问题:

[复制链接]
5424|22
 楼主| 新手forARM 发表于 2007-9-21 16:50 | 显示全部楼层 |阅读模式
IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$EXSRAM$$Base|&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;ROM&nbsp;code&nbsp;(=start&nbsp;of&nbsp;ROM&nbsp;data)<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$EXSRAM$$Length|&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;ROM&nbsp;code&nbsp;(=start&nbsp;of&nbsp;ROM&nbsp;data)<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Load$$EXSRAM$$Base|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;of&nbsp;RAM&nbsp;to&nbsp;initialise<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$EXSRAM$$ZI$$Base|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;and&nbsp;limit&nbsp;of&nbsp;area<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$EXSRAM$$ZI$$Limit|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;to&nbsp;zero&nbsp;initialise<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$INTERSRAM$$Base|<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$INTERSRAM$$Length|<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Load$$INTERSRAM$$Base|<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$INTERSRAM$$ZI$$Base|<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$INTERSRAM$$ZI$$Limit|<br /><br />关于以上的语法真是让人弄不懂!感到头痛!搞不清楚东南西北中!<br />像|Image$$INTERSRAM$$ZI$$Limit|这样的语法具体用法是怎么样的?<br />在哪些资料里面可以找到说明?<br />谢谢!<br /><br /><br /><br /><br /><br /><br />
 楼主| 新手forARM 发表于 2007-9-21 16:53 | 显示全部楼层

阿南哥、wangkj等前辈麻烦给俺指点一下!

阿南哥、wangkj等前辈麻烦给俺指点一下!
wangkj 发表于 2007-9-21 16:58 | 显示全部楼层

我不懂啊,我几乎不怎么看这些细节

尤其是汇编。最多看看内核的启动代码。<br />像你写的这些东西00肯定能答出来,找他呀。
high 发表于 2007-9-21 17:07 | 显示全部楼层

也许编译器手册会有

import引入一些symble/变量/函数.类似c语言的extern关键字.<br /><br />后面很奇怪的东西因为这些symble/变量/函数不是用户程序提供的,是编译链接器提供的.<br /><br />我想你应该去看编译器手册.<br /><br />
dld2 发表于 2007-9-21 18:23 | 显示全部楼层

这是连接器自动生成的符号

《ARM体系结构与编程》的连接器部分。
bairg521 发表于 2007-9-21 19:19 | 显示全部楼层

网上有不少44b0启动代码的详细注释,你可以参考一下

当然,《ARM体系结构与编程》里也有介绍
阿南 发表于 2007-9-21 19:49 | 显示全部楼层

它是链接器生成的,相当于一个由链接器初始化好的变量,

或理解成常量.您可以参考44box或2410的具体启动代码去理解.如:<br />IMPORT&nbsp;&nbsp;|Image$$RO$$Base|&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;of&nbsp;ROM&nbsp;code<br />IMPORT&nbsp;&nbsp;|Image$$RO$$Limit|&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;ROM&nbsp;code&nbsp;(=start&nbsp;of&nbsp;ROM&nbsp;data)<br />IMPORT&nbsp;&nbsp;|Image$$RW$$Base|&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;of&nbsp;RAM&nbsp;to&nbsp;initialise<br />IMPORT&nbsp;&nbsp;|Image$$ZI$$Base|&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;and&nbsp;limit&nbsp;of&nbsp;area<br />IMPORT&nbsp;&nbsp;|Image$$ZI$$Limit|&nbsp;&nbsp;;&nbsp;to&nbsp;zero&nbsp;initialise<br /><br />第一个就是ADS设置的RO&nbsp;BASE值,即目标代码的起始地址,第二个是它的结束地址,如果在ADS里设置了RW&nbsp;BASE,那么第三个就是该值了,如果没设置,链接器就让RW区的数据定位在RO数据的后面,所以也就等于RO&nbsp;Limit值.第四个ZI&nbsp;BASE是等于RW&nbsp;Limit的,因为ZI区域是紧接在RW数据后面的.这些值都是链接器产生的<br /><br />RO数据也就是通常单片机所讲的程序代码,RW就是变量,如占用RAM里的内容,ZI就是初始化为0的数据变量.
 楼主| 新手forARM 发表于 2007-9-21 21:25 | 显示全部楼层

这段代码的意思基本上能理解!

这段代码的意思基本上能理解!RO、RW、ZI段的具体作用和含义也能基本能弄懂。俺只是想进一步深入的了解一下里面的语法结构!<br /><br />比如:IMPORT&nbsp;&nbsp;|Image$$RO$$Base|<br />1、IMPORT是汇编语言的伪操作,这个没有问题;<br />2、两个竖线是怎么个用法?&nbsp;<br />3、Image&nbsp;&nbsp;、$$、Base等关键詞的具体用法?在哪里的资料有说明?<br /><br />
阿南 发表于 2007-9-21 21:28 | 显示全部楼层

呵呵,不知道当年初学时有没有找过,也忘了

您可以在ADS的技术手册,帮助文档等搜,找到了,通报下,让我们大伙也补补基础
walnutcy 发表于 2007-9-21 22:27 | 显示全部楼层

在编译器的那几本手册里有讲的,前几天还看到过,呵呵

  
wowow 发表于 2007-9-21 22:28 | 显示全部楼层

有些东西可以暂时忽略过去

如果你用c的话这些东西都基本都被编译器掩盖了。只要弄一个合适的初绍化文件,再弄清楚分散加载之类的,后面都是c语言的工作了。
biao.l 发表于 2007-9-21 22:52 | 显示全部楼层

还没有考虑其语法问题啊,知道为什么就算了,唉,没有探索精

  
shang21ic 发表于 2007-9-22 00:23 | 显示全部楼层

建议大家用keil 或者 iar

ads太不好用了
 楼主| 新手forARM 发表于 2007-9-22 09:05 | 显示全部楼层

keil没有用过,IAR对小程序好用!大程序很容易死机!

keil没有用过,IAR对小程序好用!大程序很容易死机!<br />另外,个人认为嵌入式是以C为主,但是汇编语言对底层、硬件操作是必须的!<br />所以个人认为汇编一定要掌握!
 楼主| 新手forARM 发表于 2007-9-22 09:22 | 显示全部楼层

TO walnutcy

TO&nbsp;walnutcy&nbsp;<br />谢谢!<br />另外,谢谢各位的支持!
xieqin 发表于 2007-9-22 09:23 | 显示全部楼层

最好别用有IDE的开发工具

要想深入领会编译链接,&nbsp;最好的方法还是用makefile.<br /><br />把ADS或keil所带的编译器armasm,armcc,...armlink及lib,inc都拷贝出来.<br />通过makefile去管理整个工程的编译.<br /><br />一键编译的感觉是很爽的.&nbsp;甚至是一键编译+下载+调试.&nbsp;<br />
dld2 发表于 2007-9-22 09:26 | 显示全部楼层

生成符号表,可以看到程序数据的定位各段的大小

在ADS的设置中:<br />linker-&gtARM&nbsp;Linker-&gtListings中:<br />勾选Image&nbsp;map和Symbols。再输入一个文件名。<br />在程序链接后可以生成一个符号表。可以看到程序和数据的定位,以及各个段的大小、位置。<br />可以用来调试。<br />
 楼主| 新手forARM 发表于 2007-9-22 09:53 | 显示全部楼层

这是连接器自动生成的符号?

这是连接器自动生成的符号?<br />这段代码是在源程序里面的啊?<br />我有点晕了!
dld2 发表于 2007-9-22 10:13 | 显示全部楼层

《ARM体系机构与编程》的11.3节

  
 楼主| 新手forARM 发表于 2007-9-22 10:23 | 显示全部楼层

是不是可以这样去理解?

是不是可以这样去理解?<br />|Image$$RO$$Base|&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;of&nbsp;ROM&nbsp;code<br />|Image$$RO$$Limit|&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;ROM&nbsp;code&nbsp;(=start&nbsp;of&nbsp;ROM&nbsp;data)<br />|Image$$RW$$Base|&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;of&nbsp;RAM&nbsp;to&nbsp;initialise<br />|Image$$ZI$$Base|&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;and&nbsp;limit&nbsp;of&nbsp;area<br />|Image$$ZI$$Limit|&nbsp;&nbsp;;&nbsp;to&nbsp;zero&nbsp;initialise<br />这些链接信息是在编译的时候由编译器产生的,其实这些信息就相当于我们在程序里面所定义的变量,而我们只需用IMPORTP这样的汇编伪操作去做一下声明,然后在下面就可以用了?<br /><br />如:以下是IMPORT声明<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$EXSRAM$$Base|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;ROM&nbsp;<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$EXSRAM$$Length|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;ROM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Load$$EXSRAM$$Base|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;of&nbsp;RAM&nbsp;to&nbsp;initialise<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$EXSRAM$$ZI$$Base|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;and&nbsp;limit&nbsp;of&nbsp;area<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$EXSRAM$$ZI$$Limit|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;to&nbsp;zero&nbsp;initialise<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$INTERSRAM$$Base|<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$INTERSRAM$$Length|<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Load$$INTERSRAM$$Base|<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$INTERSRAM$$ZI$$Base|<br />IMPORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Image$$INTERSRAM$$ZI$$Limit|<br /><br />以下是应用:<br />ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=|Load$$INTERSRAM$$Base|&nbsp;;&nbsp;Get&nbsp;pointer&nbsp;to&nbsp;ROM&nbsp;data<br />ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;=|Image$$INTERSRAM$$Base|&nbsp;&nbsp;;&nbsp;and&nbsp;RAM&nbsp;copy<br />ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r4,&nbsp;=|Image$$INTERSRAM$$Length|&nbsp;&nbsp;;&nbsp;and&nbsp;RAM&nbsp;copy<br />ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;=|Image$$INTERSRAM$$ZI$$Base|&nbsp;&nbsp;;&nbsp;Zero&nbsp;init&nbsp;base&nbsp;=&gt&nbsp;top&nbsp;of&nbsp;initialised&nbsp;data<br /><br />能不能这样去理解?3s!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

37

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部