# stm32f103c8t6-bootloader **Repository Path**: MAMAMAisused/stm32f103c8t6-bootloader ## Basic Information - **Project Name**: stm32f103c8t6-bootloader - **Description**: 用片上flash的bootloader - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-03-05 - **Last Updated**: 2023-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BootLoader配置说明 #### STM32F103C8T6 Flash Address: 0x8000000~0x800FFFF 64K 芯片类型|Flash大小|Flash每页大小 -|-|- 小容量|<=32K|1K 中容量|<=128K|1K 大容量|<=256K|2K ``` C #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运行