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

本节将介绍如何使用 Arduino IDE 给开发板开发嵌入式软件。

第 3.4 节,我们介绍了如何安装与配置 Arduino IDE 和 YADAN Board 开发板工具包。本节将介绍如何使用 Arduino IDE 给开发板开发嵌入式软件。

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


图 4.7 在设备管理器中查询串口的 COM 号(不同电脑会分配不同的编号)

打开 Arduino IDE,根据之前部署的 SoC,在 Tools -> Board 中选择 YADAN Board (VeriMake) 中的 YADAN 或 Zero-risky。然后根据刚才查询到的 COM 号,然后选择 Port 为刚刚查询的串口号,如图 4.8 所示。


图 4.8 选择开发板的串口号(不同电脑会分配不同的编号)

接下来就可以使用 Arduino 语言来开发嵌入式软件了,Arduino 语言的语法请参考 Arduino 官网的 Language Reference。不过要注意的是,YADAN SoC 或者 PULPino SoC 暂时还不支持所有的 Arduino 函数,例如 Analog I/O 里的 analogRead() analogReference() 等与模数转换器 (Analog-to-Digital Converter, ADC) 相关的内容暂时还不可用(因为目前本文档中所述的 YADAN SoC 或者 PULPino SoC 还没有实例化 ADC 端口,需修改 SoC 添加外设来支持,但这部分不在嵌入式软件的教学内)。此外还需注意的是,原版 Arduino 是以 AVR 单片机为平台来开发的,但是我们使用的是 RISC-V 指令集的 SoC,所以不一定百分百兼容所有的 Arduino 函数。


图 4.9 Arduino 官网的 Language Reference

我们可以参考 Arduino 的基础示例,编写一个让 LED 闪烁的简单程序来了解开发的整个流程。首先先填入下列代码(这份代码也可以在 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 亮一秒、灭一秒的无限循环。我们点击如图 4.10 指出的 Upload 按钮,IDE 即会自动开始编译程序、并下载至开发板。


图 4.10 Arduino IDE 中的 Upload 按钮

若编译与下载成功完成,我们可在提示行内看到类似图 4.11 所示的下载成功的提示。


图 4.11 下载成功的提示

下载成功后,即可观察到开发板上的 LED 开始亮一秒、灭一秒的无限循环了,而且断电重新上电后程序依然还能执行。就与这几行简短的代码类似,我们只需要知道相关外设的操作函数就可以快速实现更多所需的功能,而无需特别关注这些函数的底层操作,可以体验到,Arduino 语言提高了嵌入式软件开发的便捷程度。这是因为,Arduino 语言将操作各个外设的底层代码封装成了一个个函数,组成了函数库。

现在的芯片规模越来越大,功能越来越丰富,很多芯片厂商除了提供数据手册外也会提供一套函数库给开发者,因为库能够让开发变得更好、更快、更高效。不过,对于需要走向专业的学习者而言,只学习应用层面的开发是不够的,开发函数库也是需要学习的重要技能。那么,对于我们的 YADAN SoC 或 PULPino SoC,要如何从零开始写第一行代码呢,下一节将介绍如何使用 RISC-V GCC 工具链来更为底层地开发我们的程序。

 


评论:

YADAN Board 开发板

作者:VeriMake   共11讲

YADAN Board 是一块核心为 Anlogic FPGA 的可编程硬件设计学习平台,我们既能直接写硬件描述语言 (HDL) 在里边实现特定的数字系统、甚至是 CPU 与 SoC,又能部署 SoC 后将其视为常规 SoC 来写软件开发。