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. eclipse open call hierarchy无效

    问题: Eclipse中选中一个方法,右击选中open call hierarchy,不显示哪些地方调用了这个方法,却显示了这个方法里面调用了那些方法.前阵子还是好的,现在不知道为什么了. 解决: s ...

  2. 《Python网络编程》学习笔记--UDP协议

    第二章中主要介绍了UDP协议 UDP协议的定义(转自百度百科) UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务 ...

  3. 【三思笔记】 全面学习Oracle分区表及分区索引

    [三思笔记]全面学习Oracle分区表及分区索引 2008-04-15 关于分区表和分区索引(About PartitionedTables and Indexes) 对于 10gR2 而言,基本上可 ...

  4. Spring对远程服务的支持

    Java程序有以下的远程调用技术选择: 远程过程调用(RPC)是同步的,客户端在服务器端返回结果之前将一直被阻塞. 各种技术适用的场景如下: 典型的RMI开发的过程如下: 定义一个接口,用于客户端和服 ...

  5. UEditor工具栏上自定义按钮、图标、事件和右击菜单添加自定义按钮

    首先我要说是,举例说的这个版本是1.2以上的,因为一些配置代码转移到了zh-cn.js里,其他没有变化.开门见山直接写:(我自定义的是在线美图功能) 第一步:找到ueditor.config.js文件 ...

  6. [Python Study Notes]批量将ppt转换为pdf v1.0

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  7. PHPUnit-附录 C. XML 配置文件

    [http://www.phpunit.cn/manual/5.7/zh_cn/appendixes.configuration.html] PHPUnit <phpunit> 元素的属性 ...

  8. windows下apache服务器开启压缩和网页缓存

    找到配置文件:http.conf apache开启压缩 一.开启配置,去除下面代码前面的#号LoadModule deflate_module modules/mod_deflate.soLoadMo ...

  9. java-redis集合数据操作示例(三)

    redis系列博文,redis连接管理类的代码请跳转查看<java-redis字符类数据操作示例(一)>. 一.集合类型缓存测试类 public class SetTest { /** * ...

  10. Linux(ubuntu)安装redis集群,redis集群搭建

    今天学习一下redis集群的搭建.redis在现在是很常用的数据库,在nosql数据库中也是非常好用的,接下来我们搭建一下redis的集群. 一.准备 首先我们要安装c语言的编译环境,我们要安装red ...