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. python中的time模块

    time模块--时间获取和转换 time模块提供各种时间相关的功能 与时间相关的模块有:time,datetime,calendar 必要说明: 这个模块的功能不是适用于所有的平台 这个模块中定义的大 ...

  2. cdh版本的hive安装以及配置

    hive依赖hadoop 需要的软件包:hive-0.13.1-cdh5.3.6.tar.gz .hadoop-2.5.0-cdh5.3.6.tar.gz 1.hadoop的安装步骤请访问: http ...

  3. Django(三) ORM操作

    一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 ORM:关系对象映射.定义一个类自动生成数据库的表结构. 数据库常用的数据类型 : 数字 字符串 时间 ORM分为两种类型: 主流都是 ...

  4. js 数组的一些基本操作

    var arr1 = [1,2,3,4,5,6];   arr1[0];  arr1[1];         console.log("长度:"+arr1.length); 一.遍 ...

  5. GIT_服务器与本地环境构建

    linux安装git包 很多yum源上自动安装的git版本为1.7,这里手动编译重新安装1:安装依赖包yum install curl-devel expat-devel gettext-devel ...

  6. 2n皇后问题

    此题为蓝桥杯基础练习题. 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后 ...

  7. 在Windows下为PHP5.5安装redis扩展

    使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本   根据PHP版本号,编译器版本号和CPU架构, 选择php_redis-2.2.5-5.5-ts-vc11-x86.zip和ph ...

  8. Linux 上 C 程序的内存布局

    在仔细研究这个问题之前,我认为 C 程序在内存中只有代码段,堆和栈三部分构成.前几天面试被问到了这个问题,才发现自己的印象是不完全的. 在本文中通过解析析一个 C 程序中变量和函数的地址来分析 C 程 ...

  9. PHP入门学习精要

    一.文件名 函数.配置文件等其他类库文件之外的一般是以.php为后缀(第三方引入的不做要求): ThinkPHP的模板文件默认是以.html 为后缀(可以通过配置修改): 二.其它命名 其它命名 规则 ...

  10. 加入GIMPS项目,寻找梅森素数!

    截止到目前为止人类共找到了50个梅森素数,其中最后16个梅森素数都是通过GIMPS项目找到的. 为了激励人们寻找梅森素数和促进网格技术发展,总部设在美国旧金山的电子前沿基金会(EFF)于1999年3月 ...