用于Freescale HCS12系列MCU的通用编程器设计

发布者:chang_ri最新更新时间:2018-03-21 来源: eefocus关键字:Freescale  HCS12系列  MCU  通用编程器 手机看文章 扫描二维码
随时随地手机看文章

    为了实现飞思卡尔公司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标准的其他系列微控制器中。

关键字:Freescale  HCS12系列  MCU  通用编程器 引用地址:用于Freescale HCS12系列MCU的通用编程器设计

上一篇:工业应用微控制器(MCU)特性和设计
下一篇:FR81S家族32位微控制器的车身控制应用平台设计

推荐阅读最新更新时间:2024-03-16 15:58

基于单片机的协程多任务
在很多的单片机项目中,由于操作系统的体积以及使用的背景知识,如果采用的话,可能让项目脱离主要业务方向,这个时候很有必要使用简单的协程多任务。 1协程多任务的特点 每个任务优先级平等 每个任务主动释放CPU控制权 2 UCOS等操作系统的特点 任务存在不同优先级,很方便进行CPU资源的分配。 对于ucos的任务来说,每个任务都认为自己是独占cpu的,可以随便休眠之类,这样对于代码的风格的限制比较小,比较好修改现存的模块。 操作系统一般提供比较多的服务,对于复杂应用比较好。 3 协程多任务的应用场合 协程方式适合简单的多任务,每个任务要确认其符合协程的模型,不能阻塞cpu运行,要主动释放CPU
[单片机]
基于单片机的三相步进电机控制系统设计分解
摘要 本设计详细介绍了基于单片机的三相步进电机控制系统。步进电机通过输入脉冲信号进行控制,即电机的总转动角度由输入脉冲总数决定,因此,单片机通过向步进电机发送控制信号就能实现对步进电机的控制。 单片机实现的步进电机控制系统具有成本低、使用灵活的特点,该系统采用80C51单片机作为主控芯片,来完成对步进电机转动及LED显示的控制。 本设计主要由单片机80C51,3相步进电机,7段数码管,及一些其他相关元件设计而成,分为按键选择工作状态模块、步进电机工作模块、LED二极管显示工作状态模块以及4位数码管显示步数模块。可以通过开关来控制系统的启/停工作,当系统运转时,用开关来控制方向,并使相应的指示灯亮起,同样由开关来选择工作模式
[单片机]
基于<font color='red'>单片机</font>的三相步进电机控制系统设计分解
关于51单片机学习的一些小建议
相信有不少老铁对如何入门51单片机一直找不到适合自己的方法,通常是看看网上的课程,然后利用开发板进行相关实验观察现象。然后通过一步一步学习最后成功入门。但这只是能够使你能够尽快对单片机有一定的认识。如果想完完全全地学懂单片机还是要懂一些基本的,基础的知识。 比如学单片机分为两个部分:一是硬件部分,二是软件部分。无论你是做硬件方面,还是软件方面。你都需要学习这两方面,只是有所侧重而已。最好的做法就是将两部分结合起来,综合学习。就我本人而言,我是做软件方面的的,除了编写程序外还要利用基本的硬件知识结合C语言来进行更深层次的学习。举一个例子,编写程序来点亮一个LED灯。 程序如下: #include reg51.h
[单片机]
基于∑-△的地震采集系统前置放大器探讨
   0 引言   地震勘探中的地震仪,原前端采集系统采用采样/保持电路+瞬时浮点放大器(FPA)+14位逐次比较式A/D转换,由于采样/保持电路的平顶处理过程是为了配合FPA来实现A/D转换的范围扩展,但其严重抑制了高频地震反射信号,现大多改进为∑-△技术来完成A/D转换。目前使用∑-△ A/D转换器的系统中,其前端前置放大器,在信号调理上多为线性放大器。本文通过对地震信号的时间衰减性分析,对配合∑-△ A/D转换器的前置放大器改为非线性放大电路,尽可能发挥∑-△A/D转换器的优点,以求拓展其动态范围,提高小信号拾取能力。    1 地震信号时域特征分析   由Sinc子波改进后得到的合成模型模拟实际地震记录,如图1所示。
