Vxworks下的SATA提速

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提速

时间: 2024-11-13 09:46:56

Vxworks下的SATA提速的相关文章

vxWorks下dosFs文件系统的创建

  文件系统,是指操作系统根据目录和文件的组织形式在磁盘设备上应用的一种设备驱动,不同的文件系统对目录和文件有不同的限制(如目录名限制,文件大小限制等). VxWorks支持多种文件系统,比较重要的有: 1.dosFs:适用于块存取设备(比如硬盘.软盘),和MS-DOS文件系统兼容: 2.rawFs:提供了一种简单的原始文件系统.该文件系统将整个硬盘当作一个单独的大文件: 3.cdromFs:允许系统从按照ISO9660标准文件系统格式化的CD-ROM上读取设备: 通常文件系统驱动位于磁盘(块存

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

在应用编程的时候,通常会碰到需要一个任务在特定的延时之后执行一个指定的动作,如等待外设以确保数据可靠,控制扬声器发声时间以及串口通信超时重发等.这就需要利用定时器机制来计量特定长度的时间段. vxWorks作为实时嵌入式系统,提供多样的定时接口函数.下面结合我的项目经历和网上的参考资料列举一些常用的定时方式,并说明其注意事项. 一.taskDelay taskDelay(n)使调用该函数的任务延时n个tick(内核时钟周期).该任务在指定的时间内主动放弃CPU,除了taskDelay(0)专用于

VxWorks下PCI驱动的配置与测试

理论知识 见<VxWorks系统的PCI总线配置与应用> 实现步骤: 建立工程,添加BSP包: 将驱动测试代码surfConfPciDevice.c加入工程中: 在usrAPPInit.c中添加测试程序,surfConfPciDevice(int vendorId, int devId, int myIndex),厂商号和设备号在BIOS启动时会打印在屏幕上. 其中与PCI相关的函数在pciConfigLib.c (c:\tornado2.2\target\src\drv\pci)    中.

vxWorks下intel82567v3网卡驱动的更新

/* 82567 devicesID */ #define INTEL_DEVICEID_82567LF              0x10BF#define INTEL_DEVICEID_82567V               0x10CB#define INTEL_DEVICEID_82567LM              0x10F5#define INTEL_DEVICEID_82567V3              0x1501#define INTEL_DEVICEID_82567

ubuntu下git clone 提速

环境:ubuntu16.04 方法:通过socks5代理并且使用http链接 步骤: 1.设置全局使用socks5代理,并且使用http传输 git config --global http.proxy socks5://localhost:1080  (1080是设置的本地socks5端口,根据自己代理客户端设置的端口而定) 2.如果要clone的git仓库链接为https://github.com/haha.git,要将https改为http,即为http://github.com/haha

VxWorks平台声卡驱动

[email protected],更多内容请关注http://user.qzone.qq.com/2692407267 VxWorks平台下声卡驱动,符合Linux平台OSS(Open Sound System)音频接口标准,用户可以像Linux中操作oss设备文件(/dev/dsp)一样来进行音频方面的编程.通过声卡驱动技术支撑,可以在VxWorks平台下实现语音识别(Speech Recognition).语音合成(Text To Speech).Voip(Voice Over IP)网络

【转】VxWorks中高精度实时时钟的实现及C语言汇编混合编程

最近一个项目中需要在VxWorks下使用一个高精度实时时钟,要求精度为1ms,溢 出时间大于5小时.VxWorks提供系统时钟,该时钟在操作系统启动后开始计数,精度为1个tick,可以通过tickGet()获取当前计数值.因为 系统时钟默认工作频率为60Hz,则1个tick相当于16.7ms,不符号我们的精度要求.虽然可以通过sysClkRateSet(1000),把精度提高到1ms,但1kHz的系统时钟中断频率会使得CPU的开销大增.考虑到像nanoSleep()这样的应用其计时精度可以达到纳

VxWorks操作系统shell命令与调试方法总结

VxWorks下的调试手段 主要介绍在Tornado集成开发环境下的调试方法,和利用支撑定位问题的步骤.思路. 1         Tornado的调试工具 嵌入式实时操作系统VxWorks和集成开发环境Tornado的组成结构如下图1.分为主机和目标机系统. 图1 集成开发环境结构图 在Tornado下,调试相关操作在Debug菜单下,包括: 图2 Debug菜单 简单解释各菜单项的功能 1.1        WindShell 1.1.1         简介 Vxworks的Shell分为

SQL Server虚拟化系列(3)&mdash;&mdash;构建理想的基于VMware的SQL Server虚拟机

虚拟化变得越来越常见,并且在不了解虚拟化如何工作的情况下,DBA在尝试解决性能问题时会出现盲点,例如减少资源争用或改进备份和恢复操作等. 在本文中我们将主要讲述为您的SQL Server工作负载构建理想的基于VMware的虚拟机.我们的下一篇文章将介绍怎么样在Hyper-V上构建对应的SQL Server虚拟化环境. 现在,作为DBA,您可能没有访问权限来创建用于SQL Server的新虚拟机.这些操作可以交给您的VM管理员,他们将为您部署合适的VM环境. 以下详细信息适用于在Windows S