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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как писать и портировать драйвер на WindowsCE?  (Прочитано 30637 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sig
Гость
« : 03-06-2009 14:56 » 

Всем доброго время суток!
Люди добрые помоготи советами, ссылками а может и примерами кодов как писать дрова для WinCE6.0?
У меня установлен Windows Embedded CE 6.0, Platform Builder и конечно же VS 2005. Что дальше? 
Записан
Ochkarik
Модератор

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

« Ответ #1 : 03-06-2009 15:18 » 

для начала читать
http://msdn.microsoft.com/en-us/library/aa447514.aspx
 Ага
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Ochkarik
Модератор

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

« Ответ #2 : 03-06-2009 16:46 » 

нашлись?) я так понял все в  Platform Builder  должно быть?

до кучи ссылка на список kernel функций ядра WinCE... хотя в общем то оттуда же)
http://msdn.microsoft.com/en-us/library/aa909038.aspx

и по шагам как взять пример драйвера, переделать и установить:
http://msdn.microsoft.com/en-us/library/ms895490.aspx
« Последнее редактирование: 03-06-2009 16:50 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
sig
Гость
« Ответ #3 : 04-06-2009 08:40 » 

Большое спасибо! Жаль что на раусском ничего нет... придется попотеть и читая тоже:)
а кому сейчас легко:)
Записан
sig
Гость
« Ответ #4 : 15-06-2009 15:28 » 

Люди тону помогите!!! Не понял
Кто-нибудь лично писал дрова для WinCE? Откликнитесь!!!
Я совсем запутался в этих хелпах и незнаю с чего начать  А черт его знает...
Записан
Ochkarik
Модератор

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

« Ответ #5 : 15-06-2009 20:39 » 

начать надо с правильной постановки вопроса)
что конкретно требуется реализовать?
что конкретно непонятно например по той ссылке на переделку примера?
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
sig
Гость
« Ответ #6 : 16-06-2009 09:37 » 

Общая задача следующая, спроектировано устройство на базе процессора PXA с прошитым WinCE6.0 к которому должны подключаться разные винты(SATA, IDE) и СЕ должен видеть эти винты и разделы на них, соответственно включая NTFS. Задачу поделил на две части, первая обнаружить подлюченный винт с разделами FAT(как-то вызывая фатовский драйвер); вторая драйвер для NTFS.
Для начала хотелось бы разобраться с первой частью. На сколько я понял там общая информационная шина для USB и винтов. Заранее прошу не брать на смех если что не так пишу опыт программирования есть и не маленький, а вот с драйверами сталкиваюсь в первый раз.
Если не совсем все понятно спрашивайте на конкретные вопросы отвечать легче...
Записан
sig
Гость
« Ответ #7 : 16-06-2009 09:47 » 

Сейчас нахожусь на следующем этапе, с помощью VS2005 и PlatformBuilder создаю вроде соответствующую платформу. Потом создаю subproject который генерирует .dll пока не разберу который для меня правильнее с DllMain-ом или пустой? Но и там и там как только пишу
например, #include <ceddk.h> дает ошибку, файла не находит. Если даю весь путь к файлу дает 100 ошибок среди которых подобные ошибки не нахождения файлов которые инклудятся уже в ceddk.h... Что делаю не так?
Записан
Ochkarik
Модератор

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

« Ответ #8 : 16-06-2009 11:34 » 

по поводу ошибок нахождения файлов - с СЕ никогда не сталкивался, но по аналогии:
1. подразумевается что пользователь компилит драйвер утилитой build.exe (то есть в консоли)
(http://msdn.microsoft.com/en-us/library/aa448614.aspx)
2. эта утилита как правило использует make-файл написанный на все случаи жизни.
3. а дальше опциями а-ля "#define" задается некоторые настройки.
4. так же для работы в таком режиме как правило используются некотороые переменные окружения, которые прописываются либо при установке DDK, либо в виде bat-файла, для запуска консоли с требуемыми переменными(может существовать несколько bat на разные платформы и для отладочной версии ядра)
5. как правило переменными окружения определяется путь к DDK. отдельно пути к include и к lib-ам.(может количество настроек, версии и т.п.)

думаю возможно так же настроить компилятор студии, но надо с путями для *.h *.lib разобраться и настройками. 
по ходу тут: http://msdn.microsoft.com/en-us/library/ms923764.aspx

а вобже этот Platform Builder что в себя включает? инклуды, либы, примеры, утилиты и хелп?

для начала разберитесь с путями. если там есть такой bat - попробуйте запустить и в этой консоли вызвать build для готового примера.
« Последнее редактирование: 16-06-2009 11:48 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
sig
Гость
« Ответ #9 : 16-06-2009 11:44 » 

Я тут смотрю мне вроде нужно редактировать какой то source file....
Записан
Ochkarik
Модератор

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

« Ответ #10 : 16-06-2009 11:45 » 

см выше) я просто недописав случайно отправил)

