1.      
ATA接口的三种数据传输方式

(1)PIO(Programmable
Input-Output)传输,可以分为PIO寄存器传输和PIO数据传输。PIO寄存器传输主要用于对ATA设备中的寄存器进行读写。读写的数据位数为8位DD[7:0]。ATA主机控制器根据所要读写的寄存器地址设置CS0_、CS1_、DA[2:0]地址信号,同时将DIOW_或DIOR_设为有效,ATA主机控制器或ATA设备驱动数据总线释放数据。当DIOW_或DIOR_撤销时,ATA主机控制器或ATA设备从数据总线上读取数据。对于PIO数据传输,所读写的地址为数据端口,读写数据为16位。

(2)MDMA(Multiword
DMA)传输,用于数据传输。ATA主机控制器向ATA设备下达MDMA传输命令后,等待设备向主机发送DMARQ数据传输请求信号。当主机收到DMARQ信号后,向设备发送DMACK_响应信号。MDMA数据传输过程与PIO方式大致相同,也是通过DIOW_或DIOR_的周期变化来控制数据的传输。在数据传输过程中,DMARQ和DMACK_握手信号一直保持有效。

(3)UDMA(Ultra
DMA),也是用于数据传输。这种传输方式的传输速度比MDMA要快,ATA/ATAPI-5协议中所定义的UDMA传输方式最高数据传输速率是66MB/s。UDMA对数据传输的控制信号重新进行了定义。另外,UDMA还引入了CRC数据校验机制,保证了数据传输过程的正确性,但其传输过程较为复杂。

Transfer mode      
| Description                   | 
Transfer Rate

ATA_PIO_DEF_0      
| PIO default mode              |

ATA_PIO_DEF_1      
| PIO default mode, no IORDY    |

ATA_PIO_0          
| PIO mode 0                    |    
3.3 MBps

ATA_PIO_1          
| PIO mode 1                    |    
5.2 MBps

ATA_PIO_2          
| PIO mode 2                    |    
8.3 MBps

ATA_PIO_3          
| PIO mode 3                    |   
11.1 MBps

ATA_PIO_4          
| PIO mode 4                    |   
16.6 MBps

ATA_PIO_AUTO       
| PIO max supported mode        |

ATA_DMA_SINGLE_0   
| Single DMA mode 0             |    
2.1 MBps

ATA_DMA_SINGLE_1   
| Single DMA mode 1             |    
4.2 MBps

ATA_DMA_SINGLE_2   
| Single DMA mode 2             |    
8.3 MBps

ATA_DMA_MULTI_0    
| Multi word DMA mode 0         |    
4.2 MBps

ATA_DMA_MULTI_1    
| Multi word DMA mode 1         |   
13.3 MBps

ATA_DMA_MULTI_2    
| Multi word DMA mode 2         |   
16.6 MBps

ATA_DMA_ULTRA_0    
| Ultra DMA mode 0              |   
16.6 MBps

ATA_DMA_ULTRA_1    
| Ultra DMA mode 1              |   
25.0 MBps

ATA_DMA_ULTRA_2    
| Ultra DMA mode 2              |   
33.3 MBps

ATA_DMA_ULTRA_3    
| Ultra DMA mode 3              |   
44.4 MBps

ATA_DMA_ULTRA_4    
| Ultra DMA mode 4              |   
66.6 MBps

ATA_DMA_ULTRA_5    
| Ultra DMA mode 5              |  
100.0 MBps

ATA_DMA_AUTO       
| DMA max supported mode        |

2.      
Vxworks下SATA部分的启动流程

//usrConfig.c

#ifdef 
INCLUDE_ATA

usrAtaInit ();

if (strcmp (FS_NAMES_ATA_PRIMARY_MASTER, "" ))

usrAtaConfig (0, 0, FS_NAMES_ATA_PRIMARY_MASTER);

if (strcmp (FS_NAMES_ATA_PRIMARY_SLAVE, "" ))

usrAtaConfig (0, 1, FS_NAMES_ATA_PRIMARY_SLAVE);

if (strcmp (FS_NAMES_ATA_SECONDARY_MASTER, "" ))

usrAtaConfig (1, 0, FS_NAMES_ATA_SECONDARY_MASTER);

if (strcmp (FS_NAMES_ATA_SECONDARY_SLAVE, "" ))

usrAtaConfig (1, 1, FS_NAMES_ATA_SECONDARY_SLAVE);

#ifdef 
INCLUDE_SHOW_ROUTINES

ataShowInit ();                     /* install ATA/IDE show routine */

#endif 
/* INCLUDE_SHOW_ROUTINES */

#endif 
/* INCLUDE_ATA */

//usrAta.c

void usrAtaInit (void)

{

int ix;

ATA_RESOURCE *pAtaResource;

for (ix = 0; ix < ATA_MAX_CTRLS; ix++)

{

pAtaResource = &ataResources[ix];

if (pAtaResource->ctrlType == IDE_LOCAL)

if ((ataDrv (ix, pAtaResource->drives, pAtaResource->intVector,

pAtaResource->intLevel, pAtaResource->configType,

pAtaResource->semTimeout, pAtaResource->wdgTimeout))

== ERROR)

{

printf ("ataDrv returned ERROR from usrRoot.\n");

}

}

}

//ataDrv.c

ataDrv - Initialize the ATA driver ……

