Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Программирование STM3220G под eCos

Anna | 24.06.2014 | нет комментариев

Есть у нас один план, идея которого — создание фреймворка для стремительного программирования умственных шлюзов и хабов. Это когда один, в всеобщем-то недорогой контроллер обслуживает группу датчиков по определённому алгорифму и при этом имеет связь с сервером. Такой себе вариант реализацииinternet of things.

Внятное дело фреймворк кросс-платформенный и должен покрывать максимально допустимое число аппаратных и программных платформ. Так вот, одним из заданий плана является порт фреймворка для eCos, а в качестве аппаратной платформы для этого был выбран Cortex-M3 (STM32F2), в реализации платы STM3220G Eval. Навыком освоения такого вот тандема и хочется поделиться.


Выбор операционной системы и аппаратной платформы был сделан до моего прихода на план, т.е. дозволено считать это данностью.

Изучив требования к фреймворку был однозначно сделан выбор языка — C . Есть много споров о использовании C в embedded, но об этом отменнее писать отдельную статью. В качестве стержневой системы разработки применяется Debian GNU/Linux AMD64, для которой безусловно же существует обособленный порт фреймворка.

1. eCos

eCos (я её называю eXotic OS) — конфигурируемая операционная система реального времени для встраиваемых приложений. Она довольно давным-давно разрабатывается, но не дюже распространена (как-то видел один график со статистикой её применения — что-то около 3-5% опрошенных пользователей её применяют). Есть и торговый вариант — eCosCentric, но с ним трудиться пока не приходилось. Разработчики последнего, кстати, передали порт для STM3220G Eval платы. Об этом много написано в интернет.

2. Конфигурация eCos для STM3220G

На сайте eCos дозволено обнаружить ссылки на бинарные версии утилит и toolchain. Порт для STM3220G пока находится в CVS репозитории. Бинарные версии и toolchain загружаются при помощи скрипта ecos-install.tcl. В случае STM32F2 нужен порт GCC для arm-eabi.

Спецификой eCos является то, что в ней дословно всё отключается. Причём делается это define-ами и екзотической, писанной разработчиками eCos, системой конфигурации, которая представлена двумя утилитами: configtool и ecosconfig. Первая имеет графический интерфейс GTK , вторая — консольная. В нашем случае используется configtool.

Начинать конфигурацию необходимо с указания в configtool каталога, в тот, что сохранены файлы, полученные из репозитория CVS (меню Build/Repository). Позже этого в образцах конфигурации (меню Build/Templates) появится вариант Hardware ST STM 3220G EVAL board.

Дальше есть специфика: нужно указать базовый комплект пакетов, тот, что будет включён в сборку операционной системы. Сразу скажу, что не все варианты удастся собрать так, Дабы получился образ, готовый для прошивки во флеш-память контроллера. Нашему фреймворку нужны потоки и планировщик, а потому выбираем вариант Kernel. 1-й вариант готов — дозволено собирать систему (меню Build/Library). На самом деле каждая система представляет собой комплект заголовочных файлов, статическую библиотеку и инструкции компоновщику (linker). Всё это собирается в обособленный каталог утилитой configtool.

От того что фреймворк кросс-платформенный, то в сборку eCos нужно добавить пакеты C library, все пакеты относящиеся к ISO C Library и POSIX Compartibility. Это несколько увеличит базовый образ системы, но но дозволит писать на привычном языке C/C , а не придумывать колесо (т.е. стандартную библиотеку C) снова.

В eCos выполнение программы начинается не с функции main как в ISO C, а с функций cyg_start (), что совсем неблагополучно влияет на переносимость кода. Для исправления этого нужен добавить пакет ISO environment startup/termination.

Конечный штрих. Для сборки образа, тот, что дозволено записать в ROM контроллера, нужно указать Startup type == ROM (Configuation/eCos HAL/Cortex-M Architecture/Cortex-M3/-M4 STM32 Variant/ST STM32x0G-EVAL …/Startup type). Это дозволит собрать верный файл с инструкциями компоновщику.

Исполняем ещё раз Build/Library, Build/Tests и всё, дозволено приступать к программированию.

3. Программирование под eCos

Как говорилось ранее, стержневой язык разработки фреймворка — C . При этом используется множество конструкций языка, включая инкапсуляцию, наследование, полиморфизм (с использованием виртуальных способов), образцы и даже динамическая информация о типах. Лишь три вещи сразу были исключены из использования: исключения (exceptions), динамическое выделение памяти и применение STL (правда в комплекте eCos имеется аналог библиотеки).

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB