wertpoiu 发表于 2011-10-8 21:05

【原创】HP笔记本安装光驱位(IDE-STAT)硬盘托架准完美解决方案

不少网友反映HP某些型号的笔记本在使用IDE转STAT的硬盘托架的过程中,发现不能向硬盘中写数据(提示“缓存写入失败”)和,读写数据速度较慢的问题。最近在升级nw9440(945PM+ICH-7M)硬盘托架的过程中也遇到了类似问题,经过软硬件上的联合实验,现在找到了问题的原因和比较合适的解决方法。
    造成HP光驱位硬盘兼容性差的主要原因是HP对接入光驱的IDE控制器的工作模式进行了限制,使之最高只能工作在Multi-Word DMA的方式(正常工作应该是Ultra DMA Mode x),最高传输速度只有16MB/S,而关键的问题是硬盘托架上的88SA8040芯片对这种工作模式的支持也比较糟糕,于是就出现了前文所述的各种现象。

HP的BIOS参数选项很少,且在IDE控制器初始化的时候做了限制。破解这种限制的方法理论上有很多,比较容易实现的有3种:
1、
使用“RW-Everything”软件修改IDE控制器的48h-4Bh值为01 00 02 00。
2、
在XP启动之前执行一段程序,修改寄存的值。
3、
在MBR中加入汇编指令,修改寄存的值。
修改后硬盘读写功能正常,可以看到硬盘会工作在Ultra DMA Mode 2,也就是平常我们所说的ATA33,读写平均速度达到29MB/s,CPU占用率仅3%
。也不存在跟希捷硬盘不兼容的问题。(关于支持ATA66和ATA100的问题后续讨论)

sun_jun 发表于 2011-10-8 21:12

8510w可以吗?

wertpoiu 发表于 2011-10-8 21:15

方法一:
    使用RW- Everything的操作最简单,但是修改结果不能保存,每次开机都需要重新修改。RW的操作过程如下。
    1、 从设备管理器中禁用“主要IDE控制器”。(略过此步骤可能导致系统崩溃)
    2、 打开RW软件,从菜单中点Access -> PCI。
    3、 从左上角的下拉框中选择“Bus 00 …… IDE Controler”
    4、 修改地址为48、4A的两个寄存器的值,把原来的00分别改为01和02。
    5、 从设备管理器中起用“主要IDE控制器”。
    这时,如果光驱位安装的是硬盘托架,可以看到硬盘会工作在Ultra DMA Mode 2,且读写功能正常。


方法二:
    在XP引导前执行的程序见附件(在DOS下调试通过),工作原理是在XP加载IDE驱动之前,修改这两个配置寄存器。如果在XP引导以后修改这两个寄存器,有可能会导致系统崩溃。在网上看到很多在XP引导前加载应用程序的方法,但是没有试出来能用的。另外由于该程序是运行在DOS模式下的,在Windows下运行会出错。
    实现以上两种方法需要用到的软件如下:
1、RW-Everything绿色版V1.3.rar

2、ICH7_IDE_Patch.rar

gerenuk 发表于 2011-10-8 21:22

这个好强..直接 修改参数了

hp2011 发表于 2011-10-8 21:28

这才是技术贴,看不懂也要顶!

linyujue 发表于 2011-10-8 22:28

这个要顶,关注很久了,一直都不能解决

elel 发表于 2011-10-8 22:32

楼主果然强,有没有介绍个直接修改bios的方法?一次解决

elel 发表于 2011-10-8 22:36

8510,8710也是一样修改这个地址么?

wertpoiu 发表于 2011-10-8 23:01

方法三:
    在主引导记录(MBR)中植入一段代码,修改IDE的配置寄存器。我最后采用的就是这种方案,这种方案操作起来比较麻烦,但是一劳永逸,即使以后重装系统(只要不重写MBR),都不会受到影响。由于该方法不是直接对MBR进行修改,所以操作比较安全,一旦出错,可以随时用备份的MBR恢复。
    修改MBR主要用到3个软件:
