飞思卡尔8位单片机MC9S8Flash存储器的在线编程ppt课件.ppt

上传人:本田雅阁 文档编号:3229338 上传时间:2019-08-03 格式:PPT 页数:32 大小:307.05KB
返回 下载 相关 举报
飞思卡尔8位单片机MC9S8Flash存储器的在线编程ppt课件.ppt_第1页
第1页 / 共32页
飞思卡尔8位单片机MC9S8Flash存储器的在线编程ppt课件.ppt_第2页
第2页 / 共32页
飞思卡尔8位单片机MC9S8Flash存储器的在线编程ppt课件.ppt_第3页
第3页 / 共32页
飞思卡尔8位单片机MC9S8Flash存储器的在线编程ppt课件.ppt_第4页
第4页 / 共32页
飞思卡尔8位单片机MC9S8Flash存储器的在线编程ppt课件.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《飞思卡尔8位单片机MC9S8Flash存储器的在线编程ppt课件.ppt》由会员分享,可在线阅读,更多相关《飞思卡尔8位单片机MC9S8Flash存储器的在线编程ppt课件.ppt(32页珍藏版)》请在三一文库上搜索。

1、第十一章 Flash存储器的在线编程,主要内容 Flash存储器概述与编程模式 MC68HC908GP32单片机Flash存储器编程方法 GP32单片机Flash在线编程汇编语言实例 GP32单片机Flash在线编程C语言实例 HCS08系列单片机Flash编程方法,嵌入式应用技术基础教程课件,11.1 Flash存储器概述与编程模式,11.1 Flash 存储器概述与编程模式,11.1.1 Flash存储器的基本特点与编程模式 (1)Flash存储器的基本特点 固有不挥发性 易更新性 成本低、密度高、可靠性好 (2)Flash存储器的两种编程模式 监控模式(Monitor Mode)或写入器

2、模式 用户模式(User Mode)或在线编程模式,嵌入式应用技术基础教程课件,11.1 Flash存储器概述与编程模式,(1)M68HC08系列单片机Flash存储器的特点 第一,编程速度快及可靠性高。 第二,单一电源电压供电。 第三,支持在线编程。,嵌入式应用技术基础教程课件,11.1.2 M68HC08系列单片机Flash存储器的特点 与编程模式,11.1 Flash存储器概述与编程模式,嵌入式应用技术基础教程课件,M68HC908系列单片机中绝大多数型号在其内部带有监控ROM,其地址和大小取决于芯片型号。 Flash存储器工作于监控模式的条件是: 复位向量($FFFE$FFFF)内容为

3、“空”($FFFF)。 单片机复位时在IRQ引脚上加上高电压(1.42Vdd),并给某些I/O脚置适当值(与芯片型号有关,设计时,参考芯片手册)。 M68HC908系列单片机的Flash存储器工作于用户模式不需要特别的条件,在单片机正常工作的过程中,程序可以随时转入对Flash存储器进行编程操作。这种情况下对Flash存储器的擦除与写入,不需要用户提供其它外部硬件条件。,(2)M68HC08系列单片机Flash存储器的编程模式,返回,11.2 GP32 Flash存储器编程方法,11.2 MC68HC908GP32单片机Flash存储器编程方法,11.2.1 Flash存储器编程的基本概念 (

4、1)对Flash编程的两种基本操作:擦除(Erase)和写入(Program) 擦除操作的含义是将存储单元的内容由二进制的0变成1, 写入操作的含义是将存储单元的内容由二进制的1变成0。 擦除及写入操作都是通过设置或清除Flash存储器的控制寄存器(FLCR)中的某个或某些位来完成的。,嵌入式应用技术基础教程课件,11.2 GP32 Flash存储器编程方法,页和行的大小(字节数)随整个Flash存储器的大小变化而变化,但页的大小始终为行的两倍。例如MC68HC908GP32内含32K的Flash存储器(地址为$8000$FDFF),每页的大小为128字节,每行的大小为64字节;而MC68HC

