当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]对MC68HC908内Flash在线编程的一种方法

摘要 Freescale公司新推出的MC68HC908系列8位单片机,采用片内Flash取代过去常用的ROM或EPROM,使单片机具有了在线编程写入或擦除的功能,增强了方便性,扩展了其应用范围。本文以MC68HC908QY4为例,详细分析如何利用监控ROM程序实现对单片机片内Flash的在线编程和应用。
关键词 Flash 在践编程 MC68HC908 用户模式 监控模式 ROM


    MC68HC908系列单片机的片内Flash可以在两种模式下在线编程:监控模式(monitor mode)和用户模式(usermode)。两种模式各有优缺点:监控模式需要外部硬件支持,但不需要单片机内部程序的存在,所以适合于对新出厂芯片进行编程写入,或是对芯片的整体擦除或写入;用户模式可以在单片机正常工作时进入,所以常用在运行过程中对部分Flash单元进行修改,特别适合于目标系统的动态程序更新和运行数据存储。在Freescale的许多文档中一再强调在用户模式下调用编程子例程之前,应该先将子例程复制到RAM中去,然后跳转到RAM执行;但是对于RAM区较少的单片机(如MC68HC908QY4),必须利用监控ROM中固化的程序。对于这类单片机,即使是在监控模式下,RAM区同样是不够Flash编程使用的。因此,本文以MC68HC908QY4为例,为开发者提供一种在用户模式下,通过利用监控ROM中固化的程序实现对单片机片内Flash在线编程的方法。


1 Flash编程操作
    用户可以对Flash进行3种编程操作:整体擦除、页擦除和写入。MC68HC908系列单片机提供了闪速存储控制寄存器(FLCR),Flash的写入和擦除操作都是通过设置FLCR中的控制位来完成的。
    目前在FLCR中只有4位是有效的:
    ◇HVEN(高压允许位),用于将来自片内电荷泵的高压加到Flash阵列上;
    ◇MASS(整体擦除位),用于选择擦除方式(=1为整体擦除,=0为页擦除);
    ◇ERASE(擦除控制位),用于选择擦除操作;
    ◇PGM(编程写入控制位),用于选择编程写入操作。
    在对Flash进行编程操作时,必须注意两个单位——页(page)和行(row)。页多用在对Flash进行页擦除操作时,而行多用在对Flash进行编程写入时。对于不同型号的单片机,页和行的定义可能是不一致的(例如MC68HC908GP32,l页等于128字节,1行等于64字节;而对于MC68HC908JL3,l页等于64字节,1行等于32字节);但总的来说,1页都等于2行。
    用户还可以选择对部分Flash进行编程保护。保护区的首地址由Flash块保护寄存器(FLBPR)设定,末地址则固定为$FFFF。受保护的Flash单元将无法被编程擦除或写入。以MC68HC908QY4为例,对Flash进行编程的具体操作步骤如下:
(1)页(整体)擦除操作
    ①置ERASE位为1(整体擦除的同时置MASS位为1);
    ②读出Flash块保护寄存器;
    ③向被擦除的Flash页(整体擦除时为整个Flash区)内任意地址写入任意值;
    ④延时TDVS≥μs;
    ⑤置HVEN位为1;
    ⑥延时Terasc≥lms(整体擦除时为Tmerase≥4ms);
    ⑦清ERASE位为O;
    ⑧延时Tnvh≥5μs(整体擦除时为Tnvh1≥lOOμs);
    ⑨清HVEN位为O;
    ⑩延时Trcv≥1μs后,该Flash页(整体擦除时为整个F1ash区)可以被正常读取。
(2)写入操作
    QY4采用了以行为单位的写入方式,其他某些MC68HC908系列的单片机(如GP32),则采用以页为单位的写入方式。
    ①置PGM位为1;
    ②读出Flash块保护寄存器;
    ③向行地址范围内任意Flash单元写入任意值;
    ④延时Tnvs≥10μs;
    ⑤置HVEN位为l;
    ⑥延时Tpgs≥5μs;
    ⑦向行内目标地址写入编程数据;
    ⑧延时Tprog≥40μs;
    ⑨重复①~⑧的步骤写入编程数据,直至同一行内各字节编程完毕;
    ⑩清PGM位为O;
    ⑾延时Tnvh≥5μs;
    ⑿清HVEN位为0;
    ⒀延时Trcv≥1μs以后,该Flash页可以被正常读取。


2 Flash的在线编程方法
    HC08系列MCU出厂时,Flash区包含了字节数不同的监控ROM程序。监控ROM程序包含了HC08系列所共有的基本子程序。在用户模式下,监控ROM程序所在的Flash空间可以很方便地读出。如果读者感兴趣编写一个读Flash的程序,再通过串口发送到计算机端,然后利用CodeWarrior中的反汇编程序将读出的代码反汇编,就可以很清楚地看出这些监控程序具体的执行过程。限于篇幅,本文对于程序本身不再一一列出,只在括号中注明各个程序的功能,并通过示例介绍如何使用ROM中的程序。下面以MC68HC908QY4为例,详细介绍如何通过ROM程序实现对Flash的在线编程。
2.1 程序中使用的变量
   
表1详细列出了程序所定义变量的地址和功能。

2.2 基本的程序模块及其使用示例
   
