代写职称论文网专业从事代写职称论文,代写毕业论文,代写代发职称论文,职称论文代写等业务,支持淘宝网支付宝付款!
您当前的位置:代写职称论文网 -> 理工论文 -> 理科论文 -> 论文内容
热门文章
· 价格标准
· 联系方式
· 付款方式
· 11月9日 最新CNKI中..
· 论隐私权的立法保护..
· 进入CNKI的方法
· 可长期使用维普免费..
· 代写论文网提供2008..
· 2008年4月9日免费维..
· 2008年03月5日免费账..
相关文章
· 基于离散Hopfield 神..
· 一种基于脉动阵列和..
· 基于消防安全通道合..
· 一种基于路径规划的..
· 一种基于惯性力与摩..
· 基于信任模糊综合评..
· 基于宏块内部信息复..
· 一种基于语义概念相..
· 基于基本权利的请求..
· 配偶权是基于配偶身..
硕士、博士代写论文
代写职称论文版权归你
代写职称论文服务放心
硕士以上代写论文
发表CN省级以上刊物
代写论文,保证出刊
代写论文,联系方式
代写论文,招聘写手
我站的联系方式
基于P89V51RD2 的IAP 的设计与实现
作者:本站  来源:代写论文  发布时间:2008-3-22 11:20:42  发布人:guo8130

减小字体 增大字体


1. 引言
单片机自1972 年问世以来不断从工业
测控对象、环境、接口特点出发增强控制功
能、提高工业环境下的可靠性。它本身的诸
多优点如品种多样、型号繁多,使系统开发
者有很大的选择自由;性能好,容量大,工
作频率高,为使用嵌入式高级语言创造了硬
件平台;控制功能强,功耗低,应用软件配
套,使用户开发单片机应用系统时更快捷、
方便;因此,当今市场上的电子应用产品以
单片机为微控制器仍然是主流,但长期以
来,现场硬件产品软件的维护、升级都是十
分困难的,通常需要人工在现场拆卸机器来
更换灌装了新程序的芯片,浪费了大量时
间、人力、物力。笔者提出一款PHILIPS 公
司内核基于8 位80C51 单片机的派生产品,
这款芯片能满足市场上大多数应用产品的
技术要求,是单片机内的姣姣者,它自带的
IAP 功能使得带有JTAG接口的16 位单片机
优势大减。下面就从设计开发者的角度来详
细剖析其特色编程功能----IAP 及IAP 的实
现。
2. P89V51RD2 微处理器
P89V51RD2 是一款带有64KB 程序
FLASH 和1KB 数据RAM 的80C51 微控制
器。其最显著的特点是ISP ( In-System
Programming,在系统可编程)功能和IAP
(In-Application Programming,在应用可编
程)功能。ISP 指不取下印制电路板上的器
件可以编程写入最终用户目标代码,已经编
程的器件也可以用ISP 方式擦除或再编程。
IAP 指微处理器可以在系统中通过对自己重
新编程获取新代码,即可用程序来升级程
序。PHILIPS 公司在芯片上免费提供了Boot
ROM 固件, 并且巧妙地解决了固件和
FLASH 的地址覆盖问题及一些具体实现细
节问题,使它们的实现变得简单而现成,并
使ISP/IAP 技术得以推广[1]。
P89V51RD2 片内实际上有两块FLASH
存储器,一块是用户FLASH(64KB),称
作BLOCK0;另一块是引导FLASH(8 KB),
称作BLOCK1。如图1 P89V51RD2 的
FLASH 结构。64KB 用户FLASH 存储器分
为512 个扇区,每个扇区128 字节,IAP 功
能按照扇区擦除用户FLASH;按照字节编
程用户FLASH。引导FLASH 块的地址与用
户FLASH块的前8KB 地址重叠,但不冲突,
实际上位于不同的物理空间 [2]。引导块的
程序用户可以修改以满足设计需要。
FCF=1 FCF=0
8K
64K BLOCK1
BLOCK0
图1 P89V51RD2 的FLASH 结构
引导FLASH
用户FLASH

