OSDev http://osdev.su/ |
|
ATA/ATAPI -6 http://osdev.su/viewtopic.php?f=5&t=962 |
Страница 1 из 2 |
Автор: | Rammstein [ 11 июл 2014, 19:54 ] |
Заголовок сообщения: | ATA/ATAPI -6 |
в АТА/АТАPI - 6 появилась возможность использовать 48битную адресацию секторов. для этого основные регистры были расширены с байта до слова. т.е. в 28 битной реализации имеется 3 регистра непосредственно для битов 28битного адреса и оставшиеся 4 бита записываются в регистр выбора устройства. почитав спецификацию на ATA/ATAPI - 6 я понял что это регистры при 48 битной адресации расширены до слова (2 байта), но в силу своего плохого понимания английского я не совсем догнал что значит расширены? т.е. теперь отправлять нужно по 2 байта, или 2 байта в один регистр побайтно? т.е. Код: mov eax, 48bitSector out 1F2, ax ...... или же Код: mov eax, 48bitSector
out 1F2, al out 1F2, ah ...... |
Автор: | Rammstein [ 11 июл 2014, 21:27 ] |
Заголовок сообщения: | Re: ATA/ATAPI -6 |
а еще у меня борщ выдает номер версии АТА 7E00h O_O |
Автор: | pavia [ 11 июл 2014, 21:46 ] |
Заголовок сообщения: | Re: ATA/ATAPI -6 |
Борщ 48 бит не поддерживает, хотя и возвращает информацию об обратном. Сейчас вроде большинство эмуляторов их поддерживают, но раньше только 1 или 2. http://ru.osdev.wikia.com/wiki/HDD По 2 байта побайтно. Вначале первый потом второй. |
Автор: | Rammstein [ 11 июл 2014, 22:57 ] |
Заголовок сообщения: | Re: ATA/ATAPI -6 |
Код: mov dx, [basePort] add dx, 6 mov al, [device] shl al, 4 or al, 10100000b out dx, al inc dx mov ecx, 0xFF .WaitHDDReady: dec ecx je $ in al, dx inc word [0xB8000+158] test al, 80h jnz .WaitHDDReady mov al, 0xEC out dx, al jmp short $+2 jmp short $+2 mov ecx, 0xFF .WaitHDDReady1: dec ecx je $ in al, dx inc word [0xB8000+158*2] test al, 80h jnz .WaitHDDReady1 mov dx, [basePort] mov edi, buf mov ecx, 256 rep insw mov esi, buf mov edi, esi mov ecx, 256 @@: lodsw xchg al, ah stosw loop @b mov ax, word[buf+80*2] //80-е слово (адрес 160) содержит версию ATA/ATAPI mov edi, buf call convertAX xor al, al stosb mov edi, 0xB8000+160*4 mov esi, buf call showMessage jmp $ этот код выводит мне борщ: 0x7E00 вмваря: 0х1Е00 qemu: 0хF000 виртуалбокс через раз выводи 0х7Е00, иногда висне. что самое интересное так это то, что все виртуалки при сбросе девайся шлют прерывание, а бокс нет. в итоге я не могу расшифровать версию ATA/ATAPI. судя по коду так виртуалка вообще ни один стандарт не поддерживает |
Автор: | phantom-84 [ 12 июл 2014, 03:33 ] |
Заголовок сообщения: | Re: ATA/ATAPI -6 |
И что вас не устраивает? 7=ATA/ATAPI-4/5/6 |
Автор: | Rammstein [ 12 июл 2014, 06:50 ] |
Заголовок сообщения: | Re: ATA/ATAPI -6 |
ну напимер то, что в куму выставлены биты начиная с 12, а в доках они отмечены как зарезервированные для будущих версий. |
Автор: | pavia [ 12 июл 2014, 07:34 ] |
Заголовок сообщения: | Re: ATA/ATAPI -6 |
Ну что же там ещё много всяких глюков впереди. И не только в эмуляторах но и в железе. |
Автор: | Rammstein [ 12 июл 2014, 08:07 ] |
Заголовок сообщения: | Re: ATA/ATAPI -6 |
хм, тогда как прикажете однозначно идентифицировать железо? еще одна интересность: стоило мне пересадить в варе хард на первый канал, как она мне в поле версия выдает -1. круто, че. т.е. полагаться не стоит на все что выдает виртуалка? что еще странно так это то, что и в борще и в боксе харды сидят на ISA O_O |
Автор: | Rammstein [ 12 июл 2014, 12:00 ] |
Заголовок сообщения: | Re: ATA/ATAPI -6 |
вобщем заметил один нюанс: я читаю инфу о диске rep insw, затем переворачиваю байты Код: @@: lodsw xchg al, ah stosw loop @b при этом текстовые данные у меня отображаются нормально (типа модель и прошивка), тогда по идее и числовые должны быть норм. НО! если Цитата: этот код выводит мне борщ: 0x7E00 вмваря: 0х1Е00 qemu: 0хF000 поменять в них байты на Код: борщ: 0x007E вмваря: 0х001Е qemu: 0х00F0 то уже похоже на правду. но тогда борщ сообщает о том, что тянет АТА 4/5/6 и адресацию LBA48, но как говорилось выше он не тянет. по ходу вопрос по поводу глюков виртуалок отпал |
Автор: | phantom-84 [ 12 июл 2014, 13:30 ] |
Заголовок сообщения: | Re: ATA/ATAPI -6 |
Байты нужно переворачивать только в строках. Я этот нюанс заметил раньше вас, поэтому и написал выше о значении цифры 7. У вас она была в четвертой тетраде, а должна быть во второй – можно было догадаться. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |