彭峰科技为Perf-V开发板提供蜂鸟E203软核。开发者可以方便地应用RISC-V指令集进行编程应用。本文将尝试基于蜂鸟E203软核进行编程。
由于有了蜂鸟E203软核,Perf-V开发板开发变换到Hbird-B-SDK平台,它地结构如下:
我们后面应用下列三个头文件:
#include "platform.h"定义了SoC平台相关宏定义
#include "encoding.h"存放编码和常数地宏定义
#include "plic/plic_driver.h"存放驱动代码定义
我们基于彭峰科技三色LED闪烁程序,设计新的定时器中断程序;
1. 设计需求
(1) D0每隔1s亮灭循环
(2) 利用定时器中断
2. 硬件原理图如下所示:
通过查询VIVADO工程文件,找出E203软核与FPGA引脚相关映射关系如下表所示:
名称 方向 GPGA pin IO标准 E203名称
led_0 OUTPUT P6 LVCMOS33
led_1 OUTPUT K12 LVCMOS33
led_2 OUTPUT M16 LVCMOS33
led_3 OUTPUT P16 LVCMOS33
sw_0 INOUT T15 LVCMOS33
3. 工程创建
在software下创建“test1_gpio”文件夹,新建test1_gpio.c文件,代码如下所示:
// These buttons are present only on the Freedom E300 Arty Dev Kit.
#ifdef HAS_BOARD_BUTTONS
#define BUTTON_0_OFFSET 15
#define BUTTON_1_OFFSET 30
#define BUTTON_2_OFFSET 31
#define INT_DEVICE_BUTTON_0 (INT_GPIO_BASE + BUTTON_0_OFFSET)
#define INT_DEVICE_BUTTON_1 (INT_GPIO_BASE + BUTTON_1_OFFSET)
#define INT_DEVICE_BUTTON_2 (INT_GPIO_BASE + BUTTON_2_OFFSET)
//Perf-V 引脚定义列表
//三色led引脚定义
#define led0_r PIN_1_OFFSET
#define led0_g PIN_2_OFFSET
#define led0_b PIN_3_OFFSET
#define led1_r PIN_19_OFFSET
//#define led1_g PIN_21_OFFSET
//#define led1_b PIN_22_OFFSET
#define led2_r PIN_11_OFFSET
#define led2_g PIN_12_OFFSET
#define led2_b PIN_13_OFFSET
#define btn_0 PIN_15_OFFSET
//#define btn_1 PIN_30_OFFSET
//#define btn_2 PIN_31_OFFSET
//SPI2 pins
//#define ck_ss PIN_26_OFFSET
//#define ck_mosi PIN_27_OFFSET
//#define ck_miso PIN_28_OFFSET
//#define ck_sck PIN_29_OFFSET
//led
#define led_0
#define led_1
#define led_2
#define led_3 PIN_14_OFFSET
4. 编写makefile文件
编写makefile文件,目标文件定义为test1_g,指定头文件地址和源程序,代码如下所示:
“make software PROGRAM=demo_gpio BOARD=Perf-V-creative-board”
5. 下载
下载并测试