PIC16 bootloader之UART bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序)。
PIC16 bootloader是在PIC16单片机上电复位时执行的一段程序。通过这段程序,可以不使用编程器,也能实现应用程序在线升级。今天要介绍的PIC16 bootloader是使用UART通信接口的UART bootloader, 也叫RS232串口bootloader。由于电脑只有USB接口,所以需要用USB-to-RS232的适配器来转发数据,将电脑端数据转发到PIC16单片机,或者将PIC16单片机数据转发到电脑。系统接线图如下:
电脑要运行一个专门的上位机程序,用来加载应用程序的hex文件,设置RS232通信端口和baud rate,点击下载按钮,启动和PIC16 bootloader通信,下发应用程序数据完成应用程序升级。我的这个PIC16 bootloader 的上位机程序是使用C#和Visual Studio 2013开发的,界面如下:

这个Bootloader升级应用程序时用的USB-to-RS232适配器是我自己亲手打造的工业级适配器Z-Box R01A,USB-to-RS232适配器根据其使用的芯片分类,常用的有四种类型FT232(FTDI),CP2102, PL2303, CH340。 Z-Box R01A适配器属于FT232类型。作为一位一直在前线搬砖的老工程师,踩过的坑不计其数,知道工业场所什么奇葩环境都有,什么样的干扰伤害都可能有。所以工业产品,工业用品,制作必须精良,绝对不能偷工减料,否则最后的损失会更大。Z-Box R01A适配器是我为工业场所打造的USB-to-RS232,制作之精良,用料之水准,无出其右(使用最稳定最强大也是最贵的英国芯片,电路上信号有作隔离,金属外壳,一头是方形USB口,另一头是DB9口 )。不计成本,只求稳定可靠。还有一点,Z-Box R01A不是只有USB-to-RS232的适配功能,还有USB-to-TTL的适配功能。自卖自夸了这么久,到底长啥模样呢,见图:
用户板就是PIC16单片机的目标板,用户板需要烧写好PIC16 UART bootloader固件。我的PIC16 UART bootloader软件分三层,应用层,中间层,和驱动层,软件架构如下:

这个PIC16 UART bootloader和之前写的bootloader相比有四个特色。第一个特色是它分层比较清晰,应用层和驱动层有隔离,方便移植。移植到PIC18,PIC24, PIC32非常地快,即使移植到非PIC的芯片也很容易。第二个特色是它是为工业级产品开发的,是一款工业级的bootloader。 PC端host程序发送的每一帧数据都带checksum。UART bootloader接收数据,解析数据,烧写数据,烧写完会读出来作比较,所有的这些动作的结果会反馈到PC端的上位机程序,没有错误反馈正响应,有错误就反馈负响应。最后还会对整个过程接收到的数据作校验,从而确保数据的完整性和正确性。即使在恶劣的工业环境,也能够确保应用程序可靠地完成升级。第三个特色是PIC UART bootloader可以实时在LCD屏幕上显示应用程序升级的进度。工业产品很多都带LCD屏,利用LCD屏显示升级的进度,是我为这个UART bootloader独创的功能。最后一个特色,这个PIC16 UART bootloader是放在code flash的底部,应用程序是放在头部,这样做最大的好处是应用程序不需要做偏移,中断向量不需要重映射,就算是新手使用这个UART bootloader也丝毫没有问题。应用程序加了偏移,无法调试,需要调试就得把偏移去掉。使用这个UART bootloader就不需要这么麻烦,出了问题随时都可以调试,方便查找问题原因。我为PIC16 UART bootloader升级应用程序的整个过程录制了一个视频,视频的链接:工业级UART接口PIC16 Bootloader 应用程序升级视频-科技-高清完整正版视频在线观看-优酷 (youku.com)
PIC16 bootloader之UART bootloader的更多相关文章
- PIC18 bootloader之UART bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 应客户要求, 将PIC ...
- PIC18 bootloader之CAN bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). PIC18 ...
- S32Kxxx bootloader之CAN bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 最近完成了S32Kxx ...
- BLE CC2541 串口BootLoader 即 SBL BootLoader 资料 收集
1.[CC254X_Bootloader]SBL(串口Bootloader)使用说明 2.CC2540协议栈高速串口通信解决(UART的DMA方式) 3.[BLE]CC2541之SBL 4.[BLE] ...
- 【Bootloader】探究bootloader,分析u-boot源码
Preface 之前也发表过关于<Bootloader启动过程分析>的文章,但是内容表达得比较抽象,大多是文字叙述,所以这里从系统和代码的角度来深入分析bootloader的启动过程. 工 ...
- 了解BootLoader——基于MPC5744P Bootloader例程
一.BootLoader的作用:BootLoader是固化在PFlash中的一个程序,其作用可以分为两部分:boot和load. (1)boot:MCU上电时首先会运行BootLoader程序(因为它 ...
- S32Kxxx bootloader之UDS bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 两周前完成了基于UDS ...
- 自己用C语言写单片机PIC16 serial bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 为什么自己写bootl ...
- C语言PIC16 serial bootloader和C#语言bootloader PC端串口通信程序
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新PIC16 Boot ...
随机推荐
- CentOS 7安装docker环境
一.环境准备 Docker支持以下的CentOS版本: 1.Docker运行在CentOS 7(64-bit)上要求系统为64位,系统内核版本为3.10以上 2.Docker运行在Centos 6.5 ...
- Python - faker
安装 faker pip install Faker pip install Dumper 设置生成器 from faker import Faker fake = Faker() 它可以通过访问以想 ...
- Java(21)内部类
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228411.html 博客主页:https://www.cnblogs.com/testero ...
- Great books for learning C++
Great books for learning C++ Here are three great books for learning C++ – whether you know C++ alre ...
- 在python中实现BASE64编码
什么是Base64编码 BASE64是用于传输8Bit字节的编码方式之一,是一种基于64个可打印字符来表示二进制数据的方法. 如下是转换表:The Base64 Alphabet Base64编码可以 ...
- ES2020新特性记录
1.可选链操作符 // oldlet ret = obj && obj.first && obj.first.second// newlet ret = obj?.fi ...
- 微软Windows11安卓子系统已支持运行APK 应用(附手把手详细安装攻略)怎么安装安卓/如何安装安卓应用/支持多窗口多任务
10 月 21 日消息,微软博客宣称,Windows 11 上 安卓子系统运行 Android 应用程序的第一个预览版现已提供给美国 Beta 频道的 Windows 内部人员.但现在通过教程 ...
- pyinstaller和wordcloud和jieba的使用案列
一.pyinstaller库 1.简介 pyinstaller库:将脚本程序转变为可执行(.exe)格式的第三方库 注意:需要在.py文件所在目录进行以下命令,图标扩展名是.ico 2.格式: pyi ...
- Spring MVC:DispatchServlet类
Spring MVC架构 Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就已包含在Spring框架中.传统的模型层被拆分为了业务层(Service)和数据访问层 ...
- path-sum leetcode C++
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...