68023611 发表于 2008-12-18 14:31:34

读取硬盘 ROM 问题

大哥们:
   问题一:
   在读取IDE 硬盘的 rom信息的时候。从1F0H读回来的数,是不是要交换一下高低字节(word 操作)?
因为我发觉在读回来的时候,如果是不交换的话,serial number的ASC码那段,每次都要反一下。


   问题二:
   假如上面的问题,确实要反一下,那么是否说明在rom中,格式也是要反了一下呢?
举个例子:本来硬盘的serial number是 ST3160215A,那么在rom里存的格式是不是TS130612A5呢?


   问题三:
   我想在读取ROM以前,首先先判断是否存在 master /slave 盘。用怎么命令,或者用什么方法去做呢?
我有个想法给1F7H写命令进去,看返回是否有数据来判断。不知道可以否?
   (问题是,现在我把IDE接口拔掉,把IDE的CD-ROM接上的时候,读出的rom信息全错。。。。)

[ 本帖最后由 68023611 于 2008-12-19 18:09 编辑 ]

xtdumpling 发表于 2008-12-18 15:16:23

第一个是的,

68023611 发表于 2008-12-18 17:13:12

首先感谢楼上大哥的回答,现在总算吃了可定心丸了。


       其次还想因此也提个小问,我现在在模拟ADU.EXE读取IDE 硬盘ROM的信息。可是我发觉,照数据对应ata6 spec后发觉,似乎adu.exe工具显示有错误。

但是我又不敢肯定。我想是不是权威的公司写的查看工具也有时候会出bug的哦?(因为adu在访问 memory的时候,寻址问题就设计的不好。有bug)

       这个网站真的很不错,我刚刚入行,还在学习中。希望各位大哥多指点。希望能有个群的话就更好了。以后版主把每天的聊天记录都可以贴上来了。呵呵

xtdumpling 发表于 2008-12-18 21:05:04

弱弱的问一下,你说的读取IDE硬盘ROM的信息,
是不是用ATA/ATAPI spec中的Identity命令来读的256个word的那个??

不知道硬盘firmware里面是怎么存放的,反正是按word来读的。

另外,ADU读到的什么信息,你认为有错误呢?

68023611 发表于 2008-12-19 09:49:06

"你说的读取IDE硬盘ROM的信息,
是不是用ATA/ATAPI spec中的Identity命令来读的256个word的那个??"


-->恩,是的



不知道硬盘firmware里面是怎么存放的,反正是按word来读的。

-->恩,谢谢!



另外,ADU读到的什么信息,你认为有错误呢?


-->比如说,从adu的读回来数据显示 第82word 和第85word分别是 346BH 和 3469H。
   spec 有这样的定义

ata6中

第85word:
15 Obsolete                            -------- 0
14 1 = NOP command enabled             -------- 0      这里应该是disable 可是 adu显示是 enable   
13 1 = READ BUFFER command enabled   -------- 1      这里应该是enable 可是 adu显示是 may be disable   
12 1 = WRITE BUFFER command enabled    -------- 1      吻合
11 Obsolete                            -------- 0
10 1 = Host Protected Area feature set enabled- 1      吻合
9 1 = DEVICE RESET command enabled   -------- 0      这里应该是disable 可是 adu显示是 enable   
8 1 = SERVICE interrupt enabled      -------- 0      这里应该是disable 可是 adu显示是 enable   
7 1 = release interrupt enabled      -------- 0      这里应该是disable 可是 adu显示是 enable   
6 1 = look-ahead enabled               -------- 1      吻合
5 1 = write cache enabled            -------- 1      吻合
4 Shall be cleared to zero             -------- 0      ?为什么是 0 这里也是我的一个疑问
3 1 = Power Management feature set enabled      1      吻合
2 1 = Removable Media feature set enabled       0      这里应该是disable 可是 adu显示是 enable
1 1 = Security Mode feature set enabled         0      这里应该是disable 可是 adu显示是 enable   
0 1 = SMART feature set enabled                  1      吻合

那照着这个数据的话,3469H= 0011 0100 0110 1001

    小弟可能理解有误,所以静听大哥们指教。我不怕出丑,但希望把出丑的事情或者理解都纠正过来。谢谢!




(*******最新*******)
   后来才发现,当我不接IDE设备的时候,上面的那几个选项居然还是 “ENABLE”,我猜测应该是adu.exe设计本来就没有处理这个事情。
   不知道各位大哥怎么理解?

[ 本帖最后由 68023611 于 2008-12-19 18:10 编辑 ]
页: [1]
查看完整版本: 读取硬盘 ROM 问题