Архив
Главная » Архив » 2010 » №П0 » Linux-контроллер UCDK: адаптируем к задаче

Linux-контроллер UCDK: адаптируем к задаче

Статьи по схожей тематике: Switron, Промышленные контроллеры
Леонид Карпенко (НПК СВИТРОН)
Контроллер UCDK на базе ОС Linux – недорогое и функциональное решение для start-up-проектов в области промышленной автоматизации, систем безопасности и мониторинга. Статья о нем принадлежит перу ведущего разработчика этого устройства, генерального директора ООО «НПК Свитрон».

 

 

В институте, где я учился, преподает профессор, который не устает повторять студентам, что инженер должен разрабатывать «оборудование в корпусе, а не в принципе». В свете недавнего кризиса я бы добавил: «за три месяца, а не в ближайшее время». Эта статья для тех, кто разделяет такую точку зрения, кто планирует разработать устройство с определенной функциональностью и за конкретный срок, используя в нем операционную систему (ОС) Linux. Целесообразность использования Linux проверить просто: если устройство должно подключаться к Интернету и поддерживать сложные протоколы обмена, если Вы хотите использовать программы, написанные другими программистами, и не хотите покупать средства отладки и лицензии, то ваша следующая разработка должна быть сделана на Linux-e.

Да, чуть не забыл сказать про WindowsTM CE, VxWorksTM и подобные ОС. Как правило, все эти системы платные, либо требуют лицензионных отчислений с продаж. И, если Вы не знаете однозначных аргументов в пользу использования какой-либо из них, то стоит начать с полностью открытой и бесплатной ОС. Зачем платить, когда это не обязательно? Выбрав платную ОС, Вы обрекаете себя на постоянные отчисления разработчикам (на обновления, на новые библиотеки и т.п.).

Перед тем как перейти к делу, оговорюсь: статья построена на описании конкретного устройства - контроллера UCDK, которое может быть использовано в:

  • Промышленной автоматизации;
  • Системах класса «умный дом»;
  • Системах учета энергоресурсов (АСКУЭ, АСТУЭ);
  • Охранно-пожарных системах;
  • Системах мониторинга работы и дистанционного управления оборудованием (связь, торговля, рекламные стенды, автоматы для продажи еды и платежные терминалы).

Несмотря на то, что в статье описан определенный продукт, в ней приводятся базовые стадии проекта, знакомство с которыми может быть полезными всем разработчикам, начинающим свой первый Linux-проект.

 

Начало проекта: использование готового устройства

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

 

Плата контроллера UCDK

 

Рис. 1. Плата контроллера UCDK

В первую очередь, однако, стоит уделить внимание наличию в составе отладочного комплекта исходных текстов операционной системы и драйверов для периферии - Board Support Package (BSP). Если их нет, или есть только бинарные образы, то помните, что исходные коды придется покупать дополнительно или «собирать» самостоятельно. «Собирать» есть из чего, ведь Linux - это открытая система, однако дело это долгое и требующее высокой квалификации. Например, нашей компании потребовалось полгода, чтобы запустить и отладить ядро, а также написать BSP для первого продукта.

Также следует обратить внимание на техническую поддержку от разработчика. Возникающие вопросы можно решить в десятки раз быстрее, если есть с кем проконсультироваться. Поэтому рекомендую всем использовать российские средства отладки: разработчики ближе и говорят по-русски.

Если Вы планируете разработку в области промышленной автоматизации, обратите внимание на контроллер UCDK производства компании «НПК Свитрон», который поставляется как в виде отдельной платы, так и в четырех видах корпусов. Контроллер UCDK имеет следующие технические характеристики (таблица 1).

Таблица 1. Технические характеристики контроллера UCDK  
Процессорное ядро Процессор Atmel, AT91SAM9G20-CU (ARM9, 400 МГц)
SDRAM 64 Мбайт, 2 x K4S561632J-UI75
FLASH 128 Мбайт, K9F1G08UOB (NAND)
Сетевые интерфейсы Ethernet 1xEthernet 10/100 Мбит/с (KSZ8721CL) (опционально РоЕ)
GSM* 1xGSM/GPRS (HiLo NC, Sagem)
Интерфейсы 4 UARTs: 1хRS-232 (Rx+Tx), 1x RS-232/RS-485 (2 wire), 1xRS-485/CAN (2 wire), 1xTTL (Rx+Tx)
2xUSB-Host, 1xUSB-Slave
Датчики два порта 1-WireTM: до 20 цифровых датчиков на порт
Входы восемь изолированных* и восемь неизолированных входов
Питание Неизолированный блок питания 9...28 В DC
Изолированный блок питания* 36...75 В DC (опция 18...75 В DC)
Потребляемая мощность В минимальной комплектации 2,5 Вт
В максимальной комплектации с учетом зарядки аккумулятора До 20 Вт
Характеристики Диапазон рабочих температур -40...70°С
Габаритные размеры платы 203х141 мм
Дополнительно* Блок зарядки аккумулятора (BQ24702, TI), держатель SD-карты, звуковая подсистема (WAU8812YG, Nuvoton)
Датчики Дополнительно могут быть поставлены цифровые датчики: температуры, дыма, влажности, освещенности, переменного и постоянного напряжения
 