[模拟电子]
ST微控制器获得EDN杂志2006年创新奖提名
中国,2007年2月7日 — 半导体制造商领先的创新者意法半导体(纽约证券交易所代码:STM)从数百家参选企业中脱颖而出,闯进本年度EDN创新者/创新奖的决赛阶段。ST的STR910F系列微控制器出现在本年微控制器/数字信号控制器的决赛名单上。EDN一年一度的创新奖始创于1990年,授予对象是杰出的电子产品和专业人员,评委是由全世界的工程师和工程管理者组成。 ST的STR910F是第一个在内置以太网接口和闪存及大容量SRAM内存的低价微控制器中引进性能强大的ARM9E处理器内核的微控制器解决方案。融高性能计算、数字信号处理、低功耗计算、大容量内存和多个系统跟踪及监控任务于一身,创新的单片概念取代了通常需要几个高价的IC的多片解决
[焦点新闻]
单片机练习 - DA转换
写DA转换比写AD转换容易多了, 继续参考了 数模转换DAC0832的应用 , 写了一个使用DAC0832的数模转换程序. DAC0832:DAC0832是8位全MOS中速D/A 转换器,采用R—2RT 形电阻解码网络,转换结果为一对差动电流输出,转换时间大约为1us。使用单电源+5V―+15V 供电。参考电压为-10V-+10V。在此我们直接选择+5V 作为参考电压。DAC0832 有三种工作方式:直通方式,单缓冲方式,双缓冲方式;在此我们选择直通的工作方式,将XFER WR2 CS 管脚全部接数字地。管脚8 接参考电压,在此我们接的参考电压是+5V。我们在控制P0口输出数据有规律的变化将可以产生三角波,锯齿波,梯型波等波形了。
[单片机]
<font color='red'>单片机</font>练习 - DA转换
简述STM32单片机开发中的RTOS
很多STM32单片机初学者都是从裸机开始的,裸机确实也能开发出好的产品。但是,作为一个嵌入式软件工程师,况且用的并不是51那种低端单片机,如果只会用裸机开发产品,那肯定是不够的。 要从裸机的思维转变到RTOS(Real Time Operating System)的思维,其实需要一个过程,而且开始的一段时间会很痛苦。但过一段时间理解了一些内容,能写一些Demo之后,你会发现其实RTOS也不难。 现在FreeRTOS在CubeMX工具中可以直接配置并使用,相当方便。 为什么需要RTOS 为什么我们需要RTOS?就像最开始学C编程时,老师告诉我们,指针很重要,那时你肯定有一个大的疑问,指针到底有什么好? 心里一直犯嘀咕着:不用
[单片机]
基于STC89C55RD+单片机的LED点阵显示系统的设计
  1 引言   在车站、商场、学校等一些需要发布多变的实时信息或进行广告宣传的场所,黑板、纸张或是霓虹灯广告牌这些传统的媒介手段,不论是在显示效果还是可修改性上都已无法满足当前的需求。而 LED点阵显示屏具有耗电省、成本低、寿命长、占用空间小以及能够实时显示等特点,而且显示内容的信息量大,用户可随时任意自行编辑修改显示内容,因此,近年来已得到了广泛应用。   2 总体设计   系统采用了上位机——下位机的结构构建,上位机为 PC机,通过串行通信接口与下位机显示系统进行通信 ,以实现对显示内容的实时擦除、更新等操作;下位机系统主要包括单片机控制电路和显示电路两部分,汉字显示采用 16x16点阵模式,通过单片机的控制,实现字符
[电源管理]
基于STC89C55RD+<font color='red'>单片机</font>的LED点阵显示系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved