OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5052|回复: 0

mini2440启动代码分析之第四篇(入口程序分析)

[复制链接]

79

主题

395

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1765
金钱
1765
注册时间
2015-9-21
在线时间
544 小时
发表于 2021-11-24 18:00:38 | 显示全部楼层 |阅读模式
从这里开始就是真正的代码入口了!

接上篇代码:
AREA  Init,CODE,READONLY      ;声明一个名为Init的代码段,只读
           ENTRY                             ;程序的入口点,(调试用)
          ;ENTRY只是定义一个普通的入口点,且在程序中可以多处定义,如果要使用它作为整
个映像文件的唯一入口点,还需要设置链接器中的相关选项。
           EXPORT __ENTRY            ;导出符号_ENTRY
__ENTRY
ResetEntry                                     ;复位后的入口
;ASSERT 是断言伪指令,语法是:ASSERT +逻辑表达式
;DEF是逻辑伪操作符,格式为:EF:label,作用是判断label是否定义过
;下面的四句指令能且只能执行一句,并且前三句若执行跳转后处理程序的最后一句也是b ResetHandler
;" [ " 相当于 if ," | "相当于else ," ] " 相当于endif
ASSERT EF:ENDIAN_CHANGE ;判断ENDIAN_CHANGE 是否已定义
       [ ENDIAN_CHANGE                ;如果已经定义了ENDIAN_CHANGE,则判断,here is FALSE
              ASSERT  EF:ENTRY_BUS_WIDTH    ;判断ENTRY_BUS_WIDTH 是否已定义
              [ ENTRY_BUS_WIDTH=32      ;如果已经定义了ENTRY_BUS_WIDTH,则判断是不是为32
                     b     ChangeBigEndian       ;DCD 0xea000007
              [ ENTRY_BUS_WIDTH=16
                     andeq      r14,r7,r0,lsl #20   ;DCD 0x0007ea00
              [ ENTRY_BUS_WIDTH=8
                     streq       r0,[r0,-r10,ror #1] ;DCD 0x070000ea
              |
              b     ResetHandler                      ;位异常,开发板上电或复位时进入0x00
分析上面一段:大端模式下,地址为A 的字单元包括字节单元A,A+1,A+2,A+3,字节单元由高位到低位为A,A+1,A+2,A+3 ;地址为A 的字单元包括半字单元A,A+2,半字单元由高位到低位为A,A+2
所以在这块字节单元A:ea,字节单元A+1:00,字节单元A+2:00,字节单元A+3:07。 b    ChangeBigEndian    这条指令对应的是大端模式,相应的机器码为:0xea000007  ,低地址对应高字节,andeq   r14,r7,r0,lsl #20 这条指令也是大端模式下,16位的半字重新放置机器码,由于总线不一样,取机器码的顺序不一样(具体我也不清楚,源代码上面 The code byte order should be changed as the memory bus width.)先取低位后取高位,低位为A+2字节单元里的值,高位为A字节单元里的值,即为0x0007ea00。
streq    r0,[r0,-r10,ror #1]这条指令同样,8位的字节,先低后高,0x070000ea
不好意思,上面讲得这段我还没太弄懂具体怎么回事......以后更新理解.....


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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