找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 180|回复: 0
收起左侧

FMD单片机基于串口更新程序的BootLoader程序

[复制链接]
ID:78835 发表于 2024-3-28 10:02 | 显示全部楼层 |阅读模式
       之前想用STC单片机的EEPROM储存FMD单片机的Bin文件,然后通过串口去更新程序,现在终于把BootLoader程序调通了。有了BootLoader程序再也不怕板子带电烧录了。因为FMD单片机需要用下载器的电源烧录,如果板子本身是内置电池,烧录前需要断开电池才能烧录,十分麻烦,更头疼的是如果你的单片机电源端并联了大电容,你用烧录器还不一定可以烧录成功。我的目标是把BootLoader程序控制在1K的大小,多留点空间给APP程序。本来想自己做上位机,为了能快点先实现功能,我先用现有的串口助手先做实验,这里我选的是XMode协议。XMode协议效验的是每一帧数据,跳转APP程序前没对整个APP程序进行效验,如果每一帧数据都是对的,似乎也不用对整个APP程序效验。下次换YMode协议试试,YMode协议第一帧发送的是文件信息,这样就可以通过文件名字把一些关键信息发送出去,例如我的Bin文件名字可以命名为:FT64F0A5-B1A1.Bin,前面是单片机型号,后面是整个APP效验和。
       硬件说明:串口使用的是UART1_TX = PB6 , UART1_RX = PA2 ,波特率是115200 ,这2个脚也是单片机的下载脚,也可以通过程序映射到其它脚,如下图:
51hei截图_20240328085320.png

使用步骤:
第一步是通过FMD的脱机烧录工具把BootLoader程序烧录进去,如下图:
51hei截图_20240328084043.png

第二步是打开通信调试助手,选择115200的波特率,勾选从文件发送数据,传输协议选择XMode,点击浏览选择APP程序,这里使用的是Bin文件,这个Bin文件在APP程序编译时候回自动生成,选择好后点击发送,这时上位机会一直等待单片机发送传输开始命令,你需要做的就是把单片机复位,或者重新上电,如下图:
20240328090606.gif
    由于FMD单片机是14Bit长度的,10k 程序存储器由 160 页组成,每页 64 个 word(1word= 14bits),这样10K的FLASH,发送的数据量就是20K起步了,程序更新会有点慢,还有一个原因就是,这个上位机是现成的,没有设置地址偏移量的选择,这就导致加载APP程序时,会把BOOT程序的地址也算进去,这样前面发送的1K的数据会被BootLoader程序丢弃,白白浪费了时间。后期自己制作上位机的时候可以避免这个问题。            特别注意APP程序要勾选IAP设置,设置其实地址和结束地址,BootLoader程序设置为1K,那么起始地址就是0x400,这个型号的单片机FLASH大小是10K,结束地址就是0x2800,如下图:
51hei截图_20240328093239.png
         BootLoader程序暂时只分享Hex文件,整个程序只用了777字节,288个变量,还有优化空间,让程序更健壮。
51hei截图_20240328092308.png

APP.zip (432.45 KB, 下载次数: 2)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表