6. 附录:超级快速入门步骤

觉得前边的教程太长了?想二话不说就开始?

假如你的电脑用的 Windows 操作系统,那也可以参考这一份附录,它能让你在已预先掌握前置知识的前提下,看完几页图文就快速上手 YADAN Board。

6.1. 搭建开发环境

本实验所需的软件工具、源码等都在百度网盘中存了一份,可在这个地址中下载:

https://pan.baidu.com/s/1uzZ-Ic4XPclwRXgk5f-Z_g  提取码:3005

6.1.1. 安装 TangDynasty (TD) 软件

详细步骤可参考 第 3.2 节

运行安装程序,根据提示操作即可完成。

6.1.2. 安装开发板的驱动程序

详细步骤可参考 第 3.3 节

使用 USB Type-C 线将 YADAN Board 连接至电脑上,打开 设备管理器,找到一个如图 6.1 所示的名为 USB-JTAG-Cable 的 USB 设备,未安装驱动时它会显示这个名字。

图 6.1 未安装驱动的开发板在设备管理器中显示的名字
图 6.1 未安装驱动的开发板在设备管理器中显示的名字

鼠标右击它,选择 更新驱动程序软件,在弹出的选项中选择 浏览计算机以查找驱动程序软件,在弹出的文件选择框中选中 TD 软件安装路径下的 driver 目录,然后点击下一步,即可完成安装。

操作完成后,若开发板通过 USB Type-C 线连接至电脑后被识别为如图 6.2 所示的 Anlogic usb cable v0.1,即表示驱动程序已经成功被安装。

图 6.2 成功安装驱动程序后,设备管理器中显示的开发板名字
图 6.2 成功安装驱动程序后,设备管理器中显示的开发板名字

6.1.3. 安装 Arduino IDE 并配置对 YADAN Board 的支持

详细步骤可参考 第 3.4 节

安装 Arduino IDE,打开它,然后打开 File -> Preferences,在 Additional Boards Manager URLs 中添加

https://gitee.com/verimake/yadan_arduino/raw/master/package_verimake_core_index.json

