Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
2751
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

Введение в отладку

146

Пропуск всех точек останова: данный переключающийся значок позволяет временно игнорировать все используемые точки останова. Это позволяет запускать выполнение микропрограммы непрерывно. Мы можем восстановить точки останова, отключив этот значок.

Возобновление выполнения: данный значок возобновляет выполнение микропрограммы с текущего значения счетчика PC. Соседний значок, пауза, остановит выполнение по запросу.

Остановка отладки: данный значок вызывает завершение сеанса отладки. Сеанс GDB прекращается, а целевая плата приостанавливается.

Шаг с заходом в процедуру: данный значок является первым из двух значков, используемых для пошаговой отладки. Когда мы выполняем микропрограмму построчно, бывает важно войти в вызываемую процедуру. Данный значок позволяет сделать это, в противном случае следующий значок является необходимым для выполнения следующей инструкции в текущем стековом кадре.

Шаг без захода в процедуру: следующий значок на панели инструментов отладки имеет нелогичное имя. Он называется «step over – переступить», и его название может означать «пропустить следующую команду» (то есть перейти, go over). Но данный значок используется для выполнения следующей команды. Его название происходит от того факта, что, в отличие от предыдущего значка, он выполняет вызываемую процедуру, не входя в нее.

Сброс микроконтроллера: данный значок используется для «мягкого» сброса микроконтроллера, без остановки сеанса отладки и повторного запуска.

Наконец, еще одна интересная область данного представления – Registers. Она отображает содержимое всех регистров Cortex-M и является эквивалентом команды reg OpenOCD, которую мы видели ранее.

Может быть действительно полезно понять текущее состояние ядра Cortex-M. В Главе 24 об отладке мы увидим, как обращаться с исключениями Cortex-M, и узнаем, как интерпретировать содержимое некоторых важных регистров Cortex-M.

5.2. Полухостинг ARM

Полухостинг ARM (ARM semihosting) является отличительной чертой платформы Cortex-M и чрезвычайно полезен для целей тестирования и отладки. Это механизм, который позволяет целевым платам (например, плате Nucleo) «обмениваться сообщениями» со встроенного программного обеспечения с хост-ПК, на котором работает отладчик. Данный механизм позволяет некоторым функциям в библиотеке Си, таким как printf() и scanf(), использовать экран и клавиатуру хоста вместо экрана и клавиатуры целевой системы. Это полезно, поскольку разрабатываемая аппаратура часто не имеет всех средств ввода и вывода в конечной системе. Полухостинг позволяет хост-ПК предоставлять эти средства обслуживания.

Полухостинг требует дополнительного кода библиотеки среды выполнения, и его можно реализовать несколькими способами в архитектуре Cortex-M. Однако предпочтительным является использование ассемблерной инструкции ARM bktp, которая используется отладчиком для установки точек останова. К счастью для нас, Ливиу Ионеску уже добавил в свой плагин Eclipse GNU MCU рабочую поддержку для наиболее распространенных операций полухостинга. Поэтому очень легко включить данную функцию для