SM2965MCU及其在系统编程中的应用
扫描二维码
随时随地手机看文章
1 引言
在系统中编程(ISP)技术的出现是对传统编程方法的突破,它是指在用户设计的微控制器系统中为配置新的系统功能对器件进行重新编程的技术,在线将程序代码(固件)下载到程序存储器中。继SST公司推出具备ISP功能的FlashFlex51 [1]系列微控制器之后,PHILISPS、WINBOND、LG、ATMEL、SynCMOS等公司相继推出具备ISP/IAP (In-Application Programming)功能的51系列微控制器[2]。这些器件的性能增强还表现在:(1)内部ROM采用Flash存储器,容量达到32~64k字节,内部RAM容量达到512~1024字节;(2)增加特殊功能寄存器,控制功能进一步增强;(3)内部配置看门狗定时器复位电路;(4)为降低 EMI可禁止ALE输出;(5)双DPTR指针等,这些功能使得微控制器外部扩展进一步简化,形成了真正的"单片"结构。在POS收费终端机中更换了SynCMOS公司的SM2965作为主处理器,不用修改硬件利用微控制器串行口即可方便地实现ISP功能。本文主要分析SM2965的ISP功能特点及在使用中的注意事项。
2 SM2965的特点
和标准的80C52相比,SM2965有以下特点: ①编程电压5V;②64k字节片内Flash存储器,分为128个页,每页512字节(包括实现ISP功能的下载程序空间);③实现ISP功能下载程序空间大小可设置为 N×200H(N=0~8); ④256字节的片内RAM+768字节的片内扩展RAM(ERAM);⑤看门狗定时器;⑥对PLCC和QFP封装型号增加了P4口:P4.0~P4.3;⑦为降低EMI,无必要时可禁止ALE信号输出;⑧复位后硬件检测程序存储器空间0000H地址如为空(即#0FFH),则自动跳到ISP功能程序入口地址。
3 SM2965存储器结构
3.1 程序存储器
SM2965内部集成了64k字节的Flash存储器作为程序存储器,地址范围为0000H~0FFFFH,用于存放执行用户程序的应用程序和执行ISP功能的下载程序两部分内容。
执行ISP功能的下载程序空间最大可配置到4K 字节,空间大小=N×200H字节,N=0表示不配置下载程序,64K字节Flash 存储器全部用于应用程序;N=1表示0FE00H~0FFFFH共有200H个字节配置给下载程序空间使用,从0000H~FDFFH供应用程序使用; N=8表示下载程序空间达到最大配置,为4K字节。N 的大小只能通过商用编程器配置,一旦在编程器上配置为 N≠0,在系统中无法改变ISP空间的配置。SM2965程序空间组成如图1所示。 0FFFFH-(N×200H)为下载程序的入口地址。
3.2 数据存储器
SM2956在标准的80C52内核的基础上,增加了8个特殊功能寄存器,用于实现SM2965增加的功能和768字节的片内扩展数据存储器Expanded Ram(ERAM),使片内数据存储器总容量达到1K字节。数据存储器组成如图2。SM2965增加的特殊功能寄存器[3]见表1。
4 与ISP功能有关的特殊功能寄存器
4.1 ISP特殊功能寄存器介绍
与ISP功能有关的特殊功能寄存器有FAH、 FAL、FDAT、SCONF和FCR,其中FAH×256+FAL为编程状态下的目标地址,FDAT为编程数据。
SCONF为系统控制寄存器,SCONF中的位2 与ISP功能有关,SCONF各位定义如下:
WDR R R R R ISPE OME ALE1
MSB LSB
SCONF的3~6位保留未用,SCONF复位状态为00000010B。
WDR:看门狗定时器溢出位;
OME:片内扩展数据存储器ERAM选择位,1 选择片内,0 选择片外;
ALEI:ALE输出禁止位;
ISPE:为ISP功能总允许/禁止位,为1允许,为0禁止。ISPE设置为0,将屏蔽全部ISP功能。在执行应用程序时将ISPE=0可有效防止Flash存储器内容被非法改写。
Flash控制寄存器FCR在编程时起关键作用,其各位定义如下:
MSB LSB
其中FCR的2~6位保留未用,FCR复位状态为00000000B。
START:ISP功能启动位;
START=1,启动ISP功能,具体功能由F1、 F0决定;START=0,无ISP操作。
在START位置1后,SM2965硬件自动锁存地址和数据并获得程序指针控制权直到ISP功能结束,START自动复位为0。下载程序中无须检查 START的状态。
F1~F0 ISP功能选择位
F1F0 ISP功能
00 字节编程
01 芯片写保护
10 页面擦除
11 整片擦除
Flash存储器的一个页面为200H字节。执行ISP 功能,需要指定Flash存储器地址;执行字节编程功能,Flash存储器地址为编程字节的目标地址;执行页面擦除功能,该地址为该页面内任一地址;执行整片擦除和芯片写保护,则为0000H~0FFFFH 范围内任一地址;执行整片擦除,SM2965将擦除ISP下载程序空间外的所有Flash存储器;执行芯片写保护功能,SM2965存储器读出内容全部为"00H"。
4.2 ISP特殊功能寄存器使用举例
例1:字节编程,#2CH编程到地址2005H
MOV SCONF, #04H ;开放全部ISP功能
MOV FAH, #20H ;目标地址高地址20H
MOV FAL, #05H ;目标地址低地址 05H
MOV FDAT, #2CH ;写入数据:2CH
MOV FCON, #80H ;设置START位为1,启动字节编程功能,将22H固化到1005H,ISP功能结束后,START自动复位为0,PC指向下一条指令
例2:擦除Flash页面,如擦除253CH地址所对应的页面
以512字节为一页,253CH处于页面地址范围为2400H~25FFH,执行下面程序后,该页面全部写成#0FFH。
MOV SCONF, #04H ;开放全部ISP功能
MOV FAH, #25H ;目标地址高地址25H或24H
MOV FAL, #3CH ;目标地址低地址3CH或任意
MOV FDAT, #00H ;写入数据:00H或任意
MOV FCON, #82H ;设置START位为1,启动页面擦除功能。ISP功能结束后,START自动复位为0,PC指向下一条指令
5 应用中的问题
SM2965的ISP开发灵活方便,硬件上不需要任何辅助配件,应用系统线路无须做任何变动,可由设计者自定义任何编程通信协议,经计算机或简单工具通过任何I/O口或UART口送入SM2965中,不像其它具有ISP的MCU那样必须针对特定的管脚和特殊的TIMMING协议才能实现。但在不同应用中仍需注意以下几点:
(1)SM2965程序空间可分为执行ISP功能的下载程序和执行用户程序的应用程序两部分,下载程序空间的大小可在商用编程器上配置,一旦配置被写入,下载程序在系统应用中将保持不变。下载程序空间最大可配置到4 kB,该空间除存放下载程序外,还应将固定的应用程序(如主监控程序)也放在该空间内,而把需要频繁更新的应用程序放在在线可编程的应用程序空间中。
(2)对于在应用系统中仅更新部分应用程序的情况,如改变系统运行时的一些重要参数或者把SM2965的Flash当作EEPROM使用,则在系统中不可以执行芯片写保护和整片擦除功能。这时芯片内的应用程序是可通过编程器读出的。为了防止非法读取,这些重要参数可通过加密算法(如DES密码算法)形成密文后再存储到应用程序空间,应用中通过下载程序空间(读不出)的密码算法和密钥将密文还原为明文。
(3)对于在应用系统中更新全部应用程序的情况,则要注意Flash空间0000H地址的代码写入顺序的问题,这是因为SM2965芯片复位后硬件检测Flash空间0000H地址如为空(即#0FFH),则自动跳到下载程序的入口地址,否则从0000H地址执行应用程序。所以对于更新全部应用程序时,在下载程序中首先执行整片擦除,然后开始从第1页即0200H地址编程,最后编程第0页,从0001H地址开始,所有地址编程全部确认(CRC校验)无误时,再编程0000H地址。
(4)用主机进行远程下载更新程序时,为了解决干扰产生的误码问题,可把应用程序代码分为若干个短数据包,每个数据包带有CRC,下载程序应首先把数据包存入缓冲区,对CRC判断正确后再进行编程。
(5)在执行下载程序前,如果启动了SM2965 内部的看门狗定时器,在下载程序中应首先禁止看门狗定时器,以防止硬件复位造成下载失败。
(6)对于更新全部应用程序的情况,下载完毕后建议通过硬件看门狗复位启动系统,而不要使用跳转指令。
出现开始使用SM2965时,经常会出现下载失败,要通过商用编程器重新编程SM2965的问题,采取上述措施后,近两年来未发生一例下载失败的现象。