位置:51电子网 » 技术资料 » 单 片 机

C8051FXXX单片机FLASH程序的自动升级

发布时间:2008/5/27 0:00:00 访问次数:471

作者email: wolfman6353@sina.com

引言:

c8051fxxx系列高速soc单片机是由美国cygnal公司开发的完全集成的混合信号系统级芯片,具有与8051兼容的微处理器内核,内部集成flash程序存储器,具有在系统重新编程能力,以c8051f020为例,内部集成64k的flash程序存储器。在系统控制软件的开发调试阶段,可用集成开发环境来下载及测试系统,但当将c8051f020目标系统集成到产品后,则由于操作系统及软硬件接口不一样等等原因,不能在最终产品中用集成开发环境来下载flash程序,故产品到了用户处之后,如要再进行flash程序的更新,则必须更换相应的集成电路印刷板,造成很多麻烦及不可靠因素。笔者通过实验,在用户操作界面的pc机及c8051f020的单片机控制系统之间,通过串行口进行c8051f020单片机控制程序的自动升级及程序加密,从而使用户只要从互联网上下载控制程序,即可实现单片机程序的自动升级。以下以64kbflash ram为例简要介绍单片机目标程序的准备及自动升级的制作过程。

1)系统简介及自动升级的实现方法

pc机(80486/dx2以上) 具有1.44吋软驱及串行口。单片机控制系统(具有串行口及内置的flash程序区)。pc与c8051fxxx之间通过九针串行接口线相连。设置传送速率为115200bit/s。

c8051f020单片机的flash ram分为用户程序区(0000h~0fdfdh),厂家保留及加密区(0fdfeh~0ffffh)两部分。现将用户程序区(0000h~0fdfdh)的0000h~0dfffh部分用于装载用户程序,而0e000h~0fdfdh部分作为引导程序区,引导程序区在升级时不能改变,它用于与用户操作界面的pc机部分进行程序接收及装载等工作。

在控制程序区0000h~0dfffh中,做一握手程序块,在上电时,用于和用户操作界面pc机部分进行握手,当接收到pc机部分要进行软件升级的命令时,程序跳至引导程序区,执行如下流程:

->发送准备升级字节到pc机

->删除flash程序区

->发送开始下载命令到pc机

->接收且放到相应地址

->加密

为了达到自动升级的目的,需要在用户界面的pc机引导时,自动检测pc机外设,软盘控制器,一旦检索到软盘中有升级文件及其索引文件,且其版本比现有的单片机控制程序的版本高,则开始执行pc机中的下载程序。

2)删除0000h~odfffh的flash程序区
c8051fxxx系列单片机将flash程序区按512字节为一页(page)来组织,在删除控制程序区0000h~odfffh时,首先屏蔽掉所有中断,使能程序删除位psee(psctl.1),同时使能pswe(psctl.0)movx指令指向falsh程序区。应用movx指令在每一页的任意一地址写0ffh,则将该页的所有字节都置为0ffh,从而实现了该页的删除。依此操作可删除所有的程序页。删除部分程序如下:


//删除0000h’odfffh的flash程序区
del_next_page:
clr ea
mov a,flscl
anl a,#0feh
orl a,#01h
mov flscl,a
mov a,psctl
anl a,#0fch
orl a,#03h
mov psctl,a;#03h //使能页删除及页写操作
mov a,#0ffh
movx @dptr,a //将该页全填充为0ffh
inc dph
inc dph //调节页指针
mov a,psctl
anl a,#0fdh
mov psctl,a;#03h
mov a,dph
cjne a,#0e0h,del01_next_page
del01_next_page:
jc del_next_page

3)从pc中接收flash字节
以下程序用于从pc机中接收程序并放到相应的flash地址。在此仅使能pswe(psctl.0)位,使movx指令指向falsh程序区。
mov dptr,#0000h
mov flscl,#01h
mov psctl,#01h;
receive_next_download_char:
mov flscl,#01h
mov psctl,#01h;
jnb ri,$
clr ri
mov a,sbuf0
movx @dptr,a
inc dptr
mov a,dph
cjne a,#0e0h,receive_next_download_char
mov flscl,#01h //flash 写使能
mov psctl,#01h
mov dptr,#0fdfeh
clr a
movx @dptr,a
mov dptr,#0fdffh
movx @dptr,a
mov psctl,#00h
mov flscl,#00h
cycle_forever:sjmp cycle_forever;死循环
ret


4)flash程序的准备

为了更快地得到—下载到c8051f020的flash程序,先在cygnal ide开发环境中,将做好的控制程序编泽,链按,然后用厂家提供的串行适配器将pc与目标板连接起来,传送flash程序到目标系统中去。接下来用“upload memory t0 pile…”(如图示)功能将0000h~oeoooh的flash代码程序上载到硬盘存储器中,再将此ascii文件转化为16进制的he文件,注意将其十的0dh,0ah等回车换行字节取消,最后生成的hex文件即可被直接下载到flash的0000h~0dfffh的相应地址中。此hex文件即可发送至用户处,用

