新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 设计的ISP程序基础解析

设计的ISP程序基础解析

作者:时间:2012-06-08来源:网络收藏

许多应用系统中都需要进行代码升级,如果代码在外部Flash存储器中,实现代码升级可以对外部Flash直接操作。但对于在单片机内部的一些系统程序代码,就要求此单片机支持IAP(In-Application-Programming)功能。本文即介绍此情况下的(In-System-Programming)程序方法,以及在SST和STC单片机上的具体实现。

本文引用地址:http://www.eepw.com.cn/article/171331.htm

1 实现基本结构

的实现方式有很多种,但大致都遵循图1所示流程。


图1

其中,判断用户ISP选择,一般有以下几种方式。

(1) 连接计算机系统,由系统的命令选择

进入用户ISP选择判断时,先由单片机发送特定特征数据,然后等待命令数据,如果在一定的时间内,接收到计算机系统发出的选择命令则进入用户代码升级,否则直接跳转到用户代码执行。

(2) 由用户板上的跳线选择

一般利用单片机空余的端口,一个代码升级选择跳线。进入用户ISP选择判断时,单片机可以直接根据此端口的状态判断进入用户代码升级还是直接跳转到用户代码执行。

(3) 由用户板操作功能选择

在用户板的功能菜单或功能组合中,允许用户选择代码升级功能,同时,在外部存储器中存放相应的标志。当选择代码升级功能时,在外部存储器中写入特定数据,然后程序复位。进入用户ISP选择判断时,判断外部存储器中的数据,如果符合条件则进入用户代码升级,否则直接跳转到用户代码执行。

2 IAP程序

目前,许多单片机都支持IAP功能,一般这些单片机内部都包含两个Flash块,在一块Flash中运行的程序可对另一块Flash进行擦除和重新编程。一般都将ISP程序存放在容量较小的一块Flash中(Block1),而将用户代码存放在容量较大的一块Flash中(Block0)。Block1中的ISP程序对Block0中的用户代码进行擦除和重新编程。

下面以两种51系列兼容的Flash单片机为例,介绍IAP的程序设计。一种是SST89C54,另一种是STC89C516RD。

(1) SST89C54相关特性

SST89C54内部有20KB(16KB+4KB)程序存储器,统一编址。Block0为0000H~3FFFH;Block1为F000H~FFFFH。Block1可以选择映射到0000H地址开始的1KB/2KB/4KB程序区。

(2) STC89C516RD相关特性

SST89C516RD内部有72KB(64KB+8KB)程序存储器。Block0为0000H~FFFFH,Block1可以选择映射到0000H地址开始的8KB程序区(上电复位缺省为地址映射)。

SST与STC单片机的IAP操作几乎完全相同。要特别注意的是,Block0_erase函数中对于block0的选择,两种单片机是不同的(正好相反)。


上一页 1 2 下一页

关键词: 解析 基础 程序 ISP 设计

评论


相关推荐

技术专区

关闭