1. 项目概述GPMC预取与写后置引擎的核心价值在嵌入式系统开发中尤其是涉及大量数据存储与交换的场景处理器与外部存储设备如NAND闪存之间的数据通道往往是性能瓶颈的关键所在。如果你曾为NAND闪存缓慢的随机读写速度、复杂的命令序列以及处理器在等待数据时被“挂起”而头疼那么深入理解通用内存控制器GPMC中的预取Prefetch与写后置Write-Posting引擎将是解锁系统存储性能潜力的关键一步。这不仅仅是配置几个寄存器那么简单而是一套通过硬件自动化来“欺骗”软件、实现高效数据流管理的精妙哲学。以TI的AM62L Sitara™处理器为例其GPMC模块内置的这套引擎本质上是一个专为NAND闪存访问设计的硬件加速器。它的核心思想是“预判”和“缓冲”。想象一下你要从一个大仓库NAND里搬一箱书一页数据到你的工作台处理器。没有引擎时你每次需要一本书一个字节都得跑一趟仓库经历开门发送命令、找书架发送地址、拿书读取数据、关门结束访问这一整套流程效率极低。而预取引擎就像雇了一个助手你告诉他“去把A书架第三层的整箱书都搬过来”他就可以在你处理第一本书的时候默默地把整箱书都搬到工作台旁边的暂存区FIFO。接下来你需要任何一本书直接从暂存区拿即可省去了反复跑仓库的等待时间。写后置引擎则相反它允许你把要存回仓库的书先扔进暂存区然后就可以去干别的事了助手会负责在后台把书整理好并放回仓库。这种机制的技术价值是巨大的。它通过将软件驱动的、离散的访问请求转化为硬件管理的、批量的数据流显著降低了处理器的介入频率和等待延迟。对于需要连续读取大块数据如执行XIP程序或高速记录数据流如日志写入的应用性能提升是数量级的。本文将深入拆解AM62L GPMC中这两个引擎的工作原理、配置细节、FIFO的控制艺术以及如何利用它们进行极致的时序优化。无论你是正在调试底层驱动的嵌入式软件工程师还是负责选型与系统架构的硬件工程师理解这些细节都将帮助你构建出更高效、更可靠的存储子系统。2. 引擎核心工作机制与模式选择2.1 预取模式主动填充降低读延迟预取模式是针对读操作优化的核心机制。当处理器需要从NAND闪存连续读取数据时例如加载一个文件系统块或执行代码传统的做法是处理器发出读命令后必须等待NAND准备好数据然后逐个字节或字地读取期间处理器被阻塞。预取模式改变了这一流程。其工作流程可以分解为以下几个关键阶段软件初始化驱动软件首先需要像往常一样向NAND发送读命令序列命令周期、地址周期将NAND内部的数据指针定位到目标页。引擎启动软件配置并启动预取引擎。引擎获知需要读取的总字节数通过TRANSFERCOUNT配置。后台预加载引擎在后台自动、连续地向NAND发起读数据请求将读取到的数据源源不断地填入内部的FIFO缓冲区。这个过程与处理器执行其他任务并行。处理器消费处理器无需关心NAND的状态直接像访问普通内存一样从被映射到FIFO输出的芯片选择Chip-Select地址区域读取数据。当处理器读取速度低于引擎填充速度时FIFO逐渐填满反之则被逐渐清空。流控与完成通过FIFOTHRESHOLDFIFO阈值和中断/DMA机制软件可以高效地管理数据流。当所有TRANSFERCOUNT指定的数据都传输完毕引擎自动停止并产生完成中断。这里的一个关键配置是SYNCHROMODE同步模式。当该位清零时引擎在STARTENGINE置位后立即开始向NAND请求数据。这就要求软件必须确保在启动引擎前NAND设备已经处于就绪状态R/B#引脚为高否则引擎会读取到无效数据。当SYNCHROMODE置位时引擎会等待指定的GPMC_WAIT引脚检测到一个下降沿从有效到无效的转换后才开始预取。这通常与NAND的R/B#引脚相连实现了硬件同步确保了引擎只在数据真正有效时才开始工作更为可靠。实操心得模式选择与启动时机在实际驱动开发中我强烈推荐启用SYNCHROMODE。虽然这增加了一点硬件连线的复杂度但它从根本上避免了因NAND响应速度波动导致的读取错误。一个常见的坑是启动时序务必在NAND地址周期即发送完列/行地址完成之前就置位STARTENGINE。如果等到地址周期完全结束再启动引擎GPMC的总线状态机可能会产生一个短暂的停滞期。在同步模式下你提前启动引擎是安全的因为引擎会等待WAIT信号这确保了命令和地址相位不会被意外打断。2.2 写后置模式异步提交提升写吞吐量写后置模式是写操作的“加速器”。传统NAND编程需要处理器等待漫长的tPROG页编程时间通常是几百微秒到几毫秒。写后置模式将“数据搬运到NAND缓存”和“NAND内部编程”这两个过程解耦。其工作流程如下发起写操作软件像往常一样发送NAND的页编程命令序列命令周期、地址周期。引擎启动与数据缓冲软件配置并启动写后置引擎。此后处理器向映射的FIFO地址写入的数据并不会立即发送到NAND的I/O引脚而是被快速存入FIFO缓冲区。处理器写入的速度可以很快一旦数据进入FIFO处理器就可以转而执行其他任务。后台数据搬运写后置引擎在后台自动、持续地将FIFO中的数据搬移到NAND闪存的页缓存中。这个过程对处理器是透明的。提交编程命令当TRANSFERCOUNT指定的所有数据都从FIFO写入NAND缓存后引擎完成。此时软件必须再发送一个“编程确认”命令通常是0x10来启动NAND内部的实际编程操作。之后软件仍需通过读取状态寄存器或轮询R/B#引脚来等待编程完成。写后置模式必须将SYNCHROMODE位清零这意味着引擎启动后立即开始从FIFO向NAND搬运数据只要FIFO中有数据。这符合写操作的逻辑数据已经由处理器准备好无需等待外部设备。注意事项ECC处理的时机无论是预取还是写后置如果启用了GPMC内部的硬件ECC错误校验与纠正引擎ECC计算的时机至关重要。对于读操作预取ECC引擎必须在预取引擎启动之前就完成初始化和使能。这样从NAND读出的每一个字节在进入FIFO的同时就会被ECC引擎计算并校验确保存入FIFO的数据的完整性。对于写操作写后置ECC引擎同样需要在写后置引擎启动前就绪。处理器写入FIFO的数据会同步被ECC引擎计算生成校验位。当引擎将数据写入NAND页缓存时对应的ECC校验字节也会被一并写入NAND的备用区Spare Area。顺序错误将导致ECC校验码与数据不匹配引发后续读数据时的ECC错误。2.3 核心寄存器配置详解引擎的正确工作依赖于一组关键寄存器的精确配置。以下表格总结了两种模式下的核心配置位域表预取与写后置引擎核心配置寄存器概览配置项寄存器位域预取模式值写后置模式值说明与计算逻辑引擎使能GPMC_PREFETCH_CONFIG1[7] ENABLEENGINE11总开关。置1后对该CS的访问被重定向至FIFO。工作模式GPMC_PREFETCH_CONFIG1[0] ACCESSMODE010预取1写后置。芯片选择GPMC_PREFETCH_CONFIG1[26-24] ENGINECSSELECTOR0-30-3指定引擎关联的NAND设备所使用的CS引脚编号。FIFO阈值GPMC_PREFETCH_CONFIG1[14-8] FIFOTHRESHOLD用户定义用户定义以字节为单位。决定触发中断/DMA请求的数据量。传输总数GPMC_PREFETCH_CONFIG2[13-0] TRANSFERCOUNT用户定义用户定义以字节为单位。本次引擎操作需要传输的总数据量。同步模式GPMC_PREFETCH_CONFIG1[3] SYNCHROMODE0或1必须为0预取下0-立即开始1-等待WAIT信号。写后置下必须为0。DMA模式GPMC_PREFETCH_CONFIG1[2] DMAMODE0或10或1置1时FIFO事件将产生DMA请求而非中断。启动控制GPMC_PREFETCH_CONTROL[0] STARTENGINE0-10-1软件置1启动引擎传输完成后硬件自动清零。参数计算逻辑TRANSFERCOUNT通常设置为你要读写的一个NAND页的大小。例如对于2048字节64字节备用区的页如果你只读写主数据区则设为2048如果包含备用区则设为2112。它必须是FIFOTHRESHOLD的整数倍以实现确定性的中断控制后文详述。FIFOTHRESHOLD这个值需要权衡。设得太小如32字节中断/DMA请求会非常频繁增加系统开销。设得太大如1024字节则处理器或DMA响应延迟可能导致FIFO溢出写后置或下溢预取。一个经验值是设置为DMA最大突发传输长度或CPU缓存行大小的一半到一倍例如128或256字节。3. FIFO控制机制中断与DMA的实战策略FIFO是引擎与主机CPU/DMA之间的数据交换枢纽。高效地控制FIFO是发挥引擎性能的关键主要依靠状态监控和事件触发两种机制。3.1 状态监控FIFOPOINTER与COUNTVALUE软件可以通过查询两个状态寄存器来了解当前进度GPMC_PREFETCH_STATUS[30-24] FIFOPOINTER指示FIFO中可用数据的字节数预取模式或空闲位置的字节数写后置模式。这是一个实时值。GPMC_PREFETCH_STATUS[13-0] COUNTVALUE指示引擎剩余要传输的字节数根据TRANSFERCOUNT计算。这个值仅在引擎活动STARTENGINE1时有效。重要特性无论连接的NAND设备是8位还是16位宽这两个字段的值始终以字节为单位。这意味着在编程时你无需根据总线宽度进行转换简化了软件设计。3.2 中断驱动控制中断方式适合CPU直接处理数据或者数据量不大、传输不连续的场景。1. FIFO阈值中断预取模式当FIFO中积累的数据量达到或超过FIFOTHRESHOLD字节时如果GPMC_IRQENABLE[0] FIFOEVENTENABLE被置位GPMC会产生一个中断。写后置模式当FIFO中空闲位置达到或超过FIFOTHRESHOLD字节时触发中断。中断服务程序ISR职责读取GPMC_IRQSTATUS[0] FIFOEVENTSTATUS确认事件。进行相应操作预取模式下从FIFO读取FIFOTHRESHOLD字节的数据写后置模式下向FIFO写入FIFOTHRESHOLD字节的数据。关键步骤清除FIFOEVENTSTATUS位。必须在该次中断处理中将FIFO数据量操作到低于阈值后再清除此状态位否则可能立即再次触发中断。2. 传输完成中断当COUNTVALUE递减到0即TRANSFERCOUNT指定的所有数据传输完毕时如果GPMC_IRQENABLE[1] TERMINALCOUNTEVENTENABLE被置位会触发终端计数中断。这在处理最后一次数据块时非常有用因为最后一次的数据量可能小于FIFOTHRESHOLD。避坑指南中断的启用与清除顺序这是一个极易出错的地方。正确的顺序是在启动引擎之前先清除FIFOEVENTSTATUS和TERMINALCOUNTSTATUS位。这是为了清除任何之前可能残留的、未处理的中断标志。配置并启动引擎设置STARTENGINE1。在引擎启动之后再使能相应的中断使能位FIFOEVENTENABLE/TERMINALCOUNTEVENTENABLE。 如果顺序颠倒在引擎启动瞬间可能因为FIFO状态变化立即产生一个中断事件而此时状态位尚未被清除会导致软件误判为一个“过期”的中断引发逻辑错误。3.3 DMA控制模式对于大数据量的连续传输DMA是更高效的选择它能将CPU从繁重的数据搬运工作中彻底解放出来。配置流程使能DMA模式置位GPMC_PREFETCH_CONFIG1[2] DMAMODE。配置DMA通道将GPMC的FIFO事件映射到某个DMA控制器的请求线。在DMA通道中设置源/目标地址预取模式源地址是FIFO的内存映射地址写后置模式目标地址是FIFO的内存映射地址。传输数量应设置为FIFOTHRESHOLD字节。DMA控制器会按照这个长度进行每次传输。传输模式通常配置为“外设到内存”预取或“内存到外设”写后置的单一请求模式。启动顺序先配置好DMA通道但不要使能DMA通道。配置并启动GPMC引擎STARTENGINE1。最后使能DMA通道。这个顺序至关重要可以避免引擎启动时可能产生的陈旧DMA请求导致错误的DMA传输。DMA工作特性GPMC发出的DMA请求会一直保持有效直到DMA控制器完成了FIFOTHRESHOLD字节的传输。在此期间GPMC不会发出新的DMA请求。这保证了数据传输的原子性和确定性。如果TRANSFERCOUNT不是FIFOTHRESHOLD的整数倍最后一个数据块会小于阈值。此时DMA控制器需要根据COUNTVALUE或通过终端计数中断获知来调整最后一次传输的大小。3.4 确定性的FIFO控制策略为了实现稳定、可预测的数据流强烈建议遵循以下设计原则使TRANSFERCOUNT成为FIFOTHRESHOLD的整数倍。好处在预取模式下你将收到(TRANSFERCOUNT / FIFOTHRESHOLD)次精确的FIFO阈值中断/DMA请求每次处理固定大小的数据块。当最后一次阈值中断被响应并处理后FIFO恰好被清空COUNTVALUE也变为0流程完美结束。不遵循的后果如果TRANSFERCOUNT不是整数倍最后一次中断触发时FIFO中剩余的数据量将小于FIFOTHRESHOLD。你需要依赖COUNTVALUE或终端计数中断来知道还有多少数据需要处理增加了软件逻辑的复杂性并且在DMA模式下需要动态调整最后一次传输的字节数。4. 访问时序优化榨取最后一滴性能GPMC引擎不仅能通过FIFO缓冲减少CPU等待还能在硬件层面优化对NAND设备的访问时序这在连续访问背靠背访问时效果显著。4.1 优化原理与使能当GPMC预取/写后置引擎对同一个NAND芯片选择CS进行连续的读写访问时如果访问之间没有插入对其他CS设备的访问即非交错访问那么从第二次访问开始可以缩减某些时序参数从而缩短整个访问周期。优通过两个寄存器位控制GPMC_PREFETCH_CONFIG1[27] ENABLEOPTIMIZEDACCESS置1以启用时序优化。GPMC_PREFETCH_CONFIG1[30-28] CYCLEOPTIMIZATION一个3位字段定义要从基础时序参数中减去的GPMC_FCLK时钟周期数0-7。可以优化的时序参数包RDCYCLETIME/WRCYCLETIME读/写周期时间RDACCESSTIME/WRACCESSTIME读/写访问时间CSOFFTIME片选关闭时间ADVOFFTIME地址有效关闭时间OEOFFTIME/WEOFFTIME输出/写使能关闭时间优化生效的条件优化仅对通过预取/写后置引擎发起的访问生效。对同一CS的连续访问之间没有发生对其他CS的访问无交错访问。第一次访问使用完整的、配置的时序参数。后续的背靠背访问则使用减去CYCLEOPTIMIZATION个周期后的时序。4.2 优化配置实战与计算假设你的NAND闪存在104MHz周期约9.615ns的GPMC_FCLK下工作根据数据手册计算出的基本读周期参数如下RDCYCLETIME 11个周期 约105.8 nsRDACCESSTIME 10个周期 约96.2 nsOEOFFTIME 11个周期CSRDOFFTIME 11个周期经过测量和评估你发现NAND在第一次访问后内部状态已经稳定后续连续访问可以更快。你决定尝试优化掉2个时钟周期约19.2ns。配置步骤设置ENABLEOPTIMIZEDACCESS 1。设置CYCLEOPTIMIZATION 2(二进制010)。那么在引擎发起的第二次及之后的连续读访问中实际使用的参数变为RDCYCLETIME_optimized 11 - 2 9个周期RDACCESSTIME_optimized 10 - 2 8个周期OEOFFTIME_optimized 11 - 2 9个周期CSRDOFFTIME_optimized 11 - 2 9个周期效果评估对于一个需要连续读取10页数据的操作第一次读取耗时105.8ns后续9次读取每次仅耗时约86.5ns (9 * 9.615ns)。总读取时间显著缩短。注意事项优化与总线仲裁的权衡启用时序优化后CYCLE2CYCLESAMECSEN同一CS连续访问使能参数即使被设置也会被强制忽略同时CYCLE2CYCLEDELAY连续访问延迟会被消除。这意味着引擎会以尽可能快的速度“霸占”总线进行连续访问。这虽然提升了该NAND设备的吞吐量但可能会增加其他总线主设备如另一个处理器核、DMA等访问其他CS的延迟。在复杂的多主设备系统中需要评估这种优化是否会对系统整体实时性造成影响。5. 交错访问与仲裁机制在实际系统中GPMC外部总线可能连接多个设备多个CS处理器或其他主设备也可能需要访问这些设备。这就产生了总线仲裁的问题当预取/写后置引擎正在忙碌时另一个访问请求到达了怎么办5.1 默认固定优先级仲裁默认情况下GPMC使用固定优先级仲裁。预取/写后置引擎被赋予最低优先级。这意味着只要引擎启动了它就会持续占用总线直到完成当前TRANSFERCOUNT指定的所有数据传输。在此期间到达的对其他CS的访问请求会被阻塞必须等待引擎释放总线。最大延迟时间 引擎完成当前访问所需时间RDCYCLETIME或WRCYCLETIME可能是优化后的 为该NAND CS配置的BUSTURNAROUND总线周转时间。这种策略简单保证了引擎数据传输的连续性和最大吞吐量但可能影响其他外设的实时响应。5.2 轮询优先级仲裁为了更公平地分配总线带宽GPMC提供了轮询仲裁模式。通过设置GPMC_PREFETCH_CONFIG1[23] PFPWENROUNDROBIN 1来启用。GPMC_PREFETCH_CONFIG1[19-16] PFPWWEIGHTEDPRIO位域用于设置引擎的“权重”。工作机制举例 假设设置PFPWWEIGHTEDPRIO 2。初始状态引擎和主机互联接口都在请求总线。GPMC仲裁器先授予主机一个访问周期处理一个对其他CS的请求。然后仲裁器授予引擎连续3个访问周期权重值21。在这期间引擎可以连续进行3次数据访问。3个周期后总线控制权交还给主机1个周期。如此循环直到某一方停止请求。这种模式在需要平衡NAND访问带宽和其他外设访问延迟的场景下非常有用。例如在一个同时需要从NAND读取数据并向以太网发送数据的系统中轮询仲裁可以防止NAND读取长时间阻塞网络数据包的发送。5.3 仲裁策略选择建议追求最大NAND吞吐量如图像采集存储、固件高速更新等场景使用默认固定优先级让引擎一次性完成大量数据传输。保证系统整体实时性如工业控制系统中NAND日志记录不能影响关键的ADC采样或通信中断响应使用轮询仲裁并合理设置权重。调试阶段可以先使用默认优先级确保功能正确在系统集成测试中再根据实际负载调整仲裁策略。6. 典型配置流程与调试技巧6.1 预取模式完整配置流程以下是一个从零开始配置GPMC预取引擎读取一页NAND数据2048字节的软件流程假设使用中断方式NAND为16位宽FIFOTHRESHOLD设为256字节。基础GPMC与NAND初始化配置GPMC对应CS的时序参数RDCYCLETIME,RDACCESSTIME等匹配你的NAND闪存。初始化NAND控制器确保能通过GPMC_NAND_COMMAND/ADDRESS/DATA寄存器进行基本的命令、地址、数据读写。预取引擎静态配置在传输开始前一次性配置// 假设 CS0 连接NAND GPMC_PREFETCH_CONFIG1 0; GPMC_PREFETCH_CONFIG1.ENGINECSSELECTOR 0; // 关联 CS0 GPMC_PREFETCH_CONFIG1.ACCESSMODE 0; // 预取模式 GPMC_PREFETCH_CONFIG1.SYNCHROMODE 1; // 启用同步模式等待WAIT引脚 GPMC_PREFETCH_CONFIG1.WAITPINSELECTOR 0; // 选择 GPMC_WAIT0 引脚 GPMC_PREFETCH_CONFIG1.FIFOTHRESHOLD 256; // 阈值 256 字节 GPMC_PREFETCH_CONFIG1.ENABLEOPTIMIZEDACCESS 1; // 启用时序优化 GPMC_PREFETCH_CONFIG1.CYCLEOPTIMIZATION 1; // 优化1个时钟周期 // 注意先不要设置 ENABLEENGINE 和 STARTENGINE动态启动与传输流程// 1. 清除可能残留的中断标志 GPMC_IRQSTATUS.FIFOEVENTSTATUS 1; GPMC_IRQSTATUS.TERMINALCOUNTSTATUS 1; // 2. 配置本次传输总量 GPMC_PREFETCH_CONFIG2.TRANSFERCOUNT 2048; // 读取一页主数据 // 3. 使能ECC引擎如果需要 GPMC_ECC_CONFIG.ECCCS 0; GPMC_ECC_CONFIG.ECCENABLE 1; GPMC_ECC_CONTROL.ECCCLEAR 1; // 清除旧ECC值 // 4. 发送NAND读命令序列命令0x00, 列地址, 行地址... GPMC_NAND_COMMAND_0 0x00; // ... 发送地址 ... // 5. 在NAND地址周期结束前启动预取引擎 GPMC_PREFETCH_CONFIG1.ENABLEENGINE 1; // 使能引擎地址访问重定向到FIFO GPMC_PREFETCH_CONTROL.STARTENGINE 1; // 启动引擎在SYNCHROMODE下会等待WAIT // 6. 使能中断在引擎启动后 GPMC_IRQENABLE.FIFOEVENTENABLE 1; // 如果 TRANSFERCOUNT 不是 FIFOTHRESHOLD 整数倍还需使能 TERMINALCOUNTEVENTENABLE // 7. 中断服务程序 (ISR) void GPMC_FIFO_ISR(void) { if (GPMC_IRQSTATUS.FIFOEVENTSTATUS) { // 从 FIFO 地址读取 256 字节数据 uint8_t buffer[256]; for(int i0; i256; i) { buffer[i] *(volatile uint8_t*)(GPMC_CS0_BASE i); // 字节访问 } GPMC_IRQSTATUS.FIFOEVENTSTATUS 1; // 清除中断标志 } if (GPMC_IRQSTATUS.TERMINALCOUNTSTATUS) { // 所有数据传输完成进行后续处理 GPMC_IRQSTATUS.TERMINALCOUNTSTATUS 1; // 清除中断标志 GPMC_PREFETCH_CONFIG1.ENABLEENGINE 0; // 可选关闭引擎 } }6.2 常见问题排查实录问题1使能引擎后CPU访问NAND CS地址导致系统挂起或数据错误。能原因AENABLEENGINE置位后对该CS的访问被重定向到了FIFO。如果你试图通过GPMC_NAND_DATA_i寄存器直接访问NAND这是可以的。但如果你访问的是CS的内存映射区域而FIFO控制逻辑如阈值中断未正确设置访问可能会被阻塞。排查检查FIFOTHRESHOLD是否设置合理。在预取模式下确保引擎已经启动(STARTENGINE1)并且NAND有数据正在被读入FIFO。你可以先读取FIFOPOINTER确认FIFO中有数据后再进行访问。可能原因BNAND设备未就绪。在非同步模式(SYNCHROMODE0)下如果启动引擎时NAND的R/B#为低引擎会读取到无效数据后续CPU读FIFO也会得到错误数据。排查检查NAND状态寄存器或改用同步模式(SYNCHROMODE1)。问题2中断频繁触发甚至陷入死循环。可能原因中断清除与数据处理的顺序不当。如果在ISR中先清除了FIFOEVENTSTATUS再读取FIFO数据而读取操作后FIFO中的数据量仍然高于阈值则中断标志会立即再次被置起导致中断嵌套或连续触发。解决严格遵守“先处理数据后清除标志”的原则。确保你的读取操作足以使FIFO数据量降至阈值以下。问题3DMA传输启动后数据错位或传输量不对。可能原因DMA通道使能时机错误。如果在GPMC引擎启动前就使能了DMA通道一个陈旧的DMA请求可能立即触发DMA传输而此时FIFO中可能没有有效数据预取或目标地址未准备写后置。解决确保DMA通道的使能操作在GPMC的STARTENGINE位置1之后进行。问题4启用时序优化后系统偶尔出现访问其他外设超时。可能原因优化后的背靠背访问极大地占用了总线带宽采用默认固定优先级仲裁时导致其他低优先级访问请求被长时间阻塞。排查评估其他外设的实时性要求。如果要求较高可以考虑降低CYCLEOPTIMIZATION值减少优化力度。启用轮询仲裁(PFPWENROUNDROBIN)并设置一个较小的PFPWWEIGHTEDPRIO值让出更多总线时间给其他请求。重新评估系统架构是否可以将对时间敏感的外设连接到其他总线如SPI, I2C上。调试这类硬件加速模块逻辑分析仪或示波器是必不可少的。重点观察以下信号GPMC_CLK、GPMC_CSn、GPMC_ADVn_ALE、GPMC_OEn_REn、GPMC_WEn确认时序参数是否符合配置优化是否生效。GPMC_WAIT在同步模式下确认引擎是否在正确的边沿启动。GPMC_AD总线观察数据流是否连续是否符合预取/后置的预期。对应的中断请求线或DMA请求线观察触发频率是否与FIFOTHRESHOLD和TRANSFERCOUNT的计算值相符。