OSDev
http://osdev.ru/

Ввод\вывод клавиатура.
http://osdev.ru/viewtopic.php?f=6&t=180
Страница 1 из 1

Автор:  Гость [ 18 авг 2008, 02:06 ]
Заголовок сообщения:  Ввод\вывод клавиатура.

Здаствуйте, делал по примеру из статей lowlevel osdev\ дошел до 11 урока и столкнулся с проблемой, после запуска бинарка на экран выводится текст,а вот когда набираю сам на клаве что-то то ничего на экране не появляется...
С чем может быть связанно?

Автор:  Гость [ 18 авг 2008, 10:59 ]
Заголовок сообщения:  Re: Ввод\вывод клавиатура.

"вызвать из функции kernel_main() функцию init_interrupts()" - это сделано?

Автор:  diger [ 02 янв 2011, 16:14 ]
Заголовок сообщения:  Re: Ввод\вывод клавиатура.

люди , а где эти статьи находятся ? мне бы не помешало почитать

Автор:  NElamer [ 04 фев 2011, 19:03 ]
Заголовок сообщения:  Re: Ввод\вывод клавиатура.

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

Автор:  Himik [ 05 фев 2011, 04:01 ]
Заголовок сообщения:  Re: Ввод\вывод клавиатура.

Ты наверно пропустил объявление этого макроса (перечитай текст внимательней, или найди поиском по этому тексту)

#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)

Автор:  NElamer [ 05 фев 2011, 10:36 ]
Заголовок сообщения:  Re: Ввод\вывод клавиатура.

Цитата:
Ты наверно пропустил объявление этого макроса

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

Автор:  Himik [ 05 фев 2011, 17:24 ]
Заголовок сообщения:  Re: Ввод\вывод клавиатура.

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
это Си программа с развёрнутыми макросами, тоже полезно изучить.

Автор:  qeos [ 05 фев 2011, 22:29 ]
Заголовок сообщения:  Re: Ввод\вывод клавиатура.

Имхо, к 11-тому уроку пора понять общий принцип создания и то, что эти уроки не имеют конечной рабочей версии.

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/