2. 开发环境搭建:工欲善其事,必先利其器

做RTL仿真和调试,环境搭不好,后面全是坑。我见过太多同学卡在工具链编译上,一卡就是一整天。这一章,咱们把Linux环境、GNU工具链、Verilator、VCS和OpenOCD挨个捋一遍。

本章目标:搭建一套能跑通蜂鸟E203 RTL仿真、能编译C程序、能用OpenOCD调试的完整环境。

开发环境搭建整体流程 Linux环境准备 RISC-V GNU工具链 Verilator仿真环境 VCS仿真环境 OpenOCD调试器配置 验证:跑通第一个仿真用例 建议使用Ubuntu 20.04 LTS 或CentOS 7/8

2.1 Linux环境准备

我个人习惯用Ubuntu 20.04 LTS。为什么?因为RISC-V工具链在Ubuntu上踩坑最少,社区支持也最活跃。如果你用CentOS,记得先装EPEL源。

基础依赖包,一个都不能少:

sudo apt-get update
sudo apt-get install -y \
  autoconf automake autotools-dev curl \
  git libmpc-dev libmpfr-dev libgmp-dev \
  gawk build-essential bison flex \
  texinfo gperf libtool patchutils \
  bc zlib1g-dev libexpat-dev \
  python3 python3-pip

我曾经在一台新装的Ubuntu 22.04上直接编译工具链,结果libmpc版本不兼容,编译到一半报错。后来老老实实切回20.04,一次通过。所以,别在系统版本上折腾。

2.2 RISC-V GNU工具链编译与安装

工具链是RISC-V开发的核心。说白了,它就是把C代码变成RISC-V机器码的那套东西。蜂鸟E203用的是RV32IMAC指令集,所以编译时要指定架构。

我建议直接从GitHub拉取官方仓库:

git clone --recursive https://github.com/riscv-collab/riscv-gnu-toolchain.git
cd riscv-gnu-toolchain

然后配置编译选项。这里有个关键点——你要指定目标架构:

./configure --prefix=/opt/riscv \
  --with-arch=rv32imac \
  --with-abi=ilp32
make -j$(nproc)

编译时间大概30分钟到1小时,取决于你的机器性能。你可以趁这个时间去泡杯咖啡。

配置项 说明 蜂鸟E203推荐值
--with-arch 指定指令集架构 rv32imac
--with-abi 指定ABI接口 ilp32
--prefix 安装路径 /opt/riscv

小技巧:编译完成后,把/opt/riscv/bin加到PATH里。我习惯在~/.bashrc里加一行:export PATH=/opt/riscv/bin:$PATH。然后source ~/.bashrc生效。

验证工具链是否装好:

riscv32-unknown-elf-gcc --version
riscv32-unknown-elf-objdump --version

能看到版本信息,说明工具链就绪了。

2.3 Verilator仿真环境搭建

Verilator是个好东西。它把Verilog转成C++,然后编译成仿真可执行文件。速度比传统事件驱动仿真器快很多。蜂鸟E203的RTL仿真,用Verilator跑起来非常流畅。

安装Verilator,我推荐从源码编译,这样版本最新:

git clone https://github.com/verilator/verilator.git
cd verilator
autoconf
./configure --prefix=/opt/verilator
make -j$(nproc)
sudo make install

同样,把路径加到PATH里:

export PATH=/opt/verilator/bin:$PATH

验证安装:

verilator --version

注意:Verilator对SystemVerilog的支持有限。蜂鸟E203的RTL代码是纯Verilog,所以没问题。但如果你以后用到SV的断言或接口,可能得换VCS。

2.4 VCS仿真环境搭建

VCS是Synopsys的商业仿真器,功能强大,但需要license。如果你在公司,一般IT会帮你装好。如果是个人学习,可以用Verilator替代。

VCS的安装步骤大致如下:

  1. 挂载VCS安装镜像
  2. 运行installer脚本
  3. 配置license文件
  4. 设置环境变量

环境变量配置示例:

export VCS_HOME=/opt/synopsys/vcs
export PATH=$VCS_HOME/bin:$PATH
export LM_LICENSE_FILE=27000@license-server

验证安装:

vcs -version

我曾经遇到过VCS编译时报"libX11.so"找不到的问题。原因是系统缺少32位库。解决方法:sudo apt-get install lib32z1 lib32ncurses5。VCS是32位应用,这个坑很常见。

2.5 开源调试器OpenOCD配置

OpenOCD是开源调试器,配合JTAG或SWD接口,可以调试RISC-V芯片。蜂鸟E203的调试模块是标准的RISC-V Debug Specification 0.13。

安装OpenOCD:

git clone https://github.com/riscv-collab/riscv-openocd.git
cd riscv-openocd
./bootstrap
./configure --prefix=/opt/openocd \
  --enable-ftdi \
  --enable-jlink
make -j$(nproc)
sudo make install

配置OpenOCD的脚本文件。蜂鸟E203的调试接口是JTAG,所以需要写一个target配置文件:

# hummingbird.cfg
adapter driver ftdi
ftdi vid_pid 0x0403 0x6010
ftdi layout_init 0x0038 0x003b

set _CHIPNAME riscv
jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x10001fff

set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME riscv -chain-position $_TARGETNAME

riscv set_ir 0x1b
riscv set_dmi 0x11

启动OpenOCD:

openocd -f interface/ftdi.cfg -f target/hummingbird.cfg

小提示:如果你用的是FT2232H模块,记得检查驱动。Linux下需要安装libftdi1-dev。我遇到过驱动没装好,OpenOCD死活认不到设备的情况。

2.6 验证:跑通第一个仿真用例

环境搭好了,得验证一下。蜂鸟E203的GitHub仓库里自带测试用例。咱们用Verilator跑一个简单的hello world:

git clone https://github.com/SI-RISCV/e200_opensource.git
cd e200_opensource
make compile SIM=verilator
make run SIM=verilator

如果终端打印出"Hello World from RISC-V!",恭喜你,环境搭建成功。

总结一下:Linux环境、GNU工具链、Verilator/VCS、OpenOCD,这四个组件构成了蜂鸟E203的完整开发环境。每个环节我都踩过坑,上面写的步骤都是验证过的。照着做,别跳步,基本一次过。