5、908JL3片内Flash存储器仅有4K,每页和每行的大小也分别变为64字节和32字节。 (3)Flash的整体擦除和页擦除 对于GP32单片机来说,对Flash存储器的擦除操作可以进行整体擦除也可以仅擦除某一起始地址开始的一页(128字节)。也就是说,不能仅擦除某一字节或一次擦除小于128字节。注意这一特点,在数据安排时尤为重要。GP32单片机的写入操作以行(64字节)为基础,一次连续写入数据个数只能在一行之内。当然,不经过擦除的区域,不能进行写入,这一点需特别注意。,嵌入式应用技术基础教程课件,(2)Flash片内单位:页(Page)和行(Row),11.2 GP32 Flash存储器编程

6、方法,(1)Flash控制寄存器(Flash Control Register FLCR) FLCR的地址:$FE08,定义为:,11.2.2 Flash存储器的编程寄存器,D7D4位:未定义。 D3 HVEN位:高压允许位(High-Voltage Enable Bit)。 D2 MASS位:整体擦除控制位(Mass Erase Control Bit)。 D1 ERASE位:擦除控制位(Erase Control Bit)。 D0 PGM位:编程(写入)控制位(Program Control Bit)。,嵌入式应用技术基础教程课件,11.2 GP32 Flash存储器编程方法,FLBPR的

7、地址:$FF7E,它的内容为Flash保护区域的起始地址的147位,保护区域的起始地址的最高位始终为1,而保护区域的起始地址的低7位(位60)始终为0。对FLBPR写入,可以设定被保护的Flash区域,它本身也是一个Flash字节。当Flash处于保护状态时,擦除和写入操作都是受限制的,HVEN将无法被正常置起。Flash块保护寄存器设定的只是保护区域的起始地址,保护区域的结束地址始终为Flash存储区的结束地址($FFFF)。例如,设定FLBPR的值为$02(%0000 0010),则保护区域为$8100$FFFF(%1000 0001 0000 0000 %1111 1111 1111 1

8、111)。 特别情况是:FLBPR的存储内容为$00,整个Flash存储区都受到保护;如果FLBPR的存储内容为$FF,则整个Flash存储区都可以被擦除或写入。 注:只有当单片机处于运行用户程序时,对FLBPR本身和Flash保护区域的擦写操作保护才是有效的。复位不影响FLBPR。,嵌入式应用技术基础教程课件,(2)Flash块保护寄存器(Flash Block Protect Register FLBPR),11.2 GP32 Flash存储器编程方法,注:对MC68HC908GP32而言的,FLBPR设定的是16位起始地址的第147位(第15位恒为1);而对MC68HC908JL3而言,

9、它们设定的是16位起始地址的第125位(第1513位恒为1) 。,嵌入式应用技术基础教程课件,GP32与JL3芯片Flash块保护寄存器设置比较,11.2 GP32 Flash存储器编程方法,MC68HC908GP32的Flash编程的基本操作: (1)页擦除操作 下面过程可以擦除GP32的Flash存储器的一页(128字节): $2FLCR(1ERASE位,0MASS位):进行页面擦除; 读Flash块保护寄存器FLBPR; 向被擦除的Flash页内任意一个地址写入任意值,一般向待擦除页 首地址写入0; 延时tnvs(10s); $AFLCR(1HVEN位); 延时terase(1ms);

10、$8FLCR(0ERASE位); 延时tnvh(5s); $0FLCR(0HVEN位); 延时trcv(1s),完成一页的擦除操作。,11.2.3 Flash存储器的编程过程,嵌入式应用技术基础教程课件,11.2 GP32 Flash存储器编程方法,下面过程擦除GP32的整个Flash区域,以便把新的程序装入Flash存储器: $6FLCR(1ERASE位,1MASS位):进行整体擦除; 读Flash块保护寄存器FLBPR; 向被擦除的Flash任意一个地址写入任意值,为方便起见,一般向首地址写入0; 延时tnvs(10s); $EFLCR(1HVEN位、MASS位、ERASE位); 延时tM