作者email: wolfman6353@sina.com

引言:

c8051fxxx系列高速soc单片机是由美国cygnal公司开发的完全集成的混合信号系统级芯片,具有与8051兼容的微处理器内核,内部集成flash程序存储器,具有在系统重新编程能力,以c8051f020为例,内部集成64k的flash程序存储器。在系统控制软件的开发调试阶段,可用集成开发环境来下载及测试系统,但当将c8051f020目标系统集成到产品后,则由于操作系统及软硬件接口不一样等等原因,不能在最终产品中用集成开发环境来下载flash程序,故产品到了用户处之后,如要再进行flash程序的更新,则必须更换相应的集成电路印刷板,造成很多麻烦及不可靠因素。笔者通过实验,在用户操作界面的pc机及c8051f020的单片机控制系统之间,通过串行口进行c8051f020单片机控制程序的自动升级及程序加密,从而使用户只要从互联网上下载控制程序,即可实现单片机程序的自动升级。以下以64kbflash ram为例简要介绍单片机目标程序的准备及自动升级的制作过程。

1)系统简介及自动升级的实现方法

pc机(80486/dx2以上) 具有1.44吋软驱及串行口。单片机控制系统(具有串行口及内置的flash程序区)。pc与c8051fxxx之间通过九针串行接口线相连。设置传送速率为115200bit/s。

c8051f020单片机的flash ram分为用户程序区(0000h~0fdfdh),厂家保留及加密区(0fdfeh~0ffffh)两部分。现将用户程序区(0000h~0fdfdh)的0000h~0dfffh部分用于装载用户程序,而0e000h~0fdfdh部分作为引导程序区,引导程序区在升级时不能改变,它用于与用户操作界面的pc机部分进行程序接收及装载等工作。

在控制程序区0000h~0dfffh中,做一握手程序块,在上电时,用于和用户操作界面pc机部分进行握手,当接收到pc机部分要进行软件升级的命令时,程序跳至引导程序区,执行如下流程:

->发送准备升级字节到pc机

->删除flash程序区

->发送开始下载命令到pc机

->接收且放到相应地址

->加密

为了达到自动升级的目的,需要在用户界面的pc机引导时,自动检测pc机外设,软盘控制器,一旦检索到软盘中有升级文件及其索引文件,且其版本比现有的单片机控制程序的版本高,则开始执行pc机中的下载程序。

2)删除0000h~odfffh的flash程序区
c8051fxxx系列单片机将flash程序区按512字节为一页(page)来组织,在删除控制程序区0000h~odfffh时,首先屏蔽掉所有中断,使能程序删除位psee(psctl.1),同时使能pswe(psctl.0)movx指令指向falsh程序区。应用movx指令在每一页的任意一地址写0ffh,则将该页的所有字节都置为0ffh,从而实现了该页的删除。依此操作可删除所有的程序页。删除部分程序如下:


//删除0000h’odfffh的flash程序区
del_next_page:
clr ea
mov a,flscl
anl a,#0feh
orl a,#01h
mov flscl,a
mov a,psctl
anl a,#0fch
orl a,#03h
mov psctl,a;#03h //使能页删除及页写操作
mov a,#0ffh
movx @dptr,a //将该页全填充为0ffh
inc dph
inc dph //调节页指针
mov a,psctl
anl a,#0fdh
mov psctl,a;#03h
mov a,dph
cjne a,#0e0h,del01_next_page
del01_next_page:
jc del_next_page

3)从pc中接收flash字节
以下程序用于从pc机中接收程序并放到相应的flash地址。在此仅使能pswe(psctl.0)位,使movx指令指向falsh程序区。
mov dptr,#0000h
mov flscl,#01h
mov psctl,#01h;
receive_next_download_char:
mov flscl,#01h
mov psctl,#01h;
jnb ri,$
clr ri
mov a,sbuf0
movx @dptr,a
inc dptr
mov a,dph
cjne a,#0e0h,receive_next_download_char
mov flscl,#01h //flash 写使能
mov psctl,#01h
mov dptr,#0fdfeh
clr a
movx @dptr,a
mov dptr,#0fdffh
movx @dptr,a
mov psctl,#00h
mov flscl,#00h
cycle_forever:sjmp cycle_forever;死循环
ret


4)flash程序的准备

为了更快地得到—下载到c8051f020的flash程序,先在cygnal ide开发环境中,将做好的控制程序编泽,链按,然后用厂家提供的串行适配器将pc与目标板连接起来,传送flash程序到目标系统中去。接下来用“upload memory t0 pile…”(如图示)功能将0000h~oeoooh的flash代码程序上载到硬盘存储器中,再将此ascii文件转化为16进制的he文件,注意将其十的0dh,0ah等回车换行字节取消,最后生成的hex文件即可被直接下载到flash的0000h~0dfffh的相应地址中。此hex文件即可发送至用户处,用

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!