然后打开 Tools -> Board -> Boards Manager… 搜索并安装如图 6.3 所示的 YADAN。(如果 Boards Manager 提示安装出错,可参考 第 7.2 节

图 6.3 在 Boards Manager 中安装 YADAN
图 6.3 在 Boards Manager 中安装 YADAN

安装完成后即可在 Tools -> Board 中找到如图 6.4 所示的 YADAN Board 了。

图 6.4 选择 Board
图 6.4 选择 Board

6.1.4. 安装 RISC-V GCC 工具链

详细步骤可参考 第 3.5 节

The xPack GNU RISC-V Embedded GCC 是一种 Windows 下可用的 RISC-V GCC 工具链,我们以这个为例来介绍安装和使用步骤。

下载它,解压到一个没有中文和特殊字符的路径下,将里边的 bin 文件夹的路径添加进环境变量,再在命令行中输入

riscv-none-embed-gcc --version

如果能看到如图 6.5 所示的版本信息,即说明安装完成。

图 6.5 验证工具链的安装
图 6.5 验证工具链的安装

6.2. 使用 YADAN Board

6.2.1. 部署 SoC 至 FPGA

详细步骤可参考 第 4.1 节

综合好的 YADAN SoC 的 .bit 文件为 Yadan.bit,PULPino SoC 的为 pulpino_zeroriscy.bit,分别可在下边两个链接中找到。

打开安装好的 TD 软件,点击如图 6.6 所示的按钮打开下载工具。

图 6.6 TD 软件中打开下载工具的按钮
图 6.6 TD 软件中打开下载工具的按钮

将 YADAN Board 通过 Type-C USB 线与 PC 机相连,下载工具中原先显示 No hardware 的下拉框就会自动更新为 EG4S20NG88(如果加载不了需要检查下载器驱动是否正确安装,详情见 第 3.3 节)。加载成功开发板后,界面如图 6.7 所示。

图 6.7 下载工具加载成功开发板后的界面
图 6.7 下载工具加载成功开发板后的界面

点击下载工具中的 Add 按钮,选中想下载进开发板的 .bit 文件。如果想断电不失,需在 Mode Selection 中把模式改为 PROGRAM FLASH。设置并检查好其它信息后,点击 Run,即可开始下载。

6.2.2. 使用 Arduino IDE 开发应用程序

详细步骤可参考 第 4.2 节

使用 Micro-USB 线将部署好 SoC 的开发板连接至电脑,电脑会读取到一个 UART 串口,我们可在设备管理器中看到名为 USB-SERIAL CH340 的这个串口,括号内即为该串口的 COM 号。如果没有看到串口号或显示未知设备,需要在百度网盘中或沁恒官网的对应页面下载 CH340 的驱动程序并安装。

打开 Arduino IDE,根据之前部署的 SoC,在 Tools -> Board 中选择 YADAN Board (VeriMake) 中的 YADANZero-risky。然后在 Port 中选择刚才查询到的 COM 号。

需注意的是,原版 Arduino 是以 AVR 单片机为平台来开发的,但是我们使用的是 RISC-V 指令集的 SoC,所以不一定百分百兼容所有的 Arduino 函数。

我们可以先参考 Arduino 的基础示例,跑个闪灯的 demo 来了解开发的整个流程。首先先填入下列代码(这份代码也可以在 Arduino IDE 的 File -> Examples -> 01.Basics -> Blink 中找到)

/*
  Blink
  Turns an LED on for one second, then off for one second, repeatedly.
  This example code is in the public domain: http://www.arduino.cc/en/Tutorial/Blink
*/

// the setup function runs once when you press reset or power the board
void setup() 
{
    // initialize digital pin LED_BUILTIN as an output.
    pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() 
{
    digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(1000);                       // wait for a second
    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    delay(1000);                       // wait for a second
}

代码中的 LED_BUILTIN 对应开发板上 GPIO 的第 13 号引脚,该引脚在电路中连接了一个 LED(原理图可参考第 1.2.2 节),这份代码将实现让这个 LED 亮一秒、灭一秒的无限循环。

我们点击 Upload 按钮,IDE 即会自动开始编译程序、并下载至开发板。下载成功后,即可观察到开发板上的 LED 开始亮一秒、灭一秒的无限循环了,而且断电重新上电后程序依然还能执行。

6.2.3. 使用 RISC-V GCC 工具链从底层开发程序

详细步骤可参考 第 4.3 节

在之前从百度网盘下载的文件中,我们可以找到如图 6.8 所示的样例工程的文件夹,后续开发各种工程可以把它作为工程目录的模板。

图 6.8 样例工程的文件夹
图 6.8 样例工程的文件夹

file_cfile_s 分别用于存放 C 代码和汇编代码,启动文件已位于 file_s 中,是目前 SoC 适用的一个完整版,后期我们编写的自己的 C 代码只需放入 file_c 目录即可。libc.a libgcc.a 是库文件,link.ld 是链接脚本,它将程序首地址定位在 0x0000_0000,RAM 定位在 0x0010_0000。

比如,为了像前一节一样让 LED 闪烁,我们可以在 file_c 目录中创建一个 main.c 文件,然后填入以下代码

#define REG(add) (*(volatile unsigned int *)(add))  // 宏定义能让后边的代码更简短
#define PADDIR REG(0x4A10_1000)
#define PADOUT REG(0x4A10_1008)

int main()
{
    PADDIR = 1 << 13; // 设置 GPIO 的第 13 号引脚为输出模式

    while (1)         // 无限循环
    {
        PADOUT = 1 << 13;                // 设置 GPIO 的第 13 号输出高电平
        for (int i = 0; i < 300000; i++) // 软件延时
            ;
        PADOUT = 0 << 13;                // 设置 GPIO 的第 13 号输出低电平
        for (int i = 0; i < 300000; i++) // 软件延时
            ;
    }

    return 1;
}

我们提供了 Python 脚本 wincompile.py 用来处理 file_cfile_s 文件夹里的源码,它会将所有源码自动编译并生成最终的 .bin 机器码文件。这个脚本使用起来非常容易,我们只需在命令行中输入这一行命令

python wincompile.py

即可运行它自动完成 “预处理 - 编译 - 汇编 - 链接” 这样的整个编译流程,生成最终的 .bin 机器码文件,.bin 文件被命名为 simple.bin

我们还提供有用于下载程序的上位机软件 (可在百度网盘中找到,上位机软件和 Bootloader 的源码也均可在百度网盘中找到),使用它可以很容易地完成下载过程。上位机软件使用 Python 编写,也生成了 exe 文件,有两种方式可以使用:

  1. 如果安装有 Python 环境,可使用 Python 直接运行 .py 源文件

    python YADANdownload.py comX 115200 simple.bin A
    
  2. 如果使用 exe 文件,则为

    YADANdownload.exe comX 115200 simple.bin A
    

其中,comXX 表示 Windows 给已连接的开发板分配的串口号,需根据实际情况修改,115200 是 UART 的波特率,simple.bin 是需要下载的 .bin 文件的文件名,A 是个表示 下载 的功能标识,后续我们也可以添加其它字母来扩展更多功能。

下载完成后,在开发板上也可以观察到 LED 在进行亮一秒、灭一秒的无限循环。