s3c6410裸机程序开发?

我想请教一个问题
是s3c6410的第一个led程序
_start:
// 把外设的基地址告诉CPU
ldr r0, =0x70000000 //对于6410来说,内存(0x00000000~0x60000000),外设(0x70000000-0x7fffffff)
orr r0, r0, #0x13 //外设大小:256M
mcr p15,0,r0,c15,c2,4 //把r0的值(包括了外设基地址+外设大小)告诉cpu

请问orr r0 , r0 , 0x13这行代码怎么理解?
为什么是256M?

因为你的开发板是256M内存,你前一句已经注释了说外设为(0x7000 0000-0x7fff ffff),外设大小是0x0fff ffff换算下来就是256M。
把它换算一下,0x0fff ffff(Byte) = 268435455(Byte)=268435455/1024(kByte)=268435455/1024/1024(MByte)=256(MByte);
也可换算成二进制为从0000 0000 0000 0000 0000 0000 0000 到1111 1111 1111 1111 1111 1111 1111,可以表示的内存为二的二十八次方,即256M个内存单元。又因为内存按字节编址,即每个内存单元1Byte(8Bit),故256M * 8Bit;

这个是把R0与0x13或并把结果赋给R0,orr 是逻辑或指令。这句的意思是设置R0的0,1位为1其他位保留,就是将r0 与立即数13(0x10011)取或的意思,实际上就是将r0的倒数一、二、五位取1,其他位不变。你可以理解为这个代码执行后,r0 = 0x7000 0013;你也可以将这两句改写成
ldr r0, =0x70000013 //-Base Addres : 0x70000000, Size : 256 MB (0x13)

好的,谢谢你的回复,之前在写arm的裸机汇编程序,当时不太懂为什么,现在已经懂了

0x13为什么就是256M,请帮忙解释一下,不胜感激