---
# System prepended metadata

title: '[Caravel_SoC] Error: unrecognized opcode, extension ‘zicsr’ required'
tags: [SOC]

---

# [Caravel_SoC] Error: unrecognized opcode, extension 'zicsr' required
## Problem
The error message appears while compiling firmware code.
```
Error: unrecognized opcode `csrw mtvec,a0', extension `zicsr' required
```

## Solution
Modified the compiler architecture flag from `-march=rv32i` to `-march=rv32i_zicsr` to work with modern GCC.
### Reference:
- [Updated compiler target architecture](https://github.com/efabless/caravel_board/pull/86)
- [Recent versions of RISC-V gcc require "zicsr" in the compile line.](https://github.com/efabless/caravel_board/issues/87)
- [risc-v toolchain requirement should be documented](https://github.com/efabless/caravel_board/issues/37)
- [RISC-V GNU toolchain bumping default ISA spec to 20191213](https://groups.google.com/a/groups.riscv.org/g/sw-dev/c/aE1ZeHHCYf4)