|
刚注册,很高兴原来我们计算机技术行业有这样一个论坛,为了表示对本论坛的支持,现发一贴,一点学习心得.希望大家多发贴,多交流啊!
# m& h, L. H8 k* x: P/ `% y/ m5 k& r! a: b7 P( S
1,SATA Mode
8 @: g3 o, ]6 C2 `$ QSATA 支持两种模式,一种是组合模式(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去完成。* M9 @, D, o0 {& G9 N
ICH7 SATA控制器可以对四个或者两个SATA PORTS起作用,每一个Port可以独立打开和关闭,而且每个相应的接口均由一个独立的DMA控制器支持。其中SATA 的一些特征可以参考ICH7 和Serial ATA Advanced Host Controller Interface (AHCI).: v3 t- P# @7 y( ^5 c1 d* y7 h
; C! [5 i- S( D8 e
2.SATA Device Detection:
7 J, ]& o# @! I系统在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接口在硬件上是如何连接的.
% a2 f5 f; b9 g6 i当我们没有接SATA设备时,SATA控制器是会关掉的,跟所有接口控制器一样,软件要确保必须首先关掉控制器不需要的所有功能性(such as Memory spaces , IO spaces ,DMA engines ),然后再关掉其功能(Function Disabled , RCBA+3418h). |
|