INCLUDE_DRV_STORAGE_INTEL_ICH

INCLUDE_ATA

INCLUDE_PIIX4_ATADMA

INCLUDE_ICH7_SUPPORT

Vxworks下的SATA提速的更多相关文章

  1. vxworks下网络编程一:网络字节序问题

    inet_addr("192.168.1.1");//返回网络字节序整型ip地址inet_ntoa(saddr);//将包含网络字节序整型ip地址的in_addr对象转换成本地ch ...

  2. VxWorks下USB驱动总结2

    3:USBD驱动详解 这一部分将要描述USBD(USB Host Driver)的典型应用.例如初始化,client注册,动态连接注册,设备配置,数据传输,同时还探讨了USBD内部设计的关键特性.这部 ...

  3. 对于vxworks下硬盘驱动

    1.曾经看到帖子说vxworks5.5下没有sata驱动,vxworks6.6下有,这样的说法恐怕不正确,由 于俺在5.5下也运用运用了sata硬盘,请注重这里俺只是说运用运用,没有说运用运用了sat ...

  4. vxWorks下dosFs文件系统的创建

    .cdromFs:允许系统从按照ISO9660标准文件系统格式化的CD-ROM上读取设备: 通常文件系统驱动位于磁盘(块存取)设备驱动和IO系统之间,这一点在VxWorks中也不例外,但它在此基础上扩 ...

  5. 【转】 vxWorks下常用的几种延时方法

    在应用编程的时候,通常会碰到需要一个任务在特定的延时之后执行一个指定的动作,如等待外设以确保数据可靠,控制扬声器发声时间以及串口通信超时重发等.这就需要利用定时器机制来计量特定长度的时间段. vxWo ...

  6. vxworks下libpcap的移植

    linux下的libpcap应用能够成熟的使用在第三方的应用中,但基于vxworks开发的项目中需要使用libpcap的部分功能则无相应的实现. 研究了下libpcap向vxworks的移植,并且小有 ...

  7. vxWorks下常用的几种延时方法

         在应用编程的时候,通常会碰到需要一个任务在特定的延时之后执行一个指定的动作,如等待外设以确保数据可靠,控制扬声器发声时间以及串口通信超时重发等.这就需要利用定时器机制来计量特定长度的时间段. ...

  8. vxworks下硬盘测速程序

    void speed(int buflen,int mod){/*int mod = 0;*/ int len=50; FILE *fp; unsigned int i=0,j=0,tmp,tmp2; ...

  9. VxWorks下USB驱动总结1

    1.USB设备 物理特征:4条电缆,电源线.地线.数据线.脉冲线; 速 度:低速1.5Mbps,全速12Mbps,高速480Mbps; 规范版本:1998年USB1.1,2000年USB2.0; 连 ...

随机推荐

  1. Hello 2018

    愈发觉得写技术博客对于自己写作能力的提升会很有帮助,于是在今天终于用Github+Jekyll的方式搭建了自己的博客,从今往后就在这里记录自己在技术上成长的点滴,希望自己的总结和思考也能帮助到其他人. ...

  2. python字符串常用的方法解析

    这是本人在学习python过程中总结的一些关于字符串的常用的方法. 文中引用了python3.5版本内置的帮助文档,大致进行翻译,并添加了几个小实验. isalnum S.isalnum() -> ...

  3. React原理探索- @providesModule 模块系统

    @providesModule是什么 react抛出组件化的概念后,对于开发者而言,为了提高代码的可读性与结构性,通过文件目录结构去阐述组件嵌套关系无疑是一个很好的办法,但是目录级别的加深,同时让re ...

  4. s5pv210 的启动

    1.开发板已启动从0x0获取数据(内部64k的硬盘,里面含有三星固化的BL0段代码),将其读到a8软核中,进行运算,主要用于初始化时钟,96k的内部IRAM.并负责 指定启动设备(通常为外部硬盘),从 ...

  5. 浏览器中显示PPT的展示效果

    发现了一个PPT的WEb展示的方法,在浏览器中载入PDF文件之后,可以实现基于WEB的页面展示,支持全屏与自动播放. https://sharedoc.onk.ninja/ 这不失为一种可行的方式,且 ...

  6. python学习:递归列出目录里的文件

    #!/usr/bin/python   import os import sys   def print_files(path):     lsdir = os.listdir(path)     d ...

  7. ps色彩范围抠章

    1.在photoshop打开需要抠公章的图像文件2.使用椭圆形选区工具,ALT+SHIFT+鼠标左键,选择章的范围 2.CTRL+J,复制图层,得到图层1,隐藏背景 3.CTRL+L,调整色阶,拖动两 ...

  8. 通过实例介绍Android App自动化测试框架--Unittest

    1.为什么需要使用框架实现自动化测试 作为测试工程师,可能在代码能力上相比开发工程师要弱一点,所以我们在写脚本的时候就会相对容易的碰到更多的问题,如果有一个成熟的框架供给我们使用的话,可以帮助我们避免 ...

  9. bzoj 4596 [Shoi2016]黑暗前的幻想乡 矩阵树定理+容斥

    4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 559  Solved: 325[Submit][Sta ...

  10. C语言_指针变量的赋值与运算,很详细

    指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值.未经赋值的指针变量不能使用, 否则将造成系统混乱,甚至死机.指针变量的赋值只能赋予地址, 决不能赋予任何其它数据 ...