feat: 完善Mesh继电器OTA升级闭环
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
|
||||
/** 初始化 Bootloader 所需的最小硬件资源。 */
|
||||
void Bootloader_Init(void);
|
||||
/** 刷新独立看门狗,供W25Q64和Flash等待循环调用。 */
|
||||
void Bootloader_WatchdogRefresh(void);
|
||||
/** 判断应用程序区域是否包含可执行程序。 */
|
||||
uint8_t Bootloader_IsApplicationValid(void);
|
||||
/** 跳转到应用程序入口地址,函数成功后不返回。 */
|
||||
|
||||
@@ -19,14 +19,14 @@
|
||||
#define APPLICATION_MAX_SIZE_BYTES \
|
||||
(APPLICATION_END_ADDRESS - APPLICATION_START_ADDRESS + 1u)
|
||||
|
||||
/** W25Q64 中保存出厂固件镜像的固定地址,容量64KiB。 */
|
||||
/** W25Q80BV中保存出厂固件镜像的固定地址,预留8KiB。 */
|
||||
#define FACTORY_IMAGE_ADDRESS 0x000000ul
|
||||
/** W25Q64 中保存出厂固件元数据的固定地址,独占4KiB扇区。 */
|
||||
#define FACTORY_METADATA_ADDRESS 0x010000ul
|
||||
/** W25Q64 中保存OTA升级固件的固定地址,容量64KiB。 */
|
||||
#define OTA_IMAGE_ADDRESS 0x020000ul
|
||||
/** W25Q64 中保存OTA元数据的固定地址,独占4KiB扇区。 */
|
||||
#define OTA_METADATA_ADDRESS 0x030000ul
|
||||
/** W25Q80BV中保存出厂固件元数据的固定地址,独占4KiB扇区。 */
|
||||
#define FACTORY_METADATA_ADDRESS 0x002000ul
|
||||
/** W25Q80BV中保存OTA升级固件的固定地址,预留8KiB。 */
|
||||
#define OTA_IMAGE_ADDRESS 0x003000ul
|
||||
/** W25Q80BV中保存OTA元数据的固定地址,独占4KiB扇区。 */
|
||||
#define OTA_METADATA_ADDRESS 0x005000ul
|
||||
/** 升级元数据魔数,用于避免误把普通数据当成升级请求。 */
|
||||
#define OTA_METADATA_MAGIC 0x4F544131ul
|
||||
/** 出厂恢复镜像元数据魔数。 */
|
||||
@@ -53,5 +53,7 @@
|
||||
#define FACTORY_BUTTON_HOLD_TIME_MS 5000u
|
||||
/** Bootloader忙等待1ms的循环次数,需结合实际系统时钟校准。 */
|
||||
#define BOOTLOADER_DELAY_1MS_LOOPS 1200u
|
||||
/** 内部Flash单次擦写等待的最大循环次数,超时即判定操作失败。 */
|
||||
#define BOOTLOADER_FLASH_WAIT_TIMEOUT 60000ul
|
||||
|
||||
#endif
|
||||
|
||||
@@ -54,6 +54,13 @@
|
||||
#define GPIOC_DDR REG8(0x500Cu)
|
||||
#define GPIOC_CR1 REG8(0x500Du)
|
||||
|
||||
/* GPIO Port D寄存器;PD4用于W25Q64片选CS#。 */
|
||||
#define GPIOD_ODR REG8(0x500Fu)
|
||||
#define GPIOD_IDR REG8(0x5010u)
|
||||
#define GPIOD_DDR REG8(0x5011u)
|
||||
#define GPIOD_CR1 REG8(0x5012u)
|
||||
#define GPIOD_CR2 REG8(0x5013u)
|
||||
|
||||
#define SPI_CR1_SPE 0x40u
|
||||
#define SPI_CR1_MSTR 0x04u
|
||||
#define SPI_CR1_BR0 0x08u
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
/**
|
||||
* @file w25q64.h
|
||||
* @brief W25Q64JV 硬件SPI访问接口。
|
||||
* @brief W25Q80BV 硬件SPI访问接口。
|
||||
*/
|
||||
#ifndef STM8_BOOTLOADER_W25Q64_H
|
||||
#define STM8_BOOTLOADER_W25Q64_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/** 初始化STM8硬件SPI和W25Q64片选。 */
|
||||
/** 初始化STM8硬件SPI和W25Q64片选;当前片选引脚为PD4。 */
|
||||
void W25Q64_Init(void);
|
||||
/** 读取W25Q64 JEDEC ID,便于启动时确认芯片存在。 */
|
||||
uint32_t W25Q64_ReadJedecId(void);
|
||||
|
||||
Reference in New Issue
Block a user