📄 程序示例-arm boot.htm
字号:
<BR></P></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE>
<P align=left> LDR
r0, = 0xff
<STRONG>;DRAM刷新率refresh
rate,设置要适当,否则数据丢失</STRONG><BR> STR
r0, [r11,
#0x200]<BR><BR> LDR
r13, =0xc0020000
<STRONG>;设置堆栈 Stack, r13
为ARM定义的堆栈指针</STRONG><BR>;Init OK<BR>
LDR r0, =receiving_msg
<BR> BL
printmsg<BR><BR> BL
dram_test
<STRONG>;跳转指令,执行测试DRAM</STRONG><BR><BR>
LDR r0,
=startloader_cmdmsg<BR> BL
printmsg<BR><BR> BL
Beep<BR><BR> LDR
r0, =0x60005
<STRONG>;设置波特率 38400, 8位</STRONG><BR>
LDR r11,
=0x80000000<BR> STR
r0, [r11, #0x4c0]
<STRONG>;初始化串口 UART</STRONG><BR>;Receive
data and save it to buffer
<STRONG>;开始接收数据</STRONG><BR> LDR
r12, =SaveAddr
;First 8
bytes are start address and length<BR>;Receive
address<BR> LDR
r5, =0x4
;Read first 4 bytes<BR> MOV
r0,
#0<BR>rx_loop1<BR> LDR
r1, [r11, #0x140]
<STRONG>;检查系统状态寄存器System Status Register
1</STRONG><BR> TST
r1, #0x00400000
<STRONG>;UART1 Rx
是否为空</STRONG><BR> BNE
rx_loop1
<STRONG>;等待数据 Wait data</STRONG><BR>
LDR r1, [r11, #0x480]
<STRONG>;读数据 Read
data</STRONG><BR> AND
r1, r1,
#0xff<BR> ORR
r0, r1, r0, ROR
#8<BR> SUBS r5, r5,
#1<BR> BNE
rx_loop1<BR> MOV
r0, r0, ROR
#8<BR><BR> STR
r0,
[r12]<BR> ADD
r12, r12, #4<BR><BR>;Receive
count<BR> LDR
r12,
=Count<BR> LDR
r5, =0x4
;Read second 4 bytes<BR> MOV
r0,
#0<BR>rx_loop2<BR> LDR
r1, [r11, #0x140]
<STRONG>;检查系统状态寄存器System Status Register
1</STRONG><BR> TST
r1, #0x00400000
<STRONG>;UART1 Rx
是否为空</STRONG><BR> BNE
rx_loop2
<STRONG>;等待数据 Wait data</STRONG><BR>
LDR r1, [r11, #0x480]
<STRONG>;读数据 Read
data</STRONG><BR> AND
r1, r1,
#0xff<BR> ORR
r0, r1, r0, ROR
#8<BR> SUBS r5, r5,
#1<BR> BNE
rx_loop2<BR> MOV
r0, r0, ROR
#8<BR><BR> STR
r0,
[r12]<BR> MOV
r6, r0
;Save the count to r6<BR><BR>;Receive
data<BR> MOV
r5,
r0<BR> MOV
r9,
#0<BR> LDR
r10,
=BufferBase<BR> MOV
r12,
#0<BR>rx_loop3<BR> LDR
r1, [r11, #0x140]
;System Status Register
1<BR> TST
r1, #0x00400000
;UART1 Rx
Empty<BR> BNE
rx_loop3
;Wait data<BR> LDR
r1, [r11, #0x480]
;Read
data<BR> AND
r1, r1,
#0xff<BR> STRB r1,
[r10, r12]<BR> ADD
r12, r12, #1<BR></P>
<P align=left>nextbyte
<STRONG>;读下一个字节</STRONG><BR>
SUBS r5, r5, #1<BR>
BNE rx_loop3<BR>;Receive data OK
<STRONG>;数据接收完毕</STRONG><BR><BR> MOV
r1,
#0x31<BR> BL
send_char<BR> MOV
r1,
#0x0d<BR> BL
send_char<BR> MOV
r1,
#0x0a<BR> BL
send_char<BR><BR>;Save it to Flash
ROM
<STRONG>把数据写入Flash ROM</STRONG></P>
<P align=left> <STRONG>写入Flash参见<A
href="http://drew.nease.net/mypage/example/flashrom.htm"><FONT
lang=ZH-CN><BIG>Flash ROM驱动</BIG></FONT></A><FONT lang=ZH-CN face=System>
部分</FONT></STRONG></P>
<P align=left> </P>
<P align=left> </P></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -