转载:http://blog.sina.com.cn/s/blog_99698d3c0100xkqi.html

1. ADMA (Advanced DMA)

在SD Host Controller Standard Specification 2.00,定义了新的DMA传输算法ADMA (Advanced DMA)。在1.0协议中定义的DMA叫做SDMA(Single DMA),SDMA的缺点是在每个页面边界会产生DMA中断,从而打断CPU重新编程新的系统地址,由于每个页面边界的中断,SDMA算法产生了性能瓶颈。ADMA采用scatter gather DMA算法,因此能得到更高的传输速度。在系统内存和SD卡之间,Host驱动在执行DMA前把一系列的数据传输编程成描述符表(Descriptor Table),使能ADMA传输数据而不中断Host驱动。

ADMA不仅支持32位的系统内存地址,也支持64位系统内存地址,32位地址使用64位地址寄存器中的低32位。

ADMA有两种类型:ADMA1和ADMA2。ADMA1支持在系统内存中4KB对齐的数据传输。ADMA2改善了这个限制,因此系统内存中,任何位置和大小的数据能够被传输。ADMA1和ADMA2有不同的描述表格式,2.0协议定义ADMA2作为标准的ADMA,并推荐支持ADMA2而不是ADMA1。

2. 数据地址和数据长度要求

对于描述表,有三个要求需要满足:

1) 最小地址单元为4byte

2) 每个描述符行(Descriptor Line,包括地址,长度和属性)的数据长度小于64KB

3) 总的数据长度:

Total Length = Length 1 + Length 2 + … Length n = multiple of Block Size(块大小的倍数)

如果总的数据长度不是块大小的倍数,那么ADMA2传输不会结束,因此传输将由于数据超时而终止。

Block Count寄存器作为16位寄存器被定义,最大传输是65535个块。如果ADMA2操作少于或等于65535块数据,Block Count能够被使用。因此描述符表的总数据长度将等于块大小的倍数和块数。如果ADMA2操作的数据大于65535个块,那么Block Count寄存器将不被使用并把Block Count Enable阈(Transfer Mode寄存器)设置成“0”,因此总的数据长度将是由描述符表决定,而不是由块数。因此在SD总线上的最后一个块的定时检测可能不同并将影响 Present State寄存器中的Read Transfer Active, Write Transfer Active和DAT line Active。在读操作时,会比要求的多读几个块。如果读操作是内存数据的最后块,Host驱动应该忽略Out Of Range错误。

3. 描述符表(Descriptor Table)
上表是32位地址描述符表,每个描述符行由64位(8byte)组成,Attribute用于控制描述符。下表为Length阈定义和64位地址描述符表

4. ADMA2框图
Host驱动在系统内存中创建描述符表,32位的系统需要32位的描述符表,相应的,64位系统需要64位的描述符表。ADMA2不会为描述符指针使用32-bit的SDMA System Address Register(offset 0),而是使用64-bit Advanced DMA System Address Register(offset 0x58h)。

5. ADMA2编程例子
数据被划分成不同长度的部分,每部分数据存放在系统内存的某个地方,Host驱动创建描述符表(数据地址,长度和属性),每部分数据依照描述符中编程的顺序传输。

6. ADMA2状态

下图为ADMA状态转换图,定义了4个状态:Fetch Descriptor state, Change Address state, Transfer Data state和Stop ADMA state。

SDHC ADMA和SDMA区别相关推荐

  1. MMC,SD,MINI SD,SDHC,SDHC的区别总结

    MMC,SD,MINI SD,SDHC,SDHC的区别总结 MMC卡(MultiMedia Card) 多媒体卡(MMC)是一种小型(24x32或18x1.4mm)可擦除固态存储卡,其全称为Multi ...

  2. SD/SDHC/SDXC区别

    SD/SDHC/SDXC是一系列容量标准,共有三种容量标准: SD-容量上限为2GB,使用FAT 12与FAT 16档案系统. SDHC-容量介于2GB至32GB间,使用FAT32档案系统. SDXC ...

  3. 【WinCE】SD card技术了解并WINCE下SDHC驱动开发(updated)

    SD Card Driver on ADS Summary 了解SD card. 1 WinCE 5.0下SD Stack. 6 Bus Driver 7 Host Controller Driver ...

  4. ubutntu 使用tftp_TI 816X开发板直接从SD卡读取内核到内存中和通过TFTP下载到内存中区别...

    用的是TI的 816X开发板,现在碰到一个问题,想不明白,请教各位. 我的开发环境是在vmware下安装的ubuntu10.04,通过网线连接到开发板的网口(J10),主机IP为192.168.0.1 ...

  5. 空分多址——SDMA

    SDMA介绍 空分多址(SDMA)是一种新发展的多址技术,在由中国提出的第三代移动通信标准TD-SCDMA中就应用了SDMA技术:此外在卫星通信中也有人提出应用 SDMA.SDMA实现的核心技术是智能 ...

  6. SDHC介绍(收集网上资料-仅供学习之用)

    SDHC是"High Capacity SD Memory Card"的缩写,即"高容量SD存储卡".2006年5月SD协会发布了最新版的SD 2.0的系统规范 ...

  7. SDHC或SD2.0卡的驱动程序的注意事项

    SDHC或SD2.0卡的驱动程序的注意事项 首先对SD卡有一个感性认识: SD卡的技术是基于MultiMedia卡(MMC)格式上发展而来,大小和MMC差不多,尺寸为32mm x 24mm x 2.1 ...

  8. SDHC (High Capacity SD Memory Card)

    引用ifrcn 的 I24~ SDHC (High Capacity SD Memory Card) 目前市场出现了一种新的闪存卡产品――SDHC,相信许多消费者对这一产品还并不是非常了解,也许已经被 ...

  9. 存储卡的相关标准.CF.SD.SDHC.MMC.TF

    注:以下相关内容收集自互联网,仅供个人学习之用. SDHC存储卡,一般按class等级可分为4级:class2, class4, class6, class10.这4个等级的存储卡的最低读写速率分别为 ...

最新文章

  1. 全卷积神经网路【U-net项目实战】U-net网络结构为什么在医学影像分割上表现不错
  2. ui与html界面区别,ui前端和web前端的区别是什么?
  3. C++后台开发需要什么?
  4. callback用法 js vue_Vue.js 实例方法
  5. 产品经理思维模型:用户体验要素
  6. Java——异常(try...catch...finally)
  7. [html] 一般习惯把js写在</body>前,但有例外的情况吗?说说看
  8. Linux Shell高级技巧(四)
  9. SAP中的时间表达方式
  10. gSLICr: SLIC superpixels at over 250Hz
  11. three.js 使用DragControls.js 拖动元素
  12. vba判断文件编码格式_VBA编写Ribbon Custom UI编辑器07——写入xml
  13. js基础-12-判断数组和判断对象的方法
  14. Spring Boot 项目集成Windows域账户认证
  15. 股票的收益率计算公式
  16. WireShark基本使用(5)第 5 章 文件输入/输出及打印
  17. HTTP/2 协议规范
  18. 【寻找最佳小程序】影视评分小工具“豆瓣评分”——产品设计要点及专家评析...
  19. 国产品牌积极布局,游戏手机会是行业增长新风口吗?
  20. ubuntu18.04 RoboCup实物

热门文章

  1. redistemplate opsforvalue和boundValueOps
  2. 重电计算机学院李明建,【i小T有话说 | 第8期】风里雨里,我在上电计算机学院等你!...
  3. 三色球问题python_Python:验证密码程序与水仙花数、三色球问题
  4. python 一,二维数据的个数化和处理
  5. 【嵌入式Linux】开发环境搭建
  6. disabled spring cloud bus interation with spring cloud sleuth zipkin
  7. 2012科技业大公司与大事件:苹果不再创新垄断(转)(二)
  8. Win10找不到飞行模式开关怎么办?
  9. SAS中的intnx函数
  10. 小白学python需要多久_自学Python要多久才能学会