我们先假定读者已经按照上一篇文章”在Ubuntu 18.04 LTS构建RISC-V开发环境“完成了基本软件环境的搭建。这一部分将讲解如何在实际的开发板上进行RISC-V的软件开发。本篇大致分为以下几个部分:

  1. 硬件环境的搭建。
  2. 基于IDE的软件开发环境。
  3. 基于命令行的软件开发环境。

1.硬件环境的搭建

  • 本次使用的是RISC-V官方推荐的E2/E3/E5官方平台:Artix-35T的开发板

  • 该平台为FPGA平台,在使用前需要将相关“硬件”写入,这需要连接直接连接USB;我们首先从官网下载E31体验核,只所以选择E31是因为相对FE300,E31更接近于真实的RISC-V硬件,下载地址:

https://dev.sifive.com/dashboard/deliverables/sifive_e31_fpga_eval_kit_bitstream/releases/v3p0/

下载完成后我们使用Vivado将程序写入开发板的Flash中,此时,重新Reset开发板,应该可以看到RGB的LED开始闪烁

  • 由于开发板的USB端口主要是连接终端的UART接口和用于程序烧录的JTAG接口,而程序调试是使用E31内部的Debug电路,因此在程序被正常下载后我们需要连接用于调试的JTAG,具体连接方式见官方手册。这里放两张连好的线缆照片做参考:

  • 说明:本例是采用E31核,而非FE300,因此在下载时需要特别注意。关于如何编译FE300核心在之后讲解。另外,如果使用虚拟机务必确认两个USB设备已经连入,而非只是连入主机。有两种方式:

通过虚拟机:

在Linux中通过命令lsusb确认,如果正常连入,应该可以看到如下两行:

2. 基于IDE的软件开发

RISC-V的最简单的软件开发是通过SiFive提供的Freedoom Studio。在上一篇文章中我们已经下载了Freedoom Studio的软件。该软件已经包含了Eclipse的IDE环境、ToolChain和用于Debug的OpenOCD等基本工具。在使用之前,我们需要为OpenOCD下载一些补丁:sudo apt-get install libusb-0.1-4

之后直接运行Freedoom Studio即可,大致如下:

3. 基于命令行的软件开发:

基于命令行的软件开发我们使用SiFive的ToolChain:freedom-e-sdk。我们假设用户已经下载完

1. 首先我们针对自己的RISC-V构建相关ToolChain。在这个例子里我们假定RISC-V使用SiFive FE300,以区别IDE环境

make tools BOARD=freedom-e300-arty

BOARD为您使用的平台,当前最新版本可以使用:

u     coreplexip-e21-arty:

u  coreplexip-e31-arty

u  coreplexip-e51-arty

u  freedom-e300-arty

u  freedom-e300-hifive1

2. 程序编译:

make software PROGRAM=demo_gpio BOARD=freedom-e300-art

3. 使用GDB进行程序调试

make run_gdb PROGRAM=demo_gpio BOARD=freedom-e300-arty

说明:当前Freedom Studio即相关测试范例默认情况下并不支持freedom-e310-arty,因此,如果在FE300上进行软件开发则需使用命令行方式,当然,理论上通过修改设置可以使freedom Studio开发其他的SiFive平台。而命令行方式目前支持几乎所有SiFive的RISC-V实现

