SlideShare a Scribd company logo
1 of 17
Download to read offline
Отладочный монитор для
встраиваемых систем
(debug monitor, debug agent, debug stub)

Максим Салов
max.salov@gmail.com
Для чего?

Для отладки прошивки
микроконтроллеров
Существующие методы
отладки







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








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

 Средства разработки (binutils, gcc,
newlib, gdb)
 Отладочная плата
 Интерфейс подключения к ПК
(COM-порт/ USB-UART преобразователь/
Ethernet)
Протокол обмена
GDB:
Stub:
Stub:
GDB:

$request#checksum
+
$response#checksum
+

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

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

 Наличие модуля связи (UART, Ethernet
MAC/PHY)
 Наличие инструкции программного
прерывания (размер которой меньше
либо равен размеру любой другой
инструкции)
Структура монитора
Платформозависимые функции
 Работа с контекстом
 Управление интерфейсом обмена
 Управление точками останова и
пошаговым выполнением
Платформонезависимые функции
 Приём/отправка команд
 Обработка команд
 Выполнение команд чтения/записи
регистров и памяти
Пример

https://github.com/msalov/rx-gdb-stub
Target:
Renesas RX62N — 32-bit CISC
Interface: UART / RS-232 (115200 8N1)
Clock:
96 Mhz (макс. 100 Mhz)
Использование
Ограничения
 Запрет на запрет прерываний
 Запрет на спящие режимы
 Запрет на изменение частоты работы
периферии
 Периферия продолжает работу при
остановке ПО
 Чтение регистров периферии может
иметь побочные эффекты
 Нет записи в ПЗУ (отладка кода в ПЗУ
невозможна)
Возможные улучшения






Stand-alone версия в ПЗУ
Портирование на RX63N (GR-Sakura)
Возможность изменения ПЗУ
Увеличение скорости обмена
Итоги
Плюсы:
 Простота / Дешевизна
 Простота обновления
Минусы:
 Debug и Release версии отличаются
 Резервирование ресурсов для отладки
Статистика
190 мнемоник команд ассемблера
147 строк на ассемблере (из которых:
70 — сохранение контекста,
71 — восстановление,
6 — в функции отладочного вывода)
~529 строк — функция определения
адреса следующей инструкции
~478 строк — платформонезависимые
функции
~1402 строки итого
Спасибо за внимание.

More Related Content

What's hot

Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктурыГидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Vsevolod Shabad
 
Alex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяйAlex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяй
UISGCON
 
презентация на защиту 06.06
презентация на защиту 06.06презентация на защиту 06.06
презентация на защиту 06.06
Boris Kizko
 

What's hot (7)

Convertor
ConvertorConvertor
Convertor
 
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктурыГидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S Optimizations
 
Alex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяйAlex Eden - Не доверяй и проверяй
Alex Eden - Не доверяй и проверяй
 
Automation Compliance Checks
Automation Compliance ChecksAutomation Compliance Checks
Automation Compliance Checks
 
презентация на защиту 06.06
презентация на защиту 06.06презентация на защиту 06.06
презентация на защиту 06.06
 
Опыт разработки, отладки и внедрения системы горячего резервирования торговой...
Опыт разработки, отладки и внедрения системы горячего резервирования торговой...Опыт разработки, отладки и внедрения системы горячего резервирования торговой...
Опыт разработки, отладки и внедрения системы горячего резервирования торговой...
 

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

Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
DrupalCamp MSK
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12
Alex Tutubalin
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 
доклад про Llvm
доклад про Llvmдоклад про Llvm
доклад про Llvm
Vadim Evard
 
Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2
DarkestMaster
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
Technopark
 

Similar to Максим Салов - Отладочный монитор (20)

Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12
 
Параллельное программирование на современных видеокартах
Параллельное программирование на современных видеокартахПараллельное программирование на современных видеокартах
Параллельное программирование на современных видеокартах
 
Комфортная разработка мобильных проектов
Комфортная разработка мобильных проектовКомфортная разработка мобильных проектов
Комфортная разработка мобильных проектов
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистов
 
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностейПакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
 
