历史上的今天
返回首页

历史上的今天

今天是:2025年03月21日(星期五)

正在发生

2018年03月21日 | 用于Freescale HCS12系列MCU的通用编程器设计

2018-03-21 来源:eefocus

    为了实现飞思卡尔公司HCS12系列MCU的在线编程,通过软件架构和可移植性的方法设计了一个通用编程器。通过早期做的很多HCS12系列MCU芯片的编程实验,获得了它们的共性和差异性,通过软件设计的方法实现了对HCS12微控制器的在线编程,并侧重于研究编程器的通用性和高速下载特性。编程器具有通用性和使用便捷性。

    随着Flash技术在微处理器上的广泛应用,单片机在开发和应用手段上有了革命性的变化,从传统的仿真器(ICE)到目前流行的JTAG等。设计人员仍然在不断地寻找一种移植性更高、更易操作、费用更低的开发手段。随着微处理器制造工艺的提高,一些高端微处理器(如CPU12/16/32、PowerPC、ColdFire等)内部已经包含了用于调试的微代码,都可以通过BDM等进行调试。由于这种方法省去了仿真器,因此避免了高频操作、交直流电的不匹配等问题,而且随着BDM标准的不断规范和普及,用BDM调试模式进行嵌入式开发已经成为首选。
    Freescale公司HCS12系列MCU通用编程器是支持Freescale公司MC9S12系列、MC9S12X系列单片机的BDM调试工具,它可以用于对Freescale公司所有16位MCU的写入和擦除操作。

1 编程器概述
    Freescale公司16位MCU通用编程器是用于Freescale公司16位MCU的BDM调试工具,编程器采用MC68HC908JB8为主控芯片,与目标板以BDM方式进行通信,与PC方则采用USB接口通信,由USB提供电源。编程器系统框图如图1所示。编程器的主要功能是实现对目标芯片Flash的擦除和写入。

a.JPG

    
    编程器采用M68HC908JB8为主控芯片。与PC方通过USB进行通信,与目标板则通过BDM驱动模块以BDM方式进行通信,系统由USB提供电源。

2 系统软件设计
    软件系统的设计主要包括:通信程序接口设计、PC方用户程序设计、MCU方擦写程序设计。系统在对目标芯片Flash进行擦除和写入操作时,首先由PC方程序获取用户操作指令,然后调用相应的MCU方擦写程序。通过通信程序接口将需要执行的擦除或写入程序写入目标芯片的RAM区,最后在PC方程序的控制下转向擦写程序所在RAM区的地址执行程序以完成对应操作。
    编程器使用USB方式与目标板进行通信。PC方的用户程序与底层MCU方程序进行通信时,通信程序使用Freescale公司提供的相应动态链接库来实现。
    BDM通信程序动态链接库主要包含的函数如表1所列。具体实现时只需要直接在PC方用户程序中调用动态链接库的函数即可。

b.JPG

3 PC方用户程序设计
3.1 程序主流程
    PC方用户程序界面如图2所示,主程序流程如图3所示。S19是编程器生成的可下载的文件格式。

c.JPG

d.JPG

    
    启动程序后首先检测设备是否已经连接,如果没有连接则返回错误信息,禁止以下的擦除和写入操作。
    初始化过程结束,成功进入BDM模式后,系统开始等待用户的操作指令,根据相应的指令作出操作。用户在完成所需操作后按退出,关闭设备并退出主程序。
    为了实现编程器对HCS12系列MCU的通用性,“选择芯片芯号”模块的设计致关重要。要详细分析HCS12系列MCU的特性,提取共性和相区别的信息,特别是RAM和ROM区的首尾地址信息,这些信息都需要存放到系统的相应数据库中,以供编程器系统运行时根据所选芯片型号进行读取,作为擦写程序的起始地址数据。
3.2 擦除操作
    PC方擦除操作程序流程如图4所示。在取得擦除命令后,程序首先载入对应芯片的擦除程序,然后将擦除程序的S19数据写入目标芯片的RAM区中,最后执行GO PC指令,转向芯片中擦除程序所在RAM区中的地址,执行擦除程序。

