[PIC®/AVR®/dsPIC®产品]

PIC Bootloader

[复制链接]
4778|19
手机看帖
扫描二维码
随时随地手机跟帖
GeekyGeek|  楼主 | 2021-5-2 20:45 | 显示全部楼层 |阅读模式
本帖最后由 GeekyGeek 于 2022-1-3 22:12 编辑

    PIC16 Bootloader之UART Bootloader, 是一款工业级的Bootloader。开发工具是Compiler XC8 v2.20, IDE MPLABX v5.10。软件分三层,应用层,中间层,和驱动层,分层清晰,移植简单,移植到PIC18,PIC24, 或PIC32非常简单,就算移植到非PIC单片机也很容易。 uartArch.png
    PIC16 Bootloader之UART Bootloader,是在我的PIC16F1937硬件板上开发测试完成的。Bootloader在code flash的底部,空间范围是0x1500~0x1FFF。应用程序在code flash的头部,空间范围是0x0~0x14FF。Bootloader放在底部,应用程序放在头部,这样做最大的好处是应用程序不需要做偏移,中断向量不需要重映射,就算是新手使用这个UART bootloader也丝毫没有问题。应用程序加了偏移,很多时候无法调试,需要调试就得把偏移去掉。使用这个UART bootloader就不需要这么麻烦,应用程序不需要偏移,随时都可以调试。
   PIC16 UART Bootloader 上位机是用Compiler C#, IDE Visual Studio 2013开发,上位机界面如下图:
uartHost.png
    操作很简单,首先PIC16单片机烧写好了PIC16 UART Bootloader,上位机加载要烧写的应用程序hex文件,配置好参数,点击下载按钮,然后立马重启PIC16单片机板子,等待升级完成即可。我录了一个视频,见链接,。大家对此有兴趣,也可以查看我的博文,https://www.cnblogs.com/geekygeek/p/pic16_uart_bootloader.html

使用特权

评论回复
GeekyGeek|  楼主 | 2021-5-6 22:28 | 显示全部楼层
第一个SPI bootloader, 也是在我的PIC16F1937硬件板上完成开发和测试的,软件架构和上一篇的基本上一样:
spiArch.png
上位机也是一样的,只是参数设置需要选择SPIM端口,模式选择1,片选选择低电平有效,bit rate选择125KHz, 如图:
spiHost.png
上位机和硬件板之间使用Microchip PICKit Serial。应用程序升级全过程,我录制了一个视频,见
详见博文:https://www.cnblogs.com/geekygeek/p/pic16_spi_bootloader.html

使用特权

评论回复
weifeng90| | 2021-5-7 07:26 | 显示全部楼层
谢谢楼主的分享

使用特权

评论回复
GeekyGeek|  楼主 | 2021-5-20 23:16 | 显示全部楼层
本帖最后由 GeekyGeek 于 2021-5-21 12:16 编辑

第一个I2C bootloader, 也是在我的PIC16F1937硬件板上完成开发和测试的,软件架构和上一篇的SPI Bootloader基本上一样:
i2cArch.png
上位机是用C#开发的, 在WIN7环境经过了验证测试。上位机操作简单,如图配置好参数,连接好目标板后,点击Download按钮并立即重启目标板,即可开始升级应用程序。
i2cHost.png
完整的升级过程见视频链接:
详见博文:https://www.cnblogs.com/geekygeek/p/pic16_i2c_bootloader.html

使用特权

评论回复
pzsh| | 2021-5-21 12:34 | 显示全部楼层
这个比较有帮助,多谢

使用特权

评论回复
GeekyGeek|  楼主 | 2021-12-6 23:05 | 显示全部楼层
本帖最后由 GeekyGeek 于 2021-12-26 23:30 编辑

PIC18 Bootloader 之UART Bootloader,  是由PIC16 Bootloader之UART Bootloader移植而来, 由于软件是三层架构, 应用层和驱动层分离. 移植非常轻松, 也很顺利。修改代码和测试不到半天就搞定。
uartArch.png

Bootloader是在头部,和上位机之间通信协议是自定义协议。带LCD1602驱动,LCD1602可以实时显示升级进度.
https://player.youku.com/embed/XNTE0NzcxODYxNg
UART Bootloader 需要用到USB-2-RS232适配器。我使用的是自己开发的工业级USB-2-RS232适配器Z-Box R01A.
Z-Box R01A.jpg
上位机是zFlash, 界面简洁,使用简单。凡是购买Z-Box R01A, 上位机zFlash免费提供。
zFlash_P18.png
详细可以查阅我的博文:https://www.cnblogs.com/geekygeek/p/pic18_uart_bootloader.html







使用特权

评论回复
GeekyGeek|  楼主 | 2022-1-3 22:35 | 显示全部楼层
本帖最后由 GeekyGeek 于 2022-1-3 22:45 编辑

我的第一个CAN bootloader, 在PIC18F25K80芯片上实现了。整个实现过程包括硬件,下位机软件,上位机软件。
首先完成的是硬件盒子,我开发了我自己的CAN 总线分析仪Z-Box CAN, 简称ZCAN。 它的PC端软件是busmaster,非常强大,用过的都知道。busmaster(又称博世总线大师)是一款开源软件工具,我在其开源代码基础上进行添加,让busmaster支持我开发的CAN总线分析仪Z-Box CAN。
USB-2-CAN.jpg busmaster.jpg
接着完成了上位机软件zFlash, zFlash原本只支持UART bootloader, SPI bootloader和I2C bootloader, 现也支持CAN bootloader 了。
zFlash_CAN.png
最后实现的是下位机软件CAN bootloader, CAN bootloader 三层软件架构,CAN driver参考了Microchip 应用笔记AN738
canArch.PNG
详细介绍,请查看我的博文:https://www.cnblogs.com/geekygeek/p/pic18_can_bootloader.html

使用特权

评论回复
cxque| | 2022-6-16 15:01 | 显示全部楼层
请教下楼主,PIC单片机的中断向量重映射如何做?我使用以下代码,在app中一旦开启中断就会导致复位,芯片时PIC16F18346.
asm("psect  intentry,global,class=CODE,delta=2");
asm("pagesel " str(NEW_INTERRUPT_VECTOR));
asm("GOTO " str(NEW_INTERRUPT_VECTOR));

使用特权

评论回复
elsaflower| | 2022-12-2 22:53 | 显示全部楼层
这个也需要自己来烧录的吗?              

使用特权

评论回复
phoenixwhite| | 2022-12-4 20:51 | 显示全部楼层
有pic BootLoader的教程可以参考的吗?

使用特权

评论回复
biechedan| | 2022-12-4 22:02 | 显示全部楼层
修改BootLoader针对很麻烦的。

使用特权

评论回复
everyrobin| | 2022-12-5 20:47 | 显示全部楼层
如何实现网络升级的BootLoader?

使用特权

评论回复
GeekyGeek|  楼主 | 2022-12-5 22:29 | 显示全部楼层
everyrobin 发表于 2022-12-5 20:47
如何实现网络升级的BootLoader?

无线还是有线,局域网还是Internet?

有线的方案 可以考虑自带Ethernet Controller 的PIC18F97J60 或者 PIC32MX / PIC32MZ
                 也可以考虑 MCU + Ethernet Controller (ENC28J60 或 W5500)

无线的方案 可以考虑 MCU + wifi 模组 或 4G 模组

MCU 芯片厂家 或模组厂家一般都会提供 TCP/IP stack 及示例,在示例的基础上去实现Bootloader即可。
还有电脑端/服务器端 也需要有一个host 程序通过网络下发应用程序hex给到MCU,MCU 的Bootloader 接收应用程序hex, 完成升级

电脑端host和MCU端Bootloader之间网络数据交互采用tftp, http, https, ftp 或者就直接 raw TCP 或 raw UDP 通讯,采用哪种,就是design choice 了,总之要提前设计好。

提前设计好了的话,可以host 和 Bootloader 同时并行开发。

使用特权

评论回复
jimmhu| | 2023-1-5 11:43 | 显示全部楼层
这个是需要BootLoader吗?

使用特权

评论回复
saservice| | 2023-1-6 14:33 | 显示全部楼层
谢谢分享的资料,视频不是很清晰的。

使用特权

评论回复
belindagraham| | 2023-1-6 17:22 | 显示全部楼层
这个都支持哪些芯片?              

使用特权

评论回复
robincotton| | 2023-1-9 16:38 | 显示全部楼层
能不能实现can更新固件?              

使用特权

评论回复
jonas222| | 2023-1-11 22:27 | 显示全部楼层
BootLoader是官网提供的吗?

使用特权

评论回复
mattlincoln| | 2023-1-11 22:56 | 显示全部楼层
串口BootLoader好麻烦。

使用特权

评论回复
robertesth| | 2023-1-12 15:14 | 显示全部楼层
这个还需要移植的吗?              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:www.cnblogs.com/geekygeek

8

主题

211

帖子

3

粉丝