Отладка микроконтроллеров
на базе процессоров Cortex-M3
Сергей КОПЫТИН
Кирилл ДОРОФЕЕВ
Процессор ARM Cortex-M3 оснащен новой технологией отладки и трассировки ARM CoreSight, которая значительно расширяет возможности классической технологии Embedded ICE. В дополнение к обычному контролю хода выполнения программы технология CoreSight позволяет осуществлять доступ к памяти «на лету», трассировку данных и событий через стандартный JTAG коннектор. Таким образом, новая технология значительно ускоряет разработку программного обеспечения и отладку программ.
Эта статья посвящена описанию технологии CoreSight и тому, какие преимущества для разработчика, который использует ^Vision Debugger, она предоставляет. В статье также описываются возможные режимы JTAG-отладки микроконтроллеров на базе процессора Cortex-M3 таких производителей, как Luminary Micro или STMicroelectronics.
Отладка микроконтроллера
До появления встроенной технологии отладки on-chip большинство разработчиков программного обеспечения использовали дорогие внутрисхемные эмуляторы для отладки приложений на микроконтроллерах. Высокоуровневые эмуляторы подключались через сложные адаптеры и предоставляли трассировку команд и данных с помощью триггерных условий. Эти эмуляторы разрабатывались на базе специальных устройств bond-out, которые были дороже существовавших микроконтроллеров. Современные микроконтроллеры работают на высокой частоте и выпускаются в весьма компактных корпусах с большим количеством выводов, в связи с чем применение внутрисхемных эмуляторов становится невозможным.
Современные микроконтроллеры содержат on-chip логику отладки, которая обеспечивает доступ к управляемой памяти, регистрам ЦПУ и последовательности выполнения программы. Эта встроенная логика отладки является частью каждого серийного микроконтроллера. И чтобы избежать удорожания чипов, такая технология отладки ограничена по своим функциональным возможностям. Чаще всего отладка on-chip позволяет лишь непосредственно следить за ходом исполнения программы, с ограниченными возможностями по использованию точек останова. Однако процессоры на базе Cortex-M3 применяют технологию отладки ARM CoreSight, которая дает возможность получать необходимую информацию через
стандартный JTAG-коннектор без какого-либо дополнительного дорогостоящего оборудования.
Технология отладки on-chip от ARM
Начиная с ARM7TDMI, все процессоры ARM содержат технологию отладки Embedded ICE. Embedded ICE — это дешевый аппаратный блок, который позволяет осуществлять контроль выполнения хода программы без ее останова (таблица). Этот блок имеет два аппаратных регистра, которые дают возможность одновременно следить за ходом исполнения программы или осуществлять доступ к памяти. Кроме того, Debug Communication Channel (DCC) позволяет осуществлять обмен данными с приложением пользователя во время исполнения программы.
Embedded ICE — стандартный аппаратный блок для всех процессоров на базе ARM7 и ARM9 различных производителей, он широко поддержан инструментальными средствами с помощью интерфейса JTAG и позволяет избежать использования дорогих аппаратных адаптеров.
Так как отладка Embedded ICE не дает трассировать данные и инструкции, некоторые процессоры ARM также поддерживают технологию отладки Embedded Trace Macrocell (ETM). Однако эта технология задействует
больше выводов, чем JTAG-интерфейс, причем часто это бывают выводы I/O, которые используются в приложениях. Таким образом, не всегда есть возможность применять отладку по технологии ETM. Для минимизации количества задействованных выводов при отладке разработана новая технология CoreSight на основе стандартного JTAG-интерфейса, которая позволяет отлаживать приложение в следующих режимах:
• Стандартный режим JTAG, с использованием пяти выводов для отладки.
• Режим Serial Wire (SW), с использованием лишь двух выводов для контроля хода исполнения программы. Режим SW использует для связи только выводы TCLK и TDI.
• При отладке в режиме SW дополнительный вывод Serial Wire Viewer (SWV) может быть задействован в качестве линии TDO для осуществления трассировки данных и событий и для служебной информации. Технология отладки CoreSight используется во всех микроконтроллерах на базе процессора Cortex-M3. Дешевый JTAG-адаптер (например, Keil ULINK2) — это все, что необходимо для использования этой новой технологии отладки on-chip. Кроме описанных возможностей трассировки, CoreSight также предоставляет доступ к памяти «на лету», то есть во время исполнения рабочей программы, без использования каких-либо дополнительных программных модулей.
Таблица. Сравнение функций различных режимов отладки
Функция Embedded ICE (ARM7, ARM9) CoreSight (Cortex-M3)
Интерфейс отладки JTAG JTAG/SW
Аппаратные точки останова 2 execution или 1-2 access З execution и 4 access*
Программные точки останова Не ограничено Не ограничено
Доступ к памяти во время работы программы Да, с использованием Real-Time Agent Да, поддерживается аппаратно
Трассировка инструкций Через ETM Через ETM
Трассировка данных Через ETM Да
Трассировка событий Нет Да
Примечание. * В технологии Согв31дЬ|1 возможно различное число регистров;
таким образом, у некоторых процессоров может быть меньше аппаратных точек останова.
Программный пакет разработки
Микроконтроллеры на базе процессоров ARM поддерживаются различными производителями инструментальных средств разработки. Программный пакет RealView Microcontroller Development Kit (MDK) компании ARM/Keil поддерживает более чем 260 стандартных микроконтроллеров. Этот пакет объединяет компилятор ARM RealView Compiler, интегрированную среду разработки ^Vision Debugger/IDE и операционную систему реального времени RTX RTOS Kernel (рис. 1).
Интегрированная среда разработки ^Vision Debugger подключается к микроконтроллеру на базе процессора Cortex-M3 при помощи адаптера ULINK2 USB-JTAG (рис. 2). ULINK2 позволяет программировать Flash, отлаживать периферию и поддерживает все возможные режимы отладки технологии CoreSight.
Пакет MDK-ARM в сочетании с ULINK2 представляет полнофункциональную среду разработки для создания проектов на базе процессоров Cortex-M3.
Отладчик ^Vision может отображать содержимое памяти и переменных в нескольких
Real View® Microcontroller Development Kit
RealView C/C++ Compiler
RTX RTOS Kernel Library
^Vision Device Database & IDE
uVision Debugger & AnalysisTools
Complete Device Simulation
Рис. 1. Состав пакета разработки RealView Microcontroller Development Kit
Рис. 2. JTAG-адаптер ULINK2, подключенный к плате MCB-STM32
различных форматах. При выполнении программы разработчик непрерывно получает информацию об актуальном состоянии памяти и переменных контроллера. Существует возможность устанавливать точки останова как триггер для какой-либо переменной, например:
BS write my_value /* stop on write to my_value */
ULINK2 может быть сконфигурирован для использования дополнительного третьего вывода SWV. В этом режиме пользователь может получить следующую трассировочную информацию:
• Чтение переменных и запись значений в эти переменные в окне Logic Analyzer.
• Счетчик событий, который показывает статистику циклов процессора, что позволяет судить о периоде простоя устройства.
• Временная статистика по выполнению прерываний, которая помогает оптимизировать функции прерываний.
• Идентификация бесконечных циклов в тексте программы.
• Данные о пользовательской трассировке, которые могут быть получены через 32 регистра ITM (Instrumentation Trace Macrocell) и использованы для временного анализа или для простой printf-отладки.
В режиме SWV нет необходимости в дополнительном программном мониторинге или дополнительных циклах работы процессора.
Получаемые данные отображаются в окне Trace Records (рис. 3), в котором можно настроить дополнительные фильтры и выводить на экран только необходимую информацию.
Трассировка переменных при помощи Logic Analyzer
На рис. 4 показано окно Logic Analyzer среды разработки ^Vision, в котором могут быть представлены изменения значений до четырех переменных одновременно. Это позволяет отслеживать изменения любых глобальных или статических переменных. При помощи кнопки CodeShow всегда можно просмотреть текст исходной программы, в котором описаны изменения отображаемых переменных.
Трассировка событий
Процессор Cortex-M3 обеспечивает разработчика всей необходимой статистикой для работающего приложения, которая позволяет определить производительность аппаратной и программной составляющих приложения.
Окно счетчика событий (Event Counter) (рис. 5) дает возможность определить не только время, затраченное на исполнение программы, но и следующие характеристики:
• количество циклов ожидания (например, при медленной памяти);
• количество циклов простоя, связанных с ошибками CPU;
• время в спящем режиме;
Event Counters
Counters
CPI сит 1 2387625 0 Extra Cycles pet Instruction
EXCCNT 1 818 0 Exception overhead cycles
SLEEPCNT I- 2048 0 Sleep Cycles
LSUCNT | 58956 0 Load Store Unit Cycles
F01DCNT 46 [o Folded Instructor):
Рис. 5. Счетчик событий с подробной временной статистикой
2т.
IМI Mjw І ЛАНн I DjU I PC
Ск*м I Tirr»(il
txctcmnKdun ;< о X 93ІШ4І8 пясзлгэ
EncefbmEnliy *5 IZTTbVU 11 «Г 141
CofaVic X 2ХШЮ4М 0ЮХГОЄН 000001AJI X хе**:* 11 3X32533
ExccttMn Rerun :< 0 X 532343424 11 Э6С32333
Fe-rfhonFnTr» 15 татож її mas
DabWto X 2MX004M OOOOQJ59M 080001/ОН X Ї7ХЄ3430 1117C32642
E«tetlnnRe(un X 0 X 35X63430 11.57С32Э42
Ltftw* глшгш uuuuuaah jhjuumh X m nan 1157«W24
C«aWto 200X0'0И 000009C4H *000306* X 33338*853 115747«7I0
3337753Э4 П 0X2*301 ЯШІ'.ЯУ!!!■
Y 1 ✓ Coen 0ЄГ CverXS V «ПГГВДІ
CatoWto -XOCO'QH ОООООЗЄЛН ЭЮООХ Exceptions 1*.Ж32724
[*»W« 2ЮХ0 8Н OOOXBC5H XOOOX 1158-OW06
ExcecbonEntn 15 V PC Samples Г 5X2*392
[MW4I X 2ЮХ004Н ООООГОЛН 080001 Смл^Ькі Rctun X 0 V ITM Everts 11Ж335К гезезгооо
bxeecbsnfcnin 15 іі.акгі«о
Гм* x мохами шагаем oeoom 11 fflCMt?
Схсе^ЬмПЫът X 0 wnres Г OX32SC7
Рис. 3. Окно Trace Records для селективного просмотра всей информации о трассировке процессора Cortex-M3
Рис. 4. Отображение изменения переменных в окне Logic Analyzer
• количество циклов загрузки и быстрых инструкций, которые ускоряют время выполнения приложения.
Регистры ITM
Модуль ITM содержит 32 регистра, с помощью которых можно получать дополнительную информацию о трассировке, используя вывод SWV. В таком случае количество циклов простоя сводится к минимуму, так как требуется доступ только к записи в регистр ITM. Опционально ITM-трассировка позволяет получить информацию о времени работы приложения, таким образом, ITM можно использовать как средство для анализа времени исполнения программ.
ITM применяют для получения любой информации. В окне ITM Viewer возможно получить тестовую строку, состоящую из ASCII-символов. На рис. 6 показан пример отладки примера “printf-style”:
int SendChar (int ch) { /* Write serial output to ITM */ while (ITM_Port32(0) == 0);
ITM_Port8(0) = ch; return (ch);
}
Трассировка прерываний
Б'МУ выдает информацию обо всех запущенных приложением прерываниях, временных метках, количестве вызовов того или
Рис. 7. Окно Exception Trace с детализированной статистикой по прерываниям
иного прерывания, минимальное и максимальное время исполнения прерывания, а также время между прерываниями. Пример показан на рис. 7.
Конфигурация трассировки
Пользователь может выбрать, какую именно информацию он хочет получать. Такой подход к трассировке позволяет решать только актуальную проблему, стоящую на данный
момент перед разработчиком, и снижает время, необходимое на трассировку. Таким образом, технология CoreSight полностью соответствует требованиям разработчиков мик-роконтроллерных устройств, обеспечивая полную отладку и трассировку при использовании только трех выводов I/O. ■
Литература
1. www.keil.com
2. www.arm.com