pw_cpu_exception_risc_v#
This module lays the foundation for implementing a backend cpu exception for the RISCV architectures:
For now, this contains the cpu state, protos, and tools needed for parsing and the snapshot. The entry for exception handling will still need to be implemented by the user.
Python processor#
This module’s included Python exception analyzer tooling provides snapshot
integration via a process_snapshot()
function that produces a multi-line
dump from a serialized snapshot proto, for example:
All registers:
mepc 0x20047144 example::Serivice::Crash(_example_service_CrashRequest const&, _pw_protobuf_Empty&) (src/example_service/service.cc:131)
mcause 0x00000003
mstatus 0x80007800
mtval 0x00000000
ra 0x2001e92c pw_log_tokenized_HandleLog (src/system/log.cc:124)
sp 0x00095660
t0 0x20047120
t1 0xfffffff0
t2 0x00000800
fp 0x00095760
s1 0x000956dc
a0 0x00000004
a1 0x000956dc
a2 0x00000000
a3 0x00000004
a4 0x00000007
a5 0x000814b0
a6 0x000955e6
a7 0x00000000
s2 0x00000004
s3 0x20059114
s4 0x00000000
s5 0x000aae98
s6 0x00084a8f
s7 0xb7002653
s8 0xd20200f3
s9 0x00000002
s10 0xa5a5a5a5
s11 0xa5a5a5a5
t3 0xfffffffd
t4 0x00000000
t5 0xa5a5a5a5
t6 0xa5a5a5a5
Module Configuration Options#
The following configurations can be adjusted via compile-time configuration of this module, see the module documentation for more details.
-
PW_CPU_EXCEPTION_RISCV_LOG_LEVEL#
The log level to use for this module. Logs below this level are omitted.
This defaults to
PW_LOG_LEVEL_DEBUG
.