3. IAP 功能实现设计
3.1 设计要点
产品概要设计阶段,对其核心技术难点
的预估计、预分析是必要的,提出可行性分
析报告,请专家组进行方案论证,以求降低
产品研制失败的风险。P89V51RD2 的IAP
功能子程序都是封装好的,用户正确调用子
程序,方案评审前攻关关键点,就可轻松实
现IAP 功能,详细设计阶段需要关注以下四
点:第一、调用IAP 子程序的调用点必须在
2000H 地址之后,由于调用期间,8KB 的引
导FLASH 会映射到用户FLASH 的
0000H∽1FFFH,原来用户程序存储空间的
0000H∽1FFFH 空间会被屏蔽掉。第二、关
闭所有中断,由于中断向量的入口地址在前
8KB,若正在执行IAP 子程序,恰好发生中
断,程序会转到引导FLASH 的相应地址处
执行,结果找不到期望的中断服务程序,将
造成严重的后果。第三、调用前,需要设置
FCF 寄存器的FCF.0(BSEL 位)为0 才能
访问IAP 程序,在访问结束后,要对FCF.0
(BSEL 位)置1 退出IAP 操作。第四、监
控主程序的所有代码要定义在下装程序尾
地址之后,否则和下装程序的地址空间交叉
或超前,都给IAP 的实现带来困难,若不小
心,误擦除了下装程序本身,将导致程序运
行不正常,给调试增加麻烦。
3.2 功能描述
产品在市场需求分析时,将其要实现的
功能应尽量考虑全面,根据用户反馈、现场
场景设计合理的操作步骤、状态显示等。文
中提到的IAP 的实现,针对系统工作环境、
产品维护人员反馈、及设计人员对给产品编
程、升级开发的经验提出按照以下步骤进行
IAP。下位监控程序可通过某种方式进入
IAP 下装状态,例如可采用顺序或组合按键,
这种方式不会误动进入IAP,可保证下装不
会对系统运行造成影响,但下装需要人工参
与;也可采用其它如通讯方式,虽程序设计
稍复杂,但下装过程方便省时,设计者根据
产品现场环境、软硬资源,来选择适合自己
系统的方案。进入IAP 后有相应状态提示,
一个优秀的产品软件设计者,编写代码时,
应该首先考虑到状态提示对产品调试、维
护、跟踪的重要性(不影响产品功能的前提
下),否则一旦出现故障,定位、解决问题
就会很困难,其可以利用系统的扩展硬件资
源如二极管、数码管、液晶、蜂鸣器、喇叭
等来实现。提示完毕等待响应上位下发命
令;这里需要强调一点,在系统进入测试、
下装、设置等的系统非正常运行状态时,要
考虑设计超时退出机制,不要造成机器假死
机,给设计者带来额外的负担。最后,运行
上位下装应用程序,调入合法的hex 文件,
按照向导一步一步操作,每一步下位都有应
答,直到提示程序下装结束。重启硬件系统,
进入正常工作状态。
3.3 软件设计
3.3.1 上位PC 下装应用程序
采用VB 或者Dephil 语言开发下装小应
用程序,鉴于系统产品研发周期限制及应用
程序自身的功能要求,用上述两种易学、界
面编程容易的语言实现是非常合理的。开发
过程中要处理好HEX 文件合法性的校验、
与下位机的通信协议、界面设计等问题,这
种概要设计和流程图绘制在代码编写之前
是必须进行的,不致于后期详细设计时,造
成程序先天缺陷,如功能缺失、操作不符合
现场实际情况等弊病,尤其初级编程者更应
注意这一点。
(1)HEX 文件检验,包括地址连续性检
查,确保HEX 原始文件记录数目完整;数
据内容正确性检查,计算每条记录的校验
和,确保下发的每条记录正确无误。这是系
统程序下装后运行正常的前提,要下装的文
件必须从源头上把关或保证正确,否则,经
过线路传输后的数据就没有什么保障了,那
系统运行的正常与否更无从谈起。开发应用
程序,不论是复杂系统还是简单一点的,项

目组成员都应认真努力作好自己模块内的
单元测试,设计单元测试用例,通过测试来
发现模块内的错误和缺陷,提交测试报告,
这样在模块集成或连调时少出问题,应用层
的错误有可能是底层模块缺陷的爆露,可见
单元测试很关键。另外集成测试也至关重
要,这一测试阶段发现BUG 越多,意味着
将来现场产品问题会相对少,产品质量才会
有保障,可见质量和开发者的每一步设计息
息相关,因此,参阅HEX 文件格式相关文
献先作好第一步。
(2)采用点对点通信,数据格式为:
身份号 数据长度 命令字 数据内容 校验
其中除数据内容占若干字节、校验占2 个字
节外,其余各占一个字节;数据长度指数据
内容的长度,不包括身份号、命令字、校验;
下位收到信息立即应答,上位据此判断进入
等待状态还是命令重发,或重发3 次后退出。
这个简单的典型协议定义是由于IAP 本身
功能要求单一,经大量现场验证,通讯运行
工作时安全、可靠。数据格式通常随总线方
式而不同,如CAN 总线数据帧格式[4]:
标识符 数据长度 数据内容
其中数据长度为0 到8 个字节,标识符长度
11 位,最高7 位不应全为1,也就是所谓的
目标地址和源地址,即数据传递流向;I2C
总线数据格式[5]:
启动 从地址 读/写 应答 数据 应答 停止
其中启动、读/写、应答、停止各1 位,数
据1 字节,可数据、应答间隔发送多个数据。
一般在系统设计中,会涉及到芯片(MPU)
与芯片、部件与部件、整机与整机、还有整
机与PC 之间的通信,及PC 之间的网络通
信,工程技术人员应认识到错包、丢包情况
的发生是正常现象,关键点在于设计者如何
定义完善的协议来处理好这些异常,如文中
提到数据包加校验就是用来防止将错包解
析,采用重发机制来解决丢包问题,但这些
都是以牺牲通讯速度为代价的。由此可见,
系统通讯过程的可靠性通过完善协议能够
得到提高。另外,若下装的代码记录属于绝
对机密,不能明文下发,以防截取,协议还
应该制定相应的算法,采取密文方式下发,
确保程序的安全性,大多数应用产品没必要
考虑。由于串口易开发、易调试、是PC 机
的标准外设接口,所以采用RS232 串口点对
点通信。有经验的硬件工程师通常会作如下
考虑如芯片与芯片之间采用I2C 总线(可以
软件模拟或芯片自带I2C 接口)、串行、并
行口等方式通讯;部件与部件之间采用CAN
总线或I2C 总线(距离太长要加驱动器);
整机与整机之间可用有线或无线方式;整机
与PC 之间可直接用串口、或专门设计的
PCI、USB 通讯卡再转RS232 或者RS485
串口,所以通讯方式是根据系统功能设计要
求选择的。
(3)界面应友好、维护者易操作。下面
提供用以下五步实现IAP:
.. 第一步:正确读入HEX 文件
.. 第二步:设置身份号
.. 第三步:建立通信
.. 第四步:擦除芯片
.. 第五步:编程芯片
简单的5 步向导式操作其效率、安全性
极高,在连机情况下,不经过培训的维护人
员就能够完成。上位程序的严谨设计,下位
可采取开放式接收,通讯成功的机会大大提
高了,因此,整个系统设计质量好坏是离不
开上下位程序设计者的沟通与协作的。假如
采用下拉菜单式,不仅效率下降且使用者必
须参看操作说明,WINDOWS 操作系统之所
以成功占据了大块市场份额,与其友好、形
象、生动、交互的界面设计是分不开的,应
用程序设计者应在这方面引起重视 。

3.3.2 下位IAP 程序设计
下位IAP 功能实现不需要系统硬件电
路做改动,只修改系统监控源代码(调用下
装子程序)或者不在系统监控源代码中调用
下装子程序,开发一个独立的下装程序,处
理最终的HEX文件即将二者HEX文件按地
址合并成一个HEX 文件烧入或下装到芯片
中。由于监控程序代码改的地方越多,预示
测试工作量的加大和现场可能出现的问题
增多,使原本可靠的系统还需重新跟踪,无
形增加了系统的风险,这在产品设计中是不
提倡的,一旦产品定型,不影响大功能的错
误出现,尽量维持现状,在它的升级版本中
去修改,若不断消除BUG,产品将始终处
于不稳定状态,因此,不建议采用第一种(除
非新品开发)。本文在这里主要介绍第二种。
下位系统要进入IAP 下装状态,可通过
按键或者通讯等方式进入,设计时应将按键
值或者通讯命令字定义复杂一些,以免系统
误操作进入IAP 状态,影响系统正常功能的
使用。第一次下装的准备工作必须采取并行
编程将修改后的newload.hex 烧入
BLOCK1 , 最终系统HEX 文件烧入
BLOCK0。
引导程序的修改,可使用编程器读出原
始引导程序并存盘为oldload.hex,直接在编
程器缓冲窗口中将前三个字节修改为20 20
00,另存盘为newload.hex,这三字节机器码
对应的指令为ljmp 2000,这样可使程序启动
后直接从2000H 地址处执行以下两条语句

