|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.10.2016, 08:06 | #1 |
юзер как все
Участник клуба
Регистрация: 10.01.2012
Сообщений: 1,586
|
Не получается прочитать один сектор 2 раза, outb( 0x1F0);
Такая проблема, не могу прочитать один сектор больше одного раза.
Одни раз, получается. потом только следующий. Выбираю сектор через ATA_LBA. И еще если я хочу прочитать сектор 5, то сначала нужно прочитать сектор 4 в пустую, и только потом могу прочитать 5й. Нужно как то скинуть все в ноль наверное, но немогу понять как. Уже перечитал тучу форумов. Подскажите что не так ? Пробовал посылать разные значения на outb( 0x1F0 + 7, 0xC4); то тоже все без столку. Код:
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
Последний раз редактировалось pompiduskus; 01.10.2016 в 08:11. |
01.10.2016, 09:09 | #2 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
pompiduskus
Где тестируете? Какое железо или эмулятор? Цитата:
outb( 0x1F0 + 7, 0xC4); 0xC4: READ MULTIPLE SECTORS Зачем вам этот режим почему просто не читать через 0x20 Read Sectors? Зачем используете умножение? READ MULTIPLE SECTORS - читает число блоков равное числу секторов заданного в нёи и умноженное на число блоков заданных в SET MULTIPLE MODE. Судя по всему до вас кто-то установил 2 блока. ATA_READ(); и не вычитывает все блоки. А только первый.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
01.10.2016, 10:50 | #3 |
юзер как все
Участник клуба
Регистрация: 10.01.2012
Сообщений: 1,586
|
тестирую из под Linux через, qemu (i386) эмулятор
Это строка устанваливает MASTER/SLAVE bit, Код:
Код:
Это оно поэтому оно мне давало получается. А на счет режима 0x20, я уже столько перепробовал, что просто запутался вообще. Столько комбинаций что можно тронутся. Я новый в этом деле, извините если написал бред про одновременное выбирание режима, так как регистр на самом деле 8 bit
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
|
01.10.2016, 11:52 | #4 | ||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
Так что на всякий случай всё дочитываем до конца. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
||
01.10.2016, 12:53 | #5 |
юзер как все
Участник клуба
Регистрация: 10.01.2012
Сообщений: 1,586
|
Сппсибо.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
|
01.10.2016, 13:25 | #6 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
И других вариантов выхода я не нашёл. Либо всё вычитывать либо делать сброс. Но софтварный сброс занимает до 61 секунды.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
01.10.2016, 13:45 | #7 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
DEVICE RESET - выполняет быстрый сброс за 6 секунд, с копейками.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
01.10.2016, 15:32 | #8 |
юзер как все
Участник клуба
Регистрация: 10.01.2012
Сообщений: 1,586
|
Как ты и сказал команда 0x20 делает то что нуджно. + я ошибся очень сильно.
В документации написано что если LBA == 0 то читаются 256 секторов, по 512 byte. А я перепутал, и прочитал как-то криво. + 0xC4 который упорно пытался все это дело дочитать. Вообщем, по тиху по тиху, рутовую директорию ext2 прочитал. Спасибо еще раз Код:
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Один человек из РЖД ушел - фонд зарплатный сократился в 3 раза | Alar | Свободное общение | 19 | 18.11.2015 00:49 |
rand() бьет в один из интервалов в два раза чаще | Symba | Общие вопросы C/C++ | 7 | 06.06.2013 00:11 |
CreateFile прочитать бут-сектор | RoS | Win Api | 6 | 06.07.2010 09:36 |
Отобразить один сектор матрицы на другой зеркально | SoulKeeper | Помощь студентам | 8 | 07.11.2009 02:09 |
Не получается прочитать из файла...( | Regloger | Помощь студентам | 3 | 09.12.2007 14:23 |