阅读:2282回复:7
请教各位前辈
谢谢,有谁能解答我下面2个问题?
扩展int 13只支持137G以下硬盘,有那位知道137G以上的INT13是真么调用的?就是能支持48bit地址那种。 问题二:如何写硬盘的firmware? 谢谢,我的邮箱duyongyu@163.com QQ:23483666 主页:http://ww3.sina.cn.com/ 欢迎大家交流 |
|
|
沙发#
发布于:2003-12-13 22:42
137G是使用了28bit LBA地址的限制
扩展int 13可以支持64bit线性地址的访问,自然可以支持48bit地址了. |
|
板凳#
发布于:2003-12-13 22:57
有点不对,137G以上用的是48bit地址
里面参数有点不同,能告诉我吗?谢谢 |
|
|
地板#
发布于:2004-03-01 20:31
求求大家了
|
|
|
地下室#
发布于:2004-03-02 11:11
没有不同,48-bit地址是在IDE内部寄存器上作的调整,软件层面上API的使用是无差别的,也就是说无论大于还是小于137GB的硬盘的访问用的都是同一个Int13 ext调用,扩展int 13可以支持到144PB的容量.
|
|
5楼#
发布于:2004-03-02 16:21
谢谢你
可是我还想问问 原来那个扩展int13h参数里面地址那里只有28bit 还有20位写到那个位置? 请你告诉我参数的结构具体定义,好吗? |
|
|
6楼#
发布于:2004-11-10 14:07
我弄清楚了,在t13上找到一份文档,关于调用Extended INT 13的Packet数据结构,如下:
Offset 0, Byte Packet size in bytes. The value in this field shall be 16 (10h) or greater. If the packet size is less than 16 the request shall be rejected with CF = 1b and AH = 01h. Offset 1, Byte Reserved. The value in this field shall be 00h Offset 2, Byte Number of blocks to transfer. This field shall contain a maximum value of 127 (7Fh). If a any other value is supplied, the request shall be rejected with CF=1b and AH=01h. If this field is set to FFh, then the transfer buffer address shall be found at offset 10h, the number of blocks to transfer shall be found at offset 18h, and the transfer buffer at offset 4 shall be ignored. A block count of 0 means no data shall be transferred. Offset 3, Byte Reserved. The value in this field shall be 00h. Offset 4, DWord Address of host transfer buffer. This is the host buffer that Read/Write operations shall use to transfer the data. This is a 32-bit host address of the form Seg:Offset. If this field is set to FFFFh:FFFFh then the address of the transfer buffer shall be found at offset 10h. Offset 8, QWord Starting logical block address, on the target device, of the data to be transferred. This is a 64-bit unsigned linear address. If the device supports LBA addressing this value should be passed unmodified. If the device does not support LBA addressing the callee shall convert this LBA to a CHS address using the current geometry in the following formula: LBA = (C1 * H0 + H1) * S0 + S1 - 1 Where: C1 = Selected Cylinder Number H0 = Number of Heads (Maximum Head Number + 1) H1 = Selected Head Number S0 = Maximum Sector Number S1 = Selected Sector Number For ATA compatible devices, with less than or equal to 15,482,880 logical sectors, the H0 and S0 values are supplied by words 3 and 6 of the data returned as a result of an IDENTIFY DEVICE command. Offset 10h, QWord 64-bit unsigned linear address of the host transfer buffer. This is the host buffer that Read/Write operations shall use to transfertransfer the data if the data at offset 4 is set to FFFFh:FFFFh, or the data at offset 2 is set to FFh. Offset 18h, DWord Total number of blocks to transfer when the data at offset 2 is set to FFh Offset 1Ch, DWord Reserved. The value in this field shall be 00h. NOTE - The options described in table 1 allow a host to use a 7-bit transfer size with a 32 -bit or 64-bit memory address for the transfer buffer. Table 1 also allows a 32-bit transfer size in conjunction with a 64-bit address. A 32-bit transfer size shall not be used in conjunction with a 32-bit memory address. 注意红色的部分,64-bit啊,兄弟,他没有说是28-bit。 我也试验了一个160G的硬盘,可以正常读写第312581806扇区的数据,这不就解决你的问题了吗? 另:DPTE的参数如附图: |
|
7楼#
发布于:2004-11-10 19:05
谢谢,稍后我去试一下,我先给分
|
|
|