54906
Обход ошибки errata "Некорректное значение по сбросу поля sbaccess регистра sbcs"
Согласно рекомендациям обхода ошибки, необходимо устанавливать поле sbaccess перед операций с помощью System Bus Access. Как это можно сделать?
Программные компоненты отладки OpenOCD и IAR for RISC-V в общем случае осуществляют установку поля sbaccess в требуемое значение самостоятельно, действий со стороны пользователя не требуется (протестировано для OpenOCD v0.12 и IAR for RISC-V 3.10.2).
В случае, если самостоятельная установка sbaccess со стороны ПО не осуществляется, в OpenOCD доступ к регистру SBCS осуществляется через интерфейс DMI с помощью команд dmi_read и dmi_write (согласно https://openocd.org/doc/html/Architecture-and-Core-Commands.html).
Например, установку в значение 2 (32-битный доступ) в OpenOCD можно осуществить следующим образом:
set csr_sbcs [riscv dmi_read 0x38];
set csr_sbcs [expr {$csr_sbcs & ~(7<<17) | (2<<17)}];
riscv dmi_write 0x38 $csr_sbcs;
В случае, если самостоятельная установка sbaccess со стороны ПО не осуществляется, в OpenOCD доступ к регистру SBCS осуществляется через интерфейс DMI с помощью команд dmi_read и dmi_write (согласно https://openocd.org/doc/html/Architecture-and-Core-Commands.html).
Например, установку в значение 2 (32-битный доступ) в OpenOCD можно осуществить следующим образом:
set csr_sbcs [riscv dmi_read 0x38];
set csr_sbcs [expr {$csr_sbcs & ~(7<<17) | (2<<17)}];
riscv dmi_write 0x38 $csr_sbcs;