FriendlyArm. Интегрируем драйвер GPIO в образ Windows CE 6.0 RC3

ARM
Небольшой мануал по основам сборки своего образа Windows CE для платы mini2440 (она же FriendlyArm) и интеграции в образ драйверов для работы с портами ввода/вывода используя C# и .NET Compact Framework.

Будем работать с WinCE 6.0 R3 (самая свежая сборка встраиваемой винды на сегодня), прикладное ПО для системы можно писать на С++ использую морально устаревшую embedded Visual Studio, которая на ОС выше ХР иногда ведет себя очень странно, я же выбрал вариант со связкой C# + .NET Compact Framework (версии 2.0 или выше, 1.0 и 1.1 слишком стары и убоги), поскольку это позволяет создавать приложения достаточно быстро и удобно. Но для начала надо собрать образ винды и залить его в мини.
Для этого нам потребуется:
1) Visual Studio 2005 Professional с установленными SP1, SP1 Update for Vista (если работаем в Висте/7-ке), SP1 ATL Security Update. Студенты, школьники и аспиранты студию могут получить легально и бесплатно по программе dreamspark.com, остальным гугл в помощь.
2) Windows Embedded CE 6.0 Platform Builder
Windows Embedded CE 6.0 Platform Builder SP1
Windows Embedded CE 6.0 RE2 Platform Builder
Windows Embedded CE 6.0 RE3 Platform Builder
Это добро можно найти на рутрекере ввиде отдельных образов, либо получить через dreamspark в виде одного образа(легально и бесплатно)
3) с сайта friendlyarm.net необходимо скачать свежие WinCE 6.0 BSP и SDK.

Порядок установки всего этого добра:

— Microsoft® Visual Studio 2005
— Microsoft Visual Studio 2005 Service Pack 1 (VS80sp1-KB926601-X86-ENU.exe)
— Microsoft Visual Studio 2005 Service Pack 1 Update for Windows Vista® (VS80sp1-KB932232-X86-ENU.exe)
— Windows Embedded CE 6.0
— Windows Embedded CE 6.0 Platform Builder Service Pack 1
— Windows Embedded CE 6.0 R2
— Windows Embedded CE 6.0 R3
— Mini2440-CE6-Suite-1022.exe (берется из архива wince6-bsp_20100609.zip с friendlyarm.net)

При установке все директории для установки оставляем без изменений, чтобы потом геморроя не было с путями. Также в висте/7-ке на всякий случай лучше все установщики запускать от имени администратора. Все файлы системы находятся в папке c:\\WINCE600\\PLATFORM\\Mini2440\\. Можно там полазить, посмотреть исходники драйверов и т.д.

Когда все установилось, попробуем собрать образ системы. Запускаем студию, причем ОБЯЗАТЕЛЬНО от имени администратора, иначе будут косяки при сборке образа! Запустили. Жмем File-Open-Project/Solution... и находим файл c:\\WINCE600\\OSDesigns\\Mini2440\\Mini2440.sln и открываем его. На скриншоте показано окно студии с открытым проектом.


В закладке Catalog Item View можно выставляя или убирая галочки по всякому менять параметры будущего образа (вырезать ненужный софт — игры к примеру, добавить или убрать дрова, уточнить включенную в образ версию .NET Compact Framework (на выбор 2.0 или 3.5)). Для сборки образа выбираем Build-Advanced Build Commands-Clean Sysgen и ждем некоторое время, иногда может показаться что построение образа зависло, но это не так, надо ждать.

Update: Перед сборкой на всякий случай отключите все антивирусы, файерволы или, если комп достаточно мощный, заведите виртуальную машину (VMWare, VirtualBox) с XP и всем необходимым софтом, и делайте все в ней.

Когда в окне Output студии появится что-то типа:
Mini2440 build complete

Mini2440 - 0 error(s), 64 warning(s)
===========Build: 1 succeded or up-to-date, 0 failed, 0 skipped============

