FreescaleHCS12系列MCU的Flash存储器在线编程方法

文档序号:6773569阅读:967来源:国知局
专利名称:Freescale HCS12系列MCU的Flash存储器在线编程方法
技术领域
本发明涉及一种对Freescale HCS12系列MCU的Flash进行在线编程的方法。具体涉及对Freescale HCS12系列MCU的Flash在线擦除和写入操作具有通用性、稳定性、可靠性和高速性的方法。
背景技术
近几年Flash存储器技术趋于成熟,具有电可擦除、无需后备电源来保护数据、可在线编程、存储密度高、低功耗、低成本等特点。而这些特点,正是MCU所期望的。目前,许多MCU内部都集成了 Flash存储器,具有在线编程(Ιη-Circuit Program)功能。Flash存储器的在线编程是指利用Flash存储器的电可擦除特性,允许Flash存储器内的用户程序在运行过程中调用驻留在Flash存储器内部的擦除或写入子函数,对Flash存储器内的数据或程序进行修改。Flash存储器在线编程是实现嵌入式应用产品程序的在线更新、重要参数的掉电保护与恢复、静态参数的在线修改等功能的重要技术手段。程序的在线更新提高了嵌入式系统应用产品的可扩展性与升级性能,参数的掉电保护与恢复,以及静态参数的在线修改等可以使用Flash存储器的一部分取代传统EEPR0M,提高了系统的稳定性。 HCS12系列MCU是2002年后由飞思卡尔推出的16位系列微控制单元(Micro Controller Unit, MCU),至今已经推出10多个子系列60多个型号,其片内集成了 Flash存储器,具有单一电源电压供电、支持在线编程等特点,广泛应用于数据采集、通信、控制、工业自动化及汽车电子等领域。一般情况下,固化MCU的Flash存储器中的程序是通过编程器来完成的,该方法称为监控模式(monitor mode)或写入器模式,与一般的EPR0M、0TP、EEPR0M装入程序的操作相似。另一方面,由于Flash存储器具有电可擦除功能,因此在程序运行过程中可以对 Flash存储器区的数据或程序进行更新,即用户模式(user Mode)或在线编程模式。一般来说,这2种编程模式对Flash存储器的编程操作程序是一致的,差别在于调用这些程序的方式和环境不同,但不是所有类型的MCU内的Flash存储器都具有在线编程功能。对Flash存储器的读写不同于一般的RAM读写,需要专门的编程过程。Flash编程的基本操作有2种擦除(erase)和写入(program)。擦除操作是将存储单元的内容由二进制的0变成1,而写入操作是将存储单元的必要位由二进制的1变成0。擦除操作包括整体擦除和扇区擦除。而写入操作是以字节为单位进行的。在擦除及写入过程中一般需要高于正常工作时的电压(即编程高压)。HCS12系列MCU由片内电荷泵产生编程高压。由于 Flash在线编程时需要对Flash阵列加上高于正常工作时的电压,因此这个高电压会导致对Flash区域读取不稳定。Flash在线编程是通过运行Flash存储器内部的函数去擦除和写入另一些Flash区域。编程高压会导致读取的不稳定,使得运行擦除和写入程序也不稳定,给Flash存储器在线编程带来困难。通过对HCS12系列MCU的深入分析和程序跟踪研究,发现Flash擦写程序的执行过程中,需要加高压运行,也正由于在Flash区中加高压运行引起了 Flash存储器读取不稳定。因此,本发明将擦除和写入程序的机器码预先放入RAM区中,高压时在RAM中执行, 从而克服了高压读写不稳定的问题,提高了程序运行的效率。今后,嵌入式应用软件趋向于大型化,复杂化,代码量较大,因此,64KB以上Flash 的MCU需要采用页面Flash ROM的寻址技术来增加存储容量,以适应嵌入式应用软件发展的需求,这也给大部分HCS12系列MCU的Flash在线编程增加难度。显然,根据以上的技术背景分析,如果能找到一种可对所有HCS12系列MCU进行在线编程的方法,不仅能实现在线编程的通用性,同时又能保证在线编程的稳定性、可靠性和高速性,则对Freescale HCS12系列MCU的产品开发具有重要的意义。

