Здесь приведен перевод документа "Beyond the IDE - Introducing a platform to facilitate reliable and highly productive embedded developments" (Введение в инструментальные средства, предназначенные для упрощения разработки надежных и высокопроизводительных встраиваемых систем) [1].
[Общие замечания]
Программное обеспечение электронного оборудования играет все более и более доминирующую роль в успехе конечного продукта, по мере того как увеличиваются вычислительные возможности встраиваемых систем. Разработчики, работающие со специализированным, или основанным на WEB программным обеспечением, извлекают выгоду из использования интегрированных инструментов, работая со сложными проектами на базе микроконтроллеров.
Поскольку производители микроконтроллеров (MCU) интегрируют все больше встроенных функций (аппаратных возможностей) в свои платформы, то разработчики встраиваемых (embedded) систем для достижения высокой производительности должны увеличить повторное использование готового кода (библиотек). Маркетинг (рыночные условия для реализации продукции) продолжает требовать высокую скорость отклика от инженеров и программистов, поскольку гибкость операций в разработке напрямую связана с успехом организации. Переход на новый MCU может повлечь за собой загрузку архивов нового кода поддержки, сопутствующей документации и последующее изучение нового API. Код, который выполнял бы старые идентичные функции, все еще будет нуждаться в переработке, потому что как минимум произойдут изменения в интерфейсе программирования приложения (application programming interface, API) между отдельными версиями MCU. Однако это проблематично в условиях необходимости быстрого масштабирования и настройки на лету, чтобы быстро реагировать на изменения спроса.
В сегодняшних сложных и многофункциональных разработках встроенных систем использование удобных сред программирования (MCU software framework), методов интегрирования дополнительных программных библиотек и инструментов становятся все более важными для команд разработчиков.
[Что такое Software Framework]
Software Framework означает "программная среда разработки". Фреймворки сейчас очень популярны, и они помогают программистам снова и снова использовать готовые общие алгоритмы и функции для различных проектов. Однако только совсем недавно разработчики поняли истинные преимущества фреймворков, и это однозначно определило методы текущих разработок. Например, новые IDE (расшифровывается как Integrated Development Environment, интегрированная среда разработки) наподобие Atmel Studio 6 не только предоставляют поддержку синтаксиса базового языка (например, подсветку операторов, автодополнение имен, форматирование кода), но также имеют улучшенные контекстные подсказки по параметрам и функциям (например, добавление переменных для просмотра в окно Watch, переход к определению Goto definition просмотр регистров и т. п.).
Рис. 1. Редактор кода в Atmel Studio 6, функционирующий с учетом контекста операции.
Пример такого подхода - пакет Atmel Software Framework (ASF) [2]. При использовании совместно с Atmel Studio 6 IDE (хотя код ASF можно использовать и отдельно), ASF упрощает нисходящее проектирование встраиваемых систем (т. е. доступ к аппаратным ресурсам платформы MCU), что усиливает и накапливает интеллектуальную собственность, знания и опыт организации, и при этом позволяет избежать постоянного переписывания важных частей кода, когда происходит переход (портирование) проекта на другой вариант MCU или архитектуру.
Рис. 2. Пример software framework - архитектура разработки при использовании ASF.
ASF был спроектирован с нуля таким образом, чтобы обеспечить чистый интерфейс между кодом приложения пользователя и программными стеками, которые позволяют работать приложению на множестве целевых встраиваемых MCU. ASF предоставляет все необходимое в разработке для взаимодействия между приложением и аппаратурой.
Функции и примеры кода были все оптимизированы по размеру кода для каждой целевой архитектуры, и предназначены для работы с компиляторами уровня ANSI-C. Код ASF также был оптимизирован экспертами под архитектуру процессоров Atmel, гарантируя не только высокую эффективность, но и низкое энергопотребление. Функции ASF в полной мере задействуют возможности Atmel MCU, такие как режимы пониженного энергопотребления (low-power modes) и систему реагирования на события от периферийных аппаратных устройств (Peripheral Event System).
Специфичные для чипа функции в стеках протоколов реализованы так, чтобы максимально поддержать портируемость кода на уровне приложения. Но функции, которые реализованы для общего API, абстрагирующего код от особенностей конкретного MCU, позволяют разработчикам разрабатывать свой код на одном MCU Atmel, и затем легко перенести его на другой MCU Atmel практически без изменений.
Например, API использует интуитивно-понятный формат использования вызовов функций для устройств (device), которые следуют полному соглашению именования: < device >_init(); < device >_enable(); < device >_disable(); < device >_start(); < device >_stop(); < device >_read(); < device >_write().
Модули кода ASF организованы в послойную архитектуру, которая позволяет вызвать функции максимально удобным способом, подходящим для задачи. Эта архитектура также упрощает добавление и поддержку в конечном продукте сложных протоколов, таких как USB. Имеется 4 типа слоев: component, service, peripheral и board [2].
Модули слоев component и service вызываются напрямую из кода приложения, если не требуется прямой доступ к периферийному устройству на низком уровне (обычно низкоуровневый доступ к аппаратуре предоставляется слоями peripheral и board). Слой service предоставляет пользователю программные стеки, ориентированные на работу с приложением, такие как драйверы классов USB-устройств, файловые системы (FAT), функции цифровой обработки сигналов с привязкой к архитектуре и графические библиотеки. Этот слой также использует отдельные особенности аппаратуры MCU. Слой component содержит высокоуровневые драйверы, которые предоставляют интуитивно-понятное и прямое управление устройствами периферии, находящимися в MCU и на отладочной плате, такими как дисплей, датчики, беспроводные интерфейсы. Код слоя component написан с учетом предоставления функционала, в котором нуждается пользователь при доступе к различным встроенным в чип устройствам. Если приложение вызывает периферийное устройство неким способом, который не поддерживается напрямую слоем component, то для пользователя можно довольно просто изменить существующий исходный код, или добавить в API дополнительные функции.
Модули component и service связываются с низкоуровневыми драйверами слоя peripheral, что обеспечивает управление аппаратурой MCU (и аппаратурой оценочной платы) через его регистры. Приложения также могут вызывать эти драйверы напрямую, чтобы реализовать тесную интеграцию с аппаратурой. При этом сохраняется максимальная портируемость кода между отдельными представителями семейств Atmel MCU.
И наконец, модуль board предоставляет вид на аппаратуру оценочной платы со стороны MCU. Код board абстрагирует доступ для модулей над board от физической разводки ресурсов, и функции инициализации берут на себя задачу настройки ввода/вывода и внешних устройств. Код board также идентифицирует, какие функции платы доступны для модулей выше (для программных стеков, кода приложения).
Макроопределения в слое board предоставляют удобный доступ к цифровым (GPIO) и аналоговым (ADC) периферийным устройствам для каждого вывода MCU. В приложениях, таких как audio-интерфейс для PC, это может быть вызов для выделения порта USB, каналов ADC и DAC, порта SPI и некоторых GPIO, которые на печатной плате подключены к кнопкам и светодиодам.
Например светодиод, показывающий состояние MCU (активен он или в состоянии сна) может быть подключен к порту микроконтроллера с именем GPIO4. Вместо того, чтобы помнить это имя, разработчик может назначить более понятное логическое имя наподобие ACTIVITY_LED для битовой маски, которая используется для доступа к отдельным битам в реальном регистре порта I/O, который управляет этим светодиодом. Когда такое макроопределение задано, то оно может использоваться как константа для управления состоянием индикационного светодиода.
Чтобы гарантировать непротиворечивость использования API модуля, код ASF использует стандартную технику для инициализации и других задач управления. Это помогает уменьшить затраты времени на обучение новым функциям, потому что программист встречает знакомые и привычные имена для вызовов API. Например, запуск и остановка модуля обычно выполняются API-вызовами наподобие module_start(…) и module_stop(…). Когда программист работает с модулем аналого-цифрового преобразователя (A/D converter, ADC), то он может ожидать использования функций adc_start(…) и adc_stop(…).
Соглашение именования для вызовов функций и передачи им параметров сохраняется одинаковым по широкому диапазону Atmel MCU, включая модели Atmel AVR UC3, megaAVR®, AVR XMEGA® и SAM Cortex™-M. Библиотеки ASF предоставляют IDE и структурированный код C и для приложений, что облегчает портирование программ между архитектурами от 8-битных до 32-битных, даже при использовании различных компиляторов C.
Например, различия между компиляторами и между способами, как они интерпретируют информацию в исходном коде, скрыты в привязанных к архитектуре заголовочных файлах. Такая структура позволяет ASF поддерживать компиляторы GCC и IAR как для 8-битных AVR, так и для 32-битных ARM® MCU. Подобным образом различия между периферийными устройствами в различных MCU Atmel скрыты в заголовочных файлах и модулях кода C по правилам, используемым в архитектуре ASF - с целью достижения максимальной целостности и портируемости. В составлении ASF разработчики применили ряд правил и техник, гарантирующих общую неизменность кода приложения при смене целевого MCU (см. рис. 3).
Рис. 3. Код приложения остается идентичным для разных семейств микроконтроллеров Atmel: XMEGA, UC3, SAM3, SAM4.
Такая общность базовых библиотек гарантирует простоту в масштабировании, когда меняется рыночный спрос на продукцию. Это также упрощает процедуру разработки при переходе от опытных образцов к производству. Очень часто разработчики выберут наиболее гибкое, высокопроизводительное устройство для отладки, макетирования и анализа прототипа, так что они могут быть уверены в наличии достаточного количества ресурсов для кода приложения и потенциальных изменений при доработке проекта. Как только проект близок к завершению, и требования к нему хорошо уточнены, то можно выбрать более дешевый тип микроконтроллера, который максимально подходит конечному устройству по производительности и ресурсам, даже если он имеет другую архитектуру.
[Размещение библиотек кода и инструментов]
Любое достаточно сложное встраиваемое приложение очень редко будет написано полностью с нуля. Чтобы ускорить разработку, в проект добавляют внешние библиотеки кода, расширения для инструментария, подпрограммы конфигурирования, и специальное промежуточное программное обеспечение. Интернет предоставляет свободный доступ к такого рода ресурсам, но с точки зрения разработки этим очень сложно управлять, так как все эти ресурсы находятся вне среды IDE.
Подобно тому, как хранилища ПО типа App Store стали популярным методом распространения медиа-контента и приложений для наладонников и смартфонов, эта концепция хорошо подходит и для дополнения IDE. Например, Atmel Gallery предоставляет модерируемую функцию App Store для расширений Atmel Studio 6.0. Этот метод позволяет интегрировать на разных условиях лицензирования (бесплатно, на оценочной основе или за деньги) различное содержимое в среду разработки на микроконтроллерах. Разработчики могут быть уверены, что расширения и библиотеки прошли проверку и получены от сертифицированных партнеров Atmel. Содержимое Atmel Gallery сгруппировано по категориям. Примеры категорий Toolchain (инструментарий), Code Editing and Management (редактирование кода и управление), Analysis/Visualization tools (инструментарий для анализа и визуализации), Application Tools (инструментарий приложения) и RTOS/Middleware (операционная система реального времени / промежуточные стеки программного обеспечения).
Рис. 4. Платформа IDE Atmel Studio.
Одна из операционных систем реального времени (RTOS), доступная в Atmel Gallery - FreeRTOS [3]. Когда разработчики выбирают FreeRTOs в Atmel Gallery, они могут быть уверены в наличии нужных драйверов и библиотек для интегрирования свое приложение. Поскольку все это интегрировано в ASF, к нему прилагается мастер конфигурирования проекта, чтобы упростить процесс разработки приложения.
[Комплексный подход к разработке]
По-настоящему интегрированная платформа для разработки состоит из комбинации программного обеспечения и аппаратуры, включая среду разработки и хранилище кода библиотек и приложений. Компания Atmel выпускает наборы для разработчиков и оценочные платы наподобие Xplained Pro и других, которые напрямую работают с Atmel IDE, рабочим окружением ASF и Atmel Gallery. Новые наборы разработчика основаны на профессионально выполненных платах с микроконтроллерами ARM-Cortex-M4 Atmel SAM4, дополненными дисплеями и интерфейсами обмена данными. Все эти платы разработчика полностью поддерживаются Atmel Studio 6, библиотеками ASF и Atmel Gallery, и предоставляют разработчикам немедленный доступ к более чем 2000 готовых к работе примеров проектов. При использовании платформы разработки и инструментария от Atmel инженеры и программисты могут моделировать, тестировать и поставлять свою продукцию на рынок максимально просто и быстро.
[Ссылки]
1. Beyond the IDE - Introducing a platform to facilitate reliable and highly productive embedded developments site:atmel.com. Author: Joerg Bertholdt, Director of Marketing, MCU Tools and Software, Atmel Corporation. 2. Что такое ASF Atmel? 3. FreeRTOS: практическое применение, часть 1 (управление задачами). 4. AVR Studio против IAR Embedded Workbench - что выбрать? |
Комментарии
microsin: Вы меня даже заинтриговали (по поводу X-studio). А вообще... я не согласен. Тормозит? Да, тормозит. Глючит? Иногда бывает. Старые программаторы перестают работать? Да, перестают, приходится плясать с бубном и искать новые прошивки для самодельных программаторов. Все криво и косо, много лишнего? Да, есть такое. Конечно, IAR намного лучше, кто спорит. Но зато Atmel Studio бесплатна!
RSS лента комментариев этой записи