Найти в Дзене
Данил Волокитин

RISC-V, debug-spec, Глава 3 (часть 1)

3. Модуль отладки, не-ISA Модуль отладки реализует интерфейс перевода между абстрактными отладочными операциями и их конкретными реализациями. Он может поддерживать следующие операции: 2. Позволить любому индивидуальному hart-у приостановить или возобновить работу. 3. Предоставить список приостановленных hart-ов. 4. Предоставить абстрактный доступ к чтению и записи в GPR-ы приостановленного hart-а. 5. Предоставить доступ к сигналу сброса, позволяющий начать отладку с самой первой инструкции после сброса. 6. Предоставить механизм для разрешения отладки hart-ов сразу же после сброса (независимо от причины сброса). (Опционально) 7. Предоставить абстрактный доступ к не-GPR регистрам (FIXME: тавтология?) hart-а. (Опционально) 8. Предоставить программный буфер для принуждения hart-а к выполнению произвольных инструкций. (Опционально) 9. Позволить приостановить, возобновить, и/или сбросить несколько hart-ов одновременно. (Опционально) 10. Разрешить доступ к памяти с точки зрения hart-а. (О
Оглавление

3. Модуль отладки, не-ISA

Модуль отладки реализует интерфейс перевода между абстрактными отладочными операциями и их конкретными реализациями. Он может поддерживать следующие операции:

  1. Дать отладчику необходимую информацию о реализации.

2. Позволить любому индивидуальному hart-у приостановить или возобновить работу.

3. Предоставить список приостановленных hart-ов.

4. Предоставить абстрактный доступ к чтению и записи в GPR-ы приостановленного hart-а.

5. Предоставить доступ к сигналу сброса, позволяющий начать отладку с самой первой инструкции после сброса.

6. Предоставить механизм для разрешения отладки hart-ов сразу же после сброса (независимо от причины сброса). (Опционально)

7. Предоставить абстрактный доступ к не-GPR регистрам (FIXME: тавтология?) hart-а. (Опционально)

8. Предоставить программный буфер для принуждения hart-а к выполнению произвольных инструкций. (Опционально)

9. Позволить приостановить, возобновить, и/или сбросить несколько hart-ов одновременно. (Опционально)

10. Разрешить доступ к памяти с точки зрения hart-а. (Опционально)

11. Разрешить прямой доступ к системной шине. (Опционально)

12. Группирование hart-ов. Когда хотя бы один из hart-ов приостанавливается, все остальные также останавливаются. (Опционально)

13. Ответить на внешние триггеры, останавливая каждый hart в настроенной группе. (Опционально)

14. Отправить сигнал внешнему триггеру, когда hart в группе приостанавливается. (Опционально)

Чтобы соответствовать этой спецификации, реализация должна:

  1. Реализовать все операции из списка выше без пометки “(Опционально)”.

2. Реализовать хотя бы один из командных механизмов программного буфера, доступа к системной шине или памяти абстрактного доступа.

3. Реализовать хотя бы одно из перечисленного:

(a) Программный буфер.

(b) Абстрактный доступ ко всем регистрам, видимым ПО, работающим на hart-е, в том числе все регистры, имеющиеся на hart-е и перечисленным в Таблице 3.3.

(c) Абстрактный доступ ко всем GPR-ам, dcsr и dpc , а также объявите, что ваша реализация следует спецификации “Минимальная спецификация отладчика RISC-V 1.0.0-STABLE” вместо “Спецификация отладчика RISC-V 1.0.0-STABLE”.

Один модуль отладки может отлаживать до 2 в 20 степени hart-ов.

3.1 Интерфейс модуля отладки

Модули отладки являются slave по отношению к шине под названием интерфейс модуля отладки (DMI). Master этой шины – DTM. DMI может быть тривиальной шиной с одним master и одним slave (см. A.3) или использовать более полноценную шину, например TileLink или AMBA Advanced Peripheral Bus. Подробности оставим проектировщикам системы.

DMI использует от 7 до 32 битов адреса. Он поддерживает операции чтения и записи. Начало адресного пространства используется для первого (и зачастую единственного) модуля отладки. Дополнительное пространство можно использовать для произвольных устройств отладки, других ядер, дополнительных модулей отладки и т.д. Если этот DMI имеет дополнительные модули отладки, то базовый адрес следующего модуля в адресном пространстве DMI записан в nextdm .

Модуль отладки управляется через регистровый доступ к адресному пространству его DMI.