значит все готово к заливке в мини 2440. Идем в папку c:\\WINCE600\\OSDesigns\\Mini2440\\Mini2440\\RelDir\\Mini2440_ARMV4I_Release\\ и ищем там файл NK.bin — это и есть образ системы. Теперь будем его заливать. Предполагается, что у нас уже поставлен драйвер USB из комплекта поставки, есть необходимые шнурки и прошит загрузчик последней версии в мини.

1) Запускаем DNW.exe
2) Configuration-Options. Выставляем номер своего COM-порта, скорость 115200, Download address 0x30000000. Жмем ОК.
3) Подсоединяем к мини USB шнурок, COM-портовый шнурок и шнурок питания(ПИТАНИЕ НЕ ВКЛЮЧАЕМ!), переключатель S2 переводим в положение NOR.
4) В DNW Serial Port-Connect. Теперь включаем питание мини с помощью переключателя S1.
В окне DNW появится нечто подобное:


5) Жмем f для форматирования NAND памяти
6) Жмем v для заливки свежего supervivi. Предварительно надо скачать с friendlyarm.net свежую версию под свой объем NAND памяти.
Как определить объем NAND:
На плате ищем модуль памяти Samsung, смотрим маркировку:
K9F1208 > 64 MB NAND Flash
K9F1G08 > 128 MB NAND Flash
K9F2G08 > 256 MB NAND Flash
K9F8G08 > 1024 MB NAND Flash
7) Выбираем USB Port — Transmit, указываем путь к файлу supervivi-XXX (XXX = размер NAND), ждем окончания загрузки.
Теперь грузим nboot. Жмем n, USB Port — Transmit, выбираем версию nboot согласно используемому экрану nboot_A70.bin, nboot_T35.bin или nboot_N35.bin, если брали плату с 3,5 дюймовым экраном, то подойдет nboot_T35.bin. Ждем окончания загрузки.
9) Грузим бутлого. Жмем l, USB Port — Transmit, выбираем файл bootlogo.bmp.
10) Грузим образ системы. Жмем w, USB Port — Transmit, выбираем недавно созданный NK.bin. По завершению загрузки образа мини загрузится сама. Теперь можно ее выключить, вернуть переключатель в положение NAND и работать с системой. По умолчанию в системе есть драйвера для работы с переферией (GPIO, ADC), но они предполагают написание кода на С++. Мне же было интересно создавать приложения используя преимущества C# + .NET Compact Framework. Один хороший человек Domodom (http://www.domodom.fr/spip/index.php?lang=en) написал драйвер для работы с GPIO средствами C# + .NET Compact Framework (http://www.domodom.fr/spip/A-GPIO-driver-for-mini2440.html). Скачиваем драйвер с его сайта и приступаем к интеграции в образ системы.
Скачиваем архив,
1) папку gpio кладем в \\WINCE600\\PLATFORM\\Mini2440\\SRC\\DRIVERS
2) файл gpio.h в папку C:\\WINCE600\\PLATFORM\\Mini2440\\SRC\\INC
3) в файл \\WINCE600\\PLATFORM\\Mini2440\\SRC\\DRIVERS\\dirs дописываем строку gpio
4) в файл \\WINCE600\\PLATFORM\\Mini2440\\FILES\\platform.bib дописываем строку
gpio.dll $(_FLATRELEASEDIR)\\gpio.dll NK SHK

5) в файл \\WINCE600\\PLATFORM\\Mini2440\\FILES\\platform.reg добавляем
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\GPI]
 "Prefix"="GPI"
 "Dll"="GPIO.DLL"
 "Order"=dword:100
 "Index"=dword:0
 "FriendlyName"="Domodom GPIO Driver"

Собираем образ как описано выше. Все, драйвер интегрирован в систему, образ можно заливать в плату.

З.Ы. Я не знаю, будет ли это кому-то интересно, но если найдутся интересующиеся, то могу выложить готовый образ (интегрирован драйвер GPIO и .NET Compact Framework 3.5), сделать статью о написании демопроги на C# для мини2440 и описать нюансы работы WinCE 6.0 с BT-донглом по SPP профилю.

