新闻中心

EEPW首页>嵌入式系统>设计应用> PIC18单片机的一种新颖的Bootloader设计

PIC18单片机的一种新颖的Bootloader设计

作者: 时间:2011-03-24 来源:网络 收藏

主程序流程如图1所示。下载系统映像文件并写入程序存储器的程序流程如图2所示。

本文引用地址://m.amcfsurvey.com/article/172929.htm

b.jpg


1.4 PC端操作界面的
PC端操作界面主要用来实现以下几个功能:
①串口参数设置。设置串口通道号、数据位数、波特率等参数。
②用户登录。输入用户名、密码,与下位机进行验证。
③选择系统映像文件。选择系统映像HEX文件,逐行读入并通过串口发送给下位机,如有错误重新选择。
④提示用户系统更新完成(或失败)。显示系统更新进度,提示用户系统更新结果。

2中的几项关键技术及注意事项
①如果一次性将HEX文件中全部数据通过串口发送给目标芯片,则在通信过程中发生一字节的错误传输,就将导致全部数据需要重新发送;并且还要考虑到芯片的写Flash处理速度与串口速率的大小关系,否则将导致接收数据的丢失。为加强通信的可靠性与串口速率的可变性,本文所采用半双工的通信模式与上位机进行通信:以HEX文件的一行作为一帧数据,每帧数据校验结束后向上位机发送回复数据,上位机根据回复数据判断发送数据帧的正误来选择重发或继续发送下一帧;并且在进行升级之前与上位机通信进行用户名和密码的核对,以确保当前的升级操作不是误操作。
②对系列的程序存储器的写操作每次写入8字节的块,并且程序Flash单位写入只能由1变为0。但是HEX文件的内容并不是按照需要生成的,每帧的数据长度可以不同,相邻帧的地址域的内容也可以不同。为此,在对程序存储器进行写操作时,需要根据地址域内容将数据域内容以8字节为单位合并成数据块,不足8字节的要填充0xFF。本文所设计的程序采用一个环形Buffer的结构体来实现这一操作:
c.jpg
③芯片的默认中断向量的起始是0x08和0x18,这是不能改变的,要想改变中断向量入口地址就要在这两个地址位置添加跳转指令,以跳转到用户程序的中断向量入口地址。系列的程序存储器的部分地址区域具有写保护性,为防止此区域之外的程序被擦除或改写,需要对接收数据的地址域内容进行判断。如果小于用户程序起始地址,则需要向上位机回复“写地址错误”,并丢弃当前数据帧。

结语
实验证明,本文设计的Bootloader功能稳定,且控制方便,可根据用户的需要灵活改变。譬如,在用户程序中添加系统复位机制即可实现在线升级,为PC端操作界面添加网络下载模块即可实现远程控制系统升级,这对于嵌入式产品的发布和软件升级极其重要。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