3871|7

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

有段ARM汇编代码不理解,请高手指点. [复制链接]

             IMPORT      |Image$$RO$$Limit|
             IMPORT      |Image$$RW$$Base|
             IMPORT      |Image$$ZI$$Base|
             IMPORT      |Image$$ZI$$Limit|

在开发板上写C代码时,要先ARM汇编程序初始化,然后才可以执行C代码.
可是我对初始化代码不是很理解,请高手详细解释一下.
上面只是其中的一部分.下面是完整的.
IMPORT      |Image$$RO$$Limit|
             IMPORT      |Image$$RW$$Base|
             IMPORT      |Image$$ZI$$Base|
             IMPORT      |Image$$ZI$$Limit|
            
            
             IMPORT      main
            
             AREA        Start,CODE,READONLY
             ENTRY
             CODE32
            
Reset        LDR         SP,=0x40003F00
             LDR         R0,=|Image$$RO$$Limit|
             LDR         R1,=|Image$$RW$$Base|
             LDR         R3,=|Image$$ZI$$Base|
            
             CMP         R0,R1
             BEQ         LOOP1

LOOP0        CMP         R1,R3
             LDRCC       R2,[R0],#4
             STRCC       R2,[R1],#4
             BCC         LOOP0
         
LOOP1        LDR         R1,= |Image$$ZI$$Limit|
             MOV         R2,#0
            
LOOP2        CMP         R3,R1
             STRCC       R2,[R3],#4
            
             BCC         LOOP2
            
             B           main
            
             END
此帖出自ARM技术论坛

最新回复

感觉应该是加载各个段,应该还有初使化各个模式下的堆栈的代码吧  详情 回复 发表于 2008-2-13 10:42
点赞 关注
 

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个就是定义ARM的代码段,数据段,等等...
此帖出自ARM技术论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
把器件初始化一样 呵呵

此帖出自ARM技术论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
http://topic.eeworld.net/u/20071130/13/78494c14-78b8-40b9-a535-b83bb5c247c3.html

楼主搞歧视啊,上面的帖子给0分,这里给20分。

此帖出自ARM技术论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
刚好,我刚刚做过
上面一段代码是不使用分散加载文件时初始化C语言环境的代码
作用是初始化需要初始化的数据,把数据从Rom拷贝到Ram中(如果固化),清零需要0初始化的Ram,提供一个可以运行C语言的环境
如果使用分散加载文件的话,这段代码将被__main完成
                              IMPORT             ?Image$$RO$$Limit ?
                          IMPORT             ?Image$$RW$$Base ?
                          IMPORT             ?Image$$ZI$$Base ?
                          IMPORT             ?Image$$ZI$$Limit ?
                          __main
它们都是由编译器生成的代码或者标号;
此帖出自ARM技术论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
编译器根据你的代码,在代码段,数据段开始和结束点的标识
此帖出自ARM技术论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

7
 
BIN文件里面RW段是跟着RO段存放的,ZI段跟着RW段存放.

这里是将BIN里面RW段的数据(已初始化全局变量)搬到RAM中指定的地方(RW BASE).
然后把RAM中ZI段(未初始化或初始化为0的全局变量)位置全部清零.
此帖出自ARM技术论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 
感觉应该是加载各个段,应该还有初使化各个模式下的堆栈的代码吧
此帖出自ARM技术论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表