На UCDK установлена операционная система Linux 2.6.27. В комплект поставки входит DVD-диск, содержащий образ виртуальной машины, на котором уже записаны необходимые компиляторы и загрузчики, исходные тексты ОС, необходимые драйверы и примеры программ.

Контроллер UCDK является полностью открытой платформой - все исходные коды и схемы записаны на DVD-диск, а обновления и исправления доступны из Интернета.

 

Старт за час: программирование
на виртуальной Linux-машине

Работа программиста над новым проектом начинается с установки отладочных средств и их настройки. Часто разработчику надо разобраться, почему система не собирается из исходных текстов поставки. Для этого требуется установить все обновления и надстройки, подобрать правильные ключи компиляции и т.п. В итоге, чтобы просто скомпилировать исходные коды, уходит несколько дней.

Комплект поставки UCDK использует технологию виртуальной машины (ВМ) [1] и разработан для максимально быстрого старта у заказчика. ВМ, входящая в поставку UCDK, представляет собой программную систему, эмулирующую аппаратное и программное обеспечение машины разработчика, на которой уже установлены все необходимые для работы и гарантированно совместимые компиляторы и загрузчики.

При этом для компиляции всех исходных кодов разработчик должен:

  • Разархивировать образ ВМ на диск своего компьютера;
  • Установить среду запуска ВМ;
  • Запустить ВМ (при этом на WindowsTM-машине запустится виртуальная машина Debian Linux);
  • Перейти в папку проекта (он также записан на ВМ) и выполнить команду «make all»;

В результате будут скомпилированы четыре бинарных файла-образа для загрузки в память контроллера.

Согласитесь, что начинать работу с полностью работающим проектом значительно удобнее. Ведь изменять быстрее, чем разбираться, как запустить.

 

Что? Где? Когда? Распределение памяти

Контроллер UCDK использует микросхему памяти NAND Flash объемом 128 Мбайт, которая логически разделена на блоки (partition) следующим образом (таблица 2).

Таблица 2. Деление на блоки контроллера UCDK  
Блок (MTD partition) Размер, байт Название Описание
/dev/mtd0 128k Bootstrap Начальный загрузчик (0-го уровня)
/dev/mtd1 256k uboot Загрузчик ядра (1-го уровня)
/dev/mtd2 256k uboot environment Настройки окружения
/dev/mtd3 128k Не используется
/dev/mtd4 128k
/dev/mtd5 128k
/dev/mtd6 2M kernel Ядро Linux в сжатом виде
/dev/mtd7 2M
/dev/mtd8 123M root filesystem Корневая файловая система (JFFS2)

При включении питания управление передается начальному загрузчику Bootstrap, который устанавливает частоту работы процессора, настраивает порты ввода/вывода, подсистему watchdog и т.п. Далее управление получает загрузчик ядра U-Boot. Кроме функций распаковки и запуска ядра Linux, U-Boot предоставляет возможность настроить индивидуальные параметры модуля: МАС-адрес, серийный номер платы, распределение Flash и т.п. с использованием командной строки. Настройки, сделанные в U-Boot, сохраняются в разделе uboot environment. Они будут доступны системе при загрузке и во время работы ОС Linux. После запуска ядра Linux система становится похожей на обычный персональный компьютер. Она использует раздел root filesystem для хранения файлов. В этом разделе хранятся все драйвера, пользовательские и системные программы.

UCDK поставляется с загруженной микросхемой Flash-памяти. Пользователь может запускать программы, модифицировать и удалять файлы, записанные в корневой файловой системе UCDK. Эта файловая система использует раздел mtd8 во Flash и имеет тип JFFS2 (Journaling Flash File System version 2) [2].

Для ускорения разработки можно переключить UCDK на использование файловой системы NFS (Network File System), физически расположенной на диске персонального компьютера (рис. 2).

 

Доступ к файловым системам из UCDK

 

Рис. 2. Доступ к файловым системам из UCDK

Использование NFS позволяет:

  • Увеличить объем памяти контроллера (NFS хранится на диске компьютера). Увеличение особенно полезно при установке стандартных пакетов командой apt-get (см. ниже);
  • Существенно ускорить работу, связанную с частыми компиляциями программ. После компиляции программы на ВМ и ее копирования в папку NFS она сразу становится видимой из контроллера (перезагрузка не требуется).

Переключение между файловыми системами производится настройкой в U-boot.

Запись файлов-образов в NAND flash-контроллера осуществляется c использованием бесплатного пакета SAM-BA (Atmel Corporation) через интерфейсы USB Slave или JATG, а файла rootfs - по Ethernet.

 

Драйверы: лучше, когда они уже есть

