GD5F页读回归主线单发令(settle与二次发令移除、3.1V误判更正归一Trap05)、新增Phase11复现用例(16轮零复现)、附台架环境与审计文档
This commit is contained in:
@@ -226,13 +226,11 @@ static void gd5f_page_read_issue(uint32_t page_addr) {
|
||||
* 入口参数:page_addr - 页地址 uint32_t 0 ~ GD5F_TOTAL_BLOCKS*64-1
|
||||
* 返回值:0 - 成功,其它 - 错误
|
||||
* 限定条件:SPI 已初始化
|
||||
* 函数说明:13h 二次发令 + 固定沉降延时 GD5F_PAGE_READ_SETTLE_MS。
|
||||
* 台架实证(2026-09-20,VDD 3.1V 欠压工况):① 就绪信号可早于
|
||||
* array→buffer 整页装载完成 → 0Bh 读到"前段新、后段旧"混合页;
|
||||
* ② 13h 命令在编程/擦除风暴后可不被芯片锁存(空操作)→ 0Bh
|
||||
* 读到上一操作残留 buffer(编程数据)→ 后续文件/BBT/journal
|
||||
* 读取全部"虚假成功",阵列实际未更新 → 复位后数据丢失。
|
||||
* 二次发令覆盖②(重发必被锁存),固定沉降覆盖①(整页装载完成)。
|
||||
* 函数说明:13h 单次发令 + WIP 轮询(与 Linux 主线 / GigaDevice 厂商驱动
|
||||
* 形状完全一致:13h×1 → OIP 轮询 → 0Bh)。
|
||||
* 2026-09-20 台架异常史实(归因、证伪、沉降/二次发令的加与除)
|
||||
* 统一记于 docs/问题记录/GD5F2GQ5UE_Trap_Records.md Trap 05,
|
||||
* 复现手段见测试 Phase 11 用例。
|
||||
*/
|
||||
int gd5f_page_read(uint32_t page_addr) {
|
||||
int ret;
|
||||
@@ -243,16 +241,6 @@ int gd5f_page_read(uint32_t page_addr) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 二次发令:首条 13h 未被锁存(空操作)时由重发兜底 */
|
||||
gd5f_page_read_issue(page_addr);
|
||||
ret = gd5f_wait_busy(100);
|
||||
if (ret != GD5F_OK) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 固定沉降:等待 array→buffer 整页装载完成 */
|
||||
HAL_Delay(GD5F_PAGE_READ_SETTLE_MS);
|
||||
|
||||
return GD5F_OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -60,15 +60,10 @@ extern "C" {
|
||||
#define GD5F_BLOCK_SIZE (GD5F_PAGES_PER_BLOCK * GD5F_PAGE_SIZE)
|
||||
|
||||
/*
|
||||
* 页读取固定沉降延时(2026-09-20 台架实证):13h 发出后 array→buffer
|
||||
* 的整页装载完成前,就绪信号可能提前清零(低 VDD 下内部传输速率下降,
|
||||
* 确定性早于 0Bh 读完成)→ 0Bh 流式读到"前段新、后段旧"的混合页
|
||||
* (journal checkpoint header 有效而 meta 残留旧数据 → 复位后 resume
|
||||
* 锚定新 checkpoint 却读到旧树 → 数据静默丢失)。13h 之后、0Bh 之前
|
||||
* 强制等待该时长,保证整页新鲜。取值须覆盖低 VDD 下 t_RR 最慢工况,
|
||||
* 同时受开机 BBT 全片扫描(2048 次页读)耗时约束:2ms 实测两可。
|
||||
* 页读取就绪判定 = WIP 轮询(与 Linux 主线 / GigaDevice 厂商驱动完全一致,
|
||||
* 单发令形状)。2026-09-20 沉降 / 13h 二次发令史实统一记于
|
||||
* GD5F2GQ5UE_Trap_Records.md Trap 05。
|
||||
*/
|
||||
#define GD5F_PAGE_READ_SETTLE_MS 2
|
||||
#define GD5F_TOTAL_BLOCKS 2048
|
||||
#define GD5F_TOTAL_SIZE (GD5F_TOTAL_BLOCKS * GD5F_BLOCK_SIZE)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user