Драйвер клавиатуры (ядро)

Тема в разделе "WASM.BEGINNERS", создана пользователем ssa774, 14 июн 2007.

  1. ssa774

    ssa774 New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    4
    Добрый день! Можно ли получить пример (исходник и скомпилированный файл) драйвера клавиатуры на C без ассемблерных вставок, самого-самого простого, например, который раскладку переключает не обычным способом, а любой другой клавишей. Спасибо.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    У Кулакова и Зубкова не смотрел?
     
  3. ssa774

    ssa774 New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    4
    n0name
    Только начал Солдатова читать...
    Кулаков и Зубков - это книга? Есть ссылка?
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Кулаков. Программирование на аппаратном уровне.
    Зубков Программирование на ассмблере для DOSa, Windowsa, Unixa
     
  5. ssa774

    ssa774 New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    4
    n0name
    Так это все ассемблер...[​IMG]
    Если с сями я еще туда-сюда, то ассемблер с нуля не хочется изучать. Мне бы на сях исходник драйвера в режиме ядра.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ну тогда на sysbin.com поищи среди сорцов ОСей, там всегда должен быть драйвер клавы, правда за простоту его не поручусь
     
  7. ssa774

    ssa774 New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    4
    n0name
    Вот поэтому сюда и написал. Сложных дров много, хотелось бы начать с о-о-очень простого на сях.
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    без ассемблера, имхо, никуда в этом деле=\
     
  9. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Great
    Согласен. Но принцепиально и на сях можно накатать, если уж Unix накатали :)

    ssa774
    Изучать асм снала и не надо. Советовал бы Зубкова (т. к. у меня его книжка-малышка есть), откроешь главу "Программирования на уровне партов ввода/ввывода" там и описывается как ф-ционирует клава. Ищещь любой исходник на Ся, описывающий работу в режиме ядра и дело в шляпе.
     
  10. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    ssa774
    низкоуровневую часть все равно придеться писать на асме
    без портов ты просто очередной символ не получишь
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ну для работы с портами вв в си написать пару макросов и всё. Тогда асма не понадобится в принципе. Ну хотя еще надо будет в постановке/обработке прерываний тоже асм использовать, хотя это не точно, тк не знаю поддерживает ли тот компилятор которым собирается пользоватся ТС каких-нибудь функций, типа set_interrupt().
     
  12. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    на ассемблере :)
     
  13. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    если речь идет о 32-ух битном защищенном режиме, такого точно, имхо, не будет
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Юникс не без асма писался. Винда тоже
     
  15. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Но ни в одном нормально написанном на Сях драйвере ассемблер не нужен. Для его исключения можно использовать функции HAL и, в крайнем случае, intrinsic`и компилятора (или если их нет, написать самому, как предложил noname). А уж драйвер клавиатуры и подавно не такая вещь, в которой нельзя обойтись без ассемблерного кода
     
  16. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    в том или ином виде ассемблер все равно будет: хоть через вставки, хоть через макросы (готовые или самописные)
     
  17. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    rei3er
    Вообще ассемблер влюбом случае будет (буть то драйвер или простая прекладная программа). Ну а если найти специализированный Си для написания драйверов, то прекрастно можно пользоваться только ф-циями из библиотек входящих в состав компилятора. Там прекрастно могут найтица ф-ции типа outport, inport и т. д. Типа этого есть в Turbo C, для вызова прерываний, и если я не ошибаюсь работа с портами ввода, вывода на верхнем уровне и без явного использования ассемблера.
     
  18. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    нет, конечно, если рассматривать конечный результат, то да
    но одно дело, когда в программе только код на С, и другое дело, когда есть нечто не сишное в том или ином виде на уровне исходного кода
     
  19. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Основная цель изоляции ассемблера - обеспечить переносимость и удобочитаемость кода, а для этого годится любой из кучи предложенных выше способов. В Windows NT все низкоуровневые операции болтаются в нескольких десятках ассемблерных файлов с хорощо документированными интерфейсами, поэтому использовать экспортируемые из них функции никаких проблем не представляет