?? 程序示例-flash rom.htm
字號:
<STRONG>;擦除完成</STRONG></P>
<P><STRONG>//第三步,檢查flash是否為空</STRONG></P>
<P>;Check Flash Empty<BR> LDR
r4,
=FlashBase<BR> LDR
r5, =0x100000
<STRONG>;檢查
1MB</STRONG><BR> LDR
r0,
=0xffffffff<BR>loop_1<BR> LDR
r1,
[r4]<BR> CMP
r1, r0
<STRONG>;比較地址內(nèi)容和0xffffffff</STRONG><BR>
BNE
empty_error<BR> ADD
r4, r4,
#4<BR> CMP
r4,
r5<BR> BLO
loop_1<BR> B
CheckOK<BR>empty_error<BR>.................<BR>CheckOK<BR>.................</P>
<P>;Check empty OK
<STRONG>;檢查完成</STRONG> </P>
<P><STRONG>//第四步,寫flash</STRONG></P>
<P>;Burn data to Flash ROM<BR><BR>
LDR r6,
=Length_Flash
<STRONG>;定義數(shù)據(jù)長度</STRONG><BR> LDR
r0,
=FlashBase<BR> LDR
r1,
=BufferBase<BR> MOV
r9,
#0<BR> LDR
r4,=0x10000000<BR> LDR
r7,=0xc0001000<BR> STR
r4,
[r7]<BR> LDR
r1, [r1,
r9]<BR><BR>03 LDR r3,
=X16_FLASH_COMMAND_WRITE<BR>
STRB r3, [r0]
<STRONG>;把寫命令放入Block首地址</STRONG> <BR>
LDR r3, =X16_FLASH_COMMAND_STATUS
<BR> LDR
r2, [r7]
<BR> LDR
r5,
=0x0000ffff
<BR> AND
r2, r2,
r5<BR> ORR
r2, r2, r3, LSL
#16<BR> STR
r2, [r0]
<BR>02 LDR
r3, [r0]
<STRONG>;讀狀態(tài)寄存器狀態(tài)</STRONG><BR> TST
r3,
#X16_FLASH_STATUS_READY
<BR> BEQ
%b02
<STRONG>;若狀態(tài)ready,執(zhí)行下一個</STRONG><BR><BR>
LDR r3,
=X16_FLASH_COMMAND_WRITE<BR> LDR
r2, [r7]
<BR> LDR
r5, =0xffff0000
;<BR> AND
r2, r2,
r5<BR> ORR
r3, r3,
r2<BR> STR
r3,
[r0]<BR><BR>
LDR r3,
=X16_FLASH_COMMAND_STATUS<BR>
STRB r3, [r0]
<BR>02 LDR r3,
[r0]
; read status<BR> TST
r3,
#X16_FLASH_STATUS_READY<BR>
BEQ
%b02<BR><BR>
LDR r4,
=X16_FLASH_COMMAND_READ<BR>
STRB r4,
[r0]<BR> ADD
r0, r0,
#4<BR> LDR
r8,
[r7]<BR> ADD
r8,
r8,#1<BR> STR
r8,
[r7]<BR> ADD
r8, r8,
#4<BR>writenext<BR><BR>
SUBS r6, r6, #4
;if no finished goto
03<BR> BHI
%b03<BR>
TST r3,
#X16_FLASH_STATUS_ERROR<BR>
BNE
error_write<BR>
LDR r3,
=X16_FLASH_COMMAND_READ<BR>
STRB r3,
[r0]<BR> B
BurnOK<BR>error_write<BR>
..........<BR>BurnOK</P></BLOCKQUOTE></BLOCKQUOTE>
<P> </P></BODY></HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -