Отладка микроконтроллеров на базе процессоров Cortex-M3
Эта статья посвящена описанию технологии 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) | CoreSight (Cortex»M3) |
Интерфейс отладки | JTAG | JTAG/SW |
Аппаратные точки останова | 2 execution или 1–2 access | 8 execution и 4 access* |
Программные точки останова | Не ограничено | Не ограничено |
Доступ к памяти во время работы программы | Да, с использованием Real-Time Agent | Да, поддерживается аппаратно |
Трассировка инструкций | Через ETM | Через ETM |
Трассировка данных | Через ETM | Да |
Трассировка событий | Нет | Да |
Примечание. * В технологии CoreSight возможно различное число регистров; таким образом, у некоторых процессоров может быть меньше аппаратных точек останова. |
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 также
предоставляет доступ к памяти «на лету»,
то есть во время исполнения рабочей программы, без использования каких-либо дополнительных программных модулей.
Программный пакет разработки
Микроконтроллеры на базе процессоров
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 может отображать содержимое памяти и переменных в нескольких
различных форматах. При выполнении программы разработчик непрерывно получает
информацию об актуальном состоянии памяти и переменных контроллера. Существует возможность устанавливать точки останова как триггер для какой-либо переменной,
например:
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; - время в спящем режиме;
- количество циклов загрузки и быстрых инструкций, которые ускоряют время выполнения приложения.
Регистры 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); } |
Трассировка прерываний
SWV выдает информацию обо всех запущенных приложением прерываниях, временных метках, количестве вызовов того или
иного прерывания, минимальное и максимальное время исполнения прерывания,
а также время между прерываниями. Пример
показан на рис. 7.
Конфигурация
трассировки
Пользователь может выбрать, какую именно информацию он хочет получать. Такой
подход к трассировке позволяет решать только актуальную проблему, стоящую на данный
момент перед разработчиком, и снижает время, необходимое на трассировку. Таким образом, технология CoreSight полностью соответствует требованиям разработчиков микроконтроллерных устройств, обеспечивая
полную отладку и трассировку при использовании только трех выводов I/O.