|
做前面几个实验时,碰到几个问题,实在搞不明白,尤其是实验三存储器映射部分,感觉好困惑。问题如下:
1.实验二:
leg_blink.s文件,如果我将最后一句"B loop"注释掉,生成的bin固化至flash,蜂鸣器会响,这是什么原因???
2.能不能这样说:只要程序用c语言编写,那么一定要有bootloader,因为涉及到函数参数入栈出栈等问题???
3.实验三:
1) startup.s中RomEndAddr EQU &20 语句中&表示什么意思???
2) ldr r0,=0x03FF5000和ldr r0,#0x03ff5000有什么区别?
3) 存储器重映射没看懂,另外,为什么要进行重映射?
4)
RemapMemory
; ++++++++++++++++++++++++++++++++
ldr r1, =0x0002030 ; show led = 1110
ldr r0, =0x03FF5008
str r1, [r0]
; ++++++++++++++++++++++++++++++++
adr r0, RemapMemPara
ldmia r0, {r1-r11}
ldr r0, =ROMCON0
stmia r0, {r1-r11}
...
上述四句话应该是保存r1-r11吧,可是这与存储器空间映射有什么关系呢?
4.实验三:
RemapMemPara
DCD &12040060
DCD &10842060
DCD &10842060
DCD &10842060
DCD &10842060
DCD &10842060
DCD &10000398
DCD &10040398
DCD &10040398
DCD &10040398
DCD &ce2983fd
这些内存单元的值为什么是这样?有什么依据要这样设置?
5.实验三:
ldr lr, GotoMain
b RemapMemory
GBLS MainEntry
MainEntry SETS "main"
IMPORT $MainEntry
GotoMain DCD $MainEntry
其中ldr lr,GotoMain语句是将GotoMain这个字内存单元地址赋给lr呢还是将GotoMain字内存单元中的值即$MainEntry赋给lr?
呵呵,不好意思,一口气问了这么多问题!
谢了先! |
|