Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2015, 10:14   #11
Foton6
Пользователь
 
Регистрация: 04.11.2015
Сообщений: 14
По умолчанию

А подскажите пожалуйста где можно взять исходники драйверов?
Банально даже для клавиатуры придется столько массивов написать, которые уже написаны и не раз. Хотелось бы избавится от рутинных действий по максимуму.
Foton6 вне форума Ответить с цитированием
Старый 18.11.2015, 10:21   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

linux-овый мир довольно открыт на просмотр
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.11.2015, 11:52   #13
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

скачай WinDDK, там достаточно примеров драйверов: клавиатура(ввод), аудио, видеокамера, сеть, виртулаьные устройства...
f.hump вне форума Ответить с цитированием
Старый 18.11.2015, 15:11   #14
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 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
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 19.11.2015, 08:00   #15
Foton6
Пользователь
 
Регистрация: 04.11.2015
Сообщений: 14
По умолчанию

Спасибо, буду читать/ковырять.
Foton6 вне форума Ответить с цитированием
Старый 15.01.2016, 10:56   #16
Foton6
Пользователь
 
Регистрация: 04.11.2015
Сообщений: 14
По умолчанию

Всех с наступившим!

Подошел я к новому вопросу (который собственно продолжаю изучать), точнее паре вопросов.

1)
Как лучше всего преобразовывать набранное на клавиатуре (ну или полученное по интерфейсам) в исполняемый код?
Банально хочу пока что реализовать "mov", "OUT", "IN", и соответственно аргументы к ним. Лучше чем посимвольное сравнение и Switch ничего не приходит в голову.
Данный вопрос в процессе изучения, но хотелось бы что бы пнули в нужном направлении.
2) В майне в одной из функций есть локальная переменная (массив определенного размера),
при увеличении размера и перекомпиляции платка просто виснет.
Изменение размера кода или размеров других массивов НЕ приводит к подвисанию. Куда копать?
3) Подскажите как перейти в графический режим без использования int10, навреняка это возможно.
Где искал инфу везде все через вызов онного прерывания.
4) Наверное нереально сложно, но все же хотелось бы реализовать (гораздо позже) перезаливку файла с ОС по интефейсам,
или подгрузку файлов с новыми задачами(функциями) к уже запущенной ОС.
Сейчас у меня все грузится через Grub, он с USB флешки считывает файл с ОС и всем фаршем, передает этому коду управление.
Я так понимаю нужно просто удалять файл с флешки, перезаливать его с сохранением имени и перезагружаться.
Опять же подскажите куда копать)))

Последний раз редактировалось Foton6; 15.01.2016 в 12:45.
Foton6 вне форума Ответить с цитированием
Старый 15.01.2016, 13:20   #17
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 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.
Pavia вне форума Ответить с цитированием
Старый 19.01.2016, 15:58   #18
Foton6
Пользователь
 
Регистрация: 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.
Foton6 вне форума Ответить с цитированием
Старый 19.01.2016, 17:13   #19
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

По 4 байта это нормально. Перед кодом клавиш со стрелками допускается присутствие кода состояния NumLock Shift и др.

Что задокументировано как у IBM, так и у Microsoft .
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 19.01.2016 в 17:16.
Pavia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбираюсь в коде С# 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