Программирование в среде MAXQ
Архитектура MAXQ была разработана для прикладных программистов. Каждый микроконтроллер MAXQ содержит аппаратный блок отладки, тесно интегрированный с ядром микроконтроллера. Первой из микросхем этой архитектуры стала MAXQ2000, и в данной статье приведены примеры и дополнительные сведения по использованию АРМ IAR Embedded Workbench вместе с отладочным комплектом MAXQ2000 Evaluation Kit.
Внутрисхемная отладка и программно-загрузочные функции микроконтроллера MAXQ2000 в сочетании со средой разработки IAR Embedded Workbench обеспечивают разработку и тестирование приложений на языках С или Ассемблер. Аппартный блок отладки и загрузчик MAXQ2000 работают через выделенный порт JTAG, обеспечивая полный доступ к отладке при минимальном влиянии на системные ресурсы.
Особенности внутрисхемной отладки
Аппаратный блок отладки, тесно интегрированный с ядром микроконтроллера, управляет функциями отладки MAXQ2000. Этот блок может обращаться к сервисным утилитам встроенного ПЗУ для поддержки широкого спектра операций отладки:
- Чтение внутренней флеш-памяти программ
- Чтение/запись памяти данных
- Чтение стековой памяти
- Чтение/запись всех системных и периферийных регистров MAXQ2000
- Пошаговое выполнение программ
- До четырех адресных контрольных точек для остановки выполнения программы в заданном участке кодовой памяти
- Две контрольные точки памяти данных для остановки выполнения программы при обращении к заданному участку памяти данных
- Две регистровые контрольные точки для остановки выполнения программы при записи в определенный системный или периферийный регистр (не могут использоваться одновременно с контрольными точками памяти данных) и при совпадении данных, записываемых в регистр, с заданными значениями
- Функция проверки пароля (для доступа к остальным функциям отладки).
Вся связь с блоком отладки в MAXQ2000 осуществляется через выделенный JTAG Test Access Port (TAP) интерфейс, отвечающий стандарту IEEE 1149 для JTAG. Этот интерфейс включает четыре сигнала, мультиплексированные с выводами портов MAXQ2000 следующим образом: TMS (выбор режима) – с Р4.2; TCK (тактовый сигнал) – с Р4.0; TDI (входные данные) – с Р4.1; TDO (выходные данные) – с Р4.3.
Поскольку JTAG TAP-порт выделен для внутрисистемной отладки и внутрисистемного
программирования, четыре вывода, по которым передаются сигналы JTAG TAP-порта по завершении этих операций могут быть использованы для других целей. Порт JTAG активируется по умолчанию сигналом reset, но в процессе работы прикладная программа может деактивировать порт JTAG, освобождая четыре выделенных вывода для других целей.
Интерфейс JTAG и блок отладки работают асинхронно с ядром MAXQ2000. Связь по порту
JTAG не требует той же тактовой частоты, с которой работает MAXQ2000. Частота TCK не должна превышать 1/8 системной тактовой частоты MAXQ2000.
Установки точек прерывания можно записать и прочитать через блок отладки в то время, как
MAXQ2000 выполняет код. Этот режим известен как фоновый, и в нем блок отладки работает независимо от ядра ЦПУ.
При выполнении других операций, таких, как запись в и чтение из памяти и регистров, блок
отладки управляет ядром MAXQ2000 и переключает его на выполнение одной из сервисных программ отладки, хранящихся в ПЗУ. Этот режим называется режимом отладки, и в нем блок отладки прерывает нормальное выполнение программ. В этих случаях работа пользовательской программы временно прерывается и возобновляется только после выполнения функции отладки, точно так же, как это происходит при обработке прерываний.
Поскольку сам JTAG TAP-порт не используется для прикладных программ, выводы, присвоенные порту JTAG, могут использоваться этими программами. Все дополнительные подпрограммы, требующиеся для функций отладки, размещаются в ПЗУ, поэтому единственные системные ресурсы, потребляемые функциями отладки – небольшой объем ОЗУ и один уровень программного стека (используемый для хранения адреса возврата при вызове прграммы отладки). Старшие 19 байт ОЗУ (адреса с 0х07ED по 0x07FF) зарезервированы для использования сервисными программами отладки. Если внутрисхемная отладка не планируется, эти ячейки ОЗУ доступны для использования прикладными программами.
Доступ к интегрированной программной флеш-памяти через JTAG
JTAG TAP-порт также используется для дополнительной функции загрузчика, которая доступна даже в том случае, когда функции отладки не используются. Установив три конфигурационных бита через JTAG TAP интерфейс и затем отключив сигнал reset, можно передать управление встроенным программам загрузки, размещенным в ПЗУ. Биты конфигурации, которые управляют доступом к загрузчику – следующие:
- SPE: System Program Enable Bit (Разрешить запись в программную память) (ICDF.1). Если этот бит установлен в 1, MAXQ2000 выполняет программу загрузчика в ПЗУ сразу после отключения сигнала reset.
- PSS[1:0]: Programming Source Select (Выбор источника программирования) (ICDF.3-2). Эти биты определяют какой порт используется для связи с загрузчиком: JTAG (PSS[1:0]==00b) или последовательный 0 UART (PSS[1:0]==01b)
Когда эти биты установлены и MAXQ2000 снят с reset, загрузчик начинает обмен данными с
хост-системой по выбранному порту (JTAG или последовательный 0 UART). В любом случае используется один и то же протокол, выполняющий следующие функции:
- Считывает идентификационный номер MAXQ2000 (идентифицирует версию ПЗУ)
- Сообщает объем памяти программ и памяти данных
- Осуществляет чтение, запись, проверку и вычисление контрольной суммы для интегрированной программной флеш-памяти
- Осуществляет чтение, запись, проверку и вычисление контрольной суммы для ОЗУ
- Проверка пароля (для получения доступа к командам записи/чтения программной памяти).
Хотя загрузчик и может работать через последовательный 0 UART порт вместо JTAG, интерфейс JTAG необходим для переключения загрузчика в режим последовательной передачи.
Однако прикладная программа также может перевести загрузчик в режим последовательной
передачи, нужным образом установив биты SPE и PSS, а затем выполнив reset MAXQ2000 (позволив сработать сторожевому таймеру или с помощью внешних аппаратных средств). Метод активизации загрузчика (например, сигнал на вывод порта) определяется прикладной программой.
Защита функций отладки и загрузчика с помощью пароля
Схема защиты по паролю ограничивает доступ к функциям отладки и загрузчика MAXQ2000. Хост-система должна сообщить пароль, чтобы получить доступ к любой функции, которая считывает или изменяет содержимое памяти или системных и периферийных регистров.
Длина пароля составляет 16 слов или 32 байта. Оригинал пароля хранится во внутренней
флеш-памяти по адресам от 0x0010 до 0x001F. Эти значения можно включить в прикладную программу в виде статического массива, или это могут быть просто значения командных кодов, хранящихся по этим адресам. В любом случае, пароль записывается автоматически при загрузке прикладной программы. Если прикладная программа не загружена, то пароль формируется по умолчанию и все его слова равны 0хFFFF.
Даже если пароль неизвестен, содержимое внутренней флеш-памяти MAXQ2000 всегда можно
стереть с помощью загрузчика. Этот метод эффективно стирает пароль (приводя все слова к виду 0хFFFF) и позволяет работать остальным операциям программирования и отладки. Защита с помощью пароля гарантирует, что существующий код нельзя считать с MAXQ2000, не проверив предварительно соответствие значения 32-байтного пароля.
Использование «COM–JTAG» адаптера
Интегрированные среды разработки для микроконтроллера MAXQ2000 (такие как MAXIDE и IAR Embedded Workbench) включают библиотеки программ для поддержки связи с JTAG-интерфейсом MAXQ2000. Тем не менее, поскольку в PC, на которых установлено это программное обеспечение, обычно нет JTAG-портов, необходимо аппаратное решение для связи двух систем.
Модуль адаптера «COM – JTAG», включенный в отладочный комплект для MAXQ2000, обеспечивает быстрое решение этой проблемы. (Рис. 1) Программное обеспечение для PC (такое, как IAR Embedded Workbench) связывается с модулем адаптера по стандартному последовательному COM-порту. Модуль адаптера затем подключается к JTAG-порту MAXQ2000, передавая команды загрузчику или блоку отладки. Модуль адаптера помимо этого выполняет преобразование уровней сигнала и поддерживает работу микроконтроллеров MAXQ в
широком диапазоне напряжений питания, а также избавляет от необходимости использовать PC для обеспечения точной тактовой частоты с целью формирования импульсов JTAG.
Рис. 1. Модуль адаптера «COM – JTAG» позволяет программному обеспечению для PC связываться с JTAG TAP-интерфейсом микроконтроллера MAXQ2000
Использование аппаратных средств отладочного комплекта MAXQ2000
Отладочный комплект MAXQ2000 Evaluation Kit предоставляет полную аппаратную среду разработки для микроконтроллеров MAXQ2000, включая следующие компоненты:
- Источник питания на плате для ядра MAXQ2000 и шины питания VDDIO.
- Регулируемый источник питания (от 1,8 В до 3,6 В), который может быть использован для шин питания VDDIO и VLCD.
- Контактные выводы для всех сигналов MAXQ2000 и напряжений питания
- Отдельный разъем для подключения дочерней платы ЖКИ
- Дочерняя плата ЖКИ с питанием 3 В и 3,5-разрядным статическим ЖКИ-дисплеем
- Драйверы RS-232 для последовательного порта 0 UART, включая управление потоком данных
- Кнопки для внешних прерываний и системного сброса (reset) микроконтроллера
- Многоцелевая АЦП/ЦАП микросхема MAX1407, подключенная к интерфейсу шины SPI микроконтроллера MAXQ2000
- Интерфейс 1-Wire®, включая держатель для iButton® и микросхему 1-Wire EEPROM
- Светодиодный дисплей для индикации уровней на выводах порта от P0.7 до P0.0
- Интерфейс JTAG для загрузки и отладки прикладных программ.
Установка комплекта MAXQ2000 Evaluation Kit и адаптера “COM – JTAG» весьма проста. Подключите платы, следуя приведенной ниже инструкции:
- Подключите источник питания постоянного тока напряжением 5В (центральный контакт – положительный, ± 5%) к разъему питания J2 платы адаптера “COM – JTAG»
- Подключите источник питания постоянного тока напряжением от 5 до 9 В к разъему питания J1 на плате комплекта MAXQ2000 Evaluation Kit
- Соедините последовательным кабелем DB9 разъем J1 на плате адаптера “COM – JTAG» с одним из COM-портов на PC
- Соедините кабелем адаптера JTAG 1х9-контактный разъем Р2 на плате адаптера «COM – JTAG» и 2х6 – контактный разъем J4 на плате комплекта MAXQ2000 Evaluation Kit
- Включите оба источника питания
- В стандартном режиме работы все DIP-переключатели на плате комплекта MAXQ2000 Evaluation Kit должны быть в положении OFF
Разработка прикладных программ с использованием АРМ IAR Embedded Workbench
Среда разработки АРМ IAR Embedded Workbench поддерживает разработку прикладных программ для MAXQ2000 на базе языка С или языка ассемблера. С использованием описанной выше аппаратной конфигурации, включающей комплект MAXQ2000 Evaluation Kit и модуль адаптера «COM – JTAG», IAR Embedded Workbench имеет полный доступ к основанному на JTAG загрузчику и функциям внутрисхемной отладки MAXQ2000.
При разработке прикладных программ для MAXQ2000, IAR Embedded Workbench поддерживает следующие функции:
- Загрузка скомпилированных прикладных программ в интегрированную программную
флеш-память MAXQ2000
- Пошаговое выполнение программ на уровне С или ассемблера
- Отображение программной памяти, аппаратного стека, ОЗУ и ПЗУ
- Отслеживание стека вызовов
- Установка точек прерывания на уровне С или ассемблера
- Просмотр и редактирование всех системных и периферийных регистров MAXQ2000
Разработка и компиляция проекта для MAXQ2000
Поскольку в состав IAR Embedded Workbench включена поддержка семейства микроконтроллеров MAXQ, разработка нового проекта для микроконтроллера MAXQ2000 требует только нескольких специфических установок.
После запуска IAR выберите пункт File, затем в меню – New. В диалоговом окне New выберите Workspace и кликните OK. Введите новое имя для рабочей зоны проекта (хранится как файл с расширением .eww) и нажмите Save.
После открытия рабочего окна, выберите Project, затем – Create New Project из меню. Набор
инструментов для MAXQ задается для нового проекта по умолчанию. Введите имя файла для нового проекта (хранится как *.ewp) и кликните Create.
Затем выберите Project и Settings из меню. Откроется диалоговое окно с установками для
нового проекта, как показано на Рис.2
Рис. 2. Раздел General Options диалогового окна Options дает пользователю возможность выбрать тип процессорного ядра (MAXQ10/Q20), количество используемых аккумуляторов и глубину аппаратного стека. Показаны установки для MAXQ2000
По вкладке General Options в диалоговом окне Options необходимо выбрать следующие установки для микроконтроллера MAXQ2000:
- В установке Processor Variant следует выбрать MAXQ20, поскольку MAXQ2000 имеет ядро этого типа.
- В Number of accumulators для MAXQ2000 следует выбрать 16
- В Hardware stack depth для MAXQ2000 следует выбрать 16
По вкладке C-SPY Debugger диалогового окна Options необходимо выбрать следующие установки для микроконтроллера MAXQ2000 (Рис.3):
- В установке Driver выберите JTAG для подключения платы «COM – JTAG» к COM-порту PC. Две другие возможные установки – Simulator (используется для работы с программным симулятором MAXQ2000) и Emulator (используется для работы с внутрисхемным эмулятором MAXQ2000).
- Опция Use Device Description File должна быть включена. Файлом описания устройства (*.ddf) должен быть файл для микроконтроллера MAXQ2000 (maxq200x.ddf). Этот файл определяет для среды IAR объем памяти и набор периферийных регистров конкретного микроконтроллера MAXQ.
Рис. 3. 3 Раздел C-SPY Debugger диалогового окна Options дает пользователю возможность задать установки для сеанса отладки. Показаны установки для отладки MAXQ2000 с использованием модуля адаптера «COM – JTAG»
В разделе JTAG диалогового окна Options, поле Command line options содержит наименование COM-порта PC, используемого для связи с платой «COM – JTAG». На рис. 4 показаны установки для подключения к COM-порту 1.
Рис. 4. Раздел C-SPY Debugger (JTAG) в диалоговом окне Options дает пользователю возможность изменять настройки под конкретный модуль адаптера «последовательный интерфейс – JTAG». Показаны установки для модуля «COM – JTAG» подключенного к PC порту COM1
После установки опций для проекта, выберите Project, затем – Add Files для добавления исходного файла языка С к проекту. После добавления исходного файла (или файлов) выберите Project, затем – Make для его компилирования, после чего выберите Project, затем – Debug для запуска сеанса отладки. Эта операция загружает скомпилированный проект через интерфейс JTAG и переводит IAR в режим отладки, как показано на рис.5.
Рис. 5. Используя модуль адаптера «COM – JTAG», АРМ IAR Embedded Workbench может пошагово выполнять процедуры на микроконтроллере MAXQ2000, а также считывать и изменять данные его внутренней памяти и значения регистров
Операции отладки в IAR
После начала сеанса отладки можно использовать функции Step Over (F10), Step Into (F11) и Step Out (Shift + F11) для пошагового выполнения C-программы проекта. Для запуска программы выберите Debug, затем – Go из меню, или нажмите F5.
Адресные точки прерывания можно установить или удалить, поместив курсор на строку исходного кода и кликнув по кнопке Toggle Breakpoint на панели инструментов. Можно установить до четырех точек прерывания одновременно.
Окно Memory можно использовать для отображения Code (внутренней флэш-памяти), Data (внутреннего ОЗУ), Hw stack (внутреннего 16-уровневого стека) и памяти ПЗУ MAXQ2000. Формат отображения данных из памяти можно выбрать в виде байтов, слов или двойных слов, как hex (для любой ширины), так и ASCII (для байтовой ширины).
Окно Register отображает системные и периферийные регистры MAXQ2000. Они разделены на
логические группы:
- Регистры ЦПУ: регистры аккумуляторов и управления аккумуляторами, регистры указателей данных и управления указателями данных, указатель команд, счетчик циклов и флаги статуса программы.
- Управление прерываниями: вектор прерывания, модульная маска и регистры идентификации.
- Циклы: отображает количество выполненных циклов команд.
- Параллельные порты: регистры входа, выхода и направления портов для Р0, Р1, Р2, Р3 и Р4.
- Внешние прерывания: разрешение, выбор фронта, флаговые регистры для внешних прерываний.
- Таймеры: регистры для таймеров/счетчиков от 0 до 2.
- Последовательный порт: регистры управления и буферные регистры для SPI и последовательных портов
- Умножитель: регистры, относящиеся к аппаратному модулю умножителя.
Регистры с разрешением записи можно редактировать, кликнув на строку значения и введя новое значение. Отображение индивидуальных битов или полей битов внутри регистров может быть развернуто или свернуто кликом по знаку плюса или минуса рядом с именем регистра.
Заключение
Среда разработки высокого уровня для IAR Embedded Workbench, основанная на языке С, в
сочетании с отладочным интерфейсом низкого уровня MAXQ2000, позволяет выполнять тонкую отладку как на уровне языка С, так и на уровне ассемблера. Встроенные средства отладки и внутрисхемного программирования MAXQ2000 и их минимальное влияние на ресурсы системы позволяют использовать те же аппаратные структуры
как для разработки прикладных программ, так и для окончательной доводки готового проекта.
|