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

时间: 2024-11-03 11:37:15

Vxworks下的SATA提速的相关文章

对于vxworks下硬盘驱动

1.曾经看到帖子说vxworks5.5下没有sata驱动,vxworks6.6下有,这样的说法恐怕不正确,由 于俺在5.5下也运用运用了sata硬盘,请注重这里俺只是说运用运用,没有说运用运用了sata的ahci模式.俺个人觉得,vxworks5.5下实际上是可以运用运用ide模式的ata,就是说cf卡,ide硬盘+sata硬盘的ide模式都是可以运用运用的,并不可以一概说,sata就不可以使: 2.vxworks5.5下的ata驱动只有pio模式,没有dma模式,因而速度不快.若想运用运用dm

win7下迅雷下载提速的方法

  现在是不是有很多人遇到这样的困扰,虽然家里的宽带升级了,甚至达到了100M,但是浏览速度还是很慢呢?这让人不得不怀疑,这到底有100M吗?答案是肯定没有的,绝对达不到它标榜的那么多,所以这就是为什么看视频卡的原因了.现在有一种方法可以解决这个问题可以实现在win7旗舰版电脑中让迅雷提速,今天小编就将这个技巧传授给你们,弥补了网速不给力的缺憾. win7下迅雷下载提速的方法 1.首先,咱们单击打开win7旗舰版电脑的开始菜单,然后从开始菜单进入到控制面板的界面中. 2.再打开的控制面板的界面中

vxWorks下dosFs文件系统的创建

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

VxWorks下USB驱动总结2

3:USBD驱动详解 这一部分将要描述USBD(USB Host Driver)的典型应用.例如初始化,client注册,动态连接注册,设备配置,数据传输,同时还探讨了USBD内部设计的关键特性.这部分是VxWorks下USB驱动的核心.   1 初始化USBD:分为两步 (1)必须至少调用一次函数usbdInitialize().在一个给定的系统中,usbdlnifialize()初始化内部USBD数据结构,并依次调用其它USB驱动栈模块的入口.usbdinitialize()可以在启动时调用

虚拟机-vxworks 下workbench3.3 上实现udp 通信 只能发送,不能接收的问题?

问题描述 vxworks 下workbench3.3 上实现udp 通信 只能发送,不能接收的问题? 我是在VMware 上装的xp ,之后在xp 上安装的workbench3.3 . 需要用C++ 编写一个类,实现udp socket 通信,自己编写的程序是实现服务器功能,和TCP&UDP测试工具进行通信,自己的程序只能给测试工具发送消息,接收进程一直显示pend .自己编写的程序和TCP&UDP测试工具都是在此虚拟机安装的XP上运行的. 代码类大概如下: class Socket{ p

protobuf在vxworks下编译

问题描述 protobuf在vxworks下编译 有没有大神弄过,在vxworks下编译protobuf!!!! 解决方案 编译 protobufvxworks 编译-- GNULEubuntu下编译protobuf 解决方案二: https://groups.google.com/forum/#!topic/protobuf/7knJAh5Ay28

加密-编写 一个程序vxworks下的简单程序

问题描述 编写 一个程序vxworks下的简单程序 编写 一个程序vxworks下的简单程序,可以与加密狗关联,在没有加密狗的情况下,系统无法启动. 解决方案 编写一个简单的C++程序编写一个简单的servlet小程序Vim 编写一个简单程序

Vista下安装SATA硬盘驱动实录

自从Vista的种子在网上刚刚出现的时候,我就下载了.可是一直就安装不上,每次安装时的第一次重启都会蓝屏,原来是没有加载SATA驱动. (我的电脑配置:AMD64 2800+ 512DDR400 GFX5200 微星K8T800G VT8237 ST120SATA) 网友们说跟本装不上的,可是我就是不死心,研究了二十天,昨天终于装上了.原来可以在安装重启后从XP下手动将SATA驱动和注册信息添加到Vista的临时目录. 首先,我们的中心思想是在要在Vista安装目录中手动添加个我门自己的磁盘控制

Vista系统下复制文件提速

使用vista系统的用户可能都会有这样的感觉,那就是文件拷贝和XP相比明显较慢,尤其是拷贝含有较多文件的文件夹时,不得不忍受蜗牛一样的速度.如果经常需要在算机和移动设备间转储数据,那么就应该考虑如何让文件在拷贝时可以跑得更快. 并不是只有数百MB的软件才称得上是软件,有很多小强软件的能力了不容小觑,Fastcopy就是不错的例子.从它的名字上就可以看出它是一款专门为文件复制提速而设计的,由于采用了更优化的缓存以及其他设置,Fastcopy在拷贝文件时比系统的复制 /粘贴在速度上有明显优势.此外它