Pull to refresh

Comments 6

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

Эх, было бы так же просто баги процессора в кремнии исправлять.

А можно ли было в ядре SCR1 воспользоваться точкой наблюдения или модулем защиты (если он есть) для программирования обнаружения обращения по 0-му адресу? Тогда ничего и править не нужно было бы.

Спецификация на RISC-V предлагает реализовывать модуль физической защиты памяти (Physical Memory Protection), чтобы ограничивать доступ к памяти в зависимости от типа доступа (чтение, запись или исполнение) и в зависимости от уровня привилегии исполняемого кода (User, Supervisor, Machine).

Но в scr1 PMP не реализован. И режим привилегий на scr1 в железе зашит на самый высокий M-mode. Всё таки процессор небольшой, код на нем простой bare metal, нет смысла делать несколько уровней привилегий.

Поэтому нет, в scr1 нет возможности, не добавляя чего-то, ограничить доступ к памяти. И физически всё адресное пространство от 0x00000000 до 0xFFFFFFFF на scr1 доступно для чтения и записи

Спасибо. А возможность установки точки наблюдения (watсhpoint) есть?

Да, можно.

В scr1 среди модулей для отладки есть Trigger Debug Unit. Его можно настроить на вызов исключения, если ядро попытается прочитать из заданного адреса.
Для этого в начале программы надо добавить:

    set_csr(mcontrol, MCONTROL_M | MCONTROL_EXECUTE |
                          MCONTROL_STORE |
                          MCONTROL_LOAD);

Теперь если процессор попытается обратиться к 0-му адресу TDU вызовет исключение. Эта команда включит триггер на запись, чтение и исполнение, и разрешает триггериться. Тип действия при триггере (0 - Raise a breakpoint exception) и адрес для сравнения (TDATA2 - 0x00000000) нас устраивают значения по умолчанию после сброса.

На временной диаграмме видно, что когда адрес чтения становится 0, вызывается исключение.

Если подключен JTAG отладчик, то можно настроить TDU на переход в режим Debug Mode.

Sign up to leave a comment.

Articles