Каждому разработчику нужны инструменты отладки.
Однако не существует универсальных решений, подходящих как для тех, кто создает приложения пользовательского уровня, так и для тех, кто пишет низкоуровневые программы, например драйверы оборудования.
Чем ближе к железу, тем сложнее отладка и тестирование.
В этом материале вы узнаете, как отлаживать код и анализировать исключения на уровне ядра Linux ОС Android в системах на базе архитектуры Intel. В частности, мы рассмотрим отладчик JTAG, который является частью Intel System Studio Ultimate Edition. Мы поговорим о стандарте JTAG, вышеупомянутом отладчике Intel JTAG и обработке исключений.
В качестве примера мы будем использовать миникомпьютер MinnowBoard MAX с Intel Atom на борту.
Обзор JTAG
JTAG (произносится как «jay-tag») — это аббревиатура от Joint Test Action Group. Обычно, когда говорят «JTAG», имеют в виду стандарт IEEE 1149.1-1990 (стандарт IEEE Test Access Port and Boundary-Scan Architecture).Этот стандарт устанавливает правила отладки и тестирования однокристальных систем (SoC, System on Chip) и микропроцессорного программного обеспечения (Microprocessor Software).
Для отладки JTAG используется набор инструментов, состоящий из трех частей: программного JTAG-отладчика, установленного на главном компьютере, аппаратного JTAG-адаптера (датчика) и внутрисхемного отладчика (OCD, On Chip Debug), оснащенного микросхемой под тест.
Программный JTAG-отладчик
Отладчик JTAG — это программный инструмент, установленный на главном компьютере.Он получает данные и информацию об адресе от адаптера JTAG и отображает их в пользовательском интерфейсе.
Разработчик, в свою очередь, может отправлять команды на JTAG-адаптер, который подключен к главному компьютеру через USB или другой интерфейс.
С помощью этого инструмента вы можете контролировать выполнение программы и отлаживать ее на уровне исходного кода.
Это достигается с помощью файлов символов, соответствующих двоичным образам, загружаемым в целевые системы.
Эти инструменты предоставляют разработчику следующие возможности: запуск и остановка выполнения кода, выполнение шага вперед и назад во время отладки, указание точек останова, доступ к памяти.
Используя описанные выше инструменты, программист может отладить программную часть целевой системы, проверить системную память и регистры.
Intel JTAG Debugger (известный как XDB) включен в Intel System Studio Ultimate Edition. XDB — это инструмент программного обеспечения отладки JTAG, который необходимо установить на главном компьютере.
Аппаратный JTAG-адаптер
Адаптер JTAG — это устройство, преобразующее сигналы JTAG в формат, пригодный для передачи на компьютер.Для сопряжения адаптеров и ПК используются такие интерфейсы, как USB, параллельный порт, RS-232, Ethernet. USB является самым популярным среди них.
Он используется для подключения многих адаптеров JTAG к компьютерам.
Стандартом предусмотрено минимальное количество контактов JTAG для подключения целевых устройств к адаптерам JTAG, однако на практике используются самые разные интерфейсы.
Например, это 10- и 20-контактные разъемы для ARM, 14-контактные для ST, 16-контактные для OCDS. Комбинация отладчика Intel JTAG и MinnowBoard MAX, о которой рассказывается в этом материале, для подключения целевого устройства использует 60-контактный разъем.
Intel ITP-XDP3 используется в качестве JTAG-адаптера для MinnowBoard MAX. Отладчик Intel JTAG также совместим с адаптерами JTAG других производителей.
Например, с Macraigor Systems usb2Demon и OpenOCD.
Внутрисхемный отладчик (целевая микросхема)
Основными компонентами внутрисхемного отладчика являются TAP (Тестовая точка доступа, тестовый порт) и TDI (Вход тестовых данных, ввод тестовых данных)/TDP (Выход тестовых данных, вывод тестовых данных).Используя TAP, вы можете сбрасывать, читать и записывать состояние регистров, а также использовать инструкцию BYPASS. Основная технология, используемая в JTAG, — это так называемое граничное сканирование (
Граничное сканирование ) с использованием сигнальных линий TDI/TDO.Конфигурация из адаптера JTAG и целевой системы.
Здесь также показана плата расширения, которая используется для подключения Intel ITP-XDP3 и MinnowBoard MAX.
Обзор исключений в архитектуре Intel
Исключение — это синхронное событие, которое генерируется, когда процессор сталкивается с одним или несколькими предопределенными условиями при выполнении инструкций.Архитектура IA-32 предоставляет три класса исключений: сбой, ловушка и прерывание.
Обычно при возникновении сбоев и ловушек можно продолжить прерванную работу, а при авариях – нет. Когда возникает исключение, оно обрабатывается так же, как и прерывания.
Это означает, что после остановки и сохранения текущего процесса система переключается на обработчик исключений, а после того, как обработчик завершил свою работу, возвращается к ранее выполненной задаче.
Исключения и прерывания защищенного режима
Вектор | Сокращенное название | Описание | Тип | Код ошибки | Источник |
0 | #DE | Ошибка деления | Отказ | Нет | Инструкции DIV и IDIV |
1 | #БД | Сдержанный | Провал/ловушка | Нет | Только для использования Intel |
2 | — | Прерывание НМИ | Прерывать | Нет | Внешнее немаскируемое прерывание |
3 | #БП | Точка останова | Ловушка | Нет | Инструкция ИНТ 3 |
4 | #ИЗ | Переполнение | Ловушка | Нет | Инструкция INT0 |
5 | #BR | Вне диапазона | Отказ | Нет | СВЯЗАННАЯ инструкция |
6 | #УД | Неверный (неопределенный) код операции | Отказ | Нет | Инструкция UD2 или зарезервированный код операции |
7 | #НМ | Устройство недоступно (нет математического сопроцессора) | Отказ | Нет | Инструкции с плавающей запятой или инструкции WAIT/FWAIT |
8 | #DF | Двойной провал | Несчастный случай | Да (ноль) | Любая инструкция, которая может вызвать исключение, NMI или INTR. |
9 | Выход за пределы сегмента сопроцессора (зарезервировано) | Отказ | Нет | Инструкция с плавающей запятой | |
10 | #ТС | Неверный TSS | Отказ | Да | Переключение задач или доступ к TSS |
11 | #НП | Сегмент отсутствует | Отказ | Да | Загрузка регистров сегментов или доступ к системным сегментам |
12 | #SS | Ошибка сегмента стека | Отказ | Да | Операции со стеком и загрузка регистра SS |
13 | #GP | Общая ошибка безопасности | Отказ | Да | Ошибки, связанные с памятью, проверки безопасности |
14 | #ПФ | Ошибка страницы | Отказ | Да | Работа с памятью |
15 | — | Зарезервировано Intel, не предназначено для использования.
|
Нет | ||
16 | #МФ | Ошибка с плавающей запятой x87 FPU (ошибка вычисления) | Отказ | Нет | Вычисления с плавающей запятой для инструкций x87 FPU или WAIT/FWAIT |
17 | #AC | Ошибка проверки выравнивания | Отказ | Да (ноль) | Работа с данными в памяти |
18 | #MC | Аппаратная ошибка | Несчастный случай | Нет | Коды ошибок (если есть) и их источник зависят от оборудования.
|
19 | #ХМ | Исключения SIMD с плавающей запятой | Отказ | Нет | Инструкции с плавающей запятой SSE, SSE2, SSE3 |
20 | #VE | Исключение виртуализации | Отказ | Нет | Нарушения EPT |
21 – 31 | — | Зарезервировано Intel, не предназначено для использования.
|
|||
32 – 255 | — | Прерывания, определяемые разработчиком (не зарезервированы) | Прерывать | Внешние прерывания или инструкции INT n. |
Подготовка MinnowBoard MAX и Intel ITP-XDP3 к подключению к хост-компьютеру через USB
Сначала вам необходимо установить ОС Android на MinnowBoard MAX. Для этого обратитесь к материалу " Статья для разработчиков Intel System Studio: Настройка, сборка и профилирование ядра Android Linux с помощью VTune " Содержит инструкции по сборке, установке и настройке Android на MinnowBoard MAX. После установки ОС подключите MinnowBoard MAX к адаптеру Intel ITP-XDP3 JTAG с помощью карты расширения.
Подключаем JTAG-адаптер к ПК через USB. На главном компьютере должна быть установлена программа Intel System Studio Ultimate Edition, включающая драйвер USB для Intel ITP-XDP3.
MinnowBoard MAX подключается к адаптеру Intel ITP-XDP3 JTAG, который, в свою очередь, подключается к хост-компьютеру с установленным на нем отладчиком Intel JTAG (XDB).
Использование отладчика Intel JTAG (XDB) для отладки ядра Android на MinnowBoard MAX
Давайте рассмотрим пошаговую процедуру использования XDB для отладки ядра Linux ОС Android. 1. Запустим отладчик Intel JTAG. Для этого вам необходимо зайти в папку, где он установлен, и запустить батник (например, start_xdb_legacy_products.bat).2. Подключимся к целевому устройству.
Для этого вам нужно запустить команду File > Connect в интерфейсе JTAG-отладчика и выбрать, во-первых, аппаратный JTAG-адаптер.
В нашем случае это Intel ITP-XPD3. Во-вторых, вам необходимо указать целевую платформу.
Нас интересуют процессоры Intel Atom E38xx, Z3680, X37xx – 2 ядра (ValleyView).
Выбор аппаратного JTAG-адаптера и целевой платформы в XDB 3. Загрузим файлы символов и укажем каталог файлов исходного кода.
Для этого вам необходимо запустить команду «Файл» > «Загрузить/выгрузить символ» в отладчике Intel JTAG и указать файлы символов.
Для файлов исходного кода необходимо запустить команду «Параметры» > «Каталоги исходного кода» и указать правила сопоставления файлов исходного кода и файлов символов, а также соответствующих каталогов.
Правила позволяют сопоставлять пути к файлам символов, записанные во время компиляции, с текущими местоположениями файлов исходного кода.
4. Давайте найдем файл записи, содержащий обработчик исключений.
Давайте воспользуемся командой меню Intel View > Исходные файлы JTAG-отладчика и откроем файл enter_64.S.
Найдите файл enter_64.S. 5. Давайте установим точку останова в точке входа исключения.
Для этого находим строку ENTRY(error_entry), которая является точкой входа исключения с кодом ошибки в регистр RAX. Каждый обработчик исключений определяется как макрос с нулевым входом или с ошибкой.
Таким образом, вы можете установить точку останова в error_entry или в каком-то конкретном обработчике.
В этом материале для тестирования мы используем «zeroentryvalid_op do_invalid_op».
Теги: #Intel #Android #jtag #разработка веб-сайтов #разработка Android #отладкаENTRY(error_entry)
-
Первое Приложение На Swiftui
19 Oct, 24 -
Opentask — Простой Сервис Задач
19 Oct, 24 -
Scala В Epam: Обучение И Проекты
19 Oct, 24 -
Регионы Стали Дороже Столицы
19 Oct, 24