Максим Салов - Отладочный монитор

17

Click here to load reader

Upload: minsk-linux-user-group

Post on 15-Jun-2015

212 views

Category:

Technology


1 download

DESCRIPTION

Доклад Максима Салова на февральской линуксовке MLUG 2014

TRANSCRIPT

Page 1: Максим Салов - Отладочный монитор

Отладочный монитор для встраиваемых систем

(debug monitor, debug agent, debug stub)

Максим Салов[email protected]

Page 2: Максим Салов - Отладочный монитор

Для чего?

Для отладки прошивки микроконтроллеров

Page 3: Максим Салов - Отладочный монитор

Существующие методы отладки

Симуляция на ПК Внутрисхемная эмуляция (ICE) Отладочный вывод (printf, log, syslog) Вдумчивый взгляд Отладочный монитор

Page 4: Максим Салов - Отладочный монитор

Что должен уметь отладчик

Читать/писать регистры Читать/писать память Продолжить выполнение программы Остановить выполнение программы Выполнить одну инструкцию Вывести отладочные сообщения

Page 5: Максим Салов - Отладочный монитор

Инфраструктура

Средства разработки (binutils, gcc, newlib, gdb)

Отладочная плата Интерфейс подключения к ПК

(COM-порт/ USB-UART преобразователь/ Ethernet)

Page 6: Максим Салов - Отладочный монитор

Протокол обмена

GDB: $request#checksumStub: +Stub: $response#checksumGDB: +

Исключения: отладочный выводStub: $Oascii-hex-string#checksumGDB: + прерывание исполненияBREAK || SIGBREAK

Page 7: Максим Салов - Отладочный монитор

Базовые команды

'?' — запрос текущего состояния 'g'/'G' — читать/писать регистры 'p'/'P' — читать/писать регистр 'm'/'M' — читать/писать память 'c' — продолжить выполнение 's' — выполнить одну инструкцию 'q' — запрос информации 'z'/'Z' — установить/удалить точку

останова

Page 8: Максим Салов - Отладочный монитор

Требования с отладочному монитору

Минимальные используемые ресурсы (память, периферийные модули)

Максимальная прозрачность работы Минимальные ограничения,

налагаемые на основную программу Простота использования (физическое

подключение и программное)

Page 9: Максим Салов - Отладочный монитор

Требования к МК

Наличие модуля связи (UART, Ethernet MAC/PHY)

Наличие инструкции программного прерывания (размер которой меньше либо равен размеру любой другой инструкции)

Page 10: Максим Салов - Отладочный монитор

Структура монитора

Платформозависимые функции Работа с контекстом Управление интерфейсом обмена Управление точками останова и

пошаговым выполнениемПлатформонезависимые функции Приём/отправка команд Обработка команд Выполнение команд чтения/записи

регистров и памяти

Page 11: Максим Салов - Отладочный монитор

Пример

https://github.com/msalov/rx-gdb-stub

Target: Renesas RX62N — 32-bit CISCInterface: UART / RS-232 (115200 8N1)Clock: 96 Mhz (макс. 100 Mhz)

Page 12: Максим Салов - Отладочный монитор

Использование

Page 13: Максим Салов - Отладочный монитор

Ограничения

Запрет на запрет прерываний Запрет на спящие режимы Запрет на изменение частоты работы

периферии Периферия продолжает работу при

остановке ПО Чтение регистров периферии может

иметь побочные эффекты Нет записи в ПЗУ (отладка кода в ПЗУ

невозможна)

Page 14: Максим Салов - Отладочный монитор

Возможные улучшения

Stand-alone версия в ПЗУ Портирование на RX63N (GR-Sakura) Возможность изменения ПЗУ Увеличение скорости обмена

Page 15: Максим Салов - Отладочный монитор

Плюсы: Простота / Дешевизна Простота обновления

Минусы: Debug и Release версии отличаются Резервирование ресурсов для отладки

Итоги

Page 16: Максим Салов - Отладочный монитор

190 мнемоник команд ассемблера147 строк на ассемблере (из которых:

70 — сохранение контекста,71 — восстановление,6 — в функции отладочного вывода)

~529 строк — функция определения адреса следующей инструкции

~478 строк — платформонезависимые функции

~1402 строки итого

Статистика

Page 17: Максим Салов - Отладочный монитор

Спасибо за внимание.