Выпуск #6/2004
А.Тархов.
Система разработки встраиваемого программного обеспечения TASKING. Быстро, надежно, качественно
Система разработки встраиваемого программного обеспечения TASKING. Быстро, надежно, качественно
Просмотры: 2233
Система Tasking – полнофункциональное средство проектирования встраиваемого программного обеспечения для микроконтроллеров и микропроцессоров различных архитектур. Разработчик системы – компания Altium, известная нашим специалистам прежде всего по таким пакетам, как P-CAD, Protel, Nexar и другим. Система Tasking пока не слишком знакома российским разработчикам, хотя на Западе она весьма популярна. Косвенное подтверждение признания пользователей – более 200 тыс. проданных лицензий. Вот почему представляется полезным описать ее свойства и возможности.
Компания Altium разработала среду, содержащую всё, что может понадобиться при создании, редактировании, компилировании и отладке встроенного приложения. Кроме многофункциональности, присущей продуктам, которые комплексно решают проблемы своих пользователей, популярность Tasking объясняется уникальными достоинствами, отличающим это программное средство от подобных систем. К главным из них относятся:
· реальная поддержка арифметики с плавающей точкой;
· мощные встроенные средства оптимизации кода;
· поддержка широкого спектра цифровых сигнальных процессоров (DSP) и 8-, 16- и 32-разрядных микроконтроллеров;
· поддержка 32-бит RISC-микроконтроллера TC1130 компании Infineon Technologies.
При компилировании проекта достигается беспрецедентная эффективность кода. Благодаря мощному алгоритму оптимизации с высоким уровнем контроля генерируемого кода система Tasking позволяет достичь требуемых уровней надежности и эффективности. Отличительная особенность компилятора – строгое соблюдение принципов MISRA C, что помогает обойтись без С-конструкций, подверженных появлению ошибок. В результате разработчик всегда уверен в правильности конечного кода.
Отладчик CrossView Pro сочетает дружественный интерфейс с мощными средствами настройки процесса отладки, благодаря чему сокращается время, затрачиваемое на выполнение этой операции. Все настройки доступны в окне отладчика, что исключает из процесса использование дополнительных командных строк и полей текстового ввода. Рассмотрим некоторые возможности системы Tasking подробнее.
ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ
Первое, что привлекает внимание в этом интерфейсе, – отсутствие излишней нагроможденности окон, требуемых при отладке. Дело в том, что в графическом интерфейсе пользователя (GUI) таких окон нет. Лишь при запуске отладчика CrossView Pro в случае необходимости простым кликом на соответствующей иконке можно перейти в интерфейс отладки. А до тех пор эти "лишние" окна не будут мешать.
Во-вторых, хорошо развитая и продуманная структура формирования проектов позволяет создавать их в наглядном, легко "читаемом" виде. Сначала создаётся одно общее пространство проекта (Project Space), которое может содержать несколько проектов. Это очень полезно при выполнении сложных разработок, которые можно разбить на несколько более мелких, или при выполнении общего проекта несколькими разработчиками. Каждый проект содержит пять папок: "Source files", "Header files", "Project files", "Resources" и "Other files", в которые автоматически распределяются созданные разработчиком файлы.
В-третьих, графический интерфейс пользователя – полностью настраиваемый. Возможно формирование требуемого меню, добавление в него необходимых опций и создание панели инструментов с необходимыми лично проектировщику иконками. Вся среда разработки легко и просто настраивается в соответствии с текущими требованиями. Именно с текущими, поскольку настройка интерфейса не изменяется перманентно, а полученные панели сохраняются в памяти, подключаясь и отключаясь при необходимости. При этом задаются специфические для них характеристики, определяющие условие отображения панели, нахождение над другими панелями и др.
Применение автоматической опции CodeSense исключает некорректное использование какой бы то ни было переменной или функции. При наведении на неё курсора на экране отражается заданный для этой переменной тип (для функции – тип выходного значения с перечислением всех используемых этой функцией параметров).
Следует особо отметить, что здесь упомянута лишь малая часть возможностей графического интерфейса пользователя. Ведь кроме описанного выше, среда предоставляет широкие возможности – от переназначения, к примеру, символов закомментаривания до очень удивившей автора опции проверки орфографии (Spell Check), имеющей также широчайшие возможности настройки.
ТЕХНОЛОГИЯ УСОВЕРШЕНСТВОВАННОГО КОМПИЛИРОВАНИЯ
Секрет качественного компилирования заключается в возможности эффективно использовать память программ в зависимости от микроконтроллера. Применяемая в системе Tasking собственная технология компилирования включает в себя самые современные алгоритмы для достижения оптимального сочетания размеров кода и скорости выполнения процесса. Усовершенствованный Tasking-компилятор использует около 50 технологий оптимизации для уменьшения размера кода и/или времени выполнения. Вот некоторые из них:
· определение и удаление повторяющихся выражений и подвыражений;
· планируемая конвейерность инструкций;
· устранение неиспользуемых назначений;
· специальное обрабатывание "чистых" функций (не использующих другие функции);
· сокращение времени доступа к памяти путем оптимизации переменных;
· сокращение времени выполнения циклов методом их "разворачивания";
· локальная оптимизация инструкций.
Важно то, что для каждого из огромного числа поддерживаемых микроконтроллеров сохраняется возможность применения его собственных языковых расширений, моделей памяти, встроенных функций и многих других возможностей. В процессе компилирования допускается изменение настройки компилятора, то есть, например, одну часть приложения можно скомпилировать с максимизацией скорости выполнения, а другую – с минимизацией занимаемого места.
К ключевым особенностям Tasking-компилятора относятся следующие:
· соответствие ISO/IEC C9899:1990 и ISO/IEC C++ 14882-1988;
· дополнительная проверка компилирования встроенного С++ (ЕС++);
· полные стандартные ISO-библиотеки С/С++ в исходном и объектном формате;
· специальная поддержка архитектур семейств устройств;
· конфигурируемый метод оптимизации;
· проверка соответствия кода MISRA C;
· мощная поддержка ассемблера.
Некоторое удивление может вызвать второй пункт. Но система Tasking действительно одна из первых предложила использовать С++ в среде разработки встроенных приложений, разумеется, с некоторыми ограничениями. Например, применение шаблонов может привести к генерации огромного, или "медленного", кода. Используемый встроенный C++ (EC++) стандарт является как бы подразделом C++, включающим в себя все необходимые характеристики и сохраняющим все основные достоинства C++, отбрасывая ненужные опции и возможности.
Очень важный шаг предпринят в отношении языка С, являющегося де-факто самым используемым языком для высокоуровневого программирования. Консорциум Ассоциации по Надежности Технического Индустриального Программного Обеспечения (MISRA) разработал руководящие принципы для использования языка C, повышающие его надежность (содержат 127 правил по программированию). Система Tasking – единственная коммерческая среда разработки, удовлетворяющая всем правилам MISRA.
ОТЛАДЧИК CROSSVIEW PRO
Отладчик CrossView Pro системы Tasking уменьшает время, требуемое для тестирования и отладки встроенных приложений. Он сочетает дружелюбный и простой интерфейс с огромными возможностями. Как и в графическом интерфейсе пользователя, можно использовать настройку окон. Многие из установленных по умолчанию окон также могут быть полезными. Например, отлаживаемую программу можно наблюдать не только на языке С, но и в виде ассемблера. Одно из проявлений дополнительных, удобных для разработчика, опций – высвечивание значения переменной/функции при наведении на нее курсора (рис 1).
Окно регистровой памяти отображает содержание регистров с возможностью его редактирования. Это окно также имеет огромное число настроек. Например, можно сгруппировать регистры в подгруппы для использования в качестве либо регистров общего назначения, либо регистров с плавающей точкой, либо как регистров порта UART и отображать требуемую в данный момент информацию.
Интересные настройки имеет и окно содержимого стека. Можно, например, устанавливать точки останова на требуемом уровне стека. Кстати, число точек останова не ограничено.
Сам отладчик содержит четыре встроенных анализатора оптимизации. Первый анализатор предоставляет детальную информацию о времени, используемом данной функцией или набором функций. Второй – индицирует информацию об обращениях к памяти. Третий – характеристики циклов. Четвертый анализатор представляет диаграмму входных сигналов, используя графики X-t, X-Y, FFT и диаграмму "глаза" (рис 2).
Возможна запись последовательности команд с клавиатуры, мыши или команд меню при помощи простой встроенной настройки. Никакого знания каких бы то ни было скриптов не потребуется. Да, это похоже на макросы. Но здесь макросы, кстати, тоже имеющиеся, содержат гораздо более тонкие настройки.
Симулирование ввода/вывода позволит использовать такие функции, как fopen или fprint, для обмена данными с системами I/O-обслуживания. Файлы читаются непосредственно из системы, а выходная информация может быть напрямую записана в файл или высвечена в окне CrossView Pro Terminal.
Тесное сотрудничество с другими производителями позволило использовать отладчик Tasking CrossView Pro совместно с очень многими внутрисхемными эмуляторами.
Система Tasking – это очень тщательно продуманная, качественно и дружелюбно оформленная среда разработки, имеющая, во-первых, гибкие настройки как инструментария, так и интерфейса, а во-вторых, мощное функциональное наполнение, позволяющее быстро и качественно разрабатывать встраиваемое приложение, которое по своим характеристикам (объем кода, скорость выполнения) будет давать превосходные результаты проектирования.
· реальная поддержка арифметики с плавающей точкой;
· мощные встроенные средства оптимизации кода;
· поддержка широкого спектра цифровых сигнальных процессоров (DSP) и 8-, 16- и 32-разрядных микроконтроллеров;
· поддержка 32-бит RISC-микроконтроллера TC1130 компании Infineon Technologies.
При компилировании проекта достигается беспрецедентная эффективность кода. Благодаря мощному алгоритму оптимизации с высоким уровнем контроля генерируемого кода система Tasking позволяет достичь требуемых уровней надежности и эффективности. Отличительная особенность компилятора – строгое соблюдение принципов MISRA C, что помогает обойтись без С-конструкций, подверженных появлению ошибок. В результате разработчик всегда уверен в правильности конечного кода.
Отладчик CrossView Pro сочетает дружественный интерфейс с мощными средствами настройки процесса отладки, благодаря чему сокращается время, затрачиваемое на выполнение этой операции. Все настройки доступны в окне отладчика, что исключает из процесса использование дополнительных командных строк и полей текстового ввода. Рассмотрим некоторые возможности системы Tasking подробнее.
ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ
Первое, что привлекает внимание в этом интерфейсе, – отсутствие излишней нагроможденности окон, требуемых при отладке. Дело в том, что в графическом интерфейсе пользователя (GUI) таких окон нет. Лишь при запуске отладчика CrossView Pro в случае необходимости простым кликом на соответствующей иконке можно перейти в интерфейс отладки. А до тех пор эти "лишние" окна не будут мешать.
Во-вторых, хорошо развитая и продуманная структура формирования проектов позволяет создавать их в наглядном, легко "читаемом" виде. Сначала создаётся одно общее пространство проекта (Project Space), которое может содержать несколько проектов. Это очень полезно при выполнении сложных разработок, которые можно разбить на несколько более мелких, или при выполнении общего проекта несколькими разработчиками. Каждый проект содержит пять папок: "Source files", "Header files", "Project files", "Resources" и "Other files", в которые автоматически распределяются созданные разработчиком файлы.
В-третьих, графический интерфейс пользователя – полностью настраиваемый. Возможно формирование требуемого меню, добавление в него необходимых опций и создание панели инструментов с необходимыми лично проектировщику иконками. Вся среда разработки легко и просто настраивается в соответствии с текущими требованиями. Именно с текущими, поскольку настройка интерфейса не изменяется перманентно, а полученные панели сохраняются в памяти, подключаясь и отключаясь при необходимости. При этом задаются специфические для них характеристики, определяющие условие отображения панели, нахождение над другими панелями и др.
Применение автоматической опции CodeSense исключает некорректное использование какой бы то ни было переменной или функции. При наведении на неё курсора на экране отражается заданный для этой переменной тип (для функции – тип выходного значения с перечислением всех используемых этой функцией параметров).
Следует особо отметить, что здесь упомянута лишь малая часть возможностей графического интерфейса пользователя. Ведь кроме описанного выше, среда предоставляет широкие возможности – от переназначения, к примеру, символов закомментаривания до очень удивившей автора опции проверки орфографии (Spell Check), имеющей также широчайшие возможности настройки.
ТЕХНОЛОГИЯ УСОВЕРШЕНСТВОВАННОГО КОМПИЛИРОВАНИЯ
Секрет качественного компилирования заключается в возможности эффективно использовать память программ в зависимости от микроконтроллера. Применяемая в системе Tasking собственная технология компилирования включает в себя самые современные алгоритмы для достижения оптимального сочетания размеров кода и скорости выполнения процесса. Усовершенствованный Tasking-компилятор использует около 50 технологий оптимизации для уменьшения размера кода и/или времени выполнения. Вот некоторые из них:
· определение и удаление повторяющихся выражений и подвыражений;
· планируемая конвейерность инструкций;
· устранение неиспользуемых назначений;
· специальное обрабатывание "чистых" функций (не использующих другие функции);
· сокращение времени доступа к памяти путем оптимизации переменных;
· сокращение времени выполнения циклов методом их "разворачивания";
· локальная оптимизация инструкций.
Важно то, что для каждого из огромного числа поддерживаемых микроконтроллеров сохраняется возможность применения его собственных языковых расширений, моделей памяти, встроенных функций и многих других возможностей. В процессе компилирования допускается изменение настройки компилятора, то есть, например, одну часть приложения можно скомпилировать с максимизацией скорости выполнения, а другую – с минимизацией занимаемого места.
К ключевым особенностям Tasking-компилятора относятся следующие:
· соответствие ISO/IEC C9899:1990 и ISO/IEC C++ 14882-1988;
· дополнительная проверка компилирования встроенного С++ (ЕС++);
· полные стандартные ISO-библиотеки С/С++ в исходном и объектном формате;
· специальная поддержка архитектур семейств устройств;
· конфигурируемый метод оптимизации;
· проверка соответствия кода MISRA C;
· мощная поддержка ассемблера.
Некоторое удивление может вызвать второй пункт. Но система Tasking действительно одна из первых предложила использовать С++ в среде разработки встроенных приложений, разумеется, с некоторыми ограничениями. Например, применение шаблонов может привести к генерации огромного, или "медленного", кода. Используемый встроенный C++ (EC++) стандарт является как бы подразделом C++, включающим в себя все необходимые характеристики и сохраняющим все основные достоинства C++, отбрасывая ненужные опции и возможности.
Очень важный шаг предпринят в отношении языка С, являющегося де-факто самым используемым языком для высокоуровневого программирования. Консорциум Ассоциации по Надежности Технического Индустриального Программного Обеспечения (MISRA) разработал руководящие принципы для использования языка C, повышающие его надежность (содержат 127 правил по программированию). Система Tasking – единственная коммерческая среда разработки, удовлетворяющая всем правилам MISRA.
ОТЛАДЧИК CROSSVIEW PRO
Отладчик CrossView Pro системы Tasking уменьшает время, требуемое для тестирования и отладки встроенных приложений. Он сочетает дружелюбный и простой интерфейс с огромными возможностями. Как и в графическом интерфейсе пользователя, можно использовать настройку окон. Многие из установленных по умолчанию окон также могут быть полезными. Например, отлаживаемую программу можно наблюдать не только на языке С, но и в виде ассемблера. Одно из проявлений дополнительных, удобных для разработчика, опций – высвечивание значения переменной/функции при наведении на нее курсора (рис 1).
Окно регистровой памяти отображает содержание регистров с возможностью его редактирования. Это окно также имеет огромное число настроек. Например, можно сгруппировать регистры в подгруппы для использования в качестве либо регистров общего назначения, либо регистров с плавающей точкой, либо как регистров порта UART и отображать требуемую в данный момент информацию.
Интересные настройки имеет и окно содержимого стека. Можно, например, устанавливать точки останова на требуемом уровне стека. Кстати, число точек останова не ограничено.
Сам отладчик содержит четыре встроенных анализатора оптимизации. Первый анализатор предоставляет детальную информацию о времени, используемом данной функцией или набором функций. Второй – индицирует информацию об обращениях к памяти. Третий – характеристики циклов. Четвертый анализатор представляет диаграмму входных сигналов, используя графики X-t, X-Y, FFT и диаграмму "глаза" (рис 2).
Возможна запись последовательности команд с клавиатуры, мыши или команд меню при помощи простой встроенной настройки. Никакого знания каких бы то ни было скриптов не потребуется. Да, это похоже на макросы. Но здесь макросы, кстати, тоже имеющиеся, содержат гораздо более тонкие настройки.
Симулирование ввода/вывода позволит использовать такие функции, как fopen или fprint, для обмена данными с системами I/O-обслуживания. Файлы читаются непосредственно из системы, а выходная информация может быть напрямую записана в файл или высвечена в окне CrossView Pro Terminal.
Тесное сотрудничество с другими производителями позволило использовать отладчик Tasking CrossView Pro совместно с очень многими внутрисхемными эмуляторами.
Система Tasking – это очень тщательно продуманная, качественно и дружелюбно оформленная среда разработки, имеющая, во-первых, гибкие настройки как инструментария, так и интерфейса, а во-вторых, мощное функциональное наполнение, позволяющее быстро и качественно разрабатывать встраиваемое приложение, которое по своим характеристикам (объем кода, скорость выполнения) будет давать превосходные результаты проектирования.
Отзывы читателей