差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
reindeer_step_arduino [2020/01/08 20:12]
group003 创建
reindeer_step_arduino [2020/01/16 23:21] (当前版本)
group003 [返回目录]
行 1: 行 1:
-#### 在小脚丫FPGA板上玩转开源农场(FARM)FPGA+Arduino+RISC-V+Make +# 使用Arduino ​IDE开发RISC-V处理器
- +
------ +
-经过美国PulseRain Technology与小脚丫团队的不懈努力,在小脚丫Cyclone10开发板上成功移植了PulseRain Reindeer RISC-V 软核,并且开发了配套Arduino IDE的板子支持包,使户可以通过Arduino开发环境直接对嵌入到FPGA中的RISC-V软核进行编程。说到这种FPGA+Arduino+软核CPU的开发方式,是不是有种似曾相识的感觉,不错,之前我们就在STEP MAX10开发板上移植过PulseRain Technology的8051软核FT51-1T([[fpga项目_使用arduino玩转fpga|使用Arduino玩转FPGA]]),采用的正是这种嵌入式开发方式。 +
- +
-FPGA优秀的性价比和灵活性;开源硬件Arduino及其丰富的软件库;开源的编译器和工具链GNU;再加上如今热度空前的开源处理器RISC-V,形成了一种灵活快速的新型嵌入式开发方式FRAM:​ FPGA+Arduino+RISC-V+Make。 +
-{{ :​farm_开发模式.png?​nolink&​400 |}} +
-如上图所示,在FARM开发模式下,FPGA成为系统的核心芯片。在FPGA中会包含一个支持RISC-V的开源处理器软核 (RISC-V Soft CPU)。该处理器可以包含一个硬件逻辑实现的代码载入器 (Hardware Based Code Loader)。FPGA也会包含所有的(或大部分的)外部设备实现,这些外部设备和RISC-V通过总线相连。对于无法完全用FPGA实现的功能 (例如传感器),FPGA也会实现其控制部分或者数据的读写。 +
- +
-上图中RISC-V 软核的编程,可以通过两种方式。对中小型的裸金属 (bare metal)系统,开发者可以直接在Arduino 集成开发环境下编程,并充分利用Arduino提供的软件支持库。编译结果也可以在集成环境下直接写入到FPGA上的RISC-V软核里。当软件规模变大时,软件的配置和编译可以通过Make来实现,并执行和RISC-V软核配套的代码载入工具,下载编译结果。 +
- +
-在Changyi Gu即将出版的新书《基于FPGA与RISC-V的嵌入式系统设计》中将会详细讨论FRAM这一新型的嵌入式开发方式,敬请期待。+
  
 本次移植的RISC-V软核是由Changyi Gu主持设计的 PulseRain Reindeer 处理器内核,该软核在2018年由RISC-V 基金会官方举办的全球 Soft CPU 设计大赛中脱颖而出,荣获季军 ([[https://​riscv.org/​2018/​10/​risc-v-contest/​|RISC-V SoftCPU Contest]])。PulseRain Reindeer是一个Von Neumann架构的软CPU,支持RISC-V RV32I [M]指令集,并具有2 x 2流水线架构,是综合平衡了速度和面积的结果,为所有FPGA平台上的软CPU提供了灵活的选择。Pulserain公司特别将该处理器为小脚丫实验平台做了升级改进,可以同时支持DRAM和FPGA片上BRAM,还对外部中断做了更好的支持。(参考源码[[https://​github.com/​PulseRain/​Reindeer_Step|RISC-V Reindeer_Step Soft CPU]])。 本次移植的RISC-V软核是由Changyi Gu主持设计的 PulseRain Reindeer 处理器内核,该软核在2018年由RISC-V 基金会官方举办的全球 Soft CPU 设计大赛中脱颖而出,荣获季军 ([[https://​riscv.org/​2018/​10/​risc-v-contest/​|RISC-V SoftCPU Contest]])。PulseRain Reindeer是一个Von Neumann架构的软CPU,支持RISC-V RV32I [M]指令集,并具有2 x 2流水线架构,是综合平衡了速度和面积的结果,为所有FPGA平台上的软CPU提供了灵活的选择。Pulserain公司特别将该处理器为小脚丫实验平台做了升级改进,可以同时支持DRAM和FPGA片上BRAM,还对外部中断做了更好的支持。(参考源码[[https://​github.com/​PulseRain/​Reindeer_Step|RISC-V Reindeer_Step Soft CPU]])。
行 18: 行 7:
  
  
-=== 准备工作 ​===+## 准备工作
   * 小脚丫FPGA开发板 STEP-CYC10   * 小脚丫FPGA开发板 STEP-CYC10
   * Intel Quantus Prime Lite18.1版本以上   * Intel Quantus Prime Lite18.1版本以上
行 32: 行 21:
  
  
-=== 操作步骤 ​===+## 操作步骤
   * 获取PulseRain Reindeer_Step MCU软核   * 获取PulseRain Reindeer_Step MCU软核
   * 配置软核到STEP-CYC10 FPGA开发板   * 配置软核到STEP-CYC10 FPGA开发板
行 76: 行 65:
  
 Arduino IDE可以支持第三方板子的开发,但是需要安装第三方板卡的支持包。 ​ Arduino IDE可以支持第三方板子的开发,但是需要安装第三方板卡的支持包。 ​
-打开Arduino IDE,打开 文件——首选项——附加开发板管理器网址,添加如下链接:​ **https://github.com/​PulseRain/​Arduino_RISCV_IDE/raw/​master/​package_pulserain.com_index.json**,确定后,打开 工具——开发板——开发板管理器,在搜索框中输入REINDEER,安装PACKAGE, 目前是1.1.5 版本+打开Arduino IDE,打开 文件——首选项——附加开发板管理器网址,添加如下链接:​ **https://raw.githubusercontent.com/​PulseRain/​Arduino_RISCV_IDE/​master/​package_pulserain.com_index.json**,确定后,打开 工具——开发板——开发板管理器,在搜索框中输入REINDEER,安装PACKAGE。
 {{ :​安装板子支持包.png?​nolink&​500 |}} {{ :​安装板子支持包.png?​nolink&​500 |}}
 下载安装完成后在板卡管理器中有STEP CYC10 Board这个选项。 下载安装完成后在板卡管理器中有STEP CYC10 Board这个选项。
行 82: 行 71:
 **步骤4:在Arduino IDE中开发应用程序** **步骤4:在Arduino IDE中开发应用程序**
  
-在Arduino IDE 工具一栏,选择开发板为STEP CYC10 Board,下面我们可以开始开发自己的应用程序了,这里我们编写一段应用程序实现[[reindeer_step_arduino_app1|流水灯和串口打印]]的功能:+在Arduino IDE 工具一栏,选择开发板为STEP CYC10 Board,下面我们可以开始开发自己的应用程序了, 
 +这里我们编写一段应用程序实现[[reindeer_step_arduino_app1|流水灯和串口打印]]的功能: 
 + 
 +<code c> 
 + 
 +#define P0  (REG_GPIO[0]) 
 +#define P1  (REG_GPIO[1]) 
 +#define P2  (REG_GPIO[2]) 
 +#define P3  (REG_GPIO[3]) 
 + 
 +int kkk[1*1024]={999,​ 1000, 10001, 1898, 8888}; 
 + 
 +void setup() { 
 +  // put your setup code here, to run once: 
 +   ​Serial.print("​ ===================="​);​  
 +   P3 = 0xAA; 
 +   delay (1000); 
 +  
 +
 + 
 +int t = 0; 
 + 
 +uint32_t i = 0; 
 +uint8_t led_position = 0; 
 + 
 +void loop() { 
 +  
 + ​Serial.print (i); 
 + i = (i + 1) %(1024); 
 + ​Serial.print("​ ===================="​);​  
 + kkk [i] = kkk [i] + i; 
 + ​Serial.print (kkk[i]); 
 + ​Serial.println (" "); 
 + delay (600); 
 + ​led_position = (led_position + 1) % 8; 
 + 
 + P3 = ~(1 << led_position);​ 
 +
 +</​code>​ 
 点击Arduino IDE的验证✔选项开始编译,程序编译结果会在下面的信息栏中给出。 ​ 点击Arduino IDE的验证✔选项开始编译,程序编译结果会在下面的信息栏中给出。 ​
 这里建议用户在Preferences对话框 (菜单File / Preferences) 中打开“Show Verbose Output”选项,这样信息栏中会给出详细的编译结果。 这里建议用户在Preferences对话框 (菜单File / Preferences) 中打开“Show Verbose Output”选项,这样信息栏中会给出详细的编译结果。
行 95: 行 123:
 {{ :​程序上传报告.png?​nolink&​500 |}} {{ :​程序上传报告.png?​nolink&​500 |}}
  
-=== 结果演示 ​===+## 流水灯例子演示效果
 演示效果如下: 演示效果如下:
 打开串口监视器波特率为115200,可以看到不断打印累加数字,板子上的LED呈现流水灯模式。 打开串口监视器波特率为115200,可以看到不断打印累加数字,板子上的LED呈现流水灯模式。
 {{ :​演示效果.jpg?​nolink&​500 |}} {{ :​演示效果.jpg?​nolink&​500 |}}
 更多外设支持正在持续不断的开发中,接下来也会推出更多好玩的Demo。 更多外设支持正在持续不断的开发中,接下来也会推出更多好玩的Demo。
 +
 +## 综合例子演示
 +在源文件夹中,有一个综合demo,我们打开sketch文件夹,full_demo文件夹,打开full_demo.ino文件,这是一个Arduino工程,\\
 +在编译这个程序之前,我们需要安装两个库文件:Step_CYC10_I2C.h和Step_CYC10_Seven_Seg_Display.h。\\
 +
 +打开 “项目”—“加载库”—“管理库”,搜索“step_cyc10”,​安装I2C和数码管显示两个库。
 +
 +{{::​arduino加载step_cyc10库文件.png?​600|}}
 +
 +{{::​arduino加载step_cyc10库文件2.png?​600|}}
 +\\
 +安装完成之后,编译,下载。
 +
 +{{:​arduino-risc-v演示.mp4|}}
 +
 +## 返回目录
 +  * [[fpga_risc-v|基于FPGA与RISC-V的嵌入式系统设计]]
 +      - [[reindeer_step_arduino|使用Arduino IDE开发RISC-V处理器]]
 +      - [[reindeer_step_make|使用make配置编译RISC-V应用程序]]