发明内容
本发明的目的是提供一种Freescale HCS12系列MCU的Flash进行在线编程的方法,该方法不仅能实现在线编程的通用性,同时又能保证在线编程的稳定性、可靠性和高速性。为了达到上述目的,发明人发现,可以在PC机方建立一个数据库,将所有HCS12系列MCU与Flash擦写操作有关的参数及每种MCU擦写子函数的机器码的存放路径置于数据库中,供擦写操作前选型时读取,从而实现在线编程的统一性;在Flash擦写操作时,高压期间运行的擦除和写入程序会引起F Iash读取不稳定,通过预先把这一部分程序机器码移植到RAM区,需要执行时再转过去执行,执行完后再回到Flash区,这样便可解决Flash在线编程的稳定性问题;独立编写一段模拟BDM串行通信的程序,目标芯片只从编程调试器接收用户目标代码,编程调试器也不需要发送操作码与地址信息,也无需等待命令而延时, 从而提高了擦除和写入的速度。通过对擦除、写入等操作后的数据检验,确保了擦写操作的可靠性。由此,本发明采用的技术方案一种Freescale HCS12系列MCU的Flash存储器在线编程方法,包括选型、擦除和写入操作。同时,Freescale HCS12系列MCU的擦除和写入操作具有通用性、稳定性、可靠性和高速性。
权利要求
1.一种Freescale HCS12系列MCU的Flash存储器在线编程方法,包括选型、擦除和写入操作,其特征在于Freescale HCS12系列M⑶的擦除和写入操作通用性、稳定性、可靠性和高速性,Flash的擦除和写入操作应按以下步骤进行①清除Flash状态寄存器FSTAT中的出错标志位ACCERR和PVIOL;②写Flash配置寄存器FCNFG的bl和b0,以MC9S12DP256为例,这两位表示选择 256KB 的 Flash 中的哪一个 64KB ;③写PPAGE寄存器,选择要擦写的页;④检查上一次Flash处理的命令是否执行完成,能否写入新的命令;⑤将要写入的数据字写到相应的地址中,地址必须为偶数地址;⑥向FCMD命令寄存器写命令字,0x41表示整体擦除,0x20表示单字节写入;⑦向Flash状态寄存器FSTAT中的命令缓冲区的标志位CBEIF写1清零,这时状态寄存器中的CCIF位将置位,说明操作成功。
2.根据权利要求1所述的FreescaleHCS12系列MCU的Flash存储器在线编程方法, 其特征在于擦写前的预操作包括不同MCU的型号选型、目标芯片频率设置、Flash相关参数值获取。
3.根据权利要求1所述的FreescaleHCS12系列MCU的Flash存储器在线编程方法, 其特征在于所有Freescale HCS12系列MCU的擦除和写入操作都封装成相应的擦除子函数和写入子函数,当选定MCU型号后,则调用相应的擦除和写入子函数,以实现对指定MCU 的Flash在线编程。
4.根据权利要求1所述的FreescaleHCS12系列MCU的Flash存储器在线编程方法, 其特征在于根据BDM通信原理,独立编写一段模拟BDM串行通信的程序,目标芯片只需从编程调试器接收用户目标代码,不需要返回其他响应信息,同时编程调试器也不需要再发送操作码与地址信息,也无需等待命令,从而提高了擦除和写入的速度;通过对擦除、写入等操作后的数据进行检验,确保了擦除和写入操作的可靠性。
全文摘要
本发明涉及一种Freescale HCS12系列MCU的Flash存储器在线编程方法,包括选型、擦除和写入操作。其特征在于设计一个数据库,将Freescale HCS12系列MCU的Flash差异参数值放置数据库中,以实现HCS12系列MCU在线编程的通用性。在RAM区中预置Flash存储器擦除和写入程序的机器码,这些机器码是在编程高压期间要运行到的语句,将其从Flash区移置RAM区执行,可以提高高压期间擦写操作的稳定性。根据BDM通信原理,独立编写一段模拟BDM串行通信的程序,目标芯片只从编程调试器接收用户目标代码,因此编程调试器不需要发送操作码与地址信息,也无需等待命令,从而提高了擦除和写入的速度。通过对擦除、写入等操作后的数据检验,确保了擦写操作的可靠性,并可方便地进行在线升级。
文档编号G11C16/10GK102568583SQ201110426788
公开日2012年7月11日 申请日期2011年12月19日 优先权日2011年12月19日
发明者吴斌, 张静, 杨诚, 眭碧霞, 聂章龙, 陶洪 申请人:聂章龙
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1