сборка 32-битного прокси ядра для RISC-V

Feb 26, 2017 23:39

наконец-то удалось запустить под  эмулятором (spike) 32битную risc-v программу ( Read more... )

risc-v

Leave a comment

Comments 3

32bit_me February 26 2017, 23:34:17 UTC
Тоже хочу заняться Risc V. Интересная тема.

Reply

rvp74 February 27 2017, 06:57:16 UTC
Было бы неплохо. Вдвоем веселее.
Я вот не разобрался еще с необходимым минимумом реализации, для запуска тестов из riscv-tests репазитория. Там каждый бинарник с тестами это образ с ресет обработчиком.
То есть эти тесты уже предъявляют условия к системе (environment).

Разобрался пока как они переходят на сами тесты из ресета:

они инициализируют статусный регистр mepc адресом начала тестов
и делают следом mret. По идее тесты исполняются на пользовательском уровне превилегий. А где говорится что надо вернутся именно на тот уровень? Наверное, в mstatus.

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

Пока не ясна роль misa в обработчике ресет. Они проверяют старший бит и потом либо сразу дергают ecall либо проводят начальную инициализацию. Непонятно, зачем из ресет делать еcall и куда он после этого перейдет. Т.е. чему равно mtvec.

Reply

32bit_me February 27 2017, 08:22:25 UTC
Да, интересно. Книжки по risc v я дочитал, сейчас надо что-нибудь попробовать.

Reply


Leave a comment

Up