New Android NDK & JNI
New Android NDK & JNINew Android NDK & JNI
New Android NDK & JNI
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
Методики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сетиМетодики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сети
 
2056
20562056
2056
 
доклад про Llvm
доклад про Llvmдоклад про Llvm
доклад про Llvm
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2Windows Mobile Development with Compact Framework 2
Windows Mobile Development with Compact Framework 2
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 
введение в Gpu
введение в Gpuвведение в Gpu
введение в Gpu
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 

More from Minsk Linux User Group

More from Minsk Linux User Group (20)

Vladimir ’mend0za’ Shakhov — Linux firmware for iRMC controller on Fujitsu P...
 Vladimir ’mend0za’ Shakhov — Linux firmware for iRMC controller on Fujitsu P... Vladimir ’mend0za’ Shakhov — Linux firmware for iRMC controller on Fujitsu P...
Vladimir ’mend0za’ Shakhov — Linux firmware for iRMC controller on Fujitsu P...
 
Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...
Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...
Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...
 
Святлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасць
Святлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасцьСвятлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасць
Святлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасць
 
Тимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использования
Тимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использованияТимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использования
Тимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использования
 
Андрэй Захарэвіч - Як мы ставілі KDE пад FreeBSD
Андрэй Захарэвіч - Як мы ставілі KDE пад FreeBSDАндрэй Захарэвіч - Як мы ставілі KDE пад FreeBSD
Андрэй Захарэвіч - Як мы ставілі KDE пад FreeBSD
 
Vitaly ̈_Vi ̈ Shukela - My FOSS projects
Vitaly  ̈_Vi ̈ Shukela - My FOSS projectsVitaly  ̈_Vi ̈ Shukela - My FOSS projects
Vitaly ̈_Vi ̈ Shukela - My FOSS projects
 
Vitaly ̈_Vi ̈ Shukela - Dive
Vitaly  ̈_Vi ̈ Shukela - DiveVitaly  ̈_Vi ̈ Shukela - Dive
Vitaly ̈_Vi ̈ Shukela - Dive
 
Alexander Lomov - Cloud Foundry и BOSH: истории из жизни
Alexander Lomov - Cloud Foundry и BOSH: истории из жизниAlexander Lomov - Cloud Foundry и BOSH: истории из жизни
Alexander Lomov - Cloud Foundry и BOSH: истории из жизни
 
Vikentsi Lapa — How does software testing become software development?
Vikentsi Lapa — How does software testing  become software development?Vikentsi Lapa — How does software testing  become software development?
Vikentsi Lapa — How does software testing become software development?
 
Михаил Волчек — Свободные лицензии. быть или не быть? Продолжение
Михаил Волчек — Свободные лицензии. быть или не быть? ПродолжениеМихаил Волчек — Свободные лицензии. быть или не быть? Продолжение
Михаил Волчек — Свободные лицензии. быть или не быть? Продолжение
 
Максим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPN
Максим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPNМаксим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPN
Максим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPN
 
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
 
MajorDoMo: Открытая платформа Умного Дома
MajorDoMo: Открытая платформа Умного ДомаMajorDoMo: Открытая платформа Умного Дома
MajorDoMo: Открытая платформа Умного Дома
 
Максим Мельников - FOSDEM 2014 overview
Максим Мельников - FOSDEM 2014 overviewМаксим Мельников - FOSDEM 2014 overview
Максим Мельников - FOSDEM 2014 overview
 
Константин Шевцов - Пара слов о Jenkins
Константин Шевцов - Пара слов о JenkinsКонстантин Шевцов - Пара слов о Jenkins
Константин Шевцов - Пара слов о Jenkins
 
Ермакович Света - Операция «Пингвин»
Ермакович Света - Операция «Пингвин»Ермакович Света - Операция «Пингвин»
Ермакович Света - Операция «Пингвин»
 
Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...
Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...
Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...
 
Vikentsi Lapa - Tools for testing
Vikentsi Lapa - Tools for testingVikentsi Lapa - Tools for testing
Vikentsi Lapa - Tools for testing
 
Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?
 
Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...
Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...
Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...
 

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