在 C2H 流程示例中,loaddriver.sh 会为所有可用通道加载器件。dma_from_device 用户程序用于将数据从卡传输到主机。
C2H 流程示例顺序如下:
- 打开器件 C2H 并初始化 DMA。
- 用户程序会分配缓冲器指针(基于大小)、将该指针传递到具有特定器件 (C2H) 和数据大小的读取函数。
- 驱动程序会基于大小创建描述符,并使用描述符起始地址初始化 DMA。并且如果存在相邻描述符,
- 驱动程序会写入控制寄存器,以启动 DMA 传输。
- DMA 会从主机读取描述符,并开始处理每个描述符。
- DMA 会从卡提取数据并将此数据发送到主机。基于设置完成所有数据的传输后,DMA 会向主机生成中断。
- ISR 驱动程序会处理中断以确定正在发送中断的引擎,并检查状态以查看是否存在任何错误以及已处理的描述符数量。
- 状态正常后,驱动会将传输字节长度返回至用户侧,以便在用户侧执行相同的检查。