2. 开发环境搭建:工欲善其事,必先利其器
做RTL仿真和调试,环境搭不好,后面全是坑。我见过太多同学卡在工具链编译上,一卡就是一整天。这一章,咱们把Linux环境、GNU工具链、Verilator、VCS和OpenOCD挨个捋一遍。
本章目标:搭建一套能跑通蜂鸟E203 RTL仿真、能编译C程序、能用OpenOCD调试的完整环境。
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的安装步骤大致如下:
- 挂载VCS安装镜像
- 运行installer脚本
- 配置license文件
- 设置环境变量
环境变量配置示例:
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的完整开发环境。每个环节我都踩过坑,上面写的步骤都是验证过的。照着做,别跳步,基本一次过。