版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十六章
08系列MCU编程器的开发主要内容
编程器技术基础
HC08系列MCU编程器的实现方法
HC08系列MCU编程器实例HCS08系列MCU编程器原理《嵌入式应用技术基础教程》课件116.1编程器技术基础在线编程系统是有用户程序驻留在MCU中,在这些用户程序的支持下,向MCU中写入程序,其实质是一种用户模式下的写Flash操作,这种方法对嵌入式系统的开发和调试带来极大方便。
编程器是向MCU中写入程序,写入的结果是FLASH中仅有当前写入的用户程序,而不包含其他的用户程序。《嵌入式应用技术基础教程》课件216.1.1HC08系列MCU的监控模式
HC08系列MCU可以工作在两种模式:用户模式和监控模式。用户模式是MCU上电复位后,转向复位矢量所指向的地址,执行Flash中的用户程序。监控模式是MCU在上电复位后,执行监控ROM中的程序。当复位矢量为“空”($FF)时,MCU会自动进入监控模式;当复位矢量不空时,MCU需要一定的条件才可以进入监控模式。下表列举了MC68HC908GP32进入监控模式的不同方式及各种方式所需条件。《嵌入式应用技术基础教程》课件方式IRQRESET复位矢量PTC0PTC1PTC3PTA0PTA7外部时钟[2]1VTST[1]VDD或VTST任意100104.9152MHz2VTSTVDD或VTST任意101109.8304MHz3VDDVDD$FF任意任意任意109.8304MHz4GNDVDD$FF任意任意任意1032.768KHz316.1.2HC08系列MCU的监控ROM程序(1)基本的ROM程序模块HC08系列MCU出厂时,Flash区包含了字节数不同的监控ROM程序。监控ROM程序包含了HC08系列所共有的基本子程序,这些子程序有如下功能:①通过一个I/O引脚接收一个字节数据②通过一个I/O引脚发送一个字节数据③读内存或Flash区中的一个字节数据④写内存中的一个字节数据⑤连续读内存或Flash中两个字节数据⑥连续写内存中的两个字节数据⑦读堆栈指针⑧运行指定位置的程序《嵌入式应用技术基础教程》课件4(2)特有的ROM程序模块HC08系列MCU内存容量相差比较大,MC68HC08AZ60的内存有1024字节,而MC68HC908JL3只有128字节。为了方便内存较小的MCU的Flash程序写入,厂商在这些MCU的ROM程序中加入特有的ROM程序模块:Flash整体擦除、页擦除和写入子程序,并公布了调用时的入口参数(页擦除的所在页、写入的数据及写入的地址、延时参数等)及子程序的地址。所以不同MCU的ROM程序大小也是不同的。下表是几种擦写子程序的入口地址及参数存放地址。《嵌入式应用技术基础教程》课件516.1.3HC08系列MCU在监控模式下的工作过程(1)与主机通信的数据格式当MCU上电复位时,如果满足进入监控模式的条件,MCU就会工作于监控模式。监控模式下MCU主要是通过某个特定的I/O口(如:GP32是PTA0,JL3是PTB0),以标准不归零(NRZ)的数据格式进行数据通信,具体为:第一位起始位(0),随后为8个数据位(低位在前,高位在后),最后一位为停止位(1)。NRZ的数据格式如下图所示。《嵌入式应用技术基础教程》课件Bit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7StartStop6(2)监控模式的工作过程MCU在进入监控模式时,需要接收8字节的保密字节,如果是空白芯片,则8字节的保密字节全是$FF,然后就处于等待接收一个命令字节状态。以GP32为例,进入监控模式的时序如下图所示。《嵌入式应用技术基础教程》课件4096+32CGMXCLK
CYCLES24BUS
CYCLES256
BUS
CYCLES(最少)···BYTE1BYTE2BYTE8COMMAND来自主机的数据MCU发送的数据BYTE1ECHOBYTE2ECHOBYTE8ECHOBREAKCOMMANDECHO1411412注:1等待回复延时,2位的延时时间2数据返回延时,2位的延时时间4发送下一个字节前的1位延时时间VDDRSTPTA7PTA07(3)监控模式的矢量表在监控模式下,复位、软中断和Break中断矢量表有所改变。下表反应了监控模式和用户模式的矢量表的差别。《嵌入式应用技术基础教程》课件模式复位矢量BreakSWI高字节低字节高字节低字节高字节低字节用户$FFFE$FFFF$FFFC$FFFD$FFFC$FFFD监控$FEFE$FEFF$FEFC$FEFD$FEFC$FEFD816.1.4HC08系列MCU的监控命令MCU通过特定的I/O口接收主机发送的字节数据,判断是否是监控命令,如果是,执行相应的动作。监控命令共有6条,每条监控命令由操作码和操作数组成。下表1列出了各条监控命令的格式和功能。《嵌入式应用技术基础教程》课件命令格式功能READ$4A$4A高字节高字节低字节低字节数据读出指定单元内容(RAM或Flash)WRITE$49$49高字节高字节低字节低字节数据数据向指定单元写数据(RAM)IREAD$1A$1A数据数据读取上次访问的地址+1、+2处的内容(RAM或Flash)IWRITE$19$19数据数据向上次访问的地址+1处写入一个数据(RAM)READSP$0C$0C数据数据读堆栈指针高字节和低字节RUN$28$28执行RTI指令返回9InOutPC主机特定I/O目标MCUMAX23278910MC74HC12526153VDD(a)编程器内部器件连接图
VDDI/O口7891012346523OutInPC串行口MAX
23274HC125目标MCU(b)编程器原理图10KΩ16.2HC08系列MCU编程器的实现方法16.2.1HC08编程器硬件设计方案方案一:采用Freescale公司技术手册中的监控模式编程电路图。
《嵌入式应用技术基础教程》课件10方案二:“基板-适配器”《嵌入式应用技术基础教程》课件主控MCU目标MCU基板晶体振荡电路适配器晶体振荡电路PC接口电路电平转换及高压产生电路外围电路基
板适配器电源控制电路1116.2.2HC08编程器软件设计思想《嵌入式应用技术基础教程》课件实现空白芯片写入的软件设计思想是:①被写入的目标MCU工作于监控模式。②主机将擦写FLASH程序的二进制代码以及要写入的数据写入目标MCU的内存区。③主机向目标MCU发送RUN监控命令,运行第②步写入目标MCU内存区的程序。在这3步的执行过程中,第2步写入目标MCU内存的程序设计有一定难度。需要综合考虑内存分配、子程序调用的参数传递方法、程序执行完成后如何返回监控状态(等待接收字节状态),完成其他页面的写入操作等问题。返回1216.3HC08系列MCU编程器实例本实例的主控MCU选用MC68HC908GP32(简称GP32),目标MCU选用MC68HC908JB8(简称JB8)。16.3.1硬件设计(1)基板基板选用SD-1在线编程系统中的实验板,实验板上提供的WFLASH接口,可以直接连接适配器,接口如下图。WFLASH接口提供了VCC、GND、PTD0~PTD4、V+。其中V+是MAX232芯片第2脚输出的9V高压。《嵌入式应用技术基础教程》课件VCCGNDPTD1PTD0PTD2PTD3PTD4V+VCCGNDWFLASH接口13(2)适配器板本实例中目标MCU是JB8,也就是通过GP32向JB8中写入程序,因此在适配器板中要保证JB8进入监控模式。JB8进入监控的方式有三种:《嵌入式应用技术基础教程》课件方式IRQ复位矢量PTA3PTA2PTA1PTA0外部时钟说明1VTST任意00113MHz高压方式进入监控模式,PTA0口以9600bps速率通信2VTST任意10116MHz3VDD$FF任意任意任意16MHz低压方式进入监控模式,复位矢量区必须为$FF14JB8适配器板原理图
《嵌入式应用技术基础教程》课件适配器电源控制电路PNPT1NPNT21K5KVCC10K100PTD1VINVINPTD0RBX1C1C2地线VINVINVINJB8监控模式外围电路PTA0PTA1PTA2PTA3VDDVSSOSC2OSC1IRQV+10K10K10K10K10KVIN1516.3.2主控MCU发送和接收一个字节子程序发送一个字节子程序如下:Send1Byte:BSET0,OutPortS;输出口0脚定义为输出BSET0,OutPort;令输出口0脚为高电平JSRDelayBitTime;246个周期JSRDelayBitTime;246个周期;①发送起始位BCLR0,PTD;起始位JSRDelayBitTime;246个周期NOP;1个周期NOP;1个周期NOP;1个周期NOP;1个周期LDX#$08;2个周期Send1Byte0:RORA;1个周期BCCSend1Byte1;3个周期;②发送数据位,高电平BSET0,PTD;4个周期BRASend1Byte2;3个周期Send1Byte1:;③发送数据位,低电平BCLR0,PTD;4个周期NOP;1个周期NOP;1个周期NOP;1个周期Send1Byte2:JSRDelayBitTime;246个周期DBNZXSend1Byte0;3个周期BSET0,PTD;停止位JSRDelayBitTime;246个周期RTS《嵌入式应用技术基础教程》课件16接受一个字节子程序如下:Receive1Byte:BCLR0,OutPortS;输出口0脚定义为输入BRSET0,PTD,*;等待起始位;①等待起始位接收时间NOP;1个周期NOP;1个周期NOP;1个周期NOP;1个周期NOP;1个周期NOP;1个周期NOP;1个周期LDX#!08;2个周期CLRA;1个周期Receive1Byte0:JSRDelayBitTime;246个周期
BRSET0,PTD,Receive1;开始接收1位;②接收一个数据位,低电平CLC;1个周期BRAReceive2;3个周期Receive1:;③接收一个数据位,高电平SEC;1个周期NOP;1个周期NOP;1个周期NOP;1个周期Receive2:RORA;1个周期NOP;1个周期NOP;1个周期DBNZXReceive1Byte0;3个周期RTS
《嵌入式应用技术基础教程》课件1716.3.3主控MCU发送保密字节目标MCU进入监控状态以后则开始等待接收8个保密字节。若接收到的8个字节与Flash中存放保密字节的单元($FFF6~$FFFD)内容相匹配,则将其RAM区的第一个字节的第6位置为1(此时该字节通常为$7F),否则置为0(此时该字节通常为$3F)。但是,不管密码验证是否成功,目标MCU总能接受基板GP32发送来的监控命令,只是在密码不匹配的情况下,通过READ或IREAD命令读取Flash的操作失败,表现为数据异常。对于空白芯片,密码为8个$FF。《嵌入式应用技术基础教程》课件1816.3.4发送监控命令MCU有6个监控命令Read、Write、IRead、IWrite、Readsp、Run。主控MCU在不同情况下对目标MCU发送相应的监控命令,让目标MCU执行相应操作。(1)发送READ命令【子程序名】:Read1Byte【入口参数】:AddrH--待读地址高字节,AddrL--待读地址低字节【出口参数】:A--读出的数据《嵌入式应用技术基础教程》课件LDAAddrLJSRSend1Byte;发送低字节JSRReceive1Byte;接收回应JSRReceive1Byte;接收命令的;执行结果LDA#$4AJSRSend1Byte;发送命令字JSRReceive1Byte;接收回应LDAAddrHJSRSend1Byte;发送高字节JSRReceive1Byte;接收回应19(2)发送WRITE命令【子程序名】:Write1Byte【入口参数】:AddrH--待读地址高字节,AddrL--待读地址低字节;A--待写入的数据【出口参数】:无【关键代码】:《嵌入式应用技术基础教程》课件JSRSend1Byte ;发送低字节JSRReceive1Byte;接收回应PULAJSRSend1Byte ;发送数据JSRReceive1Byte;接收回应PSHALDA#$49JSRSend1Byte;发送命令字JSRReceive1Byte;接收回应LDAAddrHJSRSend1Byte;发送高字节JSRReceive1Byte;接收回应LDAAddrL20(3)发送IWRITE命令【子程序名】:IWrite1Byte【入口参数】:A--待写入的数据【出口参数】:无【关键代码】:
PSHALDA#$19JSRSend1Byte;发送命令字JSRReceive1Byte;接收回应PULAJSRSend1Byte ;发送数据JSRReceive1Byte;接收回应《嵌入式应用技术基础教程》课件(4)发送RUN命令【子程序名】:RUN【入口参数】:无【出口参数】:无【关键代码】:LDA#$28JSRSend1Byte;发送命令字JSRReceive1Byte;接收回应2116.3.5针对目标芯片JB8的编程(1)JB8的整体擦除对目标MCU的Flash进行整体擦除(包括矢量页)。虽然目标芯片JB8的监控ROM中包含整体擦除的例行程序,但考虑到有的芯片没有,可以不使用内部ROM中的整体擦除程序(后面的写入程序也是如此)。根据JB8“整体擦除操作”步骤编写了整体擦除子程序。(2)JB8的页写入根据JB8的“向Flash写入一页数据”的操作步骤编写了页写入子程序。本程序入口时$00A0和$00A1中存放的是某页中需要写入数据的首地址(可以不是页首地址)。每次需要写入的数据必须在同一页范围中,页大小为64字节。JB8的FLASH起始地址为$DC00。《嵌入式应用技术基础教程》课件2216.3.6基板中主控MCU的编程(1)主流程《嵌入式应用技术基础教程》课件主控MCU初始化从PC机接收8个保密字节及命令字节给适配器上电发送8个保密字节收到命令99收到命令100调整体擦除目标MCU子程序调页写入目标MCU子程序是是否否23(2)整体擦除目标MCU子程序(3)写目标MCU子程序《嵌入式应用技术基础教程》课件接收PC机发来的总页数PageNumPageNum=0?返回是否写目标MCU子程序流程图将页写入子程序的二进制代码送往JB8的$41开始的内存区接收PC机发来的页数据内容,暂存于PageBuffer中将页数据内容发送到JB8的$A0开始的内存区发送运行监控命令RUN,写入当前页PageNum减1页写入程序目标代码(共89个字节)适配器RAM分配……高字节低字节数据个数N数据1$0041$00A0$0040标志字节$00A1$00A2$00A3数据N$00A3+N-1(≤$00E2)返回2416.4HCS08系列MCU编程器原理16.4.1两种系列MCU的结构差异
以HC08系列的MC68HC908GP32和HCS系列的MC9S08GB60为例,下表描述了在实现编程器时有关的结构差异。《嵌入式应用技术基础教程》课件比较项目MC68HC908GP32MC68HC908GB60工作模式监控模式激活的背景工作模式接口1个I/O口BKGD引脚通信控制ROM程序DBC和DBG数据通信格式NRZ自定义的串行通信协议命令字节6个监控命令30个BDC命令2516.4.2激活的背景工作模式在激活的背景工作模式(Activebackgroundmode)下,可以很方便地实现HCS08系列MCU的擦写FLASH,也提供程序的调试功能。该模式由HCS08内核中的BDC(BackgroundDebugController)来管理,BDC和片上调试模块(DBG)下共同完成调试功能。在这种工作模式下,CPU处于等待接收一个命令状态,类似于GP32工作在监控状态时等待接收一个字节的状态。进入激活的背景工作模式有五种途径:①在MCU复位信号的上升沿,BKGD/MS引脚低电平。在实现编程器时通常使用这种方法。②从BKGD引脚收到BACKGROUND命令。③执行BGND指令。④遇到BDC断点。⑤遇到DBG断点。《嵌入式应用技术基础教程》课件2616.4.3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 便携式空调器产品供应链分析
- 广告设计专业实习报告
- 电动滑板车电动车辆项目运营指导方案
- 典当行业相关项目经营管理报告
- 工业废气污染控制用催化焚烧炉产业链招商引资的调研报告
- 幼儿和婴儿用次性游泳尿裤产品供应链分析
- 血液分析仪器市场分析及投资价值研究报告
- 女士香水产业链招商引资的调研报告
- 仓库出租行业经营分析报告
- 纱线拉伸机产品供应链分析
- 2024年时事政治考点大全(173条)
- 生鲜猪肉销售合同模板
- 2024年经济师考试-中级经济师考试近5年真题集锦(频考类试题)带答案
- 阳光心理激昂青春
- 医疗器械质量方针和目标管理制度
- 2024年医院医疗质量管理与考核细则例文(三篇)
- 山东省第五届财会知识大赛试题及答案
- 北京市城管执法行政处罚裁量区域分类管理台帐
- 5.1+走近老师(课件)2024-2025学年七年级道德与法治上册
- 退役军人事务员职业技能理论考试复习题及答案
- 广东省深圳市龙华区2024-2025学年二年级上学期学科素养课堂提升练习语文试卷
评论
0/150
提交评论