硬件支持的数据传输方式:
Normal:
tasklet_init(&host->pio_tasklet, pio_tasklet, (unsigned long) host);
最终调用pio_tasklet()函数完成数据的收发。
DMA:即Direct Memory Access,在数据的传输的过程中不需要CPU直接参与。CPU坐镇中央、发号施令,具体的数据“搬运”工作由DMA这一硬件模块完成。接下来通过SDIO/SD这一实例,分析下DMA的实现及使用。
一、DMA存在的必要性
众所周知CPU的速度相比外设来说是相当相当快的,所以如果让CPU直接参与数据传输事务,CPU效率必定大打折扣,而且影响Event处理的实时性,于是DMA就应运而生了:解放CPU,专门搬运数据。
二、DMA介绍
这么看来,DMA的意图很单纯;那要完成这个目的,DMA需要什么被告知什么信息呢?
1、数据传输方向
mem<---->mem
mem----->dev
dev----->mem
</