Комментарии (25)

RSS свернуть / развернуть
… а сколько занимает памяти эта ось (минимум)?
PS хорошоб пару картинок и описание возможностей оси
0
ru.wikipedia.org/wiki/Windows_CE_6.0
www.osp.ru/win2000/2007/03/4243804/
Как оно выглядит вживую на мини2440 выложу если напишу статью про программирование под нее.
0
Спасибо за статью.Как раз едет из китая этот модуль)
0
  • avatar
  • lejay
  • 14 августа 2011, 01:47
Жду посадку с 6410, думаю там будет аналогично, буду пробовать. Примеры точно не помешают.
0
  • avatar
  • ACE
  • 14 августа 2011, 11:35
Ну наконец-то хоть кто-то написал статью про WinCE! А то такое впечатление, что кроме линукса в эмбеде и нет ничего.
0
  • avatar
  • _YS_
  • 14 августа 2011, 14:23
А как у этого WinCE в плане совместимости с программами для Pocket PC? Скажем, Windows Mobile 2003, 5, 6 (WinCE 4.20-5.20)?
0
  • avatar
  • Vga
  • 14 августа 2011, 14:30
Если программа написана с использованием NET Compact Framework, то проблем никаких, а так совместимости почти нет, поскольку Windows Mobile и Windows CE — две разные ОС, предназначенные для разных задач.
0
Ну, вообще-то, Windows Mobile, как минимум, основано на WinCE. Насколько я понимаю — надмножество.
0
Изначально да, но с появлением каждой новой версии разница увеличивалась, последняя Windows Phone 7 походу вообще с нуля сделана, без всякой совместимости с предыдущими версиями.
0
З.Ы. Я не знаю, будет ли это кому-то интересно, но если найдутся интересующиеся, то могу выложить готовый образ (интегрирован драйвер GPIO и .NET Compact Framework 3.5), сделать статью о написании демопроги на C# для мини2440 и описать нюансы работы WinCE 6.0 с BT-донглом по SPP профилю.
Мне интересно :) Уже есть несколько вопросов:

— Где брали железку (подозреваю, что с экраном?) и во сколько обошлось?

— Почему VS 2005 взяли (старовата она уже), на 2010 не заведётся это всё?

— Можно скрины запущенной системы, интересно, выглядит так же как на китайских GPS-навигаторах?

— Как GPIO доступно из C#-кода?

— И ещё вопрос общего характера, есть какие-то альтернативы FriendlyARM? Т.е. какая-то ещё дешевая ARM-плата на которой можно запустить WinCE/Linux? Я кроме Friendly ARM ничего доступного к заказу из Китая не нашел…

Сорри за количество вопросов, накопилось :)
0
И ещё до кучи, в .NET CF 3.5 доступен Ethernet, который есть на плате (сокеты хотя бы)?

Спасибо!
0
Я с сетью еще не работал, но там походу все также как и на обычном ПК, втыкание сетевого шнура в плату приводит к подключению ее к интернету и локальной сети со всеми вытекающими:)
0
1) железку брал давно, полтора года назад в комлектации плата, экран 3,5", камера, позже заказывал еще комплект проводов. Брал на ебее, продавец eskysh, вроде так.
2) 2005 студия нужна для установки Platform Builder, он работает только с этой версией. Разработку софта можно вести в любой версии студии, только в 2010 не пробовал, поскольку из нее выпилили такое понятие как Smart Device Application и могут быть проблемы, хотя надо попробовать.
3) и 4) на днях выложу статью, там будут и скрины и пример работы с GPIO.
5) Доступных альтернатив не видел, тем более у FriendlyArm достаточно большое сообщество и можно найти ответы или готовые решения.
0
Спасибо большое за ответы, наконец-то нашел хоть кого-то кто пробовал эти платы и WinCE + .NET CF на них, поэтому спрошу ещё :)