ORG 2000h
MOV FCF,#01h
LJMP 00h
跳过引导程序快速、可靠启动用户FLASH
代码。这里为了避免程序初始化过程太慢、
或复位进入其他模式如SOFTICE、ISP,所
以作了简单修改,若读者对引导固化程序感
兴趣,想动大手术满足设计要求,可用编程
器读出HEX 后反汇编来设计修改。将修改
过的NEWLOAD.HEX 文件去掉结束行后粘
到系统监控主程序HEX 文件的首地址处,
另存为一个HEX 文件,这就是最终带有IAP
功能的目标代码文件,无论编程器烧写还是
下装编程都调用合成后的HEX 文件。
BLOCK1 块的引导程序源代码
PHILIPS 公司没有公开,因此,IAP 对用户
FLASH 块的擦除、编程、读出操作无法仿
真调试,需借用编程器来检查擦除或编程的
结果,确保代码的正确性,通讯过程可用仿
真器调试。开发过程主要用到的工具有:
.. 润飞RF-2148PRT/RF-2148USB 或西尔特
SUPERPRO/L+编程器
.. 伟福仿真器E6000L
.. 伟福仿真头POD-H8×5×
.. RS232 串口线一根;
.. 具有IAP 功能的硬件产品机具;
.. 安装有上述应用软件的中档计算机;
下面给出已调试通过并现场运行良好
的对IAP 应用的三部分源代码 [3]:
(1)串口中断服务程序源代码:
ORG 0023h
PUSH ACC
MOV A,flag ;进入下装的标志
JNZ loadinterupt ;跳到下装的中
断服务
POP ACC
LJMP 2200h ;跳到主程序中断
服务
;----------------------------------------
ORG 0100h
loadsinterupt:
CLR RI
MOV A,SBUF
CJNE A,#SYNDATA,load_sreturn
MOV comflag ,#true ;准备接收
load_sreturn:
POP ACC
RETI
(2)IAP 编程实现的源代码
ORG 2010H
er_chip:
MOV DPH,#22h ;记录起

始地址
MOV DPL,#00h
er_loop:
LCALL ersblk
MOV A,DPL
ADD A,#80h
MOV DPL,A
CJNE A,#00h,er_loop ;循环按扇区
擦除
MOV A,DPH
INC A
MOV DPH,A
CJNE A,#0ffh,$+3+2
AJMP er_display
LJMP er_loop
er_display:
; 显示擦除结束,
RET
;-----------------------------------------
write_program:
MOV A,datarec
CJNE A,#01h,loop_ju ;编程结束
MOV R5,A
MOV A,datastart ;计算校验

ADD A,dataddrh
ADD A,dataddrl
CPL A
ADD A,R5
CJNE A,#0ffh,$+3
;显示编程结束
RET
loop_ju:
MOV A,dataddrh
CJNE A,#21h,$+3+2 ;地址是否合

AJMP $+2+3
LJMP judgeaddr
loop:
MOV R4,datalength
MOV data_length ,datalength
SETB RS0
MOV R0,#dataddrh
MOV A,datastart
MOV @R0,dataddrh
CLR RS0
loop_sum:
SETB RS0
ADD A,@R0
INC R0
CLR RS0
DEC R4
CJNE R4,#01,loop_sum
CJNE A,#00,$+3+2
AJMP $+2+3
LJMP looprx0;数据校验不合法,重新

MOV R4,datastart ;数据长度放
入R4
SETB RS0
MOV R0,#datahex ;每条HEX 记
录首地址
CLR RS0
MOV DPH,dataddrh
MOV DPL,dataddrl
Loop1:
SETB RS0
MOV A,@R0
CLR RS0
LCALL wrdata ;按照字节写入
LCALL rddata
SETB RS0
MOV @R0,A
INC R0
CLR RS0
INC DPTR
DEC R4
MOV A,R4
CJNE A,#00h,loop1
;显示一条记录编程成功
RET
judgeaddr:
JNC loop
;显示地址不合法
RET
(3) IAP 子函数的调用源代码
ERSBLK:
MOV FCF,#00h
MOV R1,#08H
LCALL PGM_MTP