11、erase(4ms); $CFLCR(0ERASE位); 延时tnvhl(100s); $0FLCR(0HVEN位、MASS位); 延时trcv(1s),完成整体擦除操作。,(2)整体擦除操作,嵌入式应用技术基础教程课件,11.2 GP32 Flash存储器编程方法,MC68HC908GP32的Flash编程操作以行(64字节)为单位进行的。写入过程如下: $1FLCR(1PGM位); 读Flash块保护寄存器FLBPR; 向将要写入的Flash行内任意一个地址写入任意值,为方便起见,一般向行首地址写入0,这一步选定了所要编程的行,以下的目标地址必需在这一行中; 延时tnvs(10s); $9

12、FLCR(1HVEN位); 延时tpgs(5s); 待写数据写入对应的Flash地址; 延时tprog(30s),完成一个字节的写入(编程)工作; 重复、,直至同一行内各字节写入完毕; $8FLCR(0PGM位); 延时tnvh(5s); $0FLCR(0HVEN位); 延时trcv(1s)以后,完成本行写入工作,可以读出校验。,嵌入式应用技术基础教程课件,(3)编程操作,11.2 GP32 Flash存储器编程方法,MC68HC908GP32的Flash编程参数,返回,11.3 GP32 Flash在线编程汇编语言实例,11.3 GP32单片机Flash在线编程汇编语言实例,11.3.1 F

13、lash存储器的擦除及写入汇编子程序 (1)擦除子程序 (2)写入子程序 (3)擦除与写入子程序编程要点说明 RAM中要留有足够的缓冲区,以便存放复制到RAM中的子程序,具体值是取擦除与写入子程序中的大者即可。 擦除及写入子程序中要调用的延时子程序均随其后,以便同时复制到RAM中,最后一个标号是为复制方便而加入. 擦除及写入子程序中对延时子程序的调用必需使用“BSR 子程序名”,而不能使用 “JSR 子程序名”,因为这里的子程序是复制到RAM中执行,程序地址已经发生了变化,只能用相对调用。,嵌入式应用技术基础教程课件,11.3 GP32 Flash在线编程汇编语言实例, 擦除子程序与写入子程序

14、及其中的延时子程序,若含有跳转语句,不能使用“JMP 地址”,只能使用“BRA 地址”。原因同上。 使用不同型号芯片时,上述子程序中延时时间应根据芯片手册予以变动。延时子程序也应根据不同的总线频率加以变化,确保时间满足时序要求。 一次擦除后未被写入过的区域可以再次调用写入子程序写入,但写入过的区域,未经擦除不能重写。 由于擦除是每次擦除一页(128字节),所以数据应合理安排,避免误擦。 页首地址的定义须遵照保护寄存器FLBPR定义的规则,即对GP32来说,页地址的低6位为0。 在线编程时使用的Flash存储区域应在程序Flash存储区域之前,因为Flash保护区为FLBPR决定的地址至末尾。,

15、11.3 GP32 Flash在线编程汇编语言实例,(1)单片机方程序流程图 单片机方程序的主要功能是: 不断地向PC机发出握手信号,并监测PC机返回的握手信号。可以看到串行通信指示灯闪烁,表明MCU在向PC机发送握手信号。 若收到握手信号,表明PC机可以发送数据,设要写入数据的个数为N,则单片机首先将接收数据个数N放入内存(接收的数据在一行之内,N小于等于64),随后接收N个数据,放入内存缓冲区。 擦除指定Flash区域,将收到的N个数据写入Flash区。 读出该Flash区的数据,并发送到PC机。,11.3.2 Flash存储器在线编程汇编主程序及PC方程序,嵌入式应用技术基础教程课件,1

16、1.3 GP32 Flash在线编程汇编语言实例,单片机方程序流程图,嵌入式应用技术基础教程课件,11.3 GP32 Flash在线编程汇编语言实例,(3)PC机方程序及界面,(2)单片机方主程序,嵌入式应用技术基础教程课件,返回,11.4 GP32 Flash在线编程C语言实例,11.4 GP32单片机Flash在线编程C语言实例,Flash存储器的擦除及写入C语言子程序 Flash存储器在线编程C语言主函数,嵌入式应用技术基础教程课件,返回,11.5 HC08系列单片机 Flash编程方法,11.5 HCS08系列单片机Flash编程方法,11.5.1 Flash存储器的编程寄存器 在MC

17、9S08GB60单片机中,与Flash编程有关的寄存器有6个,它们是Flash时钟分频寄存器(FCDIV)、Flash选项寄存器(FOPT和NVOPT)、Flash配置寄存器(FCNFG)、Flash保护寄存器(FPROT和NVPROT)、Flash状态寄存器(FSTAT)和Flash命令寄存器(FCMD),对应的地址分别为$1820、$1821、$1823、$1824、$1825和$1826。下面分别阐述这些寄存器的功能及用法。,嵌入式应用技术基础教程课件,11.5 HC08系列单片机 Flash编程方法,(1)Flash时钟分频寄存器(FLash Clock Divider Registe

18、r FLCR),嵌入式应用技术基础教程课件,D7 DIVLD位:分频设置状态标志位(Divisor Loaded Status Flag),只读位。 D6 PRDIV8位:Flash预分频设置位(Prescale Flash Clock by 8)。 D5 D0 位:DIV5DIV0位,Flash时钟分频器的分频因子。Flash的内部工作时钟fFCLK的计算方法如下: 如果PRDIV8=0,fFCLK=fbus(DIV5:DIV0+1) 如果PRDIV8=1,fFCLK=fbus(8DIV5:DIV0+1),FLCR的地址:$1820,定义为:,11.5 HC08系列单片机 Flash编程方法

19、,(2)Flash选项寄存器(Flash Options Register FOPT和NVOPT),D7KEYEN位:后门锁机构允许位(Backdoor Key Mechanism Enable)。KEYEN=0,表示不能用后门锁机构来解除存储器的保密性;KEYEN=1,如果用户使用固件,写入8个字节的值,并且和后门钥匙NVBACKKEYNVBACKKEY+7相匹配,在MCU复位前,存储器的保密性会暂时解除。 D6FNORED位:矢量重定向禁止位(Vector Redirection Disable)。FNORED=1,矢量重定向禁止;反之允许。 D5D2位:未定义。 D1D0位 SEC01S

20、EC00位:安全状态码。,嵌入式应用技术基础教程课件,FOPT的地址:$1821,定义为:,11.5 HC08系列单片机 Flash编程方法,(3)Flash配置寄存器(Flash Configure Register FCNFG),D7D6位、 D4D0位:未定义。 D5 KEYACC位:写访问钥匙允许位(Enable Writing of Access Key)。 KEYACC=1,表示写BVBACKKEY($FFB0-$FFB7)被认为是进行密码比较;KEYACC=0,表示写BVBACKKEY($FFB0-$FFB7)被解释为Flash擦写命令的开始。,嵌入式应用技术基础教程课件,FOP

21、T的地址:$1823,定义为:,11.5 HC08系列单片机 Flash编程方法,(4)Flash保护寄存器(Flash Protect Register FPORT和NVPROT),D7 FPOPEN位:打开Flash中的非保护区域位(Open Unprotected Flash for Program/Ease),打开的这些区域可以进行擦写。FPOPEN=1,Flash中非保护区域可以进行擦写操作;FPOPEN=0,整个Flash区域都不可进行擦写操作。 D6 FPDIS位:Flash保护设置位(Flash Protection Disable)。FPDIS=1,Flash不进行保护;FP

