找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 10529|回复: 4

读取硬盘 ROM 问题

[复制链接]
发表于 2008-12-18 14:31:34 | 显示全部楼层 |阅读模式
大哥们:
8 H9 q7 b  y0 Z" P* ~7 R  n     问题一:: D8 f; }* P8 i$ A
     在读取IDE 硬盘的 rom信息的时候。从1F0H读回来的数,是不是要交换一下高低字节(word 操作)?
% `# L  J' b! n) ^, ~5 D$ @因为我发觉在读回来的时候,如果是不交换的话,serial number的ASC码那段,每次都要反一下。+ f! M# O# V, `2 X; [% K

& c% s- k0 K" S1 K+ O
0 n: G* |+ j# e9 \     问题二:5 ~+ n4 |* t6 W# r5 u
     假如上面的问题,确实要反一下,那么是否说明在rom中,格式也是要反了一下呢?/ Q( W; K3 M8 P; w6 ]
举个例子:  本来硬盘的serial number是 ST3160215A,那么在rom里存的格式是不是TS130612A5呢?
0 }9 f# Q- _7 A1 }, p# }- B7 O5 E' Y2 p
! H! E; J* j5 ~! e
     问题三:: r4 F/ h0 ]  l& _# c" e$ P9 ~3 Z% v
     我想在读取ROM以前,首先先判断是否存在 master /slave 盘。用怎么命令,或者用什么方法去做呢?# n4 S# u+ [8 z: L9 p1 P
我有个想法给1F7H写命令进去,看返回是否有数据来判断。不知道可以否?+ y5 e+ Q, H( M. C! S: T3 y# k
     (问题是,现在我把IDE接口拔掉,把IDE的CD-ROM接上的时候,读出的rom信息全错。。。。)
) e' H, {4 N  `" [3 y$ A4 W* H" f8 k0 T
[ 本帖最后由 68023611 于 2008-12-19 18:09 编辑 ]
发表于 2008-12-18 15:16:23 | 显示全部楼层
第一个是的,
回复

使用道具 举报

 楼主| 发表于 2008-12-18 17:13:12 | 显示全部楼层
首先感谢楼上大哥的回答,现在总算吃了可定心丸了。1 w; B* ^& U' a, d* S

( ]+ \% R8 _# R, X& y6 k1 h  m6 s
# M" T! o3 _# }+ L       其次还想因此也提个小问,我现在在模拟ADU.EXE读取IDE 硬盘ROM的信息。可是我发觉,照数据对应ata6 spec后发觉,似乎adu.exe工具显示有错误。
- O- f6 T7 E& c
6 B/ E/ p+ N8 C3 p# }4 u但是我又不敢肯定。我想是不是  权威的公司写的查看工具也有时候会出bug的哦?(因为adu在访问 memory的时候,寻址问题就设计的不好。有bug); Q7 [4 Y5 D( |: q: i& n% W* B
6 W" f' S1 @; R4 Z5 o& \
       这个网站真的很不错,我刚刚入行,还在学习中。希望各位大哥多指点。希望能有个群的话就更好了。以后版主把每天的聊天记录都可以贴上来了。呵呵
回复

使用道具 举报

发表于 2008-12-18 21:05:04 | 显示全部楼层
弱弱的问一下,你说的读取IDE硬盘ROM的信息,
: C* P. @  P% Z是不是用ATA/ATAPI spec中的Identity命令来读的256个word的那个??8 a: T( ]( l. {5 U

! g: ~, G. |2 r! g不知道硬盘firmware里面是怎么存放的,反正是按word来读的。# X! Q: `5 ^) q* T: {

1 X: n2 \: C5 R% V% N7 h  R另外,ADU读到的什么信息,你认为有错误呢?
回复

使用道具 举报

 楼主| 发表于 2008-12-19 09:49:06 | 显示全部楼层
"你说的读取IDE硬盘ROM的信息,- j+ {9 U) v" V" k0 `
是不是用ATA/ATAPI spec中的Identity命令来读的256个word的那个??"
# L  ]( g# R1 ^2 |4 g) ?5 P& o( h" e4 [( }
! e' |$ c) o& v
-->恩,是的- c1 M9 J  d! m9 v$ G) R( X1 y

! _, {0 O% K: i4 }" P4 ~% ^* d1 P# |( G
7 C+ f+ i( W& u* l: L/ X
不知道硬盘firmware里面是怎么存放的,反正是按word来读的。
& I9 f" S5 C  v. y5 ]' ^  g2 n' ~+ R1 x9 j$ S3 K
-->恩,谢谢!7 U  N) i4 d# i
2 [; b( t2 Y# X5 X% n. C1 {
, z+ g  O) n1 P0 }: t, R3 @  D
$ H. L7 r( h$ _* v6 B
另外,ADU读到的什么信息,你认为有错误呢?
9 i8 e& ?; s( a1 Z) g0 H# m* L; h* K3 {! m( b0 k: `7 T- Y
# t0 {% z( r! `; p. V' [# A5 [
-->比如说,从adu的读回来数据显示 第82word 和第85word分别是 346BH 和 3469H。+ U2 N# v! R' G$ Y. p9 F3 m5 J- X
   spec 有这样的定义5 }: b* O- m- b1 o

- l2 B& Q% x" F( eata6中
! L, ?- l& z1 E( c* ~8 h  |
+ }+ L* _  [- k# l第85word:
+ e) j1 W) R* |5 d9 U15 Obsolete                            -------- 0$ r; n& E" U! V$ d3 H8 e
14 1 = NOP command enabled             -------- 0      这里应该是disable 可是 adu显示是 enable   ! M" K# p& K; i9 x( A( h
13 1 = READ BUFFER command enabled     -------- 1      这里应该是enable 可是 adu显示是 may be disable   3 K1 m& n/ t" E2 k+ N8 J6 i0 H
12 1 = WRITE BUFFER command enabled    -------- 1      吻合
+ C. ~( s  k% f11 Obsolete                            -------- 07 q) \* [# E+ A! W! Q
10 1 = Host Protected Area feature set enabled- 1      吻合
; y7 G5 ~! O% ^8 v9 1 = DEVICE RESET command enabled     -------- 0      这里应该是disable 可是 adu显示是 enable   
8 h$ `, B* {% q8 1 = SERVICE interrupt enabled        -------- 0      这里应该是disable 可是 adu显示是 enable   
9 M& R6 x3 v4 A) W& J$ }/ g$ T. m7 1 = release interrupt enabled        -------- 0      这里应该是disable 可是 adu显示是 enable   
" T5 F' E& g2 q1 _; ^6 1 = look-ahead enabled               -------- 1      吻合+ h) Z! u8 A2 o8 U2 H
5 1 = write cache enabled              -------- 1      吻合
3 P- _6 g6 Z5 c2 U; o" S4 Shall be cleared to zero             -------- 0      ?  为什么是 0 这里也是我的一个疑问; j$ ~8 f+ L# q7 E" X. A
3 1 = Power Management feature set enabled      1      吻合
- B9 z* r! x" J, B; _, k) ?2 1 = Removable Media feature set enabled       0      这里应该是disable 可是 adu显示是 enable   # k. G6 w2 W7 _) G
1 1 = Security Mode feature set enabled         0      这里应该是disable 可是 adu显示是 enable   
* a; K6 R* n; i0 A; h/ y1 Q0 1 = SMART feature set enabled                    1      吻合
- w; t, k+ g: `6 {- d, }# p. f6 M
- [/ e/ r8 k+ x6 `: ?那照着这个数据的话,3469H= 0011 0100 0110 1001. Y& }1 s# C2 Z# ]9 N" x
2 J3 M8 Z  P+ A# V! ^, X
    小弟可能理解有误,所以静听大哥们指教。我不怕出丑,但希望把出丑的事情或者理解都纠正过来。谢谢!
, c2 o# d% B3 r
7 e# K; o: ^% i3 \, t6 c8 `6 b, o6 G$ `4 h7 x7 _! e" r; [
4 w: f1 G9 E. [0 u' {* N

" `( |2 i8 J. N+ c: ~(*******最新*******)
) E  W. t6 Q/ y4 h- W6 D     后来才发现,当我不接IDE设备的时候,上面的那几个选项居然还是 “ENABLE”,我猜测应该是adu.exe设计本来就没有处理这个事情。
& @: `: @! ]! f/ V) @3 s1 r     不知道各位大哥怎么理解?
- V. Z( d  T( x  x, s8 x+ D3 R  o$ v2 m* r
[ 本帖最后由 68023611 于 2008-12-19 18:10 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2025-12-21 17:20 , Processed in 0.306562 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表