1、读写MBR的软件,这里用的是“三茗硬盘医生”,该软件在DOS下运行,可以查看、备份、恢复MBR。
2、IDA pro Free(这里用的是5.0版本),这是一个反汇编软件,主要作用的分析MBR中的原有程序,找到合适的插入点,并校验新代码的正确性。
3、UltraEdit,编辑备份的MBR。
    操作步骤如下:
1、使用光盘引导,启动DOS环境。这里不推荐使用U盘引导,因为U盘引导完成以后,很多软件会把U盘默认成系统盘,无法正确导出MBR。
2、启动“三茗硬盘医生”,备份MBR。MBR备份在同目录下“001.DAT”文件。
3、重新启动Windows,准备使用IDA分析MBR。这时需要先把三名磁盘医生备份出来的“001.DAT”文件扩展名改为“.exe”。
4、启动IDA,选择NEW。关闭向导,从菜单选择File -> Open 打开“001.exe”文件。

5、在“Load a new file”对话框中选择“Binary file”,点OK。

6、在随后弹出的确认使用32位模式的对话框中选择“No”,使用16位模式。

7、开始反汇编,把光标放在0000地址,点键盘上的“C”键,右侧的机器码立即被翻译成汇编指令。

8、分析MBR,关于MBR的分析,网上有很多,这里不再赘述。如果MBR内容与本文附件中的参考MBR一致,可以略过此步骤。
9、植入修改寄存器的代码。基本原理如下:
    将修改IDE寄存器的代码放在180H开始的一段空间里。代码为:“B8 0C B1 BB F9 00 BF 48 00 B9 01 00 CD 1A B8 0C B1 BB F9 00 BF 4A 00 B9 02 CD 1A”
    将1bH的代码移动到修改寄存器的代码后面,原来IbH的位置放置一条跳转指令“E9 62 01”,使程序跳到180H处开始修改寄存器。
    执行完修改寄存器的指令后,紧接着执行移动到新位置的(原来在1bH处)的指令,然后在执行跳转指令“E9 7C FE”,使程序跳回原来位置,继续执行。
    E9是跳转指令的操作码,后面跟的两个立即数是操作数(如“62 01”),表示跳转偏移(程序计数器指针增加)是0162H,“FE7CH”是以二进制补码形式表示的负数,表示程序向前跳转。

10、修改完成后保存,使用IDA校验程序的执行顺序,看是否有错,如果跳转的地址不正确,可以使用IDA再做调整。(需要修改IDA安装目录下的cfg目录中的idagui.cfg文件,把“DISPLAY_PATCH_SUBMENU    = NO”改成“DISPLAY_PATCH_SUBMENU    = YES”,重启IDA后,把光标放在跳转指令上,从菜单选Edit -> Patch program -> change Byte可以即时修改跳转的参数,直到实验出合适的参数为止,在把这个参数写回UE。)


11、把改好的文件名重新改为“001.dat”,放到“三茗硬盘医生”目录下。
12、使用光盘引导,启动DOS环境,启动“三茗硬盘医生”,还原MBR。
13、重启Windows,大功告成。(如果失败,则还原成以前的MBR,继续回Windows修改)

参考MBR:

三茗硬盘医生

MUDboy 发表于 2011-10-8 23:23

关注并收藏了,感谢楼主的分享

顺便在潜在加分精华帖留名,哈哈

wertpoiu 发表于 2011-10-8 23:36

最后要讨论的就是UDMA2(ATA33)到UDMA4/5(ATA66/100)的问题。看了从T13上下载的《Information Technology -AT Attachment with Packet Interface - 5》,对于IDE控制器来说,主要就是检测“PDIAG”信号,如果控制器检测到PDIAG是低电平,则认为目前使用的是80芯的扁平电缆,IDE控制器会运行在66或100的模式。我曾经试着在光驱端把nw9440的PDIAG信号拉低,但没有效果,怀疑是HP的硬件工程师为了走线方便,这根线可能就没有接到IDE口上。如果想改主要有几种方案:
    1、修改硬件,找出PDIAG,并将之拉低。这样做的问题是风险较大,笔记本上的连接器拆的次数多了就会出现接触不良的问题,导致系统不稳定。
    2、修改atapi.sys驱动,理论上讲,如果让驱动无视PDIAG的状态,按照ATA66传输就行了,但是由于没有原码,修改这个驱动工作量会相当大。
    3、其他。
    由于没有达到最终的ATA100的传输速度,所以我说这个解决方案不能算是完美,只能叫准完美吧。
    另外附上光驱IDE接口图纸和88SA8040接口板图纸。

