GD5F 补 DMA 守卫负路径用例 TC-704/705,导出阈值宏并对齐测试指南
This commit is contained in:
@@ -45,13 +45,12 @@ extern SPI_HandleTypeDef hspi1;
|
||||
/* DMA 完成标志(ch395f.c 中的 HAL_SPI_TxRxCpltCallback 会设置此标志) */
|
||||
volatile uint8_t g_spi1_dma_done;
|
||||
|
||||
/* DMA 阈值(字节数超过此值使用 DMA 传输) */
|
||||
/* DMA 阈值 1024B(2026-09-20):阈值以下走 CPU 轮询。存在把**栈上小缓冲**
|
||||
* 直接传进本驱动做收发的大小(dhara meta 读 132B、dhara_nand_is_free 64B),
|
||||
* 任务栈随 FreeRTOS 堆驻留 CCM(0x10000000),而 DMA1/DMA2 物理上不可达
|
||||
* CCM——此类传输必须留在轮询域,否则静默失败(CCM 首次扩容实验实证的根因)。
|
||||
* 页级大块传输(2048)仍走 DMA,源/目的全部为文件作用域静态缓冲。 */
|
||||
#define GD5F_DMA_THRESHOLD 1024
|
||||
/* DMA 阈值(字节数超过此值使用 DMA 传输):取值定义在头文件,理由如下——
|
||||
* 阈值以下走 CPU 轮询。存在把**栈上小缓冲**直接传进本驱动做收发的大小
|
||||
* (dhara meta 读 132B、dhara_nand_is_free 64B),任务栈随 FreeRTOS 堆驻留
|
||||
* CCM(0x10000000),而 DMA1/DMA2 物理上不可达 CCM——此类传输必须留在轮询域,
|
||||
* 否则静默失败(CCM 首次扩容实验实证的根因)。页级大块传输(2048)仍走 DMA,
|
||||
* 源/目的全部为文件作用域静态缓冲。 */
|
||||
|
||||
/* DMA 可达内存区间:必须与分散加载文件 RW_IRAM1(0x20000000,128KB,
|
||||
* SRAM1+SRAM2)一致。CCM(0x10000000,64KB)DMA1/DMA2 物理不可达,
|
||||
|
||||
@@ -72,6 +72,16 @@ extern "C" {
|
||||
#define GD5F_TOTAL_BLOCKS 2048
|
||||
#define GD5F_TOTAL_SIZE (GD5F_TOTAL_BLOCKS * GD5F_BLOCK_SIZE)
|
||||
|
||||
/*
|
||||
* SPI DMA 传输阈值:超过该字节数走 DMA,否则走 CPU 轮询。
|
||||
* 取值约束:① 必须 >= 存储路径上可能出现在任务栈的最大缓冲(dhara meta 132B、
|
||||
* dhara_nand_is_free 64B)——任务栈随 FreeRTOS 堆驻留 CCM(0x10000000),
|
||||
* 而 DMA1/DMA2 物理不可达 CCM,栈缓冲一旦进 DMA 即静默失败(2026-09-20 实证);
|
||||
* ② 必须 < 页大小(2048),页级传输保留 DMA。
|
||||
* 公开此宏供测试用例对齐阈值上下界,避免测试取值与驱动漂移。
|
||||
*/
|
||||
#define GD5F_DMA_THRESHOLD 1024
|
||||
|
||||
/* 坏块表持久化:保留块池数量(从 NAND 顶部向下挑选出厂好块存储 BBT) */
|
||||
#define GD5F_BBT_POOL_COUNT 4
|
||||
|
||||
|
||||
Reference in New Issue
Block a user