Как уже отмечалось выше, ключевым фактором при выборе отладочной платы является наличие необходимых в вашем проекте интерфейсов. Этот фактор приобретает еще больший вес, если вместе с платой поставляются драйверы. Написать драйвер под Linux - дело, в принципе, несложное. Однако, оно требует опыта и знаний архитектуры Linux [3]. Кроме того, требуется время на его тестирование и отладку. И не стоит «утешать» себя мыслью, что для Linux есть все драйверы. Это верно, но интеграция свободно распространяемого компонента в вашу систему потребует значительного времени. Сначала новый драйвер работать не будет. Потребуется основательно разобраться в теме, чтобы через неделю-другую «сражений» исправить пяток ключевых строк.

В комплект поставки UCDK входят следующие драйверы:

  • Драйверы последовательных портов. Для CAN и RS-485 переключение направления передачи- автоматическое;
  • Драйвер для микросхемы Ethernet PHY, подключенной по шине RMII;
  • Драйвер часов реального времени (RTC);
  • Драйвер подсистемы WatchDog;
  • Поддержка 2хUSB- host;
  • Драйвер шины I2C;
  • Драйвер цифровых входов;
  • Драйвер опроса и управления GPIO-процессора (управление светодиодами, кнопка, состояние SIM-карты и т.п.)

В UCDK все драйверы поставляются в исходных кодах. Их можно свободно модифицировать под вашу задачу.

Используйте программные пакеты и пакетные менеджеры

При работе с Linux программист должен быть хорошим читателем, мастером «copy-paste» и, только в небольшой степени, «Си-писателем». Основная прелесть Linux состоит в том, что для нее уже написано огромное число различных программ. Для установки, обновления и удаления программных пакетов в операционной системе Debian Linux (установленной в UCDK) используется пакетный менеджер Advanced packaging tool (apt). Он предназначен для автоматической установки, настройки и удаления программ из предварительно откомпилированных пакетов или из исходных кодов [4]. Пакеты берутся из так называемых репозиториев - хранилищ в Интернет, либо устанавливаются с внешних носителей.

Аpt (apt-get) значительно упрощает процесс установки программ. Например, для установки игры типа «тетрис» на UCDK следует ввести: apt-get update (обновление базы данных пакетного менеджера); apt-get install tint (установить приложение).

По умолчанию на UCDK записаны два программных пакета:

  • One Wire File System (OWFS). Используется для работы с цифровыми датчиками по протоколу 1-WireTM;
  • Apache2. Самая распространенная в мире платформа для WEB-серверов.

Перед тем, как приступать к написанию той или иной программы, проверьте, возможно, программный пакет с такими функциями давно существует и развивается. Используйте его, будь то агент сетевой системы управления SNMP, база данных или конвертер форматов.

 

Начните с модификации демонстрационных программ

В комплект поставки UCDK входит несколько демонстрационных программ:

  • Работа с последовательными портами;
  • Пример для работы с WatchDog;
  • Hello world! (куда же без него).

Начните эксперименты с их редактирования, компиляции и запуска. Описание UCDK содержит пошаговые инструкции по их компиляции и запуску.

 

Выйдите на рынок первыми

Мир электроники развивается все быстрее, и ключевым фактором выхода на рынок становится скорость создания продуктов. Именно поэтому мы предлагаем контроллер UCDK не только в виде платы, на которой Вы можете отладить свое решение, но и в виде законченного устройства в корпусе (см. таблица 3)

Таблица 3. Конструктивные исполнения контроллера UCDK  
 
Стальной, на DIN-рейку (216x42,5x150 мм) Стальной 1U «MiniRack» в 19’ стойку (440x44x245 мм) Пластиковый, настольн./настен. (216х44х152 мм) Алюминиевый, класс защиты IP67 (298х168х77 мм)

Кроме контроллеров UCDK «НПК Свитрон» предлагает внешние цифровые датчики температуры, влажности, освещенности, напряжения, адаптеры для подключения двухпроводных датчиков дыма и внешние реле. Все датчики поставляются в пластиковых корпусах и подключаются к UCDK по интерфейсу 1-WireTM.

Возможно, что у нас нет 100% требуемой Вам функциональности, однако для пилотного проекта ее может оказаться достаточно. Использовать готовое решение на старте - значительно дешевле и быстрее.

Ну а дальше - есть альтернативы. Если проект небольшой, то можно построить его на контроллерах в их текущем виде. Благодаря дополнительным разъемам на плате UCDK возможно расширение функциональности с использованием дочерних плат. Если же проект большой, требующий существенных изменений, то оправдана новая разработка аппаратной части.

 

Заключение

Надеемся, что эта статься приблизила Вас к началу использования Linux в ваших решениях. В следующих статьях мы планируем рассказать об открытых проектах, сделанных на нашей платформе, а также о коммерческих решениях, сделанных совместно с нашими партнерами.

 

Литература

1. http://www.linuxcenter.ru/lib/books/vmware/ 

2. Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman. Linux Device Drivers, Third Edition. O'Reilly Media, 2005. - 640 с.

3. http://en.wikipedia.org/wiki/JFFS2 

4. http://www.us.debian.org/doc/manuals/apt-howto/.

Получение технической информации, заказ образцов, поставка - e-mail: [email protected]