22、DIS=0,Flash保护FPS2:FPS0所设置的区域。 D5D3 FPS2FPS0位:Flash保护区域设置。FPDIS=0时,这3位决定了保护区域的大小。 D2D0位:未定义。,嵌入式应用技术基础教程课件,FPROT的地址:$1824,定义为:,11.5 HC08系列单片机 Flash编程方法,(5)Flash状态寄存器(Flash Status Register FSTAT),D7 FCBEF位:Flash命令缓冲区空标志位(Flash Command Buffer Empty Flag)。 D6 FCCF位:Flash命令完成标志位(Flash Command Complete Fl

23、ag)。 D5 FPVIO位:侵害保护标志位(Protection Violation Flag)。 D4 FACCER位:访问出错标志位(Access Error Flag)。 D2 FBLANK位:Flash空白标志位(Flash Verified All Blank Flag)。 D3,D1D0位:未定义。,嵌入式应用技术基础教程课件,FSTAT的地址:$1825,定义为:,11.5 HC08系列单片机 Flash编程方法,(6)Flash命令寄存器(Flash Command Register FCMD),D7D0位:对Flash进行访问的命令字节。,Flash访问命令表,嵌入式应用技

24、术基础教程课件,FCMD的地址:$1826,定义为:,11.5 HC08系列单片机 Flash编程方法,(1)Flash命令的执行步骤 向Flash地址中写入一个数据。地址和数据信息都会被锁定到Flash接口中。对于空白检测和擦除命令,数据信息是一个任意值;对于页擦除命令,地址信息是擦除页(512字节)地址中的任意一个地址;对于空白检测和整体擦除命令,地址信息是Flash中的任意一个地址。 向Flash命令寄存器FCMD中写入需要执行的命令。 执行命令。将Flash状态寄存器FSTAT的FCBEF位置1,同时开始执行命令寄存器中的命令。,11.5.2 Flash存储器的编程过程,嵌入式应用技术

25、基础教程课件,11.5 HC08系列单片机 Flash编程方法,GB60 Flash 编 程 例 程 图,(2)Flash命令的执行流程,11.5 HC08系列单片机 Flash编程方法,GB60 Flash批量写入流程图,11.5 HC08系列单片机 Flash编程方法,在执行以下操作时,会导致出错,FACCERR自动置1: 在向Flash地址写入信息前没有进行FCDIV寄存器设置; 在向Flash地址写入信息前FCBEF没有置1; 在执行命令前,执行两次向Flash地址写入信息操作; 在向Flash地址写入信息后,设置除FCMD外的其他Flash控制寄存器; 向FCMD中写入表11-6以外

26、的命令字; 向FCMD中写入命令字后,试图读写除FSTAT外的寄存器; 在执行命令时,MCU进入STOP模式; MCU处于保密状态时,使用背景调试接口进行页擦除或写Flash操作(MCU处于保密状态时,使用背景调试接口只能进行空白测试或整体擦除); 向FCBEF位写0取消一个命令的执行。,嵌入式应用技术基础教程课件,(3)Flash命令出错情况,11.5 HC08系列单片机 Flash编程方法,HCS08系列MCU使用硬件电路机制来防止非法用户试图访问Flash和RAM存储器的数据。当设置保密性后,Flash和RAM都被看作保密资源,直接页寄存器、高端页寄存器、背景调试模块被认为是非保密资源。

27、执行过程中,可以访问任何位置的内存数据,但通过背景调试接口或不安全的方式来访问保密资源是不允许的。 保密性设置依赖于FOPT中非易失性的数据位SEC01:SEC00来实现。,11.5.3 Flash存储器的安全性,嵌入式应用技术基础教程课件,返回,本章主要以HC08系列中的GP32为例阐述Flash存储器的在线编程方法,也简要阐述了HCS08系列中GB60的在线编程方法。本章首先概述了Flash存储器的基本特点,并介绍其编程模式,随后给出M68HC908GP32的Flash存储器编程的基本操作及汇编语言和C语言的在线编程实例。最后讨论MC9S08GB60的Flash存储器编程方法。,本章小结,嵌入式应用技术基础教程课件,返回,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1