wertpoiu 发表于 2011-10-8 23:38

8510W/8710W 用的是“Intel PM965+ICH8M”,如果存在Multi-Word DMA Mode 2的问题,理论上也可以用类似的方法解决。基本步骤如下:
1、找出IDE控制器的地址。
2、找出对应的寄存器。可以找一个ThinkPAD同平台的本子,比较寄存器区别。同时Intel网站上有ICH8的DataSheet下载,可以参考。
3、使用RW修改测试,如果测试成功,在进一步修改MBR。

直接修改BIOS当然是最根本的方法,但是难度比较高,不容易短期实现。

ww111222 发表于 2011-10-8 23:46

俺的是HP 8440,看来是搞不成 光驱拉硬盘了。

MUDboy 发表于 2011-10-9 00:12

Posted by ww111222 on 2011-10-8 23:46 http://www.ibmnb.com/images/common/back.gif
俺的是HP 8440,看来是搞不成 光驱拉硬盘了。
nw8440的话估计可以按楼主的方法操作

8440p的话直接安装sata第二硬盘就可以啦。

icfree 发表于 2011-10-9 02:48

感谢楼主的分享

:) ^v^ ^v^

Inactive 发表于 2011-10-9 02:49

感谢分享

技术贴了

shiny512 发表于 2011-10-9 08:53

技术贴,顶

philoman 发表于 2011-10-9 09:22

技术帖,支持

compaq-nc6000 发表于 2011-10-9 09:58

之前一直没有考虑SSD+光驱位硬盘托架的方案,就是受此问题困扰~

强烈支持LZ~

4go 发表于 2011-10-9 14:53

收藏了,感谢楼主的分享

xiaoduzxw 发表于 2011-10-14 16:28

我用的也是hp ne8440的本子还真是如 楼主所说!还准备升级ssd硬盘呢(机械硬盘用托架放光驱位)不知道如果安装WIN7系统是否会改善?有没有更好的办法呀?

[ Edited byxiaoduzxw on 2011-10-14 16:30 ]

恒远在线 发表于 2011-10-14 17:27

看来很复杂,菜鸟不行啊:-| 我的8710W

ZHANG123 发表于 2011-10-14 18:43

可以肯定的讲,楼主的IDE-SATA硬盘托架是不兼容HP的。据我的经验,33M/S 是最基本的速度,相当于IBM T20 PII 的机器。 低于这个速度的硬盘托架肯定是不行的。

jay508 发表于 2011-10-18 18:12

看来我的8710W是没希望了没那么多时间精力技术去折腾

zybon 发表于 2011-10-19 02:41

实在是太牛了,这才是技术贴啊~

wertpoiu 发表于 2011-10-25 23:24

后来买了奋威的托架测试,如果不更改IDE控制器的配置,依然无法使用。应该是88SA8040的兼容性问题。

luck108 发表于 2011-10-26 06:50

这个太厉害了

xiewg 发表于 2011-10-27 13:01

RW-everything在win7下崩溃了,改用bar-edit修改,没用。。。。

faladay 发表于 2011-10-28 10:21

在强记入的本,原硬盘架超级垃圾,开机如果不关dma直接蓝屏无法启动,关了dma启动超过5分钟
昨天刚换了奋威的托架,现在win7启动30秒,早知道如此半年前就该换了,tnnd

icfree 发表于 2011-10-28 17:11

造成HP光驱位硬盘兼容性差的主要原因是HP对接入光驱的IDE控制器的工作模式进行了限制,使之最高只能工作在Multi-Word DMA的方式(正常工作应该是Ultra DMA Mode x),最高传输速度只有16MB/S,

????????

好象别人的都有50-70Mb/s**\ **\
页: [1] 2
查看完整版本: 【原创】HP笔记本安装光驱位(IDE-STAT)硬盘托架准完美解决方案