当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]针对PIC18系列单片机,目前市面上仅存在HI-TECH公司提供的Bootloader程序,并且需要借助串口调试助手。本文基于Microchip公司的MPLAB软件开发环境设计了一种新颖的Bootloader,并配套编写了PC机端上位机界面程序。其特点是控制灵活,使用便利,系统升级安全可靠。

引言

Bootloader是操作系统在内核运行之前运行的一段小程序,其功能主要是完成软硬件设备初始化,建立内存空间映射,从而将系统的软硬件环境带到一个合适的状态,或者加载操作系统映像文件实现系统软件升级。针对PIC18系列单片机,目前市面上仅存在HI-TECH公司提供的Bootloader程序,并且需要借助串口调试助手。本文基于Microchip公司的MPLAB软件开发环境设计了一种新颖的Bootloader,并配套编写了PC机端上位机界面程序。其特点是控制灵活,使用便利,系统升级安全可靠。

1 Bootloader的实现

1.1 Bootloader的操作模式

Bootloader在单片机上电/复位后、用户程序之前先运行,运行后判断当前是否需要进入升级状态。如果不需要升级,就直接运行原有的程序;如果需要升级,首先擦除旧的程序,然后从串口接收用户程序,同时写入Flash中。Bootloader有2种操作模式:

①启动加载模式,也称为“内核启动”模式。即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。

②下载模式。在这种模式下,目标机上的Bootloader将通过串口、网络连接或者USB等,从上位机下载操作系统文件,然后保存到目标机上的Flash类固态存储设备中。Bootloader的这种模式通常在第一次安装内核与根文件系统时被使用,此外,以后的系统更新也会使用Bootl-oader的这种工作模式。

本文设计的Bootloader同时支持这两种工作模式,一开始启动时处于正常的启动加载模式,但并不立即启动进入内核,而是提示延时3 s,上位机用户如果发送某些信息给目标机,则切换到下载模式,否则继续启动内核。

1.2 Intel HEX文件

Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。每个记录包含5个域:数据长度域,它代表记录当中数据字节的数量;地址域,它代表记录当中数据的起始地址;代表HEX记录类型的域;数据域,它代表一个字节的数据,一个记录可以有许多数据字节,记录当中数据字节的数量必须和数据长度域中指定的数字相符;校验和域,它表示这个记录的校验和,通过将记录当中所有十六进制编码数字对应的值相加,模除256,所得余数的补码即校验和。

1.3 Bootloader的设计

本文所设计的Bootloader程序采用的编译器是MPLAB软件开发环境的mcc18编译器,升级文件格式为Intel HEX格式。根据Intel HEX文件的格式,将文件内容的每一行封装成一帧,加上帧头和帧尾以确保数据传输的可靠性,并采用半双工的通信模式,对错误帧进行重传。
主程序代码如下:

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


1.4 PC端操作界面的设计

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

2 设计中的几项关键技术及注意事项

①如果一次性将HEX文件中全部数据通过串口发送给目标芯片,则在通信过程中发生一字节的错误传输,就将导致全部数据需要重新发送;并且还要考虑到芯片的写Flash处理速度与串口速率的大小关系,否则将导致接收数据的丢失。为加强通信的可靠性与串口速率的可变性,本文所设计的Bootloader采用半双工的通信模式与上位机进行通信:以HEX文件的一行作为一帧数据,每帧数据校验结束后向上位机发送回复数据,上位机根据回复数据判断发送数据帧的正误来选择重发或继续发送下一帧;并且在进行升级之前与上位机通信进行用户名和密码的核对,以确保当前的升级操作不是误操作。

②对PIC18系列的程序存储器的写操作每次写入8字节的块,并且程序Flash单位写入只能由1变为0。但是HEX文件的内容并不是按照需要生成的,每帧的数据长度可以不同,相邻帧的地址域的内容也可以不同。为此,在对程序存储器进行写操作时,需要根据地址域内容将数据域内容以8字节为单位合并成数据块,不足8字节的要填充0xFF。本文所设计的Bootloader程序采用一个环形Buffer的结构体来实现这一操作:

③芯片的默认中断向量的起始是0x08和0x18,这是不能改变的,要想改变中断向量入口地址就要在这两个地址位置添加跳转指令,以跳转到用户程序的中断向量入口地址。PIC18系列的程序存储器的部分地址区域具有写保护性,为防止此区域之外的Bootloader程序被擦除或改写,需要对接收数据的地址域内容进行判断。如果小于用户程序起始地址,则需要向上位机回复“写地址错误”,并丢弃当前数据帧。

结语

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

嵌入式处理器是一种特殊的计算机处理器,它被设计用于嵌入到各种设备和系统中,以实现特定的功能。由于其低功耗、高性能和可靠性等特点,嵌入式处理器在许多领域都有广泛的应用,如汽车电子、工业控制、医疗设备等。本文将对嵌入式处理器...

关键字: 嵌入式处理器 嵌入式系统

2023年10月10日, [恩智浦创新技术论坛] 在深圳湾万丽酒店举行,众多工业、物联网、新能源和医疗等行业的企业出席论坛,深入交流市场趋势与行业洞察,一同讨论如何协同面对市场的机遇与挑战,共同促进未来市场的发展。米尔电...

关键字: NXP 嵌入式处理器

据业内信息报道,昨天 AMD 在 Embedded World 上宣布了其第四代 EPYC 嵌入式处理器,该处理器采用其 Zen 4 架构,旨在云和企业计算以及工厂车间工业边缘服务器中的嵌入式网络、安全、防火墙和存储。

关键字: Zen 4 AMD EPYC 嵌入式处理器

摘 要 :智能电网以优良的性能服务于国民生产,主要依靠接入电力系统设备间的网络通信。便携式电力设备的网络通信性能测试对于智能电网的运行具有重要意义。以嵌入式处理器为核心,提出了一种智能电网设备网络通信性能的便携式测试装置...

关键字: 智能电网 嵌入式处理器 WinCE操作系统 通信 便携式测试装置 人机接口

随着对高处理能力、实时多任务、网络通信、超低功耗需求的增长,传统8位机已远远满足不了新产品的要求,高端嵌入式处理器已经进入了国内开发人员的视野,并在国内得到了普遍的重视和应用。

关键字: 32位 ARM 嵌入式处理器 调试技术

技嘉官网现出现了两款新的迷你PC产品,GB-BSRE-1505和GB-BSRE-1605,这两款型号是面向商用的,一般会是公司采购,所以并不像消费者产品那么紧跟时代潮流,这两款新的迷你PC用的处理器还是AMD的第一代锐龙...

关键字: 技嘉 pc 锐龙 嵌入式处理器

  车道偏离报警和自动泊车等汽车应用将成为今年嵌入式视觉系统的主要增长动因,嵌入式视觉系统是一项赋予机器“视觉”并通过计算机视觉软件解释数据的技术。   汽车发动

关键字: 嵌入式处理器 工厂自动化 嵌入式视觉系统 工业安防

  随着半导体技术的不断进步(按照摩尔定律),MCU内部集成的逻辑功能外设越来越多,存储器也越来越大。消费者对于汽车节能(经济和法规对排放的要求)型、舒适性、互联性、安全性(功能安全和信息安全)

关键字: bootloader 汽车电子

智能锁是指区别于传统机械锁,在用户识别、安全性、管理性方面更加智能化的锁具,涵盖指纹锁、电子密码锁、电子感应锁、联网锁、遥控锁等具体类型锁具产品。 智能门锁的优点: 便利性

关键字: 单片机 嵌入式处理器 智能锁
关闭
关闭