Westbrook
认证:VIP会员
所在专题目录 查看专题
dsPIC33 BootLoader(1)-简介
dsPIC33 BootLoader(2)-Flash程序存储空间
dsPIC33 BootLoader(3)-构建中断重映射表
dsPIC33 BootLoader(4)-基于MCC配置Boot区
dsPIC33 BootLoader(5)-基于MCC生成应用程序
Bootloader演示
作者动态 更多
10分钟教你快速完成数字电源的闭环控制
2022-04-02 17:26
数字电源学习板演示
2022-02-19 13:36
手把手教你学数字电源系列视频(22)- 数字控制的软件流程
2022-02-19 13:28
手把手教你学数字电源系列视频(21)- 设计数字补偿器(LDE执行)
2022-02-19 13:28
手把手教你学数字电源系列视频(20)- 设计数字补偿器(AB系数计算)
2022-02-19 13:27

dsPIC33 BootLoader(1)-简介

在利用MCU开发数字电源项目中,对于嵌入式开发而言,Bootloader几乎与软件算法同等重要,它可以让我们摆脱MCU官方工具,定制自己的烧录工具,不仅提高产品辨识度,同时也大大减少了对外引脚数量(例如兼容通信的Uart或CAN等,而不需要另外接JTAG。接下来,我会通过这个专题对BootLoader做一个入门的介绍,针对dspic33做两种不同的方式来实现,第一种是采用修改.gld文件的方式;另外一种是采用MCC。

一般MCU的机器码都是存储在Flash中,MCU启动时PC指针会从内部Flash第一个地址开始读取指令运行,这个过程我们一般无法干涉。但由于我们写的代码存于Flash中,所以一旦从Flash启动,后续操作就完全可以由我们来指定,我们可以指定程序执行位置。

对于低端MCU来说,我们可以通过在Flash初始的位置设置指令,来启动内部不同flash区域的程序,以及烧写程序到这些flash区域,这些操作集合叫做Bootloader。Bootloader承担着用户程序的烧写以及跳转。

BootLoader是在单片机上电复位时执行的一段程序。也称作Bootlader固件,通过这段程序,可以不使用编程器对应用程序在线升级,来实现应用程序的更新。在单片机上电/复位后,一般都是先运行Bootloader程序。Bootloader运行后,先判断当前是否需要进入升级状态。如果不需要升级,就直接运行Flash中原有的应用程序;如果需要升级,首先擦除旧的应用程序,然后从通讯接口接收应用程序代码,并写入指定Flash中。直到把新的应用程序全部都写入Flash,最后进行校验,确保新的应用程序是正确的、完整的。再跳转去运行新的应用程序。

对于高级MCU或者CPU来说,可以轻松映射外部存储(外部Flash、U盘、硬盘等),MCU启动后,我们可以指定其从哪个存储启动,甚至通过通信接口接收数据存储到这些外部存储。这些操作集合在嵌入式操作系统中一般称之为UBoot,在PC中称之为BIOS,外部存储一般存放的是操作系统。

dspic33的Flash内部执行流程如下:

通讯接口可以是UART、I2C、SPI、CAN、USB等。通讯速率直接影响整个升级的完成时间,在升级的过程中应用程序是不能被运行的 。CAN Bootloader就是通过CAN总线来传输应用程序文件,来实现对应用程序代码的升级。

在做CAN BootLoader时,一般有两种形式作为HOST来对目标板进行升级。

1.使用另外一个主MCU,比如用一个UART-CAN的转接板,主要用到USB转UART芯片MCP2221A和带CAN 控制器的MCU PIC18F66K80,66K80作为Host MCU。

2.使用CAN ANALYZER。可以使用ZLG的双通道CAN分析仪,型号USBCAN-2E-U

大致执行流程如下:

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 4
收藏 11
关注 782
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