第09章Flash存储器在线编程_第1页
第09章Flash存储器在线编程_第2页
第09章Flash存储器在线编程_第3页
第09章Flash存储器在线编程_第4页
第09章Flash存储器在线编程_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第9 9章章 FlashFlash存储器在线编程存储器在线编程主要内容主要内容v9.1 Flash9.1 Flash存储器概述存储器概述v9.2 AW609.2 AW60的的FlashFlash存储器编程方法存储器编程方法v9.3 AW609.3 AW60的的FlashFlash在线编程在线编程C C语言实例语言实例v9.4 S08 Flash9.4 S08 Flash存储器的保护特性和安全性存储器的保护特性和安全性9.1 Flash9.1 Flash存储器概述存储器概述9.1.1 Flash9.1.1 Flash存储器的基本特点与编程模式存储器的基本特点与编程模式 FlashFlash存储

2、器的基本特点存储器的基本特点l 固有不挥发性固有不挥发性l 易更新性易更新性l 成本低、密度高、可靠性好成本低、密度高、可靠性好 FlashFlash存储器的编程模式存储器的编程模式 从从FlashFlash存储器的基本特点可以看出,在单片机中,可以利存储器的基本特点可以看出,在单片机中,可以利用用FlashFlash存储器固化程序,一般情况下通过编程器来完成,存储器固化程序,一般情况下通过编程器来完成,FlashFlash存储器工作于这种情况,叫监控模式存储器工作于这种情况,叫监控模式(Monitor Mode)(Monitor Mode)或或写入器模式,这与一般的写入器模式,这与一般的EP

3、ROMEPROM、OTPOTP、EEPROMEEPROM装入程序的含义装入程序的含义相似。另一方面,由于相似。另一方面,由于FlashFlash存储器具有电可擦除功能,因此,存储器具有电可擦除功能,因此,在程序运行过程中,有可能对在程序运行过程中,有可能对FlashFlash存储区的数据或程序进行存储区的数据或程序进行更新,更新,FlashFlash存储器工作于这种情况,叫用户模式存储器工作于这种情况,叫用户模式(User Mode)(User Mode)或在线编程模式或在线编程模式9.1.2 S089.1.2 S08系列系列MCUMCU的的FlashFlash存储器存储器 Freescale

4、 Freescale公司在公司在FlashFlash存储器技术相当成熟之后才推出了片存储器技术相当成熟之后才推出了片内带有内带有FlashFlash存储器的存储器的8 8位位MCUMCU,在应用的方便性和可靠性等方面,在应用的方便性和可靠性等方面有其独到的特点:有其独到的特点: 编程速度快且可靠性高编程速度快且可靠性高 S08S08系列系列MCUMCU的片内的片内FlashFlash存储器的整体擦除时间可以控制在存储器的整体擦除时间可以控制在5ms5ms以以内,对单字节的编程(写入)时间也在内,对单字节的编程(写入)时间也在40ns40ns以内。片内以内。片内FlashFlash存储器存储器的

5、存储数据可以保持的存储数据可以保持1010年以上,可擦写次数均在年以上,可擦写次数均在1 1万次以上万次以上 单一电源电压供电单一电源电压供电 S08S08系列系列MCUMCU通过在片内集成的电荷泵,可由单一工作电压在片内通过在片内集成的电荷泵,可由单一工作电压在片内产生出编程电压,这样就实现了单一电源供电的在线编程电压,而不产生出编程电压,这样就实现了单一电源供电的在线编程电压,而不需要为需要为FlashFlash的编程增加额外的编程电压模块,同时也使的编程增加额外的编程电压模块,同时也使S08S08系列系列MCUMCU兼具了两种编程模式兼具了两种编程模式 支持在线编程支持在线编程 S08S

6、08系列系列MCUMCU的片内的片内FlashFlash存储器支持在线编程,允许存储器支持在线编程,允许MCUMCU内部运行内部运行的程序去改写的程序去改写FlashFlash存储器的内容,这样就可以代替外部电可擦除存存储器的内容,这样就可以代替外部电可擦除存储芯片,从而减少了外围部件,增加了嵌入式系统开发的方便性储芯片,从而减少了外围部件,增加了嵌入式系统开发的方便性9.2 AW609.2 AW60的的FlashFlash存储器编程方法存储器编程方法9.2.1 Flash9.2.1 Flash存储器编程的基本概念存储器编程的基本概念 FlashFlash编程的基本操作有两种:编程的基本操作有

