?? 程序示例-flash rom.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0049)http://drew.nease.net/mypage/example/flashrom.htm -->
<HTML><HEAD><TITLE>程序示例-Flash ROM</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY background="程序示例-Flash ROM.files/background.gif">
<P>>><BIG><BIG><A name=returntop></A></BIG><A
href="http://drew.nease.net/">Drew的主頁</A></BIG>----><BIG><BIG><A
name=returntop></A></BIG><A
href="http://drew.nease.net/mypage/sourcecode.htm">程序示例</A></BIG>---->Flash
ROM </P>
<DIV align=center>
<CENTER>
<TABLE borderColor=#88deea height=23 cellSpacing=1 borderColorDark=#88deea
width=754 bgColor=#ffffff borderColorLight=#88deea
background="程序示例-Flash ROM.files/bg1.gif" border=1>
<TBODY>
<TR>
<TD align=middle width=83 height=1>
<P align=center><A href="http://drew.nease.net/"><BIG>主頁</BIG></A></P></TD>
<TD align=middle width=83 height=1>
<P align=center><A href="http://drew.nease.net/mypage/VxWorks.htm"><FONT
lang=ZH-CN face=System>VxWorks</FONT></A></P></TD>
<TD align=middle width=84 height=1>
<P align=center><A href="http://drew.nease.net/processor/arm.htm"><FONT
lang=ZH-CN face=System>ARM</FONT></A></P></TD>
<TD align=middle width=84 height=1>
<P align=center><A href="http://drew.nease.net/processor/mpc860.htm"><FONT
lang=ZH-CN face=System>PowerPC</FONT></A></P></TD>
<TD align=middle width=84 height=1>
<P align=center><A href="http://drew.nease.net/mypage/driver.htm"><FONT
lang=ZH-CN face=System>硬件驅動</FONT></A></P></TD>
<TD align=middle width=84 height=1>
<P align=center><A href="http://drew.nease.net/mypage/network.htm"><FONT
lang=ZH-CN face=System>網絡協議</FONT></A></P></TD>
<TD align=middle width=84 height=1>
<P align=center><A
href="http://drew.nease.net/mypage/sourcecode.htm"><FONT lang=ZH-CN
face=System>程序示例</FONT></A></P></TD>
<TD align=middle width=84 height=1><A href="http://www.embhelp.com/bbs"
target=_blank><FONT face=System color=#8000ff>技術論壇</FONT></A></TD>
<TD align=middle width=84 height=1>
<P align=center><A href="http://www.embhelp.com/download"><FONT lang=ZH-CN
face=System>下載</FONT></A></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P align=center> </P>
<P align=center><FONT color=#0000ff><BIG><BIG><BIG>Flash
ROM驅動示例</BIG></BIG></BIG></FONT></P>
<P align=center> </P>
<P align=left><BIG><BIG><STRONG>Intel Flash芯片</STRONG></BIG></BIG>
<STRONG>i28f160,i28f320:</STRONG></P>
<BLOCKQUOTE>
<BLOCKQUOTE>
<P> </P></BLOCKQUOTE>
<P><STRONG>i28F320B: 64*64K,64個blocks,4M空間,每個block
64K,第一個64K由8個8*8K小blocks組成.</STRONG></P>
<BLOCKQUOTE>
<P>每個Black可以被獨立擦寫(壽命周期) 100,000次以上</P>
<P><STRONG>Flash操作的大概步驟:</STRONG></P></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE>
<P>flash讀寫操作中,讀應該很簡單,和RAM一樣,寫就復雜一點.
<BR>Intel TE28F320C3的flash是4M空間
<BR>flash空間,劃分成許多的block,Intel TE28F320C3的flash是4M空間,64個block,每個block由64K.
<BR>要對所有的block單獨進行操作, 每個操作結束,都需要判斷狀態,
<BR>每個block操作的大概步驟如下: <BR>1.unlock <BR>2.erase
<BR>3.check empty <BR>所有的block完成上述操作,且狀態正確,才能進行下一步,寫
<BR>4.write </P></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
<P><STRONG>ARM匯編程序 </STRONG></P></BLOCKQUOTE>
<BLOCKQUOTE>
<P> LDR r2, =FlashBase
<STRONG>;Flash起始地址</STRONG><BR><BR><STRONG>//第一步,UNLOCK的64個block,步驟和上邊一樣
</STRONG></P>
<P><STRONG><BR></STRONG>
MOV r1,#63
<STRONG>;63x64k block 計數</STRONG> </P>
<P><BR>01 LDRB
r3, =X16_FLASH_COMMAND_CONFIG_SETUP </P>
<P> STRB
r3, [r2]
<STRONG>;該block的首地址 </STRONG> </P>
<P>
LDRB r3, =X16_FLASH_COMMAND_UNLOCK_BLOCK
</P>
<P> STRB
r3, [r2]
<STRONG> ;將Unlock命令寫入
</STRONG><BR><BR> ADD
r2, r2, #0x10000
<STRONG>
;64K</STRONG><BR> SUBS
r1, r1, #1
<BR> BNE %b01
<BR>;Unlock OK
<STRONG> ;Unlock 完成</STRONG> <BR></P>
<P><STRONG>//第二布,擦除blocks</STRONG></P>
<P> LDR
r0,
=FlashBase<BR> LDR
r1,=63
<STRONG>;擦除 63x64k block</STRONG><BR>01
LDR r3,
=X16_FLASH_COMMAND_ERASE<BR>
LDR r2, =X16_FLASH_COMMAND_CONFIRM
<BR> ORR
r3, r3, r2, LSL
#16<BR> STR
r3,
[r0]<BR>
LDR r3,
=X16_FLASH_COMMAND_STATUS <STRONG>;檢查寄存器狀態</STRONG><BR>
STRB r3, [r0]<BR>02
LDRB r3, [r0]
<STRONG>;讀狀態</STRONG><BR> TST
r3, #X16_FLASH_STATUS_READY
<BR> BEQ
%b02
<STRONG>;若狀態ready,執行下一個</STRONG>
<BR> TST
r3, #X16_FLASH_STATUS_ERROR<BR>
BNE
error_erase_block<BR> ADD
r0, r0,
#0x10000<BR>
SUBS r1, r1,
#1<BR> BNE
%b01<BR> B
EraseOK<BR>error_erase_block<BR>..............<BR>;EraseOK
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -