OSDev

для всех
Текущее время: 22 июл 2019, 13:56

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Ввод\вывод клавиатура.
СообщениеДобавлено: 18 авг 2008, 02:06 
Здаствуйте, делал по примеру из статей lowlevel osdev\ дошел до 11 урока и столкнулся с проблемой, после запуска бинарка на экран выводится текст,а вот когда набираю сам на клаве что-то то ничего на экране не появляется...
С чем может быть связанно?


Вернуться к началу
  
 
 Заголовок сообщения: Re: Ввод\вывод клавиатура.
СообщениеДобавлено: 18 авг 2008, 10:59 
"вызвать из функции kernel_main() функцию init_interrupts()" - это сделано?


Вернуться к началу
  
 
 Заголовок сообщения: Re: Ввод\вывод клавиатура.
СообщениеДобавлено: 02 янв 2011, 16:14 

Зарегистрирован: 02 янв 2011, 12:05
Сообщения: 7
люди , а где эти статьи находятся ? мне бы не помешало почитать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ввод\вывод клавиатура.
СообщениеДобавлено: 04 фев 2011, 19:03 

Зарегистрирован: 04 фев 2011, 09:31
Сообщения: 5
У меня 11 урок от туда вообще не компилируется, gcc ругается на irc_timer, &irq_timer и &irq_keyboard. Все привидущие уроки компилируются и работают нормально. Пробовал закоментировать и по всякому переделывать, но даже если компилировалось, работало не правильно. Кто-нибудь знает, как там правильно делается?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ввод\вывод клавиатура.
СообщениеДобавлено: 05 фев 2011, 04:01 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1087
Откуда: Балаково
Ты наверно пропустил объявление этого макроса (перечитай текст внимательней, или найди поиском по этому тексту)

#define IRQ_HANDLER(func) void func (void);\
asm(#func ": pusha \n call _" #func " \n movb $0x20, %al \n outb %al, $0x20 \n popa \n iret \n");\
void _ ## func(void)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ввод\вывод клавиатура.
СообщениеДобавлено: 05 фев 2011, 10:36 

Зарегистрирован: 04 фев 2011, 09:31
Сообщения: 5
Цитата:
Ты наверно пропустил объявление этого макроса

Нет, макрос я добавлял.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ввод\вывод клавиатура.
СообщениеДобавлено: 05 фев 2011, 17:24 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1087
Откуда: Балаково
NElamer писал(а):
Нет, макрос я добавлял.

Проблема в именах функций. Некоторые версии gcc добавляют приставку подчёркивания, а некоторые нет. Поэтому в макросе надо поэкспериментировать с добавлением/убиранием символов _ (их там два).

Например:
#define IRQ_HANDLER(func) void func (void);\
asm(#func ": pusha \n call " #func " \n movb $0x20, %al \n outb %al, $0x20 \n popa \n iret \n");\
void ## func(void)

А вообще надо смотреть ассемблерный код. Добавь параметры gcc -save-temps -fverbose-asm
тогда при компиляции появится ассемблерный файл типа .s
По нему надо будет проверить все имена функций.
Ещё появится файл типа .ii
это Си программа с развёрнутыми макросами, тоже полезно изучить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ввод\вывод клавиатура.
СообщениеДобавлено: 05 фев 2011, 22:29 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
Имхо, к 11-тому уроку пора понять общий принцип создания и то, что эти уроки не имеют конечной рабочей версии.

Мне как туториал нравится уроки James Molloy. Они описывают процесс до пользовательского режима, но по крайней мере это 100% рабочие вещи.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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


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

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


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

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