Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Драйвер клавиатуры. Под XP всё заработало. Под Embedded - не запускается.  (Прочитано 10857 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mmik
Гость
« : 29-08-2008 11:55 » 

Доброе время суток.

Потребовалось написать драйвер к одной специализированной клавиатуре PS/2 для встроенного применения. Драйвер должен, грубо говоря, из 30 кнопок имитировать все. Клавиатура наша собственная, микроконтроллер очень слабый, памяти нет, поэтому сделать всё в ней невозможно. Клавиатура давно ушла в серию (с другой прошивкой), поэтому менять контролер тоже нельзя.

Поискал, почитал - на базе CTRL2CAP сделал всё что надо. Компилил Windows DDK 3790.1830.

Всё работает, на больших компах под обычной XP.
Под Embedded XP он просто не запускается. А может и не начинает запускаться. 
Embedded XP - обязательное требование (лицензия и всё такое). Сборку делали сами, включено очень много чего (700 метров в итоге).

Уважаемые, подскажите куда копать?
Мои варианты:
1. Не хватает компонента в Embedded. Какого? Их там море, всё с подходяшими названиями вроде как добавили.
2. Не верно пописан драйвер в реестре, для Embedded надо чего-то ещё. Как правильно прописать?
3. Драйвер не правильный, и работать не будет. Как тогда правильно?

Чтобы проверить все варианты уйдёт много времени, а сроки как обычно "уже вчера".
Я, конечно, сделаю отладочную версию, чтобы посмотреть что творится внутри, но всё же мне кажется дело не в коде драйвера...

Очень прошу помощи.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 01-09-2008 11:56 » 

inf  в студию.
код ошибки тоже.

не запускается - как? рушит систему, выходит по ошибке, что? как грузите?

PS ага...устанавилвается без Inf видимо... тогда - что меняете в реестре?
PPS откуда брали пример, и что в нем меняли?
PPPS что пытались предпринять по этому поводу?
« Последнее редактирование: 01-09-2008 12:11 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
mmik
Гость
« Ответ #2 : 01-09-2008 12:58 » 

>>inf  в студию.
>>код ошибки тоже.

Код ошибки Улыбаюсь - да если бы он был!
Когда запускаешь с DebupPrint, то видно, что DriverEntry успешно выполнился, и подключение к цепочке дров выполненно успешно.
Короче лог запуска на обычной XP и на Embedded полностью одиноков ровно до одного момента: на обычной XP после успешной инициализации в лог пишутся сканкоды нажатых клавиш, а на Embedded после успешной инициализации - пустота.
DeviceTree показывает, что драйвер есть.


>> не запускается - как? рушит систему, выходит по ошибке, что? как грузите?

имеем один файл klava.sys, который лежит в system32\drivers\
реестр
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\klava]
"ErrorControl"=dword:00000001
"Type"=dword:00000001
"Start"=dword:00000002
"Group"="Keyboard Class"
"DisplayName"="klava"

Оригинальный пример - ctrl2cap марка руссиновича (в инете ищется легко, но могу кинуть исходники, там всего 2 страницы) Модифицирован он минимально: в оригинале код клавиши CapsLock менялся на Ctrl. У меня добавлена таблица замены. И всё. (тоже могу кинуть исходники)
На обычной XP этого хватает. Т.е. работает вообще без вопросов. Проверили на 4-х машинах. Запускаем - запихнули данные в реестр, перезагрузка.

На embedded как только мы его не ставили - и просто добавили данные в реестр, и делали компонет в embedded studio так что при её разворачивании всё сразу на месте - один фиг, никакой реакции. Т.е. ни блускрина, ни каких сообщений, журнал пустой (не пустой, но его вид с моим драйвером и без него не отличается) и изменения раскладки нет. Вообще ничего, как будто в системе ничего не произошло. Что драйвер запускался и подключился к цепочке видно только в дебагном логе.
Такое ощущение, что сканкоды до него просто не доходят А черт его знает...

На моей машине кстати аналогичного эффекта можно добиться воткнув USB-клавиатуру. Драйер запускается но "не работает" - от USB-клавы проходят мимо него. Может в этом собака и порылась, может на embedded другой набор дров?
« Последнее редактирование: 01-09-2008 18:51 от Алексей1153++ » Записан
mmik
Гость
« Ответ #3 : 01-09-2008 13:07 » 

Очень извиняюсь, у меня почему-то нет кнопки "Изменить сообщение".
Там где получилась нехорошая опечатка, следует читать "запиХнули данные в реестр..."  Скромно так...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 01-09-2008 13:36 » 

mmik, со временем будет.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 02-09-2008 08:29 » 

DDK\tools\devicetree\x86\devicetree.exe
посмотрите этой утилиткой включен ли ваш драйвер в стек. и к кому он приатачен.
в исходном примере к \\Device\\KeyboardClass0, насколько я понимаю.
это должна быть ветка:
Driver\i8042prt
кроме того посмотрите в дереве устройств - какие драйвера стоят для клавиатуры...


PS
кроме того, посмотрите как там насчет прав доступа... хотя в XP вроде этих проблем быть не должно...

PPS то что вы в реестре правите - это просто автозапуск драйвера при старте. к драйверу клавиатуры "\\Device\\KeyboardClass0" он атачится сам, функцией IoAttachDevice() в Ctrl2capInit()

попробуйте к "\\Device\\KeyboardClass1" приатачить... если такой в дереве будет.
у меня стоят и 0 и 1. активный - нулевой. но я подозреваю что может быть наоборот.
« Последнее редактирование: 02-09-2008 08:32 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines