![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 04.11.2015
Сообщений: 14
|
![]()
А подскажите пожалуйста где можно взять исходники драйверов?
Банально даже для клавиатуры придется столько массивов написать, которые уже написаны и не раз. Хотелось бы избавится от рутинных действий по максимуму. |
![]() |
![]() |
![]() |
#12 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
linux-овый мир довольно открыт на просмотр
![]() Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#13 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]()
скачай WinDDK, там достаточно примеров драйверов: клавиатура(ввод), аудио, видеокамера, сеть, виртулаьные устройства...
|
![]() |
![]() |
![]() |
#14 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]() Цитата:
Да много где. Исходники DOS 1, 2 открыты. Исходники DOS 6.0 утекли в сеть. Исходники Windows NT4 и Win2k тоже утекли в сеть. Исходники Microsoft Invisible Computing platform открыты. Исходники FreeBSD открыты Исходники Linux открыты. Исходники Intel UEFI DUET открыты. Исходники L4 открыты. Исходники QNX 3 открыты (пруф). Исходники FreeDos открыты. Есть ещё десятки всяких статей и сотни других ОС, но в списке приведены основные ОС которые стоит рассмотреть так как при их разработке использовался профессиональный подход или полу профессиональный. Есть ещё ряд проектов без привязки к ОС? но за суживающие внимания: Графическая среда xorg исходники. Драйвер диска+ FAT = FatFS Сетевая система LwIP Сетевая система uIP
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
![]() |
![]() |
![]() |
#15 |
Пользователь
Регистрация: 04.11.2015
Сообщений: 14
|
![]()
Спасибо, буду читать/ковырять.
|
![]() |
![]() |
![]() |
#16 |
Пользователь
Регистрация: 04.11.2015
Сообщений: 14
|
![]()
Всех с наступившим!
Подошел я к новому вопросу (который собственно продолжаю изучать), точнее паре вопросов. 1) Как лучше всего преобразовывать набранное на клавиатуре (ну или полученное по интерфейсам) в исполняемый код? Банально хочу пока что реализовать "mov", "OUT", "IN", и соответственно аргументы к ним. Лучше чем посимвольное сравнение и Switch ничего не приходит в голову. Данный вопрос в процессе изучения, но хотелось бы что бы пнули в нужном направлении. 2) В майне в одной из функций есть локальная переменная (массив определенного размера), при увеличении размера и перекомпиляции платка просто виснет. Изменение размера кода или размеров других массивов НЕ приводит к подвисанию. Куда копать? 3) Подскажите как перейти в графический режим без использования int10, навреняка это возможно. Где искал инфу везде все через вызов онного прерывания. 4) Наверное нереально сложно, но все же хотелось бы реализовать (гораздо позже) перезаливку файла с ОС по интефейсам, или подгрузку файлов с новыми задачами(функциями) к уже запущенной ОС. Сейчас у меня все грузится через Grub, он с USB флешки считывает файл с ОС и всем фаршем, передает этому коду управление. Я так понимаю нужно просто удалять файл с флешки, перезаливать его с сохранением имени и перезагружаться. Опять же подскажите куда копать))) Последний раз редактировалось Foton6; 15.01.2016 в 12:45. |
![]() |
![]() |
![]() |
#17 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
1) Тут думать не надо. Надо действовать. В принципе так и есть. По символьное сравнение с выбором. Можете посмотреть как любой компилятор сделан.
Вначале разбор строки на слова и символы препинания. А после слово отвечающая за команду сравнивается с массивом. В массиве лежит команда в виде строки и указатель на функцию(ака. виртуальная функция). Откуда выбирается функцию и вызываем её. Она ведёт дальнейшей анализ параметров и генерирует соответствующий код. 2) Ошибка в коде. Надо смотреть искать где выходит за диапазон и что портиться. Очень неприятный тип ошибок трудно уловимый. Где-то указатель выходит за приделы массива или вовсе пустой. А может как у меня было в одном условии не добавили код. Месяца 2 искал баг. 3) Код Int 10h - располагается на ПЗУ видеокарты расширения и БИОС материнской платы просто перенаправляет вызовы на него. Поэтому код для разных видеокарт разный. Отсюда либо писать драйвер или использовать Int 10h. Есть ещё 3 вариант это включить графический режим в Grub. 3.1) Достаточно в настройках груба задать графический режим. Тогда груб при запуске передаст параметры графического режима и адрес видео памяти ядру. А дальше просто не меняем разрешение. 3.2) Графическая среда xorg исходники. Там минимальные драйвера для видео можете попробовать их скомпилировать. Еще можно исходники драйверов взять из КолибриОС. 3.3)Для вызова Int 10h вам придется переключить ЦП в реальный режим выполнить прерывание а затем вернуться в защищенный режим. Что не трудно код на Osdev.org был.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 15.01.2016 в 15:26. |
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 04.11.2015
Сообщений: 14
|
![]()
C подвисаниями разобрался, опять невнимательность)
В FreeRTOS для каждой задачи сам определяешь размер стека, а я чет про это забыл и выделял крохотный стек. Увеличил и все завертелось закрутилось) Возник еще вопрос) Кнопки клавиатуры со стрелками генерируют по 8 байт (4 нажатие, 4 отпускание), а судя по ресурсам в инете должно выходить 4 байта (2/2). При этом генерируется необходимые 4 байта и еще доп. 4 байта, то есть оно будет работать в соответствии с найденными таблицами скан-кодов, НО что это за фитча? (пробовал 2 разные клавы, но обе Genius). P.S. Ковыряюсь в исходниках колибри на предмет драйверов. Спасибо Pavia! Последний раз редактировалось Foton6; 19.01.2016 в 16:02. |
![]() |
![]() |
![]() |
#19 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
По 4 байта это нормально. Перед кодом клавиш со стрелками допускается присутствие кода состояния NumLock Shift и др.
Что задокументировано как у IBM, так и у Microsoft .
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 19.01.2016 в 17:16. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разбираюсь в коде С# | Alexey Smirnov | C# (си шарп) | 4 | 18.11.2013 19:18 |
Разбираюсь с Code::Blocks | Демик | Помощь студентам | 5 | 15.04.2013 20:22 |
Не разбираюсь динамическом программировании. | sirex | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 22.09.2010 21:58 |
Не разбираюсь в функциях | logok | Общие вопросы C/C++ | 5 | 03.04.2010 00:30 |