PS http://msdn.microsoft.com/en-us/library/ms923763.aspx
« Последнее редактирование: 16-06-2009 11:47 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
sig
Гость
« Ответ #11 : 16-06-2009 11:48 » 

Ща гляну:)
Записан
sig
Гость
« Ответ #12 : 16-06-2009 12:08 » new

Бат файлов там видимо не видимо... я нашел в C:\WINCE600\PUBLIC\COMMON каталоге sources.cmn файл в котором указан путь C:\WINCE600\PUBLIC\COMMON\DDK\INC где и находится искоемый файл ceddk.h
Записан
Ochkarik
Модератор

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

« Ответ #13 : 16-06-2009 12:22 » 

документацию смотрите)
тут
http://msdn.microsoft.com/en-us/library/aa448626.aspx
PS или это при сборке ядра... в общем читать надо)
« Последнее редактирование: 16-06-2009 12:25 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
sig
Гость
« Ответ #14 : 27-06-2009 07:40 » 

Привет всем это сново я  Улыбаюсь
Нашел вот тут C:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\BLOCK\ATADISK пример пытаюсь его запустить после некоторого труда остались следующие ошибки:

error LNK2019: unresolved external symbol READ_PORT_UCHAR referenced in function ATAWaitForDisk
error LNK2019: unresolved external symbol WRITE_PORT_UCHAR referenced in function ATASetSector
error LNK2019: unresolved external symbol READ_PORT_USHORT referenced in function ATARead
error LNK2019: unresolved external symbol WRITE_PORT_USHORT referenced in function ATAWrite

эти read и write находятся в ceddk.h файле после того как отредактировал source файл вроде нормально инклудится. кому знакома ситуация? у меня WinCE trial version на полгода с майкрософтовского сайта скачивал (3 дня между прочим:)) может проблема в этом, а?
Записан
Ochkarik
Модератор

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

« Ответ #15 : 27-06-2009 10:37 » 

READ_PORT_UCHAR и т.д. - это макросы обычно. как они в ceddk.h объявлены? кроме того проверьте, они могут быть в #ifdef/#else/#endif определены по разному для разных платформ(типа ARM и т.д.) - тогда надо выбрать целевую платформу и сделать #define _ЕЕ_ИМЯ_
ceddk.h - инклудится в том *.cpp файле в котором error LNK2019 появляется? - подозреваю что нет)

Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
sig
Гость
« Ответ #16 : 27-06-2009 12:01 » 

вот как он определен в ceddk.h файле:
NTKERNELAPI UCHAR READ_PORT_UCHAR( __in PUCHAR  Port );
в свою очередь в моем .c файле он вызывается в другом макросе:
#ifdef x86
#define ATA_READ_UCHAR(f,p) ((f & ATADISK_FLAG_MEMORY_MAPPED) ? READ_REGISTER_UCHAR(p) : READ_PORT_UCHAR(p))
#else
#define ATA_READ_UCHAR(f,p) READ_PORT_UCHAR(p)
#endif
ceddk.h конечно же инклудится в этом же файле:) иначе наверное выдало бы ошибку о том что макрос не обьявлен ранее...
Записан
Ochkarik
Модератор

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

« Ответ #17 : 28-06-2009 09:19 » 

хм. я имел в виду КАК определен сам READ_PORT_UCHAR().
в  зависимости от целевой платформы и настроек компилятора, это может быть либо макрос с ассемблерной или С-шной вставкой, типа:
Код:
__forceinline
UCHAR
READ_PORT_UCHAR (
    PUCHAR Port
    )

{
    UCHAR Result;

    _ReadWriteBarrier();
    Result = __inbyte((USHORT)((ULONG_PTR)Port));
    _ReadWriteBarrier();
    return Result;
}
,
либо обычное определение функции
Код:
UCHAR
NTAPI
READ_PORT_UCHAR(
    PUCHAR  Port
    );

а сама функция лежит в либе.
в последнем случае (похоже видимо как раз тот случай) надо подключить соответствующую либу, или указать линкеру пути к папке стандартных либ. обычно такой путь прописывается в переменные окружения в виде "не помню какой" переменной)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
sig
Гость
« Ответ #18 : 28-06-2009 10:25 » 

Да тут явно второй вариант, мне казалось что указать путь к .h файлу достаточно, а там он уже знает где его либ..., а тут еще и нулевые результаты поиска одноименног либ файла...все плохо да?Жаль
Записан
sig
Гость
« Ответ #19 : 28-06-2009 10:55 » 

