代码拉取完成,页面将自动刷新
Flash Address: 0x8000000~0x800FFFF 64K
芯片类型 | Flash大小 | Flash每页大小 |
---|---|---|
小容量 | <=32K | 1K |
中容量 | <=128K | 1K |
大容量 | <=256K | 2K |
#define FLASH_PAGE_SIZE ((uint16_t)0x400) //Flash每页大小
#define BT_APP_INFO_ADDR ((uint32_t)0x08001000) //APP固件版本信息保存地址
#define BT_APP_START_ADDR ((uint32_t)0x08001400) //APP的起始地址
#define BT_DOWNLOAD_INFO_ADDR ((uint32_t)0x08008800) //下载保存的固件信息
#define BT_DOWNLOAD_START_ADDR ((uint32_t)0x08008C00) //下载保存的固件起始地址
flash区域 |
---|
4K bootloader |
1K App版本信息 |
29K App |
1K Download info |
29K Download |
帧头(1 byte) | 帧类型(1byte) | ||||
---|---|---|---|---|---|
0x68 | 0x00 - bin文件内容 | 2bytes(文件长度) | 4bytes(写入flash的偏移地址,little) | bin文件数据 | 4bytes(crc32,little) |
0x01 - bin文件信息 | 4bytes(bin文件总字节数,little) | 2bytes(总页数,little) | 4bytes(版本信息) | ||
0x02-获取版本信息 | 10bytes(被忽略,但必须要有) |
bootloader启动时先判断BT_DOWNLOAD_INFO_ADDR中保存的版本信息是否高于BT_APP_INFO_ADDR
如果Download区的版本更高,则先校验下载区数据的栈顶地址是否合法(这是一种简单的校验方式),如果合法,就将Download区的代码复制到app区,并更新BT_APP_INFO_ADDR的版本,防止以后重复刷固件
跳转至BT_APP_START_ADDR运行
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。