+7 (812) 670-9095
Обратная связьEnglish
Главная → О компании → Наши клиенты → BVG Group → Разработка BSP для платы системы технического зрения на базе микроконтроллера ARM фирмы Freescale для BVG Group
Версия для печати

Разработка BSP для платы системы технического зрения на базе микроконтроллера ARM фирмы Freescale для BVG Group

Заказчик: BVG Group

Сайт: http://www.bvg-group.ru

Отрасль: Электроника и аппаратное обеспечение


Заказчик получил библиотеку BSP, благодаря которой можно программировать функциональность разрабатываемого устройства на прикладном уровне, не заботясь о том, как именно происходит программирование аппаратуры. Разработанная библиотека отличается от типовых решений тем, что максимально реализует функции без привлечения процессорного ядра. Библиотека максимально привязана к CMSIS RTOS.



Ситуация

В операционных системах типа Windows или Linux периферийные устройства обслуживаются драйверами. Драйвер — это низкоуровневая программа, позволяющая прикладному программисту работать с устройством, не задумываясь о его физической сущности, обращаясь только к его высокоуровневой функциональности. В случае использования операционных систем реального времени типа RTOS или работы без операционной системы (например, для микроконтроллеров) библиотеку, выполняющую функции, аналогичные набору драйверов, принято называть BSP - Board Support Package.
Заказчик разрабатывал систему технического зрения на базе микроконтроллера ARM Cortex M0+ фирмы Freescale. Для того чтобы специалисты Заказчика реализовали только прикладной уровень проекта, потребовалось разработать BSP, поддерживающую основные функции периферийных устройств, размещённых как в самом микроконтроллере, так и на плате целевого устройства.

Решение

В сети Интернет можно найти типовые решения с библиотеками, обслуживающими периферийные блоки целевого микроконтроллера, а также поддерживающими строчные видеокамеры (в отличие от обычных камер, такая камера захватывает не растр X на Y точек, а одну строку на N точек). Данные библиотеки недостаточно оптимизированы по быстродействию, и подавляющее большинство таких библиотек работает только программным способом, расходуя при этом такты процессора. Этот факт мог неблагоприятно повлиять на производительность приложения Заказчика при относительно низкой тактовой частоте, так как много процессорного времени расходовалось бы в данном случае на работу с оборудованием, а не на алгоритмы прикладного уровня.

По этой причине было принято решение максимально использовать блоки прямого доступа к памяти (DMA), имеющиеся в контроллере. Были разработаны так называемые «модули поддержки» для:

  • GPIO
  • UART (с поддержкой DMA)
  • I2C
  • SPI
  • Широтно-импульсных модуляторов (ШИМ, в английской терминологии - PWM)
  • Таймеров в режиме частотомеров (измерителей длительности импульса)
  • Ждущих таймеров
  • Аналогово-цифровых преобразователей (АЦП)


Кроме того, была создана библиотека для обслуживания MEMS акселерометра фирмы Freescale, который, в свою очередь, может работать в различных режимах: определение углов наклона платы, определение ускорений платы, выдача значений со стабильной частотой опроса, работа с процессорным ядром по прерываниям и так далее.

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

В рамках разработки библиотеки было решено использовать особенность реализации прямого доступа к памяти (DMA) фирмы Freescale. В этом микроконтроллере блоки DMA можно объединять в цепочки. Один блок может запустить работу следующего блока по широкому диапазону условий. Таким образом, для работы с камерой была построена следующая цепочка:

цепочка блоков в микроконтроллере | АстроСофт

Благодаря этому работа процессорного ядра стала необходима только в самом начале приёма строки (блок «Запустить оцифровку» на схеме). Вся дальнейшая работа происходит автоматически силами блоков DMA без привлечения процессорного ядра. Когда вся строка оцифрована, автоматически сработает прерывание, и с этого момента прикладная программа может пользоваться образом изображения, размещённым в памяти.

При этом все библиотеки максимально интегрированы с функциональностью CMSIS RTOS.

Результат

Заказчик получил библиотеку BSP, благодаря которой можно программировать функциональность разрабатываемого устройства на прикладном уровне, не заботясь о том, как именно происходит программирование аппаратуры. Разработанная библиотека отличается от типовых решений тем, что максимально реализует функции без привлечения процессорного ядра. Библиотека максимально привязана к CMSIS RTOS.

Используемые технологии

Разработка велась на языке С в среде Keil uVision 5. Сделано обслуживание для: GPIO, UART (с поддержкой DMA), I2C, SPI (с поддержкой DMA), ШИМ (PWM), частотомеров (измерителей длительности импульса), АЦП (ADC), MEMS акселерометров фирмы Freescale, строчной камеры (Linescan Camera).


Скачать



Константин Цивин, Вице-президент по маркетингу
Заказать звонок Задать вопрос