📄 程序示例-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 + -