Здравствуйте, MShura, Вы писали:
MS>Здравствуйте, inquiring, Вы писали:
I>>Здравствуйте! I>>Какие существуют короткие способы доступа (не ПДП) к секторам НГМД? I>>Спасибо за внимание
MS>?????
Короткий доступ- это не прямой доступ к памяти. Есть ли такой, и если есть, то как он действует?
Спасибо за внимание
> Короткий доступ- это не прямой доступ к памяти. Есть ли такой, и если > есть, то как он действует? >
PIO!!!
Вот кусок кода считывающий 20-й сектор Primary канала Master устройства:
;Базовый адрес 1F0h, канал 1 - Primary
;Ожидание готовности HDD к приему команды
;Регистр номера головки/номера диска
mov dx,1F6h
; 1 0 0 1
;1, LBA/CHS, 1, Master/Slave, LBA(27-24)
mov al,11100000b
out dx,al
;Ожидать, пока диск не будет готов
;Регистр состояния/команд
mov dx,1F7h
@@WaitHDReady:
;Прочитать регистр состояния
in al,dx
;Проверить состояние сигнала BSY
test al,80h
jnz @@WaitHDReady
;Проверить состояние сигнала DRQ
test al,08h
jnz @@WaitHDReady
;Загрузить команду в регистры контроллера
;Регистр количества секторов
mov dx,1F2h
mov al,1
out dx,al
;Регистр LBA(7-0)
mov dx,1F3h
;Нужно считать 20-й сектор
mov al,20
out dx,al
;Регистр LBA(15-8)
mov dx,1F4h
mov ax,0
out dx,al
;Регистр LBA(23-16)
mov dx,1F5h
mov al,0
out dx,al
;Регистр номера головки/номера диска
mov dx,1F6h
; 1 0 0 1
;1, LBA/CHS, 1, Master/Slave, LBA(27-24)
mov al,11100000b
out dx,al
;Послать команду в контроллер
;Регистр состояния/команд
mov dx,1F7h
;Комманда ATA 20h - прочитать сектор в режиме PIO
mov al,20h
out dx,al
;Ожидать готовность данных HDD
;Регистр состояния/команд
mov dx,1F7h
@@WaitCompleet:
;Проверить готовность
in al,dx
;Состояние сигнала BSY
test al,80h
jnz @@WaitCompleet
;Состояние сигнала DRQ
test al,08h
jz @@WaitCompleet
;Принять сектор
;Настраиваем буфер приёма данных на 0000:7C00 (es:di)
xor ax,ax
mov es,ax
mov di,7C00h
;Регистр данных
mov dx,1F0h
;Число считываемых слов
mov cx,256
;Считываем сектор
rep insw
Posted via RSDN NNTP Server 1.9 gamma
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Спасибо за код. Я просто хотела узнать, что называется, на пальцах, какие бывают способы доступа.
Примерно так: есть два режима: DMA и PIO.
PIO же в свою очередь бывает:1)...2)... etc.
Вот что-то вроде этого я хотела услышать.
Спасибо за внимание
> PIO же в свою очередь бывает:1)...2)... etc. >
Кстати, может объяснишь мне идиоту существование различных PIO!!! От чего это зависит? Если только от переферии (ну винт например медленный), то тогда всё понятно, а если нет, то я даже и не знаю о чём думать!!!
Posted via RSDN NNTP Server 1.9 gamma
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
>> PIO же в свою очередь бывает:1)...2)... etc. >> S>Кстати, может объяснишь мне идиоту существование различных PIO!!! От чего это зависит? Если только от переферии (ну винт например медленный), то тогда всё понятно, а если нет, то я даже и не знаю о чём думать!!!
В случае ATA — просто объективное развитие интерфейса, насколько я помню. Подробнее можно на t13 посмотреть.
Здравствуйте, Stanky, Вы писали:
>> PIO же в свою очередь бывает:1)...2)... etc. >> S>Кстати, может объяснишь мне идиоту существование различных PIO!!! От чего это зависит? Если только от переферии (ну винт например медленный), то тогда всё понятно, а если нет, то я даже и не знаю о чём думать!!!
Ну почему же сразу идиот? Я же четко написала, что хочу узнать на пальцах. То есть прошу умных мальчиков-программистов объяснить девочке ху из ху. Дело в том, что мне нужно найти информацию и позже претворить в жизнь, читай в код, плоды информации.
Попробую поставить задачу иначе: поделитесь, кто что думает о коротких способах доступа к секторам НГМД, не через DMA.
Повторяю, я ничего не утверждаю, я просто не знаю что это такое, какое бывает, с чем есть. Пример же лично Вам привела для того, чтобы Вы поняли, в каком примерно виде я хочу услышать ответ.
Спасибо за внимание
> Ну почему же сразу идиот? >
Ну эт я утрирую!!!
> Попробую поставить задачу иначе: поделитесь, кто что думает о > коротких способах доступа к секторам НГМД, не через DMA. >
Тогда мне задача опять не совсем ясна!!!
В каком смысле "кто, что думает"?
PIO — програмный ввод-вывод, процессор занимается обменом с устройством (вот почему есть разные скорости мне не совсем понятно)!!!
DMA — прямой доступ к памяти, устройство само занимается обменом данными, имеет смысл только в многозадачной среде!!!
Posted via RSDN NNTP Server 1.9 gamma
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Здравствуйте, Stanky, Вы писали:
>> Попробую поставить задачу иначе: поделитесь, кто что думает о >> коротких способах доступа к секторам НГМД, не через DMA. >> S>Тогда мне задача опять не совсем ясна!!! S>В каком смысле "кто, что думает"?
S>PIO — програмный ввод-вывод, процессор занимается обменом с устройством (вот почему есть разные скорости мне не совсем понятно)!!! S>DMA — прямой доступ к памяти, устройство само занимается обменом данными, имеет смысл только в многозадачной среде!!!
Последняя попытка объяснить свой вопрос: Какие есть короткие способы доступа (PIO) к сектору НГМД, не используя ПДП?
> Последняя попытка объяснить свой вопрос: Какие есть короткие способы > доступа (PIO) к сектору НГМД, не используя ПДП? >
Тот код, что я приводил — считывание одного сектора в PIO режиме!!!
Есть PIO0 -PIO5!!! Кроме PIO и DMA больше ничего нет!!! Это?
Posted via RSDN NNTP Server 1.9 gamma
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Здравствуйте, inquiring, Вы писали:
I>Здравствуйте! I>Какие существуют короткие способы доступа (не ПДП) к секторам НГМД? I>Спасибо за внимание
На самом низком уровне — через порты ввода-вавода. Занятие довольно муторное, но и позволяет многое, например, форматировать дорожку дискеты с нестандартным размером сектора.
Уровень чуть повыше — использование функций int 13h BIOS.
Что-то там еще было на уровне MS DOS — IOCTL, кажется.
Более развернутую информацию можно получить в литературе, вышедшей в начале 90-х. Рекомендую поискать по сайтам, посвященным программированию в MS DOS. Их довольно много в сети. Что-то было у братьев Фроловых.
Здравствуйте, inquiring, Вы писали:
I>Здравствуйте! I>Какие существуют короткие способы доступа (не ПДП) к секторам НГМД? I>Спасибо за внимание
Не хочу лезть в верхнюю ветку. Там stanky все толково написал, только он что то зациклился на ата жестких дисках (PIO0-PIO5 имеет смысл для ATA интерфейса, от режима грубо говоря будет завиеть, сколько будет выполняться команда ввода/вывода и задает длительность сигналов на шине. По-моему так?)
С дисководом можно рабоатть как через DMA, так и через PIO (хотя не уверен, что ЛЮБАЯ модель контроллера это позволит). В DDK есть исходник стандартного драйвера контроллера дисковода. Хотя, конечно, код веьма объемный, но я думаю, потраченное на изучение время окупиться
кто знает url-и, посвященные программированию контроллера винта,
напишите пожайлуста.
с уважением, Сергей.
Posted via RSDN NNTP Server 1.9 gamma
Только на РСДН помимо ответа на вопрос, можно получить еще список орфографических ошибок и узнать что-то новое из грамматики английского языка (c) http://www.rsdn.ru/forum/cpp/4720035.1.aspx
> Не хочу лезть в верхнюю ветку. Там stanky все толково написал, > только он что то зациклился на ата жестких дисках >
Действительно — в вопросе-то звучал НГМД, а я как-то это проморгал, СОРРИ!!!
> (PIO0-PIO5 имеет смысл для ATA интерфейса, от режима грубо говоря будет > завиеть, сколько будет выполняться команда ввода/вывода и задает > длительность сигналов на шине. По-моему так?) >
Кстати, опять-таки прошу прощения: PIO5 не существует!!!
Posted via RSDN NNTP Server 1.9 gamma
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!