初学Arm2410引导程序的几个问题,请大家帮我解答一下下面的几个问题,十分感谢!
有的问题可能说的不是很清楚,也可能比较幼稚,请大家指正,我再重新发上来!
1、BIT_SELFREFRESH EQU (1<<22)
请问其中BIT_SELFREFRESH定义的是什么常量? (1<<22)是什么意思?
2、IMPOR |Image$$RO$$Base|
IMPOR 是引用外部的标号 |Image$$RO$$Base| 什么意思呢?
3、 ASSERT :DEF:ENTRY_BUS_WIDTH
ASSERT 是报告错误,可这句话这么写什么意思呢?
4、ChangeBigEndian
;@0x24
[ ENTRY_BUS_WIDTH=32
DCD 0xee110f10 ;0xee110f10 => mrc p15,0,r0,c1,c0,0
DCD 0xe3800080 ;0xe3800080 => orr r0,r0,#0x80; //Big-endian
DCD 0xee010f10 ;0xee010f10 => mcr p15,0,r0,c1,c0,0
]
我看书上说 DCD 的语法格式为
标号 DCD 表达式 可上面一段程序是什么意思呢?
5、ORR R0,R0,#(7<<17)
请问上面 什么意思呢? 尤其是#(7<<17)
6、SBUS R1,R1,#1
BNE %B0
上面一段程序是判别 运算结果 等于零 就跳转到 %B0 ?这样理解对么? %B0 是什么意思?%是分配一
段连续的地址,B0是什么呢??
万分感谢!
有的问题可能说的不是很清楚,也可能比较幼稚,请大家指正,我再重新发上来!
1、BIT_SELFREFRESH EQU (1<<22)
请问其中BIT_SELFREFRESH定义的是什么常量? (1<<22)是什么意思?
2、IMPOR |Image$$RO$$Base|
IMPOR 是引用外部的标号 |Image$$RO$$Base| 什么意思呢?
3、 ASSERT :DEF:ENTRY_BUS_WIDTH
ASSERT 是报告错误,可这句话这么写什么意思呢?
4、ChangeBigEndian
;@0x24
[ ENTRY_BUS_WIDTH=32
DCD 0xee110f10 ;0xee110f10 => mrc p15,0,r0,c1,c0,0
DCD 0xe3800080 ;0xe3800080 => orr r0,r0,#0x80; //Big-endian
DCD 0xee010f10 ;0xee010f10 => mcr p15,0,r0,c1,c0,0
]
我看书上说 DCD 的语法格式为
标号 DCD 表达式 可上面一段程序是什么意思呢?
5、ORR R0,R0,#(7<<17)
请问上面 什么意思呢? 尤其是#(7<<17)
6、SBUS R1,R1,#1
BNE %B0
上面一段程序是判别 运算结果 等于零 就跳转到 %B0 ?这样理解对么? %B0 是什么意思?%是分配一
段连续的地址,B0是什么呢??
万分感谢!
答
1:
自己顶下别沉了 ,麻烦大家帮我看看!
答
2:
请指点一下,谢谢各位大虾 麻烦帮忙指点一下 十分感谢
答
3:
抛砖引玉我来回答几个简单的,抛砖引玉
1<<22 是一个常数, 是不是学C语言的时候最后几章没学好?"<<"是左移运算符,所以 1<<22 == 10000000000000000000000b
7<<17 == 0111b 左移17位,自己移动吧,呵呵
DCD :我的理解是类似51汇编里的 DB 和 DW ,在代码段里定义一些常量表什么的
其他就不会了
呵呵
1<<22 是一个常数, 是不是学C语言的时候最后几章没学好?"<<"是左移运算符,所以 1<<22 == 10000000000000000000000b
7<<17 == 0111b 左移17位,自己移动吧,呵呵
DCD :我的理解是类似51汇编里的 DB 和 DW ,在代码段里定义一些常量表什么的
其他就不会了
呵呵
答
4:
我也来答两个问题|Image$$RO$$Base|:RO段起始地址,这个值是通过编译器的设定来确定的 RO-Base
BNE %B0:跳转到向后的0标识位置处
BNE %B0:跳转到向后的0标识位置处
答
5:
to liyuanhua跳转到向后的0标识位置处?可否详细点,谢谢
答
6:
re:icyacht在你的汇编程序里,是不是有0,1(这里的0,1是代表程序地址的一个标识符,跟我们自己给子程序起的名字一样的作用) 这些标识符存在? 在这里%B 代表向后查找,%F代表向前查找的意思。
答
7:
回复主题:请教几个2410引导程序里面的 汇编语法问题ASSERT :DEF:ENTRY_BUS_WIDTH
确认是否有定义ENTRY_BUS_WIDTH
DCD 0xee110f10 ;0xee110f10 => mrc p15,0,r0,c1,c0,0
DCD 0xe3800080 ;0xe3800080 => orr r0,r0,#0x80; //Big-endian
DCD 0xee010f10 ;0xee010f10 => mcr p15,0,r0,c1,c0,0
这个我也有疑问,有问过。DCD后的数据应该是程序的指令代码。
BIT_SELFREFRESH
呵~~,这个可以看看2410的PDF,这是关于SDRAM的。
确认是否有定义ENTRY_BUS_WIDTH
DCD 0xee110f10 ;0xee110f10 => mrc p15,0,r0,c1,c0,0
DCD 0xe3800080 ;0xe3800080 => orr r0,r0,#0x80; //Big-endian
DCD 0xee010f10 ;0xee010f10 => mcr p15,0,r0,c1,c0,0
这个我也有疑问,有问过。DCD后的数据应该是程序的指令代码。
BIT_SELFREFRESH
呵~~,这个可以看看2410的PDF,这是关于SDRAM的。