— Сколько в NAND занимает некастомизированный образ WinCE в NAND?

— На плате есть JTAG, если я правильно понял, он нужен только чтобы отлаживать native-код (загрузчик, например, или саму ОС). Если мне нужно поставить WinCE 6.0 и дальше всё писать под .NET CF каких кабелей будет достаточно?

— Под Windows Mobile (та, которая была до Windows Phone 7, т.е, например, версии 6, 6.1 и 6.5) в студии был эмулятор, есть ли такое (и возможно ли) для WindowsCE?

— Можно ли прямо из студии подключится к плате, запустить на ней свою программу на .NET CF, есть ли отладка прямо на железке?

Спасибо!
0
1) не знаю, не мерил.
2) все верно, но мне JTAG понадобился для прошивки свежего supervivi, со старым WinCE 6.0 не грузился.
3) для CE видел какие-то эмуляторы, но они жутко кривые, поэтому не пользовался, так, потыкал и удалил.
4) Можно, как и любой кпк на Windows Mobile через ActiveSync(XP и ниже) или Windows Mobile Device Center(Vista, Seven), надо в дебаг таргет выбрать Windows CE Device и подключить его к компу, студия сама должна все задеплоить и запустить дебаг.
0
Шили через j-link или что то иное?
0
Шил через бесплатный jtag на LPT-порт, который шел в комплекте, j-link пока только думаю приобрести.
0
2) все верно, но мне JTAG понадобился для прошивки свежего supervivi, со старым WinCE 6.0 не грузился.
Про комплектный JTAG на LPT-порт уже прочитал тут: www.domodom.fr/spip/Mise-a-jour-du-bootloader.html
Но интересно, неужели в ARM9 нету встроенного в кристал бутлоадера (как, например, в STM8 и STM32), который слушает UART какой-нибудь? Нигде не попадалось информации?

4) Можно, как и любой кпк на Windows Mobile через ActiveSync(XP и ниже) или Windows Mobile Device Center(Vista, Seven), надо в дебаг таргет выбрать Windows CE Device и подключить его к компу, студия сама должна все задеплоить и запустить дебаг.
Можно попросить добавить этот этап в будущую статью? :) Интересно насколько шустро\хорошо это работает.
0
Про бутлоадер не слышал, может и есть такие. Просто армы этой серии как я понимаю не особо используют без ОС. про отладку попозже напишу, так как сам еще не пробовал:)
0
Спасибо за ответы, жду статьи про первую программу и заказываю платку :)
0
Подскажите пожалуйста. Нажимаю как у Вас Build,Visual Studio выдает ошибку. Побывал даже не менять компоненты, все равно не компилируется. И не могли бы еще подсказать что значит восклицательный красный знак на некоторых компонентах.
0
Киньте скриншот на мыло, а то так сказать сложно. pilamaster[at]gmail.com
0
По поводу сборки образа системы отмечу один момент. У меня сборка прекращалась с ошибкой, в логе — не удалось найти некий файл. Запускаешь ещё раз — опять ошибка, не удалось найти уже другой файл. И так постоянно. Попробовал так на двух машинах — одинаковая ерунда. Долго гуглил, нашёл совет — отключить антивирус. Попробовал — и сразу образ собрался. Антивирус Kaspersky Crystal. Может, стоит дописать этот момент в статью?
0
Спасибо, про антивирусы как-то не задумывался, поскольку все делаю на специально заведенной виртуальной машине с XP без всяких антивирусов.
0
поставил я все с диска и образ тоже, все норм роботает) а теперь ставлю все с диска, ну только образ тот что в статье, mimi сам не перезагружаеться((( далее сам снимаю S2 с NOR, выключаю / включаю, загрузка идет, появляеться картинка, а дальше полосы и висит((( что я не так делаю?
Low Level Format: Start очень долго мин 15 идет, это у всех так?
0
  • avatar
  • VIC
  • 24 января 2012, 00:49
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.