[i] Режим Discovery в OpenOCD

ID статьи: 53717
Дата последнего изменения: 12.02.2024 14:03:37
Механизм Discovery опрашивает триггеры через регистр tselect i (где i - номер регистра) и определяет, какие есть триггеры и в каком количестве.
Тип триггера берётся из регистра tinfo.
Процедура опроса начинается с tselect 0 и завершается, если для данного tselect i возникает исключение при попытке чтения регистра tinfo.
В tinfo хранится тип триггера в унитарном коде. Этот же тип хранится в регистре tdata1 в бинарном виде.

На выходе из этой процедуры OpenOCD получает информацию о том, сколько триггеров есть в ядре и каких они типов.
При ошибке в этой процедуре пропадает возможность пользоваться аппаратными точками останова.

Процедура опроса триггеров запускается всегда, так как таким образом OpenOCD понимает, сколько и каких аппаратных точек останова поддерживает ядро.

В микроконтроллерах MDR1206FI и MDR1206AFI допущена ошибка в tinfo-регистре модуля отладки, из-за чего механизм Discovery работает не корректно.
В качестве обхода ошибки предлагается:
I. Использовать OpenOCD из основной ветки https://github.com/openocd-org/openocd до версии 0.12.0 включительно.
II. 1. Использовать OpenOCD для RISCV https://github.com/riscv/riscv-openocd до версии 2018.12.0
    2. Использовать patch для OpenOCD для RISCV версии 0.12.0+ dev-03629-g87331a82a. Patch заменяет в исходниках OpenOCD значение старших четырёх битов регистра tinfo на значение в унитарном коде старших четырёх бит регистра tdata1.

Контактная информация

Сайт:https://support.milandr.ru
E-mail:support@milandr.ru
Телефон: +7 495 221-13-55