OSDev

для всех
Текущее время: 29 мар 2024, 04:26

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Настройка PIC
СообщениеДобавлено: 26 май 2014, 17:20 

Зарегистрирован: 26 май 2014, 17:09
Сообщения: 9
Мне нужно настроить PIC, это часть учебного задания, а так же мне дано начало кода:
Код:
mov  $0x20, %al
outb $0x20
outb $0xA0

Здесь посылается сигнал окончания наиболее приоритетного прерывания (безличный EOI) в оба контроллера, вопрос в том, зачем это делается? И ещё вопрос, как работает PIC, если его не инициализировать, у него же должен быть задан какой-то начальный режим работы? Это потом мы его инициализируем так, как нужно нам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка PIC
СообщениеДобавлено: 26 май 2014, 19:16 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
Здесь посылается сигнал окончания наиболее приоритетного прерывания (безличный EOI) в оба контроллера, вопрос в том, зачем это делается?

Да не зачем, смотри документацию от Intel там процесс инициализации начинается с ICW1, а не с OCW1<=EOI. А вот почему это дал ваш преподаватель так это надо спрашивать у него, либо у его тараканов. У каждого программиста аппаратуры свои тараканы в голове.

http://ru.osdev.wikia.com/wiki/Программируемый_контроллер_прерываний

Мой код инициализации можете взять здесь.
viewtopic.php?f=7&t=661


Цитата:
И ещё вопрос, как работает PIC, если его не инициализировать, у него же должен быть задан какой-то начальный режим работы? Это потом мы его инициализируем так, как нужно нам.
Нет у оригинального PIC не было контакта сброса. Поэтому после подачи питания все его регистры(биты регистра) попадают в неопределённое состояние X.(Либо 1 либо 0).
Но когда контролёр перестал существовать как отдельное устройство и перекочевал в южный мост, то у него появились значения по умолчанию, которое он принимает после сброса. Но в любом случае прежде чем использовать PIC его надо инициировать. Это связан с тем что не все регистры сбрасываются в начальное состояние.

И также обращаю на изменение поведения контролёра. При выборе режима совместимости а) 8080, так и б) 8086/8088. Когда он стал внутри моста то режим совместимости со старым процом убрали. И значение по умолчанию для ICW4 изменилось.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка PIC
СообщениеДобавлено: 26 май 2014, 20:42 

Зарегистрирован: 26 май 2014, 17:09
Сообщения: 9
Тогда ещё вопрос по поводу ICW 4, в вики сказано, что биты 3 и 2 должны быть равны 0, у меня в материалах, что дал мне преподаватель бит 3 и 2 имеют вполне определённое назначение, картинку с материалами прикладываю. Вы не могли бы пояснить где информация более достоверная? Если будет интересно могу выложить полную PDF-ку материалов.


Вложения:
ICW4.png
ICW4.png [ 204.97 КБ | Просмотров: 9282 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка PIC
СообщениеДобавлено: 26 май 2014, 21:18 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Я уже писал что есть разная реализация PIC. В Википедии в конце статьи приведены ссылки на официальные источники информации. Вот в официальных источниках информация достоверная.
А по поводу разногласий да так и есть. В вашей методичке перевод старой реализации, в википедии чуть более новой, но наиболее актуальной. На самом деле эти разногласия не существенные. Просто современный PIC не поддерживает буферезированный режим, так как способ соединения PIC является IBM совместимой реализацией с PS/2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка PIC
СообщениеДобавлено: 27 май 2014, 00:35 

Зарегистрирован: 26 май 2014, 17:09
Сообщения: 9
Код:
movb $0x20, %al     #OCW 3 - безличный EOI
        outb $0x20
        pop %ax
        iret

Это самый конец моего обработчика прерываний таймера. Чисто теоретически между сбросом ISR и iret может снова прилететь прерывание таймера?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка PIC
СообщениеДобавлено: 27 май 2014, 00:39 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Может, но до возврата из обработчика прерывания (выполнение iret) они будут проигнорированы, т.к. в обработчике прерывания запрещены.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка PIC
СообщениеДобавлено: 27 май 2014, 00:46 

Зарегистрирован: 26 май 2014, 17:09
Сообщения: 9
А разве вложенных прерываний не бывает? Мы ведь сбросили ISR, значит контроллер увидев IRR от таймера устанавливает ISR, сбрасывает IRR и устанавливает адрес вектора на адресной шине, разве не так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка PIC
СообщениеДобавлено: 27 май 2014, 00:54 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
В момент начала обработки прерывания процессором устанавливается флаг запрета прерываний. До тех пор, пока этот флаг установлен, процессор будет игнорировать любые маскируемые прерывания. Да, можно разрешать прерывания внутри обработчика, тогда может возникнуть вложенное прерывание. Но лучше этого не делать.
Вектор прерывания устанавливается контроллером только если процессор подтвердит прерывание.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка PIC
СообщениеДобавлено: 27 май 2014, 01:08 

Зарегистрирован: 26 май 2014, 17:09
Сообщения: 9
То есть если я Вас правильно понял, процессор начав выполнение обработчика прерываний, неявно обнуляет IF, а при возврате так же неявно его взводит. То есть если я взведу его сам в обработчике, я тем самым смогу обрабатывать вложенные прерывания? Тогда ещё один вопрос, предположим, что я разрешу обработку внутри обработчика. Но тогда если это же самое прерывание будет прилетать очень часто, есть вероятность, что произойдёт переполнение стека? И ещё вопрос, если я не сброшу ISR, но разрешу прерывания, процессор снова будет игнорировать запросы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настройка PIC
СообщениеДобавлено: 27 май 2014, 05:31 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
На первый вопрос да. По поводу второго да. Вероятность есть если ваш обработчик не будет успевать обрабатывать прерывания.
По поводу 3 просто запросов не будет. PIC это машина состояний.


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

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


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

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


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

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