7、两种: 擦除(擦除(EraseErase):将存储单元的内容由二进制的):将存储单元的内容由二进制的0 0变成变成1 1 写入(写入(ProgramProgram):将存储单元的内容由二进制的):将存储单元的内容由二进制的1 1变成变成0 0 擦除操作包括整体擦除和页擦除。而写入操作是以字为单位擦除操作包括整体擦除和页擦除。而写入操作是以字为单位进行的。在擦除及写入过程中一般需要高于电源的电压。进行的。在擦除及写入过程中一般需要高于电源的电压。FlashFlash存储器在片内是以页存储器在片内是以页(Page)(Page)和行和行(Row)(Row)为单位组织的,为单位组织的,页的大小始终为行

8、的两倍。对页的大小始终为行的两倍。对FlashFlash存储器的擦除操作可以存储器的擦除操作可以进行整体擦除也可以仅擦除某一起始地址开始的一页进行整体擦除也可以仅擦除某一起始地址开始的一页(512(512字字节节) )9.2.2 Flash9.2.2 Flash存储器的编程寄存器存储器的编程寄存器 FlashFlash时钟分频寄存器时钟分频寄存器 FCDIV (Flash Clock Divider RegisterFLCR)FCDIV (Flash Clock Divider RegisterFLCR)的地址是的地址是 $1820$1820l D7DIVLDD7DIVLD为分频设置状态标志位

9、为分频设置状态标志位(Divisor Loaded Status (Divisor Loaded Status Flag)Flag),DIVLDDIVLD为只读位为只读位l D6PRDIV8D6PRDIV8为为FlashFlash预分频设置位预分频设置位(Prescale Flash Clock by 8)(Prescale Flash Clock by 8)l D5 D5D0DIV5D0DIV5DIV0DIV0为为FlashFlash时钟分频器的分频因子。时钟分频器的分频因子。 FlashFlash的内部工作时钟的内部工作时钟 f fFCLKFCLK的计算方法如下:的计算方法如下: 如果如果

10、PRDIV8=0PRDIV8=0,f fFCLKFCLK=f=fbusbus(DIV5:DIV0+1)(DIV5:DIV0+1) 如果如果PRDIV8=1PRDIV8=1,f fFCLKFCLK=f=fbusbus(8(8DIV5:DIV0+1)DIV5:DIV0+1)数据数据位位D7D6D5D4D3D2D1D0定义定义DIVLDDPRDIV8DIV5DIV4DIV3DIV2DIV1DIV0复位复位00000000在对在对FlashFlash进行编程操作时,进行编程操作时,FlashFlash的内部工作时钟必须降到的内部工作时钟必须降到150KHz150KHz200KHz200KHz,擦,擦/

11、 /写操作的脉冲是写操作的脉冲是FlashFlash的内部工作时钟的一个时钟周期,所以的内部工作时钟的一个时钟周期,所以擦擦/ /写的时间相应地在写的时间相应地在6.76.7s s5 5s s。下表出了对。下表出了对FCDIVFCDIV寄存器设置不同的数寄存器设置不同的数值时对值时对FlashFlash擦写操作的影响擦写操作的影响fBusPRDIV8DIV5:DIV0fFCLK擦写的时擦写的时钟脉冲钟脉冲20MHz112192.3KHz5.2s10MHz049200KHz5s8MHz039200KHz5s4MHz019200KHz5s2MHz09200KHz5s1MHz04200KHz5s20

12、0KHz00200KHz5s150KHz00150KHz6.7s FlashFlash选项寄存器选项寄存器 FlashFlash选项寄存器选项寄存器(Flash Options RegisterFOPT(Flash Options RegisterFOPT和和NVOPT)NVOPT)。MCUMCU复复位时,位时,FlashFlash中的非易失性的中的非易失性的NVOPTNVOPT值被赋给值被赋给FOPTFOPT寄存器,寄存器,FOPTFOPT可以读,可以读,但写操作是无效的。要改变但写操作是无效的。要改变FOPTFOPT寄存器的值,需要对寄存器的值,需要对FlashFlash中中NVOPTNV

13、OPT位位擦除并重新写入新的数值。擦除并重新写入新的数值。FOPTFOPT的地址是的地址是$1821$1821l D7KEYEND7KEYEN为后门锁机构允许位为后门锁机构允许位(Backdoor Key Mechanism Enable)(Backdoor Key Mechanism Enable)l D6FNOREDD6FNORED为矢量重定向禁止位为矢量重定向禁止位(Vector Redirection Disable)(Vector Redirection Disable)l D1D1D0D0位位SEC01SEC01SEC00SEC00为安全状态码为安全状态码数据位数据位D7D6D5D

14、4D3D2D1D0定义定义KEYENFNORED未定未定义义未定未定义义未定未定义义未定未定义义SEC01SEC00复位复位将将NVOPTNVOPT中的内容装载到该寄存器中的内容装载到该寄存器中中 FlashFlash配置寄存器配置寄存器 FCNFG(Flash Configure RegisterFCNFG)FCNFG(Flash Configure RegisterFCNFG)的地址是的地址是$1823$1823l D5KEYACCD5KEYACC为写访问钥匙允许位为写访问钥匙允许位(Enable Writing of Access (Enable Writing of Access Ke

15、y)Key)。KEYACC=1KEYACC=1时,表示写时,表示写BVBACKKEY($FFB0-$FFB7)BVBACKKEY($FFB0-$FFB7)被认为是进被认为是进行密码比较;行密码比较;KEYACC=0KEYACC=0时,表示写时,表示写BVBACKKEY($FFB0-$FFB7)BVBACKKEY($FFB0-$FFB7)被解被解释为释为FlashFlash擦写命令的开始擦写命令的开始数据数据位位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0定义定义未定未定义义未定未定义义KEYACKEYACC C未定未定义义未定未定义义未定未定义义未定未定义义未定未定义义复位

16、复位0 00 00 00 00 00 00 00 0 FlashFlash保护寄存器保护寄存器 FlashFlash保护寄存器保护寄存器(Flash Protect RegisterFPROT(Flash Protect RegisterFPROT和和NVPROT)NVPROT)的地的地址是址是$1824$1824l D7D7D1FPS6D1FPS6FPS0FPS0为为FlashFlash保护区域设置。保护区域设置。FPDIS=0FPDIS=0时,这时,这7 7位决位决定了未保护区域的结束地址定了未保护区域的结束地址l D0FPDISD0FPDIS为为FlashFlash保护设置位保护设置位(

17、Flash Protection Disable)(Flash Protection Disable)。FPDIS=1FPDIS=1时,时,FlashFlash不进行保护;不进行保护;FPDIS=0FPDIS=0时,时,FlashFlash保护保护FPS6FPS6:FPS0FPS0所设置的区域所设置的区域 数据数据位位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0定义定义FPS6FPS6FPS5FPS5FPS4FPS4FPS3FPS3FPS2FPS2FPS1FPS1FPS0FPS0FPDIFPDIS S复位复位将将NVPROTNVPROT中的内容装载到该寄存器中的内容装载到该

18、寄存器中中 FlashFlash状态寄存器状态寄存器 FSTAT(Flash Status RegisterFSTAT)FSTAT(Flash Status RegisterFSTAT)的地址是的地址是$1825$1825l D7FCBEFD7FCBEF为为FlashFlash命令缓冲区空标志位命令缓冲区空标志位(Flash Command Buffer (Flash Command Buffer Empty Flag)Empty Flag)l D6FCCFD6FCCF为为FlashFlash命令完成标志位命令完成标志位(Flash Command Complete Flag)(Flash C

19、ommand Complete Flag)l D5FPVIOD5FPVIO为侵害保护标志位为侵害保护标志位(Protection Violation Flag)(Protection Violation Flag)l D4FACCERD4FACCER为访问出错标志位为访问出错标志位(Access Error Flag)(Access Error Flag)l D2FBLANKD2FBLANK为为FlashFlash空白标志位空白标志位(Flash Verified All Blank Flag)(Flash Verified All Blank Flag)数据数据位位D7D7D6D6D5D5D

20、4D4D3D3D2D2D1D1D0D0定义定义FCBEFCBEF FFCCFFCCFFPVIFPVIO OFACCFACCERER未定未定义义FBLAFBLANKNK位位未定未定义义未定未定义义复位复位1 11 10 00 00 00 00 00 0 FlashFlash命令寄存器命令寄存器 FCMD(Flash Command RegisterFCMD)FCMD(Flash Command RegisterFCMD)的地址是的地址是$1826$1826l D7D7D0D0对对FlashFlash进行访问的命令字节。表进行访问的命令字节。表9-29-2列出了对列出了对FlashFlash访问访

21、问的命令字节的命令字节数据数据位位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0定义定义FCMD7FCMD7FCMD6FCMD6FCMD5FCMD5FCMD4FCMD4FCMD3FCMD3FCMD2FCMD2位位FCMD1FCMD1FCMD0FCMD0复位复位0 00 00 00 00 00 00 00 09.2.3 Flash9.2.3 Flash存储器的编程过程存储器的编程过程 FlashFlash命令的执行步骤命令的执行步骤l向向FlashFlash地址中写入一个数据地址中写入一个数据l向向FlashFlash命令寄存器命令寄存器FCMDFCMD中写入需要执行的命令中写

22、入需要执行的命令l执行命令执行命令 FlashFlash命令的执行流程命令的执行流程 看下面的看下面的 两个流程图两个流程图 AW60 Flash AW60 Flash编程例程图编程例程图AW60 FlashAW60 Flash批量写入流程图批量写入流程图 FlashFlash命令出错的状况命令出错的状况 在执行以下操作时,会导致出错,在执行以下操作时,会导致出错,FACCERRFACCERR自动置自动置1 1l 在向在向FlashFlash地址写入信息前没有进行地址写入信息前没有进行FCDIVFCDIV寄存器设置寄存器设置l 在向在向FlashFlash地址写入信息前地址写入信息前FCBEF

23、FCBEF没有置没有置1 1l 在执行命令前,执行两次向在执行命令前,执行两次向FlashFlash地址写入信息操作地址写入信息操作l 在向在向FlashFlash地址写入信息后,设置除地址写入信息后,设置除FCMDFCMD外的其他外的其他FlashFlash控制寄存器控制寄存器l 向向FCMDFCMD中写入表中写入表9-29-2以外的命令字以外的命令字l 向向FCMDFCMD中写入命令字后,试图读写除中写入命令字后,试图读写除FSTATFSTAT外的寄存器外的寄存器l 在执行命令时,在执行命令时,MCUMCU进入进入STOPSTOP模式模式l MCUMCU处于保密状态时,使用背景调试接口进行

24、页擦除或写处于保密状态时,使用背景调试接口进行页擦除或写FlashFlash操作操作l 向向FCBEFFCBEF位写位写0 0取消一个命令的执行取消一个命令的执行9.3 AW609.3 AW60的的FlashFlash在线编程在线编程C C语言实例语言实例9.3.1 Flash9.3.1 Flash存储器的擦除及写入存储器的擦除及写入C C语言子程序语言子程序 由于由于AW60AW60内部的监控内部的监控ROMROM中没有固化中没有固化FlashFlash编程子程序,要在运行中能对编程子程序,要在运行中能对 FlashFlash进行在线编程,初始装入的用户程序,必须包含对进行在线编程,初始装入

25、的用户程序,必须包含对FlashFlash的擦除及的擦除及写入子程序写入子程序 擦除和写入流程的一些公共操作擦除和写入流程的一些公共操作 擦除和写入操作的代码必须放在内存中执行编译完后对应机器码字节保擦除和写入操作的代码必须放在内存中执行编译完后对应机器码字节保存到下表中的存到下表中的volatile unsigned char PGM57volatile unsigned char PGM57的数组中。这样实际使的数组中。这样实际使用时就无需进写入子程序行内存的拷贝,就可以实现擦除写入操作用时就无需进写入子程序行内存的拷贝,就可以实现擦除写入操作 页擦除子程序页擦除子程序Flash_Page

26、EraseFlash_PageErase 首先根据页号计算出页首地址,然后将首先根据页号计算出页首地址,然后将FlashFlash执行命令更改为擦除命令执行命令更改为擦除命令0 x400 x40,调用并执行擦除代码,调用并执行擦除代码 写入程序写入程序 首先根据页号和页内偏移计算出写入首地址,然后将首先根据页号和页内偏移计算出写入首地址,然后将FlashFlash执行命令更改执行命令更改为擦除命令为擦除命令0 x200 x20,逐个字节进行写入直至完成,逐个字节进行写入直至完成 擦除与写入子程序编程要点说明擦除与写入子程序编程要点说明l RAMRAM中有中有5757字节的空间存放擦出写入机器码

27、,使用内存时不要忘记字节的空间存放擦出写入机器码,使用内存时不要忘记计算计算l 一次擦除后未被写入过的区域可以再次调用写入子程序写入,但写一次擦除后未被写入过的区域可以再次调用写入子程序写入,但写入过的区域,未经擦除不能重写入过的区域,未经擦除不能重写l 由于擦除是每次擦除一页(由于擦除是每次擦除一页(512512字节),所以数据应合理安排,避字节),所以数据应合理安排,避免误擦免误擦l 页首地址的定义须遵照保护寄存器页首地址的定义须遵照保护寄存器FPROTFPROT定义的规则定义的规则l 对对FPROTFPROT设置的保护块进行的在线编程,是无效的设置的保护块进行的在线编程,是无效的9.3.

28、2 Flash9.3.2 Flash存储器在线编程擦写测试工程存储器在线编程擦写测试工程测试测试FlashFlash的程序运行界面的程序运行界面命令命令功能功能?MCUMCU向向PCPC发送一些使用说明发送一些使用说明E:8擦除第擦除第8 8页页R:8:0:4从第从第8 8页第页第0 0个字处读取个字处读取4 4个字节的内容个字节的内容W:8:0:4:A,C,B,D向第向第8 8页第页第0 0个字位置写个字位置写4 4个字节的数据个字节的数据ACBDACBDB:8,7,6,5,4,3,2,1设置设置FlashFlash后门密钥,密码为字符串后门密钥,密码为字符串8765432187654321

29、M:8,7,6,5,4,3,2,1验证验证FlashFlash后门密钥,密码为字符串后门密钥,密码为字符串8765432187654321D密钥密钥删除删除U加密加密解除解除P:8块保护,保护第块保护,保护第8 8页至页至0 xFFFF0 xFFFF的地址的地址串口调试工具操作串口调试工具操作FlashFlash的命令格式的命令格式9.4 S08 Flash9.4 S08 Flash存储器的保护特性和安全性存储器的保护特性和安全性9.4.1 S08 Flash9.4.1 S08 Flash存储器的保护特性存储器的保护特性 由于由于FlashFlash是非易失性存储器,所以编程人员一般会将一是非

30、易失性存储器,所以编程人员一般会将一些重要参数或数据存于些重要参数或数据存于FlashFlash。为了防止对这些重要数据区。为了防止对这些重要数据区的误擦写,的误擦写,S08S08芯片提供了对芯片提供了对FlashFlash的保护机制。如果一个的保护机制。如果一个FlashFlash区域被保护,那么是不能对这块区域进行任何擦写的。区域被保护,那么是不能对这块区域进行任何擦写的。9.4.2 S08 Flash9.4.2 S08 Flash存储器的安全性存储器的安全性 设置设置MCUMCU为保密状态为保密状态 为了防止为了防止FlashFlash中的程序被非法读中的程序被非法读出,就要将出,就要将

31、MCUMCU设置为保密状态,下设置为保密状态,下面提供两种加密面提供两种加密FlashFlash方法方法安全状态安全状态l方法一方法一通过修改文件通过修改文件isr.cisr.c文件中的安全配置域(即修改文件中的安全配置域(即修改FOPTFOPT寄寄存器,地址存器,地址0 xFFBF0 xFFBF的值和密钥地址的值和密钥地址0 xFFB0 0 xFFB70 xFFB0 0 xFFB7的值)的值)实现加密。例如,若要设置密码实现加密。例如,若要设置密码0 x31323334353637380 x3132333435363738,则只要将这则只要将这8 8字节数据依次写到地址字节数据依次写到地址0

32、 xFFB00 xFFB00 xFFB70 xFFB7处即处即可,该密码即为字符串可,该密码即为字符串“1234567812345678”l方法二方法二 在程序运行中,通过调用自定义函数在程序运行中,通过调用自定义函数Flash_SecureFlash_Secure修改修改FlashFlash相关地址处的内容来加密相关地址处的内容来加密FlashFlash。通过修改。通过修改NVOPTNVOPT地地址的内容,复位后,该寄存器的值将自动载入址的内容,复位后,该寄存器的值将自动载入FOPTFOPT中中 解除解除MCUMCU的保密状态的保密状态l 方法一:通过将写入器的方法一:通过将写入器的BDMBDM接口,对已经加密的芯片进行整体擦除接口,对已经加密的芯片进行整体擦除l 方法二:在芯片中驻留擦除密码或擦除方法二:在芯片中驻留擦除密码或擦除FlashFlash的操作接口,通过调用的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论