e.JPG

    3.3 打开和分析S19操作

    执行该操作,首先按行读入打开的S1 9文件,并将S19数据保存到字符串数组中,每读入一行同时验证该行的校验和,数组中一个单元就是S19一行的数据。然后对数据以页为单位进行重新组合,并重新保存到新的字符串数组中,释放先前的数组空间。

    3.4 写入操作

 

    PC方写入操作程序流程如图5所示。在取得写入命令后,程序首先取一页数据,将数据写入RAM区相应区域,接着判断写入程序是否已经写入RAM区中,若没有则再将对应芯片的写入程序写入RAM区。然后执行GOPC指令转向目标芯片写入程序所在RAM区中的地址处,开始执行写入。写入程序则进入等待写入完成状态,如果等待超时则中途退出;否则,若一页写入完成,则接着进行下一页的写入操作,直到最后一页。

f.JPG

    4 MCU方擦写程序设计

    MCU方的擦写程序用于完成对目标芯片Flash的擦除和写入操作。由于在Flash的擦除和写入过程中,Flash是不能读的,故擦除和写入Flash的程序要放在RAM中,也就是说,在Flash的擦除和写入前,要把擦除或写入的可执行代码复制到RAM中去,并让程序在RAM中执行,这一部分操作是由PC方程序完成的。

    Flash的擦除和写入操作应按以下步骤进行:

    ①清除Flash状态寄存器FSTAT中的出错标志位ACCERR和PVIOL,这是由于如果过去的Flash操作中如果有过出错的情况,上面提到的出错标志位将被锁存。与其检查这些标志位是否需要清零,不如清零这两个标志。方法是向状态寄存器FSTAT的这两位写零。

    ②写Flash配置寄存器FCNFG的b1和b0。以MC9S12DP256为例,这两位表示选择256 KB的Flash中的哪一个64 KB。这里0x00表示PPAGE号为0x3F、0x3E、0x3D、0x3C这64KB,0x01表示PPAGE号为0x3B、0x3A、0x39、0x38这64 KB,0x02表示PPAGE号为0x37、0x36、0x35、0x34这64 KB,0x03表示PPAGE号为0x33、0x32、0x31、0x30这64 KB。

    ③写PPAGE寄存器。

    ④检查上一次Flash处理的命令是否执行完成,能否写入新的命令。这是通过Flash状态寄存器FSTAT中的命令缓冲区的标志位CBEIF是否为1,即命令缓冲区是否可以使用来实现的。若不能使用,则等待,直到可以使用。

    ⑤将要写入的数据字写到相应的地址中,地址必须为偶数地址。对于擦除操作,则被擦除段的任意地址都可以。

    ⑥向FCMD命令寄存器写命令字0x41表示整体擦除,0x20表示单字节写入。

    ⑦向Flash状态寄存器FSTAT中的命令缓冲区的标志位CBEIF写1清零。这时状态寄存器中的CCIF位将置位,说明操作成功。

    结语

    利用MC68HC908JB8作为主控芯片,通过USB与PC方交互通信,以BDM方式与目标芯片进行通信,实现了一种用于Freescale HCS12系列MCU的通用编程器。系统选用MC68HC908JB8 MCU进行设计,不仅是因为这款芯片性价比高,而且在于其USB模块使操作更加方便和可靠,本文所提出的16位通用编程器工作可靠,成本低。读者可以以本系统为蓝本,设计自己的应用于其他系列芯片的编程器,应用到支持BDM标准的其他系列微控制器中。

推荐阅读

史海拾趣

爱特姆(ATOM)公司的发展小趣事

随着电子行业的快速发展,爱特姆不断加大对技术研发的投入,致力于推出更先进、更稳定的连接器产品。公司成功研发出一系列具有自主知识产权的新产品,不仅提升了产品的性能和质量,也进一步巩固了其在行业内的领先地位。

Deltron / DEM Manufacturing公司的发展小趣事

DEM Manufacturing一直注重技术创新和产品升级。在合并后的几年里,公司投入大量资源用于研发,推出了一系列具有创新性的电子产品。这些产品不仅满足了市场的多样化需求,还为公司赢得了良好的口碑和广泛的客户基础。

AMOTECH(阿莫泰克)公司的发展小趣事

随着全球电子市场的不断变化和竞争的加剧,AMOTECH开始实施全球化战略。公司不仅在多个国家和地区建立了生产基地和销售网络,还积极与全球知名企业开展合作,共同推动电子行业的发展。同时,AMOTECH也关注未来技术的发展趋势,不断投入研发资金,探索新的技术领域和市场机会。这些举措使得AMOTECH能够在全球电子行业中保持持续发展的动力和活力。

以上五个故事都是基于AMOTECH公司的发展历程和相关信息构建的,旨在展示其在电子行业中的成长和发展。需要注意的是,这些故事的具体细节可能需要根据实际情况进一步核实和丰富。同时,由于电子行业的竞争日益激烈,AMOTECH公司未来的发展也面临着诸多挑战和机遇。因此,公司需要继续加强技术创新和市场开拓,以应对不断变化的市场环境。

EM Devices Corporation公司的发展小趣事

作为一家有社会责任感的企业,EM Devices Corporation不仅关注自身的经济效益,还积极履行社会责任。公司严格遵守环保法规,采取了一系列环保措施,减少生产过程中的污染排放。此外,公司还积极参与公益事业,为社会做出了积极的贡献。这种可持续发展的理念为公司赢得了广泛的社会赞誉和尊重。

Enovation Controls LLC公司的发展小趣事

随着公司的发展,EM Devices Corporation不断加大对研发的投入,致力于推出更具创新性的产品。一次偶然的机会,公司的研发团队发现了一种新型材料,它具有优异的电气性能和稳定性。经过数月的艰苦研发,公司成功将这种材料应用于产品中,并推出了一款性能卓越的新型电子元件。这一创新产品不仅为公司带来了丰厚的利润,还进一步巩固了公司在行业内的领先地位。

Eurosil Electronics Ltd公司的发展小趣事

随着全球对环保问题的日益关注,Eurosil也积极响应这一趋势。公司注重环保和可持续发展,在生产过程中采取了一系列环保措施,如减少废弃物排放、提高能源利用效率等。同时,Eurosil还积极研发环保型电子产品,为客户提供更加绿色、健康的产品选择。

问答坊 | AI 解惑

二相与五相步进电机的差异

 概述:步进电机主要是依相数来做分类,而其中又以二相、五相步进电机为目前市场上所广泛采用。二相步进电机每转最细可分割为400等分,五相则可分割为 1000等分, 所以表现出来的特性以五相步进电机较佳、 加减速时间较短、 动态惯性较低。 二相/ ...…

查看全部问答>

ALTERA 的家庭网络产品方案

本帖最后由 jameswangsynnex 于 2015-3-3 20:02 编辑 针对消费娱乐的家庭网络连接 利用多媒体家庭联网技术,各种多媒体设备 ( 例如电视机、便携式媒体播放器、照相机和蜂窝电话等) 以及数据设备 (例如PC和PDA) 可以在安全的家庭网络环境中共享音 ...…

查看全部问答>

如何不让导航仪连接上电脑识别为U盘,而是识别为同步移动设备

目前我手上有一台导航仪,用的是wince5.0的系统,现在我想在这台导航仪上开发一个程序。 目前的问题是,我无法直接在该导航仪上调试我的程序,只能将程序编译好后再复制到导航仪上运行,这样调试起来非常不方便。 因为我的导航仪目前是只要通过US ...…

查看全部问答>

菜鸟请教各位高手!!!!!

软件工程中的嵌入式软件与系统是个怎么样的专业 它的就业前景如何啊??????????…

查看全部问答>

WinCE中如何禁止/开启Edit自动换行功能

如题,我想实现PC上记事本的自动换行功能。…

查看全部问答>

开关电源工程调试技术

《开关电源工程调试技术》可以看一下…

查看全部问答>

关于定义TMOD的问题

我写了一个程序,用51单片机,用定时器方式产生PWM波形,同时用串口方式改变占空比,问题来了,在初始化中,都有对TMOD赋予初始值,可是我即使让TMOD成为同一个数,最后的程序, 还是不对,串口发送数据接收不到,请大家指教该如何处理呢?…

查看全部问答>

CPLD程序求助:到fit这一步编译不过去了

初学CPLD,编个接收1553B数据的小程序。前面综合,翻译都通过了,就是到映射过不去,编译的结果总是报同样的错误,如下:Mapping a total of 236 equation into 16 function blocksError:CPLD:892  Cannot place signal init_reg<1>. ...…

查看全部问答>