OSDev

для всех
Текущее время: 03 май 2024, 10:09

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: ATA/ATAPI -6
СообщениеДобавлено: 11 июл 2014, 19:54 

Зарегистрирован: 10 апр 2014, 17:12
Сообщения: 68
в АТА/АТА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
......


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATA/ATAPI -6
СообщениеДобавлено: 11 июл 2014, 21:27 

Зарегистрирован: 10 апр 2014, 17:12
Сообщения: 68
а еще у меня борщ выдает номер версии АТА 7E00h O_O


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATA/ATAPI -6
СообщениеДобавлено: 11 июл 2014, 21:46 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Борщ 48 бит не поддерживает, хотя и возвращает информацию об обратном. Сейчас вроде большинство эмуляторов их поддерживают, но раньше только 1 или 2.

http://ru.osdev.wikia.com/wiki/HDD

По 2 байта побайтно. Вначале первый потом второй.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATA/ATAPI -6
СообщениеДобавлено: 11 июл 2014, 22:57 

Зарегистрирован: 10 апр 2014, 17:12
Сообщения: 68
Код:
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. судя по коду так виртуалка вообще ни один стандарт не поддерживает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATA/ATAPI -6
СообщениеДобавлено: 12 июл 2014, 03:33 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
И что вас не устраивает? 7=ATA/ATAPI-4/5/6


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATA/ATAPI -6
СообщениеДобавлено: 12 июл 2014, 06:50 

Зарегистрирован: 10 апр 2014, 17:12
Сообщения: 68
ну напимер то, что в куму выставлены биты начиная с 12, а в доках они отмечены как зарезервированные для будущих версий.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATA/ATAPI -6
СообщениеДобавлено: 12 июл 2014, 07:34 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Ну что же там ещё много всяких глюков впереди. И не только в эмуляторах но и в железе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATA/ATAPI -6
СообщениеДобавлено: 12 июл 2014, 08:07 

Зарегистрирован: 10 апр 2014, 17:12
Сообщения: 68
хм, тогда как прикажете однозначно идентифицировать железо? еще одна интересность: стоило мне пересадить в варе хард на первый канал, как она мне в поле версия выдает -1. круто, че. т.е. полагаться не стоит на все что выдает виртуалка? что еще странно так это то, что и в борще и в боксе харды сидят на ISA O_O


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATA/ATAPI -6
СообщениеДобавлено: 12 июл 2014, 12:00 

Зарегистрирован: 10 апр 2014, 17:12
Сообщения: 68
вобщем заметил один нюанс: я читаю инфу о диске 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, но как говорилось выше он не тянет. по ходу вопрос по поводу глюков виртуалок отпал


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ATA/ATAPI -6
СообщениеДобавлено: 12 июл 2014, 13:30 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Байты нужно переворачивать только в строках. Я этот нюанс заметил раньше вас, поэтому и написал выше о значении цифры 7. У вас она была в четвертой тетраде, а должна быть во второй – можно было догадаться.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB