feat(ota): Boot支持外部Flash暂存搬运(BL_STASH_TO_B状态)
- bsp.c/h: 外部SPI Flash只读驱动(SPI1, 与App同总线Mode3) - main.c/h: BL_STASH_TO_B状态: AppSize门禁 -> 外部Flash逐8KB搬运B区 -> CRC校验 -> 进BL_COPY_TO_A复用现有搬运链 - 搬运幂等: 搬运中断电重启后B区仍有效自动重搬
This commit is contained in:
+23
-1
@@ -206,7 +206,27 @@ typedef enum {
|
||||
#define APP_B_ADDRESS (APP_A_ADDRESS + APP_BANK_SIZE) //0x42000 B区: 升级暂存
|
||||
#define APP_ADDRESS APP_A_ADDRESS //兼容旧名, 指向A区
|
||||
#define BOOT_PARA_ADDRESS (APP_B_ADDRESS + APP_BANK_SIZE) //0x7C000
|
||||
#define BOOT_PARA_SIZE (FLASH_SECTOR_SIZE)
|
||||
#define BOOT_PARA_SIZE (FLASH_SECTOR_SIZE)
|
||||
|
||||
/*外部SPI Flash(与App共用SPI1: PC0-NSS/PC1-MISO/PC2-SCK/PC3-MOSI, Mode3) - Cat1远程升级固件暂存区*/
|
||||
#define EXTFLASH_NSS_PORT (PortC)
|
||||
#define EXTFLASH_NSS_PIN (Pin00)
|
||||
#define EXTFLASH_NSS_SET() PORT_SetBits(EXTFLASH_NSS_PORT, EXTFLASH_NSS_PIN)
|
||||
#define EXTFLASH_NSS_CLR() PORT_ResetBits(EXTFLASH_NSS_PORT, EXTFLASH_NSS_PIN)
|
||||
#define EXTFLASH_SCK_PORT (PortC)
|
||||
#define EXTFLASH_SCK_PIN (Pin02)
|
||||
#define EXTFLASH_SCK_FUNC (Func_Spi1_Sck)
|
||||
#define EXTFLASH_MOSI_PORT (PortC)
|
||||
#define EXTFLASH_MOSI_PIN (Pin03)
|
||||
#define EXTFLASH_MOSI_FUNC (Func_Spi1_Mosi)
|
||||
#define EXTFLASH_MISO_PORT (PortC)
|
||||
#define EXTFLASH_MISO_PIN (Pin01)
|
||||
#define EXTFLASH_MISO_FUNC (Func_Spi1_Miso)
|
||||
#define EXTFLASH_UNIT (M4_SPI1)
|
||||
#define EXTFLASH_UNIT_CLOCK (PWC_FCG1_PERIPH_SPI1)
|
||||
#define EXTFLASH_CMD_READ 0x03
|
||||
#define SPIFLASH_SECTORSIZE 4096ul
|
||||
#define FLASH_FW_STASH_SECTOR 4038 //暂存区起始扇区(与App spiflash.h一致)
|
||||
|
||||
#define DEBUG 1
|
||||
#define USE_SD_CARD 0
|
||||
@@ -307,6 +327,8 @@ void Error_Handler(void);
|
||||
|
||||
/*Flash操作*/
|
||||
void FlashWrite(uint32_t Addr, uint32_t *wData, int wLen);
|
||||
void ExtFlashInit(void);
|
||||
void ExtFlashRead(uint32_t Addr, uint8_t *rData, uint16_t rLen);
|
||||
void ReadBootPara(BootPara rData);
|
||||
void WriteBootPara(BootPara wData);
|
||||
void EraseFlash(uint32_t BaseAddr, uint32_t SectorCnt);
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define APP_START_FLAG 0x55AA5A5A
|
||||
#define APP_UPDATE_FLAG 0xA5A5AA55
|
||||
#define APP_BOOT_UPGRADE_FLAG 0x5A5A55A5 //升级完成标记:Boot升级成功后置位,App启动时据此擦除外部参数分区并恢复APP_START_FLAG(与App侧bsp.h定义保持一致)
|
||||
#define APP_UPDATE_SPI_FLAG 0xA5A55A5A //Cat1远程升级: 固件已存外部SPI Flash暂存区, Boot据此搬运(与App侧bsp.h定义保持一致)
|
||||
|
||||
typedef enum {
|
||||
UPDATE_CMD_NULL,
|
||||
@@ -53,6 +54,7 @@ typedef enum {
|
||||
BL_GET_DATA_TIMEOUT,
|
||||
BL_START_APP,
|
||||
BL_COPY_TO_A, //B区镜像搬运到A区阶段
|
||||
BL_STASH_TO_B, //外部SPI Flash暂存区搬运到B区阶段(Cat1远程升级)
|
||||
BL_RESET
|
||||
}BootStatus_m;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user