2. 开发环境搭建:从零开始点亮你的第一颗LED
说实话,环境搭建往往是新手最头疼的一步。我见过太多人卡在工具链安装上,还没开始写代码就放弃了。别急,咱们一步步来。
这一章的目标很明确:装好所有工具,跑通第一个程序。你不需要理解每条指令的含义,先让LED亮起来,建立信心再说。
2.1 整体工具链概览
先看看我们要装哪些东西,它们之间怎么配合。我画了张图,你一看就明白。
说白了,Vivado负责硬件,Nuclei Studio负责软件,串口工具负责看结果。三个工具各司其职,缺一不可。
2.2 Vivado 安装与配置
Vivado是Xilinx的FPGA开发套件,用来综合、实现和下载FPGA位流。蜂鸟E203用的是Artix-7系列,Vivado 2018.3到2020.1版本我都试过,都能用。
2.2.1 Windows下安装
- 下载安装包: 去Xilinx官网下载Vivado HLx WebPACK版本(免费)。注意要注册账号。
- 安装过程: 双击运行安装程序,选择“Vivado HL WebPACK”,勾选“Artix-7”器件支持。
- 安装路径: 我个人习惯装在C盘根目录,路径不要有中文和空格。
- License配置: 申请免费WebPACK License,在Vivado License Manager中加载。
2.2.2 Linux下安装
Linux下安装其实更简单。我曾在Ubuntu 18.04和20.04上都部署过,没出过问题。
# 解压安装包
tar -xzvf Xilinx_Vivado_SDK_2019.1_0524_1430.tar.gz
cd Xilinx_Vivado_SDK_2019.1_0524_1430
# 运行安装脚本
./xsetup
# 安装完成后,设置环境变量
echo 'source /tools/Xilinx/Vivado/2019.1/settings64.sh' >> ~/.bashrc
source ~/.bashrc
嗯,这里要注意:Linux下安装时,记得用普通用户运行,不要用root。我曾经用root装过一次,结果后面权限问题折腾了半天。
2.3 Nuclei Studio 安装与配置
Nuclei Studio是芯来科技基于Eclipse开发的RISC-V IDE,集成了编译器、调试器和OpenOCD。说白了,它就是咱们写RISC-V程序的“大本营”。
2.3.1 下载与安装
- 访问芯来科技官网,下载Nuclei Studio最新版(目前是2023.xx版本)。
- Windows下直接解压到某个目录,比如
D:\NucleiStudio。 - Linux下解压后,运行
./NucleiStudio启动。
2.3.2 配置OpenOCD
OpenOCD负责把编译好的程序下载到开发板上。Nuclei Studio自带OpenOCD,但需要配置一下调试器类型。
蜂鸟E203开发板通常使用FT2232作为调试器。在Nuclei Studio中,打开 Run → Debug Configurations,选择对应的调试配置,确保 Debug Probe 设置为 FTDI FT2232。
我记得第一次用的时候,怎么都连不上板子。后来发现是驱动没装好。Windows下需要安装FTDI驱动,Linux下需要给USB设备设置权限。
# Linux下添加udev规则
sudo echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6010", MODE="0666"' > /etc/udev/rules.d/99-ftdi.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
2.4 串口工具安装
串口工具用来和开发板通信,看程序运行时的打印信息。我推荐两个:
| 工具 | 平台 | 特点 |
|---|---|---|
| MobaXterm | Windows | 自带串口终端,支持多标签,界面友好 |
| PuTTY | Windows | 轻量级,经典工具,配置简单 |
| minicom | Linux | 命令行工具,适合脚本化操作 |
| screen | Linux | 系统自带,无需额外安装 |
我个人习惯用MobaXterm,界面干净,还能保存会话配置。串口参数设置如下:
- 波特率: 115200
- 数据位: 8
- 停止位: 1
- 校验: 无
- 流控: 无
2.5 第一个LED点灯程序
好了,工具都装好了。现在咱们写第一个程序,让板子上的LED亮起来。
2.5.1 硬件连接
蜂鸟E203开发板上通常有4个LED,连接到GPIO。具体引脚映射请参考你的板卡原理图。我这里以最常见的连接为例:
- LED0 → GPIO0 (对应地址 0x10012000)
- LED1 → GPIO1
- LED2 → GPIO2
- LED3 → GPIO3
2.5.2 编写代码
在Nuclei Studio中新建一个C工程,编写如下代码:
#include "nuclei_sdk_soc.h"
/* GPIO基地址 */
#define GPIO_BASE_ADDR 0x10012000
/* GPIO输出寄存器偏移 */
#define GPIO_OUTPUT_VAL 0x00
/* GPIO方向寄存器偏移 */
#define GPIO_OUTPUT_EN 0x04
void delay(volatile int count)
{
while (count--);
}
int main(void)
{
/* 设置GPIO0为输出 */
*(volatile uint32_t *)(GPIO_BASE_ADDR + GPIO_OUTPUT_EN) |= (1 << 0);
while (1)
{
/* 点亮LED0 */
*(volatile uint32_t *)(GPIO_BASE_ADDR + GPIO_OUTPUT_VAL) |= (1 << 0);
delay(5000000);
/* 熄灭LED0 */
*(volatile uint32_t *)(GPIO_BASE_ADDR + GPIO_OUTPUT_VAL) &= ~(1 << 0);
delay(5000000);
}
return 0;
}
2.5.3 编译与下载
- 在Nuclei Studio中点击 Build 按钮(锤子图标),编译工程。
- 用USB线连接开发板和电脑。
- 点击 Debug 按钮(小虫子图标),启动调试。
- OpenOCD会自动连接板子,下载程序。
- 点击 Resume(F8),程序开始运行。
你想想看,如果一切顺利,板子上的LED0应该开始闪烁了。是不是很有成就感?
2.6 常见问题与避坑指南
环境搭建过程中,我遇到过不少坑。这里列几个最常见的:
我曾经遇到过Vivado识别不到下载器。检查一下:
- USB线是否支持数据传输(有些线只能充电)
- 驱动是否安装(Windows下需要安装Cable Drivers)
- 板子供电是否正常
如果Nuclei Studio报“Failed to connect to OpenOCD”,试试:
- 检查FTDI驱动是否安装
- Linux下检查udev规则是否生效
- 换个USB端口试试
程序跑起来了,但串口终端没显示?
- 确认串口号是否正确(Windows设备管理器里查看)
- 确认波特率设置是否匹配(115200)
- 检查板子上的串口跳线是否接好
2.7 验证环境是否打通
LED闪烁了,说明什么?说明你的整个工具链都通了:
- Vivado已经正确配置,FPGA位流加载成功
- Nuclei Studio编译环境正常,RISC-V交叉编译器工作正常
- OpenOCD调试链路畅通,程序能下载到板子上
- 串口工具(如果用了打印函数)也能正常通信
说白了,这一步就是“Hello World”的硬件版。别小看它,很多人在这一步卡了一整天。你现在已经迈出了最坚实的一步。
□ Vivado安装完成,能打开工程
□ Nuclei Studio安装完成,能编译工程
□ OpenOCD能识别开发板
□ 串口工具能收到板子数据
□ LED0正常闪烁
嗯,到这里,环境搭建就全部完成了。你手里的工具已经齐备,接下来就可以开始真正探索RISC-V的世界了。