例1 GETBYTE 通过一个I/O引脚接收一个字节数据。
    如果该I/O引脚作为输入口,而且有上拉电阻,那么就可以调用GETBYTE。

   
    例2 RDVRRNG①读取Flash指定区间的数据,并将读到的数据发送到上位机;②读取Flash指定区间的数据,并与RAM中的数据表作比较。
    ①读取地址$F000~$F010的数据并发送。

   
    ②读取地址$E800~$E8lF中的数据并与RAM中的数据作比较。如果相同,则标志位C置位;否则,标志位C清零。

   
    例3 ERARNGE①页擦除;②整体擦除。
    ①擦除页#$EE00~#$EE3F。

   
    ②由于是整体擦除的,因此不需要末地址。程序只须将首地址存放到H:X寄存器中。示例将擦除#$F000~#$FFFF。

   
    JB8和JL/JKxx(E)的Flash保护寄存器(FLBPR)不在整个Flash中。由于只要系统上电复位,芯片便会根据FLBPR把某一块地址卒间保护起来,因此在使用这条指令之前首先要擦除FLBPR。
    例4 PRGRNGE将RAM中的一段数据下载到指定的Flash地址区间内。
    由于在下载程序到Flash之前,必须保证这一块地址空间是空的,所以PRGRNGE应该与ERARNGE结合使用;而且在调用PRGRNGE程序之前必须调用延时子程序DELNUS,用于产生适当的延时。对于几乎所有的HC08单片机,下载区间没有特定的限制,但是对于MC68HLC908QT/QYxx,下载区间必须在同一行内。

   

                
    例5 DELNUS用于产生适当的延时。
    DELNUS的两个参数分别存放在累加器A和X寄存器中,其中A>l,X>1。累加器A中的值为CPUSPD=4×fop。计算公式为DELNUS=3×A×X+8。示例中,已知延时为100μs,要求计算A和X的值。具体的运算过程如下:
    ①计算100μs的延时需要多少总线周期。
    Bus_cycle=100μs×8MHZ=800cycles
    ②计算A的数值。 A=CPUSPD=4×8=32
    ③计算DELNUS程序运行(1da、ldx、jsr)需要的周期数N。 N=2+2+5=9
    ④计算X的值。由方程DELNUS_100us=800=DELNUS+9=3×32×X+8+9,可得X=8,则程序为:

   

结语
    不同类型的单片机,各程序模块的入口地址不同,开发者可以查阅Freescale的技术资料,找出这些程序模块的入口地址。这里还有一点要说明:若要用这种方法对Flash进行在线编程,则该型MCU必须具有本文第2部分所描述的程序功能模块。本文的目的就是想以MC68HC908QY4为例,为开发者提供一种对片内Flash在线编程的方法,由此获得更多、更好的应用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

作者 Mohamad Ali| IBM咨询首席运营官 北京2024年5月24日 /美通社/ -- 生成式AI的兴起几乎在所有面向上给业务带来改变。根据 IBM 商业价值研究院最新的年度 CEO 研究,近60%...

关键字: IBM AI BSP 模型

台北2024年5月21日 /美通社/ -- 提供针对AMD WRX90和TRX50主板优化的DDR5 OC R-DIMM 提供容量128GB(16GBx8)到768GB(96GBx8),速度5600MHz到8...

关键字: AMD 内存 BSP GB

上海2024年5月20日 /美通社/ -- 2024年5月16日,世界知名的生命科学公司 Eppendorf 集团于第二十三届生物制品年会上成功举办了"疫路超越 推流出新"的产品发布会,正式推出大规模...

关键字: RF PEN BSP IMAC

北京2024年5月20日 /美通社/ -- 过去五年里,支付和收款方式日新月异,其发展和变化比过去五十年都要迅猛。从嵌入式数字商务的出现,到"一拍即付"的...

关键字: VI BSP PAY COM

华钦科技集团(纳斯达克代码: CLPS ,以下简称"华钦科技"或"集团")近日宣布致敬 IBM 大型机 60 载辉煌历程,并将继续实施集团大型机人才培养计划。

关键字: IBM BSP 研发中心 PS

助力科研与检测新突破 上海2024年5月15日 /美通社/ -- 全球知名的科学仪器和服务提供商珀金埃尔默公司今日在上海举办了主题为"创新不止,探索无界"的新品发布会,集中展示了其在分析仪器领域的最...

关键字: 质谱仪 BSP DSC 气相色谱

上海2024年5月16日 /美通社/ -- 2024年5月10日至5月13日,富士胶片(中国)投资有限公司携旗下影像产品创新力作亮相北京P&E 2024。在数码相机展览区域,全新制定的集团使命"为世界绽...

关键字: 富士 数码相机 影像 BSP

贝克曼库尔特目前已成为MeMed Key免疫分析平台和MeMed BV检测技术的授权经销商 在原有合作的基础上,继续开发适用于贝克曼库尔特免疫分析仪的MeMed BV检测 加州布瑞亚和以色列海法2024年5月16日...

关键字: BSP IO 检测技术 免疫分析仪

英国英泰力能的燃料电池是可产业化的产品解决方案 英国首个专为乘用车市场开发的燃料电池系统 在 157kW 功率下,此燃料电池比乘用车的其他发动机更为强大 &...

关键字: ENERGY INTELLIGENT 氢燃料电池 BSP

深爱人才,共赴"芯"程 深圳2024年5月15日 /美通社/ -- 5月11日,深圳国资国企"博士人才荟"半导体与集成电路产业专场活动在深圳市重投天科半导体有限公司(简...

关键字: 半导体 集成电路产业 BSP 人工智能
关闭
关闭