ай нет соврал, либ есть но он почему то во тут
C:\WINCE600\OSDesigns\MyPlatform\MyPlatform\Wince600\MAINSTONEIII_ARMV4I\cesysgen\oak\lib\ARMV4I\debug и тут
C:\WINCE600\OSDesigns\MyPlatform\MyPlatform\Wince600\MAINSTONEIII_ARMV4I\cesysgen\sdk\lib\ARMV4I\debug
а наверное должен быть и тут
C:\WINCE600\OSDesigns\MyPlatform\MyPlatform\Wince600\MAINSTONEIII_ARMV4I\cesysgen\ddk\lib\ARMV4I\debug
ведь его .h файл находится вот тут
C:\WINCE600\OSDesigns\MyPlatform\MyPlatform\Wince600\MAINSTONEIII_ARMV4I\cesysgen\ddk\inc
Записан
Ochkarik
Модератор

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

« Ответ #20 : 28-06-2009 19:18 » 

это нормально))) для драйверов)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
sig
Гость
« Ответ #21 : 08-07-2009 11:16 » 

привет это сново я:)
ну с макросами вроде разобрались субпроект билдится .dll создается.
теперь вот такая проблемка например в WinCE есть exfat.dll а вот где он хранится? никак не могу найти... наверное туда же нужно копировать и созданный мною .dll, да? и еще наверное нужно регестрировать его(.dll) в регистрах для того чтобы он автоматически вызывался?
Записан
Ochkarik
Модератор

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

« Ответ #22 : 08-07-2009 20:10 » 

про регистрацию драйвера для Win CE в нете вроде есть... через реестр видимо?)
http://msdn.microsoft.com/en-us/library/aa912804.aspx
http://msdn.microsoft.com/en-us/library/aa931223.aspx
http://msdn.microsoft.com/en-us/library/aa932059.aspx

есть даже программа http://www.ladoshki.com/1540-pocket-pc-RegDLL-v1-0.htm (нашел по поиску- что за зверь не знаю)

про exfat.dll
http://msdn.microsoft.com/en-us/library/aa914745.aspx
путь наверное: %_WINCEROOT%\Platform\<your OS design>\drivers\<your driver name>.
но проще поиском найти)))
« Последнее редактирование: 08-07-2009 20:18 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
sig
Гость
« Ответ #23 : 09-07-2009 09:30 » 

Спасибо за участие и ссылки.
Да проблема как раз в том, что я не нахожу в WinCE возможность дать поиск...Улыбаюсь
ни тебе search-a ни тебе find-a...неужели нет этой возможности?
Записан
sig
Гость
« Ответ #24 : 09-07-2009 10:39 » 

и еще есть что-нибудь похожее на regedit?
Записан
Ochkarik
Модератор

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

« Ответ #25 : 09-07-2009 11:48 » 

редактор реестра WinCE
http://www.google.ru/search?sourceid=navclient&aq=t&hl=ru&ie=UTF-8&rlz=1T4ADBF_ruRU321RU322&q=%d1%80%d0%b5%d0%b4%d0%b0%d0%ba%d1%82%d0%be%d1%80+%d1%80%d0%b5%d0%b5%d1%81%d1%82%d1%80%d0%b0+WinCE

поиск файлов WinCE (ищется так же):
http://www.ghisler.com/wince2x.htm - Total Commander v2.52 beta1 (Windows CE , CPU: MIPS),
Resco File Explorer, и т.д.

API: FindFirstFile + FindNextFile + FindClose
http://msdn.microsoft.com/en-us/library/ms900285.aspx
Скромно так...
« Последнее редактирование: 09-07-2009 11:55 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
sig
Гость
« Ответ #26 : 28-07-2009 14:45 » 

Всем снова доброго времени суток и терпения...

Постараюсь в кратце обьяснить проблему. (заранее извиняюсь за возможную сумбурность)

Существует устройство на базе процессора PXA27X в который прошит WinCE 6.0, который связан с FPGA общей информационной шиной. К FPGA будут подключены разные винты которые в свою очередь должны быть видны и в WinCE со всеми своими разделами включая NTFS(знаю, что все плохо).

Теперь о том что сделано. Взял пример PUBLIC\COMMON\OAK\DRIVERS\BLOCK\ATADISK и синтегрировал его как субпроект в созданной мной платформе, после не больших проблем проект начал билдиться и давать результат в виде .dll файла.

Теперь воросы. Что должен делать FPGA, чтобы PXA начал реагировать на подключенный винт? Что нужно сделать чтобы после этого мой .dll загружался автоматически? И вообще интересно заработает ли этот пример?

Заранее благодарю за участие всех кто откликнется.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines