基于基于PIC18单片机的新颖单片机的新颖Bootloader设计设计
本文基于MPLAB软件开发环境设计了一种新颖的Bootloader,并配套编写了PC机端上位机界面程序。其特点是
控制灵活,使用便利,系统升级安全可靠。
Bootloader是操作系统在内核运行之前运行的一段小程序,其功能主要是完成软硬件设备初始化,建立内存空间映射,从而将
系统的软硬件环境带到一个合适的状态,或者加载操作系统映像文件实现系统软件升级,以便为最终调用操作系统内核准备好
正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用
的BootLoader几乎是不可能的。
针对PIC18系列单片机,目前市面上仅存在HI-TECH公司提供的Bootloader程序,并且需要借助串口调试助手。本文基于
MPLAB软件开发环境设计了一种新颖的Bootloader,并配套编写了PC机端上位机界面程序。其特点是控制灵活,使用便利,
系统升级安全可靠。
1 Bootloader的实现
1.1 Bootloader的操作模式
Bootloader在单片机上电/复位后、用户程序之前先运行,运行后判断当前是否需要进入升级状态。如果不需要升级,就直接
运行原有的程序;如果需要升级,首先擦除旧的程序,然后从串口接收用户程序,同时写入Flash中。Bootloader有2种操作模
式:
①启动加载模式,也称为“内核启动”模式。即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整
个过程并没有用户的介入。
②下载模式。在这种模式下,目标机上的Bootloader将通过串口、网络连接或者USB等,从上位机下载操作系统文件,然后保
存到目标机上的Flash类固态存储设备中。Bootloader的这种模式通常在第一次安装内核与根文件系统时被使用,此外,以后
的系统更新也会使用Bootl-oader的这种工作模式。
本文设计的Bootloader同时支持这两种工作模式,一开始启动时处于正常的启动加载模式,但并不立即启动进入内核,而是提
示延时3 s,上位机用户如果发送某些信息给目标机,则切换到下载模式,否则继续启动内核。
1.2IntelHEX文件
Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX
记录。这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。每个记录包含5个域:数据长度域,它代表记录
当中数据字节的数量;地址域,它代表记录当中数据的起始地址;代表HEX记录类型的域;数据域,它代表一个字节的数
据,一个记录可以有许多数据字节,记录当中数据字节的数量必须和数据长度域中指定的数字相符;校验和域,它表示这个记
录的校验和,通过将记录当中所有十六进制编码数字对应的值相加,模除256,所得余数的补码即校验和。
1.3 Bootloader的设计
本文所设计的Bootloader程序采用的编译器是MPLAB软件开发环境的mcc18编译器,升级文件格式为Intel HEX格式。根据
Intel HEX文件的格式,将文件内容的每一行封装成一帧,加上帧头和帧尾以确保数据传输的可靠性,并采用半双工的通信模
式,对错误帧进行重传。
主程序代码如下:
评论1
最新资源