feat(vd960DBN): 事件日志区动态分区 — JEDEC ID 选档 (ROADMAP 落地)
- offlog.h: OfflogPart 运行时分区表 + g_offlog_part; AREA_BASE 改 0x090000 (参数64KB+OTA512KB); 容量宏展开为运行时值(主体零改动) - offlog.c: offlog_part_detect() 读 JEDEC ID → 事件区容量 W25Q32=512KB/16256条, Q64=1MB/32640, Q128=2MB/65408, Q256=4MB/130944 - storage.c/h: SPI_Flash_ReadJEDEC_ID() (0x9F, 校验 EF 40) - 旧固件事件区 0x010000 自动废弃(新地址无 magic → 重建), 预期行为 - 测试: mock JEDEC=0x16 + g_offlog_part, 15 例全过 - 文档: BLE/MQTT/TCP 协议 capacity 8064→动态, 交互示例, devlog
This commit is contained in:
@@ -225,6 +225,30 @@ u16 SPI_Flash_ReadID(void)
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************************
|
||||
* @fn SPI_Flash_ReadJEDEC_ID
|
||||
*
|
||||
* @brief Read JEDEC ID (0x9F). Return 3rd byte (device id).
|
||||
* W25Q32=0x16 Q64=0x17 Q128=0x18 Q256=0x19; 0 if not Winbond.
|
||||
*
|
||||
* @return device id byte
|
||||
*/
|
||||
uint8_t SPI_Flash_ReadJEDEC_ID(void)
|
||||
{
|
||||
uint8_t id[3] = {0, 0, 0};
|
||||
|
||||
GPIO_WriteBit(GPIOA, GPIO_Pin_4, 0);
|
||||
SPI1_ReadWriteByte(W25X_JedecDeviceID);
|
||||
id[0] = SPI1_ReadWriteByte(0xFF);
|
||||
id[1] = SPI1_ReadWriteByte(0xFF);
|
||||
id[2] = SPI1_ReadWriteByte(0xFF);
|
||||
GPIO_WriteBit(GPIOA, GPIO_Pin_4, 1);
|
||||
|
||||
if (id[0] != 0xEF || id[1] != 0x40) return 0;
|
||||
return id[2];
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************************
|
||||
* @fn SPI_Flash_Erase_Sector
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user