sig
Гость
|
|
« : 03-06-2009 14:56 » |
|
Всем доброго время суток! Люди добрые помоготи советами, ссылками а может и примерами кодов как писать дрова для WinCE6.0? У меня установлен Windows Embedded CE 6.0, Platform Builder и конечно же VS 2005. Что дальше?
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #1 : 03-06-2009 15:18 » |
|
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
|
sig
Гость
|
|
« Ответ #3 : 04-06-2009 08:40 » |
|
Большое спасибо! Жаль что на раусском ничего нет... придется попотеть и читая тоже:) а кому сейчас легко:)
|
|
|
Записан
|
|
|
|
sig
Гость
|
|
« Ответ #4 : 15-06-2009 15:28 » |
|
Люди тону помогите!!! Кто-нибудь лично писал дрова для WinCE? Откликнитесь!!! Я совсем запутался в этих хелпах и незнаю с чего начать
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #5 : 15-06-2009 20:39 » |
|
начать надо с правильной постановки вопроса) что конкретно требуется реализовать? что конкретно непонятно например по той ссылке на переделку примера?
|
|
|
Записан
|
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
|
|
« Ответ #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 уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
sig
Гость
|
|
« Ответ #9 : 16-06-2009 11:44 » |
|
Я тут смотрю мне вроде нужно редактировать какой то source file....
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #10 : 16-06-2009 11:45 » |
|
|
|
« Последнее редактирование: 16-06-2009 11:47 от Ochkarik »
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
sig
Гость
|
|
« Ответ #11 : 16-06-2009 11:48 » |
|
Ща гляну:)
|
|
|
Записан
|
|
|
|
sig
Гость
|
|
« Ответ #12 : 16-06-2009 12:08 » |
|
Бат файлов там видимо не видимо... я нашел в C:\WINCE600\PUBLIC\COMMON каталоге sources.cmn файл в котором указан путь C:\WINCE600\PUBLIC\COMMON\DDK\INC где и находится искоемый файл ceddk.h
|
|
|
Записан
|
|
|
|
|
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
|
|
« Ответ #15 : 27-06-2009 10:37 » |
|
READ_PORT_UCHAR и т.д. - это макросы обычно. как они в ceddk.h объявлены? кроме того проверьте, они могут быть в #ifdef/#else/#endif определены по разному для разных платформ(типа ARM и т.д.) - тогда надо выбрать целевую платформу и сделать #define _ЕЕ_ИМЯ_ ceddk.h - инклудится в том *.cpp файле в котором error LNK2019 появляется? - подозреваю что нет)
|
|
|
Записан
|
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
|
|
« Ответ #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 уже хоть раз наконец! :[ ну или хотя бы 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
|
|
« Ответ #20 : 28-06-2009 19:18 » |
|
это нормально))) для драйверов)
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
sig
Гость
|
|
« Ответ #21 : 08-07-2009 11:16 » |
|
привет это сново я:) ну с макросами вроде разобрались субпроект билдится .dll создается. теперь вот такая проблемка например в WinCE есть exfat.dll а вот где он хранится? никак не могу найти... наверное туда же нужно копировать и созданный мною .dll, да? и еще наверное нужно регестрировать его(.dll) в регистрах для того чтобы он автоматически вызывался?
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #22 : 08-07-2009 20:10 » |
|
|
|
« Последнее редактирование: 08-07-2009 20:18 от Ochkarik »
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
sig
Гость
|
|
« Ответ #23 : 09-07-2009 09:30 » |
|
Спасибо за участие и ссылки. Да проблема как раз в том, что я не нахожу в WinCE возможность дать поиск... ни тебе search-a ни тебе find-a...неужели нет этой возможности?
|
|
|
Записан
|
|
|
|
sig
Гость
|
|
« Ответ #24 : 09-07-2009 10:39 » |
|
и еще есть что-нибудь похожее на regedit?
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #25 : 09-07-2009 11:48 » |
|
|
|
« Последнее редактирование: 09-07-2009 11:55 от Ochkarik »
|
Записан
|
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 загружался автоматически? И вообще интересно заработает ли этот пример?
Заранее благодарю за участие всех кто откликнется.
|
|
|
Записан
|
|
|
|
|