【自用】Ubuntu20.4从Vivado到ddr200t运行HelloWorld

【自用】Ubuntu20.4新系统从输入法到ddr200t运行HelloWorld

  • 一、编辑bashrc
  • 二、Vivado2022.2安装
  • 三、编译蜂鸟E203自测样例
    • 1. 环境准备
    • 2. 下载e203_hbirdv2工程文件
    • 3. 尝试编译自测案例
      • 1. 安装RISC-V GNU工具链
      • 2. 编译测试样例
    • 4. 用vivado为FPGA生成mcs文件
      • 1.准备RTL
      • 2.生成bit文件
      • 3.生成mcs文件
    • 5. 向硬件中烧MCS文件
  • 四、配置HBird SDK
    • 1.准备
    • 2.安装工具链
    • 3. 工具配置
    • 4.准备setup.config.sh文件
  • 五、HelloWorld
    • 1. 编译HelloWorld样例
    • 2. 运行HelloWorld样例
    • 3.自己踩过的坑

一、编辑bashrc

vim ~./bashrc

a编辑,将一下内容复制在最后

# ~/.bashrc
if [[ $- == *i* ]]
then
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
fi

在安装完Vivado和e203蜂鸟SDK后再复制下面内容,注意修改路径

function e203 {
source /tools/Xilinx/Vivado/2022.2/settings64.sh
cur_dir=$(pwd)
cd /home/UserName/Documents/hbirdv2_dev/hbird-sdk
source setup.sh
cd $cur_dir
}e203

Esc退出编辑模式

输入 :wq ( 不可忽略,保存退出)

输入 :q! (不保存退出)

二、Vivado2022.2安装

参考【踩坑】Ubuntu20.4安装Vivado

三、编译蜂鸟E203自测样例

可参考官方上手指南

1. 环境准备

在终端输入

sudo apt-get install autoconf automake autotools-dev curl device-tree-compiler libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev git

注意官网是分成了两行,但是一定要一整行输进去,不然会报错。

2. 下载e203_hbirdv2工程文件

在文件夹下打开终端输入

git clone https://github.com/riscv-mcu/e203_hbirdv2.git

3. 尝试编译自测案例

1. 安装RISC-V GNU工具链

从这里安装,注意建议安装2022.12的版本!!!!!如果使用2022.08和2023.10都会遇到不同程度无法解决的报错。

riscv-nuclei-elf-gcc: Command not found ../Makefile:78: recipe for target 'rv32ui-p-simple' failed make: *** [rv32ui-p-simple] Error 127

在这里插入图片描述配置测试文件

cp nuclei_riscv_newlibc_prebuilt_linux64_2022.12.tgz.bz2 ~/cd ~/tar -xjvf nuclei_riscv_newlibc_prebuilt_linux64_2022.12.tgz.bz2cd <your_e203_dir>/mkdir -p ./riscv-tools/prebuilt_tools/prefix/bincd ./riscv-tools/prebuilt_tools/prefix/bin/ln -s ~/nuclei_riscv_newlibc_prebuilt_linux64_2022.12/bin/* .

文件名和文件夹名按照自己的文件修改

2. 编译测试样例

cd <your_e203_dir>/riscv-tools/riscv-tests/isasource regen.sh

4. 用vivado为FPGA生成mcs文件

可参考4.2. How to generate mcs for FPGA

1.准备RTL

cd <your_e203_dir>/fpgamake install FPGA_NAME=ddr200t

2.生成bit文件

make bit FPGA_NAME=ddr200t

3.生成mcs文件

make mcs FPGA_NAME=ddr200t

5. 向硬件中烧MCS文件

4.2.2. FPGA MCS download

四、配置HBird SDK

1.准备

在系统对应位置创建文件夹Nuclei-Tools

2.安装工具链

安装地址,RISC-V 工具链和OpenOCD最好下载相同的版本,这里也是建议安装2022.12版本
在这里插入图片描述

3. 工具配置

在Nuclei-Tools文件夹下创建gcc文件夹和openocd文件夹。
将解压的gnu toolchain终文件夹下所有内容复制到gcc文件夹下,将解压的openocd终文件夹下所有内容复制到我们准备好的openocd文件夹下

4.准备setup.config.sh文件

在< hbird-sdk >文件夹下打开终端

touch setup_config.sh
gedit setup_config.sh

输入以下内容,注意修改路径

NUCLEI_TOOL_ROOT=<nuclei-tools>

保存后在< hbibrd-sdk >目录下执行

source setup.sh
echo $PATH
which riscv-nuclei-elf-gcc openocd make rm
make help

五、HelloWorld

1. 编译HelloWorld样例

进入HelloWorld文件夹

cd <hbird-sdk>/application/baremetal/helloworld

编译样例

make dasm SOC=hbirdv2 BOARD=ddr200t CORE=e203 DOWNLOAD=flashxip

注:

  1. dash :表示对程序进行编译,并对可执行文件(.elf)进行反汇编生成.dump文件
  2. SOC=hbirdv2:指明SOC型号
  3. BOARD=ddr200t:指明开发板型号
  4. CORE=e203:指明Core型号,此处指的是蜂鸟E203 Core
  5. 此处可根据实际修改参数。

2. 运行HelloWorld样例

4.3.4. Run Hello World demo

  1. 链接开发板和蜂鸟调试器
  2. 输入groups 观察是否出现... plugdev ... ,如果出现说明在组件中,可以继续后面的步骤
  3. 编译下载文件
cd <hbird-sdk>/application/baremetal/helloworld
make upload SOC=hbirdv2 BOARD=ddr200t CORE=e203 DOWNLOAD=flash
  1. 打开UART 终端
sudo screen /dev/ttyUSB1 115200
  1. 按下复位键会刷新
    在这里插入图片描述

3.自己踩过的坑

  1. 【踩坑】参考官方文档 蜂鸟E203从运行自测样例到运行HelloWorld路上的坑
  2. 【踩坑】Ubuntu20.4安装Vivado

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/237064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对大学生创新创业某赛事目前存在的烂尾楼现象的一些研究的分享(1)

经过对”某某网”大学生创新创业大赛国赛第五届-第八届部分金奖项目的研究&#xff0c;进行较为充分的信息溯源、穿透调查&#xff0c;我发现不少项目存在赛事材料画大饼&#xff0c;严重不切合实际&#xff0c;参赛人员并非真正创新创业&#xff0c;赛后迅速销声匿迹、烂尾切割…

图论 | 网络流的基本概念

文章目录 流网路残留网络增广路径割最大流最小割定理最大流Edmonds-Karp 算法算法步骤程序代码时间复杂度 流网路 流网络&#xff1a; G ( V , E ) G (V, E) G(V,E) 有向图&#xff0c;不考虑反向边s&#xff1a;源点t&#xff1a;汇点 c ( u , v ) c(u, v) c(u,v)&#xff…

你以为出现NoClassDefFoundError错误会是什么原因?

你以为出现NoClassDefFoundError错误会是什么原因&#xff1f; 1、概述2、事情经过3、总结 1、概述 大家好&#xff0c;我是欧阳方超&#xff0c;可以关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。 同样的错误&#xff0c;非一样的解决方式。NoClassDefFou…

【智慧校园】基于国标GB28181协议EasyCVR视频技术的高校宿舍智能监管方案

现如今&#xff0c;各大学校不乏众多住校生&#xff0c;但由于很多学生年龄较小 &#xff0c;又缺乏独自生活的经历&#xff0c;如何给在校住宿生做到安全与生活双重保障&#xff1f;旭帆科技校园智能视频监控通过人工智能技术对住宿区域进行智能监管&#xff0c;确保学生住宿安…

【HCIP学习记录】OSPF Hello报文及状态机

字段长度含义Version1字节版本&#xff0c;OSPF的版本号。对于OSPFv2来说&#xff0c;其值为2。Type1字节类型&#xff0c;OSPF报文的类型&#xff0c;有下面几种类型&#xff1a; 1&#xff1a;Hello报文&#xff1b;● 2&#xff1a;DD报文&#xff1b;● 3&#xff1a;LSR报…

【终极教程】cocos2dx-js 分批次混淆压缩js文件

​ 说明: 1> 由于我们当前游戏框架的结构是平台形式的就是一个大厅里面有若干个子游戏,所以在发布的时候得区分子游戏和大厅了解了一下 project.json 里面有一个 jsList 可以把所有放进去的js文件压缩混淆成一个大的文件但是我们游戏的子游戏非常多 这样子弄显然不合适&…

青少年CTF-qsnctf-Web-登陆试试

题目环境&#xff1a; 题目难度&#xff1a;★题目描述&#xff1a;Syclover用户忘了他的密码&#xff0c;咋办哦,依稀记得密码为6位数字,以774开头&#xff0c;这次我们来爆爆他的密码&#xff0c;让他再也不犯相同的错了 先不着急进行爆破 看看源码里面有没有其它有用的信息 …

Shell三剑客:awk(内部变量)

一、$0 &#xff1a;完整的输入记录 [rootlocalhost ~]# awk -F: {print $0} passwd.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/s…

软件分享--图片置顶工具

一个好的程序应该只做一件事情&#xff0c;并且将这件事情做好。 使用许多小工具的集合要比使用一个什么都做但什么都做不好的工具要好。 linux系统强大&#xff0c;组成它的是dd、sed、grep、awk、tar等各种命令工具的集合。 如果你能够合理使用各种小工具。效率会比使用任何…

【python】作用域与闭包 || global与nonlocal

python作用域 其他语言的作用域&#xff1a;块级、函数、类、模块、包等由小到大的级别但是python没有块级&#xff08;if语句块、for语句块&#xff09;&#xff0c;所以if中定义的变量&#xff0c;相当于普通语句 >>> if True: # if语句块没有作用域x …

Vue3-23-组件-依赖注入的使用详解

什么是依赖注入 个人的理解 &#xff1a; 依赖注入&#xff0c;是在 一颗 组件树中&#xff0c;由 【前代组件】 给 【后代组件】 提供 属性值的 一种方式 &#xff1b;这种方式 突破了 【父子组件】之间通过 props 的方式传值的限制&#xff0c;只要是 【前代组件】提供的 依…

[MySQL]用基本的mysql语句写的{商店的数据}和{学生成绩}

文章目录 前言一、题目二、创建2.写入table 三.查看表单结构四.插入数据1.俩种方法2.指定插入 五.查询1.全部和指定查询2.别名查询3.去重4.排序5.条件查询&#xff08;where) 六.修改七.删除八.在table中插入一列总结&#xff1a; 前言 提示&#xff1a;以下是本篇文章正文内容…

实现单链表的基本操作(力扣、牛客刷题的基础笔试题常客)

本节来学习单链表的实现。在链表的刷题中&#xff0c;单链表占主导地位&#xff0c;很多oj题都在在单链表的背景下进行&#xff1b;而且很多链表的面试题都是以单链表为背景命题。所以&#xff0c;学好单链表的基本操作很重要 目录 一.介绍单链表 1.链表及单链表 2.定义一个…

JVM垃圾收集器三色标记算法

垃圾收集算法 分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法&#xff0c;这种算法没有什么新的思想&#xff0c;只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代&#xff0c;这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。 比…

day44代码训练|动态规划part06

完全背包和01背包问题唯一不同的地方就是&#xff0c;每种物品有无限件。 1. dp数组的含义 dp[i][j] 0-i物品&#xff0c;重量为j的容量时&#xff0c;最大的价值 2. 递推公式 dp[i][j] max(dp[i-1][j],dp[i][j-weight[i]]value[i]); 两种状态&#xff0c;不用物品i的话&…

22.VRRP网关冗余

VRRP网关冗余 STP 是二层冗余技术 VRRP是三层冗余技术 这里如果网关挂掉的话&#xff0c;用户就无法访问外网&#xff0c;还得配置新的网关&#xff0c;VRRP就是用来解决这种问题的 原理&#xff1a;可以把R1 的优先级设置的高一点&#xff0c;先由R1 来掌管192.168.1.254这个…

linux 性能优化-内存优化

CPU 管理一样&#xff0c;内存管理也是操作系统最核心的功能之一。内存主要用来存储系统和应 用程序的指令、数据、缓存等。 1.内存原理 1.1.内存映射 1.1.1.日常生活常说的内存是什么? 我的笔记本电脑内存就是 8GB 的这个内存其实是物理内存物理内存也称为主存&#xff0…

Redis原理之网络模型笔记

目录 1. 阻塞IO 2. 非堵塞IO 3. IO多路复用 ​3.1 select 3.2 poll 3.3 epoll 4. 信号驱动IO 5. 异步IO 6. Redis是单线程还是多线程 Redis采用单线程模型&#xff0c;这意味着一个Redis服务器在任何时刻都只会处理一个请求。Redis的网络模型涉及到阻塞I/O&#xff08;Blo…

【图神经网络】在节点分类任务中无特征节点的特征表示

无特征节点的特征表示 节点度数degree pagerank 以pagerank起源的应用场景为例&#xff0c;不是所有的网站都是同等重要的&#xff0c;所以需要根据结构信息对节点进行排序。 直觉上&#xff0c;如果一个网站它有很多链接&#xff0c;它就很重要&#xff0c;举例来说&#…

Leetcode—77.组合【中等】

2023每日刷题&#xff08;六十五&#xff09; Leetcode—77.组合 算法思想 实现代码 class Solution { public:vector<vector<int>> combine(int n, int k) {vector<vector<int>> ans;vector<int> path;function<void(int)> dfs [&…