RISC-V的软件开发相关推荐

  1. 基本软件开发模型:瀑布模型、V型模型、迭代模型、增量模型、螺旋模型、大爆炸模型、敏捷模型、原型模型、W模型 特点分析与总结

    瀑布模型 在瀑布模型中,开发过程是线性的.任务和阶段按严格顺序一个接一个地完成.进度平稳地向下流动,就像瀑布上的水一样. 将软件生命周期划分为制定计划.需求分析.软件设计.程序编写.软件测试和运行维护 ...

  2. 软件开发V模型--解读

    RAD(rap application development),就是软件开发过程中的一个重要模型,称为快速应用开发模型.其模型构图形似字母V,所以又称V模型.       他通过开发和测试同时进行的 ...

  3. 汽车电子行业开发者的内功心法:汽车软件开发V模型

    目录 1.V模型概述 2.V模型实施 2.1.系统需求分析 2.2.软件需求分析 2.3.软件架构设计 2.4.软件单元设计和软件实现 2.5.软件单元测试 2.6.软件集成测试 2.7.软件系统测试 ...

  4. 详解AUTOSAR:汽车软件开发V模型过程中AUTOSAR工具链的应用(工具篇—1)

    目录 1.PREEvision 2.vVIRTUALtarget 3.DaVinci Developer 4.DaVinci Configurator 5.CANoe 6.VT System 7.CA ...

  5. 测试——开发模型(瀑布模型,螺旋模型,增量,迭代,敏捷)和测试模型(V模型,W 模型),软件开发生命周期与软件测试生命周期的对比

    目录: 软件测试生命周期与软件开发生命周期 开发模型 2.1 瀑布模型 2.2 螺旋模型 2.3 增量 和 迭代 2.4 敏捷 测试模型 3.1 V模型 3.2 W模型 1. 软件开发生命周期与软件测 ...

  6. 软件开发常见模型(瀑布模型、V模型、W模型、敏捷开发模型)

    软件开发经典流程图 一.瀑布模型 模型图 定义:瀑布模型(Waterfall Model)是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品. 地位:这是一 ...

  7. RISC V (RV32+RV64) 架构 整体介绍

    文章目录 riscv 市场 芯片介绍 软件介绍 开发板介绍 PC介绍 riscv 架构 编程模型(指令集/寄存器/ABI/SBI) 运行状态 指令集 寄存器 riscv32和riscv64两者的区别 ...

  8. 5软件开发与软件测试

    软件开发与软件测试 前言 瀑布模型 V模型 总结 前言 软件测试与软件开发过程是相辅相成.相互依赖.相互转换的过程. 瀑布模型 瀑布模型规定了软件生命周期中的各项活动,包括需求分析.概要设计.编码.测 ...

  9. bzoj:1221;vijos 1552 软件开发

    Description 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员 ...

  10. [BZOJ 1221][HNOI2001]软件开发(费用流)

    Description 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员 ...

最新文章

  1. IT公司100题-27-跳台阶问题
  2. android6.0升级名单,三星Android 6.0升级详细名单[多图]
  3. 机器学习——相似度算法汇总
  4. Laravel 将数据表中的数据导出,并生成seed文件
  5. java selector 源码_Java NIO核心组件-Selector和Channel
  6. php mysql5.7.110安装教程_MYSQL教程mysql5.7.19 winx64安装配置方法图文教程(win10)
  7. springboot中日志配置
  8. linux下mysql 有双机_在Linux环境下配置mysql cluster双机集群
  9. linux 内存 实例,linux内存地址分配(示例代码)
  10. 韩立刚计算机网络——第四章:网络层
  11. 【IDEA】idea工程打包成jar包
  12. 如何辨别BGP带宽的真假?
  13. python的自省与反射
  14. 时间戳转换为北京时间
  15. 【中文】【吴恩达课后编程作业】Course 1 - 神经网络和深度学习 - 第四周作业(12)
  16. 想拥有自己说了算的人生,必须要有的三层智慧
  17. Ubuntu远程SSH连接与远程桌面连接
  18. 湫湫系列故事——减肥记I(HDU-4808)
  19. 产业链金融的前世今生
  20. C++11 std::snprintf

热门文章

  1. 利用iiperf测试UDP带宽
  2. 阿里云高效云盘在线扩容
  3. 国内bi软件哪家强,第一为什么一直是它
  4. 【SaaS云】SaaS洞察(14) : SaaS的护城河
  5. AD中给大电流开窗时把顶层动态铺铜Polygon变成阻焊层静态Region的方法
  6. 图片标注尺寸_手帐素材第弹:风景美食宠物图片
  7. Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '
  8. 报时机器,你应该拥有
  9. word格式转换成pdf格式转换器
  10. Java实现 LeetCode 793 阶乘函数后K个零 (分析)