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

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

3.2 Управление сбросом Существует два метода, позволяющие отладчику перезагружать hart-ы. ndmreset сбрасывает все hart-ы в аппаратной платформе, а также все остальные части аппаратной платформы, кроме модуля отладки, модуля передачи отладочной информации и интерфейса модуля отладки. Список конкретных компонентов, подвергаемых сбросу зависит от реализации, но должна быть возможность отладить программы с самой первой выполняемой инструкции. hartreset сбрасывает все выбранные hart-ы. В данном случае реализация может также сбросить другие hart-ы, не выбранные отладчиком. Отладчик может определить, какие дополнительные hart-ы сбросились (если такие существуют), выбирая их и проверяя anyhavereset и allhavereset. Для того, чтобы использовать перечисленные методы, отладчик сначала устанавливает бит, а затем убирает. Сам перезапуск может произойти как только бит был установлен, а может и через неопределённо долгий промежуток времени после обнуления бита. Сброс также может занять

3.2 Управление сбросом

Существует два метода, позволяющие отладчику перезагружать hart-ы. ndmreset сбрасывает все hart-ы в аппаратной платформе, а также все остальные части аппаратной платформы, кроме модуля отладки, модуля передачи отладочной информации и интерфейса модуля отладки. Список конкретных компонентов, подвергаемых сбросу зависит от реализации, но должна быть возможность отладить программы с самой первой выполняемой инструкции. hartreset сбрасывает все выбранные hart-ы. В данном случае реализация может также сбросить другие hart-ы, не выбранные отладчиком. Отладчик может определить, какие дополнительные hart-ы сбросились (если такие существуют), выбирая их и проверяя anyhavereset и allhavereset.

Для того, чтобы использовать перечисленные методы, отладчик сначала устанавливает бит, а затем убирает. Сам перезапуск может произойти как только бит был установлен, а может и через неопределённо долгий промежуток времени после обнуления бита. Сброс также может занять некоторое время. Пока процесс сброса не завершился, hart-ы могут быть как доступными, то есть на данный момент существует возможность выполнить некоторые команды, так и недоступными, что значит выполнение каких либо команд не представляется возможным.

Как только сброс hart-а завершается, устанавливается флаг havereset . Когда hart выходит из перезагрузки и установлен либо haltreq , либо resethaltreq , hart тут же перейдёт в режим отладки (в приостановленном состоянии). Иначе, если hart изначально работал, он продолжит свою работу (в запущенном состоянии), а если hart изначально был приостановлен, он должен запуститься, хотя может остаться остановленным.

Не существует общего и надёжного способа узнать отладчику когда начался сброс.

Состояние самого модуля отладки, а также его регистров должно быть сброшенным во время запуска и пока dmactive в dmcontrol равен 0. Если существует альтернативный механизм сброса DM, он также должен сбросить все hart-ы, доступные DM.

Из-за проблем с пересечением доменов синхронизации и питания может оказаться невозможным выполнить произвольный доступ DMI через сброс аппаратной платформы. Пока взведён флаг ndmreset или подан любой внешний сигнал сброса, над DM доступны только операции чтения и записи в dmcontrol . Поведение при других операциях неопределённо.

Когда сброс hart-ов завершается, они должны задать липкий бит состояния havereset . Концептуальные биты статуса в havereset могут прочесть выбранные hart-ы в anyhavereset и allhavereset в dmstatus . Эти биты должны быть записанными независимо от причины сброса.

Биты havereset у выбранных hart-ов можно очистить, записав 1 в ackhavereset в dmcontrol.

Биты havereset могут или не могут быть очищенными, когда dmactive равен 0.