MOV FCF,#01H
RET
WRDATA:
MOV FCF,#00h
MOV R1,#02H
LCALL PGM_MTP
MOV FCF,#01H
RET
RDDATA: ;READ OUT COMMENT IN A
REGISTER
MOV FCF,#00h
MOV R1,#03H
LCALL PGM_MTP
MOV FCF,#01H
RET
(4) 如图2 IAP 应用流程
http://www.paper.edu.cn
- 7 -
准备
串口初始化
判键值是否进
入IAP
Y
显示系统进入
IAP
进入系统主程序
初始化
判通讯?
发送通讯成功
并显示
判是否擦除?
发送正在擦除
是否擦除
完成?
发送擦除成功
并显示
判是否编
程最后一条记录?
发送编程结束
并显示
Y
Y
Y
N
Y
发送正在编程
编程
判一条记录是
否编程结束
发送编程成功
并显示
N
Y
N
N
N
N
擦除
图2 IAP 应用流程
http://www.paper.edu.cn
- 8 -
4. 各种编程方法比较
4.1 ISP 实现简介
ISP 固化程序位于引导FLASH 的8K 中,
ISP 通过固件与外部硬件电路相结合、采用
RS232 串口实现远程编程。ISP 使用芯片的
5 个管脚(VDD、GND、TXD、RXD、RST),
主要由RS232 通信电路, 5V 电源和
11.0592M 晶振组成.MAX232 芯片负责实现
单片机和PC机之间的联机通信,用户可通过
RS232 接口直接进行ISP 操作,方便用户程
序下载运行; ISP 允许适应宽范围的振荡频
率,可以通过检测接收一个字元的时间来实
现根据基于振荡频率的计时器计数可以编
程波特率,ISP 操作时需要传送一个初始字
元大写字母U 到P89V51RD2 以确定串列
传输速率。ISP 固件能在接收到字元后自动
回应,当完成了串列传输速率初始化,ISP 固
件将只接收Intel 十六进位格式的记录,Intel
十六进制记录由ASCII 字元组成,编译器
连接生成的文件有直接是这种格式的,若不
能生成此格式,可用相关程序转换,如
Tasking 编译器生成后缀为.O51 文件,那可
用OH51.EXE 将其转换。
上位机应用程序直接从该网址下载

运行后界面如图3:
图 3 FlashMagic 主界面
硬件系统复位时,点击FlashMagic 应用程序
ISP 菜单命令则进入ISP 编程状态,其功能
强大,包括分区擦除、整片擦除、分区编程、
加密保护、芯片时钟改写可与并行编程功能
可相媲美。
4.2 并行编程简介
使用润飞RF-2148PRT/RF-2148USB 或西尔特
SUPERPRO/L+编程器(需网上将软件升级)
来实现对芯片的并行编程,只要编程器接上
并口数据线缆、电源线,运行上位驱动程序,
即能够开始编程,操作简单,可用其来编程
的芯片种类繁多,管脚特殊芯片可加转接头
实现并行编程。
总上所述,我们对三种编程方式有了深
刻认识,并行编程容易将芯片插错位,需要
拆卸机器;但速度快,产品研发时硬件、软
件设计不用考虑编程,提供高速分组页编
程,节省编程花费和推向市场的时间。ISP
程序设计容易,尤其适合贴片封装,在产品
样机试制阶段可充当仿真器进行产品调试;
但需要到现场下装,硬件成本相对高,只是不
用拆机器。IAP 具有上述二者的优点同时又
克服了它们的缺点,但不能全片擦除,按照

扇区擦除,因此擦除、编程时间相对较长,
总共约要4 分钟。具体选用何种方式,应参
照系统现场环境而定,如机具工作在稳定、
没有振动、有人值守、且拆卸方便的环境,
采用并行编程最好不过;若环境移动、振动,
项目组软件编程人员缺乏,则考虑采用ISP;
IAP 适合急需压缩产品成本的系统,是最经
济的硬件产品软件升级方案,但要求研发团
队具有良好的软件编程能力。
5. 结束语
P89V51RD2 的IAP 在应用编程已在考
勤系统、车载系统中实现,实践证明它极大
的便利了对现场软件的更新,解决了产品维
护的一大困难,降低了更换软件而带来的新
问题。其简单的设计思想,完全可以应用到
控制器为P89V51RD2 或其系列芯片或其它
公司带有IAP 功能的芯片如SST、ATMEL
等,并且用户FLASH 空间还有剩余的系统
中。IAP 在应用可编程也能用C51 实现,难
点主要在C 语言程序对汇编的调用及函数
的绝对定位,了解了传递入口参数和出口参
数所使用的寄存器也是很容易实现的,这里
限于篇幅不在赘述[6]。

摘 要:提出了基于P89V51RD2 的IAP 编程功能的详细设计,对其实现过程中的要点作了
细致阐述,它用来解决产品维护和无人值守区产品升级的问题。同时比较了IAP、ISP、传
统并行编程三者各自的优缺点,说明采用IAP 编程方案是最经济的选择,为产品的软件升
级带来极大的便利,又能节省成本、提高产品的可靠性。
[] [返回上一页] [打 印] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
代写职称论文 - 关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 职称论文代写
服务QQ:664305071 电子邮件:sansilunwen@163.com
Copyright © 2006-2010 三思论文网www.34LW.com. All Rights Reserved .
黔ICP备08001349号--代写职称论文QQ:664305071