|
|
刚注册,很高兴原来我们计算机技术行业有这样一个论坛,为了表示对本论坛的支持,现发一贴,一点学习心得.希望大家多发贴,多交流啊!3 E. X b$ \2 [2 b
$ {5 G3 l% w7 X0 t! m8 x
1,SATA Mode' s) n# ^ K! W t6 y
SATA 支持两种模式,一种是组合模式(Combined Mode),一种是增强模式(Enhanced Mode),我们可以对ICH通过相应配置来选择这两种模式之一,他们的主要区别是:增强模式的SATA 和PATA 设备的驱动是由SATA Host Controller(Device 31,Fun 2)和IDE Controller(Device 31,Fun 1)分别进行加载和控制。而组合模式则是关掉其中一个控制器,让另外一个控制器既可以加载SATA 驱动,也可以加载PATA 驱动,顾名思义组合模式,也叫兼容(Compatible)模式,比如项目TE-945NS,ICH7 M(mobile only)笔记本兼容模式下,则关掉IDE controller, 其配置寄存器均不可再用,然后PATA 设备的I/O解码及其驱动和控制全部由SATA Host Controller去完成。
; w+ |; x$ H3 D, n, B% rICH7 SATA控制器可以对四个或者两个SATA PORTS起作用,每一个Port可以独立打开和关闭,而且每个相应的接口均由一个独立的DMA控制器支持。其中SATA 的一些特征可以参考ICH7 和Serial ATA Advanced Host Controller Interface (AHCI).
7 H4 K% X: b5 a3 [% ]# c4 g! c6 [: w4 E6 Z/ y/ n7 z4 v
2.SATA Device Detection:4 O' w4 a, ^- Z4 Z' w7 ]
系统在POST过程中,对SATA设备进行侦测,由于一般ICH7系列的南桥既有支持两个SATA接口的,也有支持四个的,那么支持几个SATA 接口是不确定的,并且硬件接几个和哪几个SATA接口,以及是否有接上SATA设备是不确定的,所以BIOS的侦测和SATA PORT ENABLE的算法是根据SATA设备的实际安装情况进行的。首先系统获取四个SATA Ports 的外接设备的状态值,然后再根设备状态设置PORTS开与关,读取Port Control and Status Register (Address Offset: 92h–93h,SATA–D31:F2)的值,BIT4~7的值为SATA ports devices presents and detects status,BIT0~3的值为SATA ports enable 位,根据侦测的状态打开使用中的PORT和关闭未使用的接口(Disabled all Vacant Ports),所以按照此算法BIOS程序编写不需要了解SATA接口在硬件上是如何连接的.
3 W. J, f, o% J0 @0 g% j; q当我们没有接SATA设备时,SATA控制器是会关掉的,跟所有接口控制器一样,软件要确保必须首先关掉控制器不需要的所有功能性(such as Memory spaces , IO spaces ,DMA engines ),然后再关掉其功能(Function Disabled , RCBA+3418h). |
|