воскресенье, 2 февраля 2014 г.

STM32 & ChibiOS/RT - Starting

Операционные системы бывают разные, но есть те в задачу которых входит чёткое управление и организацию рабочего пространства для встраиваемых систем. Такие ОС в большинстве своём относятся к классу ОС реального времени. Я уже рассматривал на своём сайте одну из таких ОС FreeRTOS, однако только ею набор свободных ОС РВ не ограничивается. Т.к. у меня появилась работа для которой заказчик хотел ChibiOS/RT, то я решил попробовать, что это за зверь.
Введение
Как уже понятно из ссылки на википедию, или из описания на официальном сайте, ОС содержит весь необходимый функционал для большинства задач, таких как работа с портами ввода-вывода, ацп, цап, последовательные синхронные и асинхронные порты и другое.

Для той периферии которой нету в стандартной поставке ОС, есть возможность быстрого написания драйверов. Т.к. это ОС, то присутствуют все свойственные данному типу ПО функционал - потоки, блокировки, таймеры, очереди и прочее.

Также следует отметить что есть возможность быстрой интеграции стороннего ПО - FatFS, uIP, lwIP, uGFX.

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

Получение
Последнюю версию ОС можно скачать перейдя по следующей ссылке - http://sourceforge.net/projects/chibios/. Текущая версия 2.6.2 (однако на момент прочтения статьи она может быть и другой). Если данная ссылка недоступна, то советую изучить на официальном сайте раздел загрузки.
Распаковав архив в рабочую директорию, вы получаете ОС готовую к работе.

Сборка
Зачастую окружение для вашей платы уже написано, однако если это не так, то я в дальнейшем расскажу как это сделать. Мы же воспользуемся одной из готовых прошивок из каталога /demos/ в директории ОС. Для начала определимся с целевой платой. Поскольку, единственная целиком живая плата у меня была STM32F3Discovery и к тому же, она имеет целых восемь светодиодов индикации,


я решил использовать её для демонстрации работы ОС. Тестовая прошивка была выбрана - 
/ARMCM4-STM32F303-DISCOVERY/, которая располагается в каталоге /demos/. Сборка прошивки достаточно проста:

nis@jane ~/ChibiOS_2.6.2/demos/ARMCM4-STM32F303-DISCOVERY $ make
Compiler Options
...
Linking build/ch.elf
Creating build/ch.hex
Creating build/ch.bin
Creating build/ch.dmp
Done

После этого демонстрационная программа готова к загрузке в плату.

Загрузка в МК
Так как, в качестве основной платы была выбрана STM32F3Discovery, содержащая в качестве основного МК STM32F303, то необходимо обновить утилиту прошивки QSTLink2, для поддержки данного МК (в случае если при подключении платы он вам выдаст сообщение, что не опознан тип МК).
Если же всё прошло успешно, то вы загружаете файл прошивки из поддиректории /build/ - ch.bin.

Выполнение
После загрузки у нас помимо мигания светодиодов по кругу ещё присутствует поток тестирования который вызывается при нажатии кнопки пользователя (синей) на плате. Просмотреть работу тестового потока вы можете подключившись к плате разъёмами преобразователя USB(Serial)<--> UART(3.3). Для данной прошивки это выводы - PA9,10 и настроив соответствующую скорость исходя из конфигурационного файла  /halconf.h в проекте, строка #define SERIAL_DEFAULT_BITRATE. Также для удобства, вы можете перед сборкой изменить числовое значение в этой строке что я и сделал выставив 115200 (т.к. мне было лениво перестраивать putty).

Эпилог
Также выкладываю обычное для подобных статей видео с демонстрирацией работы прошивки:


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

На этом всё.