博流RISC-V芯片BL616开发环境搭建

news2025/1/13 13:23:07

文章目录

    • 1、工具安装
    • 2、代码下载
    • 3、环境变量配置
    • 4、下载交叉编译器
    • 5、编译与下载运行
    • 6、使用ninja编译

本文分别介绍博流RISC-V芯片 BL616 在 Windows和Linux 下开发环境搭建,本文同时适用BL618,BL602,BL702,BL808系列芯片。

1、工具安装

  1. Windows
    我们在日常工作中会经常使用到 git,windows 环境下载 git 安装包安装后即可使用。下载地址:https://git-scm.com/download/win。

当前 64bit 操作系统下最新版本为 Git-2.41.0.3-64-bit.exe,下载完全后按照正常安装方法安装。

安装完成后,桌面上会显示一个 Git Bash 的软件,双击即可打开 git 命令行。

  1. Linux
    Linux 下可直接使用命令行安装
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install -y git
  1. 安装完成后,在命令行中测试是否安装成功
$ git --version
git version 2.25.1

2、代码下载

在 git 命令行中输入:

$ git clone https://github.com/bouffalolab/bouffalo_sdk

仓库有点大,下载需要一些时间。

3、环境变量配置

  • Ninja

Ninja 是一个快速、轻量级的构建系统工具。它使用简单的配置文件来描述构建过程,并且能够高效地执行并行构建。Ninja 的设计目标是提供一种快速的构建工具,尤其适用于大型项目和复杂的构建过程。Ninja 通常与其他构建工具(如 CMake)配合使用。

Ninja 相对于其他构建工具具有以下几个显著的优势:

  • 速度快:Ninja 使用简单的依赖图来确定需要重新构建的目标,因此可以避免不必要的重新构建,提高整体编译速度。

  • 轻量级:Ninja 本身只是一个小型可执行文件,占用资源较少,不会拖慢编译过程。

  • 可扩展:Ninja 支持自定义构建规则和脚本,可以根据项目的需求进行灵活的扩展和定制。

  • CMake

CMake 是一个跨平台的构建工具,用于生成各种不同构建系统(如 Makefile、Ninja 等)所需的构建文件。CMake 通过提供一个简单的跨平台配置语言,使得开发者可以轻松地定义项目的构建规则。CMake 可以自动生成适用于不同操作系统和编译器的构建文件,简化了跨平台项目的构建过程。

CMake用于定义项目的构建规则和依赖关系,并生成相应的构建文件(如 Makefile 或 Ninja文件)。然后,使用 Ninja 等构建工具来实际执行构建过程,编译源代码、链接库文件等。CMake 和 Ninja 的配合使用可以提供灵活、高效的项目构建解决方案,并且支持跨平台开发。

bouffalo_sdk 编译需要 make、cmake、ninja 等编译工具。

  1. Windows
    windows 默认不支持 make 类编译工具,bouffalo_sdk/tools目录下已经带了这些工具的 Windows 版本,Windows 下需要配置对应的路径至系统环境配置,即可正常使用。
  • make:bouffalo_sdk\tools\make
  • cmake:bouffalo_sdk\tools\cmake\bin
  • ninja:bouffalo_sdk\tools\ninja

在这里插入图片描述

  1. Linux
    Linux 下可直接使用命令行安装
$ sudo apt-get install -y build-essential cmake ninja-build

安装完成后即可使用。

  1. 安装、配置完成后,在命令行中测试是否安装成功
$ make -v
GNU Make 4.2.1
Built for x86_64-w64-mingw32
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ cmake --version
cmake version 3.25.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

$ ninja --version
1.11.1

4、下载交叉编译器

  1. windows
    https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1663141789688/Xuantie-900-gcc-elf-newlib-mingw-V2.6.1-20220906.tar.gz
  • 下载解压
    由于 Windows 默认不支持直接解压 .tar.gz 后缀的文件,可以使用上诉下载的 git 命令行工具用命令解压。在 Xuantie-900-gcc-elf-newlib-mingw-V2.6.1-20220906.tar.gz 所在的文件夹下点击右键,选择 Git Bash Here,在弹出的命令行中输入
$ tar zxvf Xuantie-900-gcc-elf-newlib-mingw-V2.6.1-20220906.tar.gz
  • 系统环境变量配置
    在这里插入图片描述
  1. Linux
    https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1663142243961/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1-20220906.tar.gz

下载后解压至 /opt 目录下

$ sudo tar zxvf Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1-20220906.tar.gz -C /opt

然后将交叉编译器路径添加至编译变量中,使用 zsh 的可以编辑 ~/.zshrc 文件;使用 bash 的可以编辑 ~/.bash 文件。

$ vim ~/.zshrc
# 在空白处加入一行
export PATH=$PATH:/opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/bin

保存后,使用 source 命令让配置生效。

$ source ~/.zshrc

注: source 命令只能在当前终端下使环境变量生效,新开的终端需要再次使用 source 命令,或者重新系统。

  1. 配置完成后,在命令行中测试是否安装成功
$ riscv64-unknown-elf-gcc -v
Using built-in specs.
COLLECT_GCC=riscv64-unknown-elf-gcc
COLLECT_LTO_WRAPPER=d:/bl618/toolchain_gcc_t-head_windows/bin/../libexec/gcc/riscv64-unknown-elf/10.2.0/lto-wrapper.exe
Target: riscv64-unknown-elf
Configured with: /mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/./source/riscv/riscv-gcc/configure --target=riscv64-unknown-elf --host=i686-w64-mingw32 --with-gmp=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-mingw-V2.6.1/lib-for-gcc-mingw --with-mpfr=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-mingw-V2.6.1/lib-for-gcc-mingw --with-mpc=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-mingw-V2.6.1/lib-for-gcc-mingw --with-libexpat-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-mingw-V2.6.1/lib-for-gcc-mingw --with-libmpfr-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-mingw-V2.6.1/lib-for-gcc-mingw --with-pkgversion='Xuantie-900 elf newlib gcc Toolchain V2.6.1 B-20220906' CXXFLAGS='-g -O2 -DTHEAD_VERSION_NUMBER=2.6.1 ' --enable-libgcctf --prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/Xuantie-900-gcc-elf-newlib-mingw-V2.6.1 --disable-shared --enable-threads=posix --enable-languages=c,c++ --without-system-zlib --enable-tls --with-newlib --with-sysroot=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/Xuantie-900-gcc-elf-newlib-mingw-V2.6.1/riscv64-unknown-elf --with-native-system-header-dir=/include --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libgomp --disable-nls --disable-tm-clone-registry --src=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/./source/riscv/riscv-gcc --enable-multilib --with-abi=lp64d --with-arch=rv64gcxthead 'CFLAGS_FOR_TARGET=-Os   -mcmodel=medany' 'CXXFLAGS_FOR_TARGET=-Os   -mcmodel=medany'
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.0 (Xuantie-900 elf newlib gcc Toolchain V2.6.1 B-20220906)

5、编译与下载运行

  1. 编译

通过 VSCode 打开已经下载完成的 bouffalo_sdk,并进入我们第一个运行的 example 程序 helloworld,并运行 make 命令开始编译。

$ cd example\helloworld 
$ make CHIP=bl616 BOARD=bl616dk

其中:

CHIP:表示当前编译的芯片为bl616。

BOARD:表示当前编译的目标板为bl616dk,可以在根目录 bsp 下获取对应的板子列表。

  1. 烧录

按住 boot 按钮,重新上电后,芯片即进入 boot 状态,可通过串口烧录程序。

  • 命令烧录:
    在命令行中输入以下命令,即可
$ make flash CHIP=bl616 COMX=COM20

其中:

CHIP:表示当前编译的芯片为 bl616。

COMX:为当前烧录串口,bl616/bl618 在 boot 模式下,USB 自带 usb-ttl 功能,可用于下载。在 windows 系统下为COM20(根据自己电脑上的串口号填写),Linux 系统下为 /dev/ttyxxx。

  • GUI工具烧录

打开 bouffalo_sdk\tools\bflb_tools\bouffalo_flash_cube 目录,运行 BLFlashCube.exe 启动 GUI 烧录工具。

  • 点击 Port,选择正确的串口
  • 点击 Browse,选择当前需要烧录的项目下的 ini文件

在这里插入图片描述

  1. 运行

烧录完成后,重新上电,即可运行。

 ____               __  __      _       _       _     
 |  _ \             / _|/ _|    | |     | |     | |    
 | |_) | ___  _   _| |_| |_ __ _| | ___ | | __ _| |__  
 |  _ < / _ \| | | |  _|  _/ _` | |/ _ \| |/ _` | '_ \ 
 | |_) | (_) | |_| | | | || (_| | | (_) | | (_| | |_) |
 |____/ \___/ \__,_|_| |_| \__,_|_|\___/|_|\__,_|_.__/ 

Build:22:36:13,Aug 20 2023
Copyright (c) 2022 Bouffalolab team
======== flash cfg ========
flash size 0x00800000
jedec id     0xC84017
mid              0xC8
iomode           0x04
clk delay        0x01
clk invert       0x01
read reg cmd0    0x05
read reg cmd1    0x35
write reg cmd0   0x01
write reg cmd1   0x31
qe write len     0x01
cread support    0x01
cread code       0x20
burst wrap cmd   0x77
===========================
dynamic memory init success, ocram heap size = 409 Kbyte 
sig1:ffffffff
sig2:0000f32f
cgen1:9f7ffffd
[F][MAIN] hello world fatal
[E][MAIN] hello world error
[W][MAIN] hello world warning
[I][MAIN] hello world information
hello world fatal raw
hello world error raw
hello world warning raw
hello world information raw

如需要编译其他功能 example,可切换到对应目录后按照以上步骤执行。

6、使用ninja编译

在 bouffalo_sdk 中默认使用 make 编译,也可以使用 ninja 加快编译速度,只需要替换编译命令即可

$ make ninja CHIP=bl616 BOARD=bl616dk

注:如之前使用 make 已编译过项目,更换为 ninja 编译会报错,需要先执行 make clean 命令。

  • make 和 ninja 编译速度对比

对 examples/wifi/sta/wifi_udp 项目进行全新编译

系统makeninja
Linux62秒47秒
Windows120秒100秒

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

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

相关文章

Viobot输出数据说明

一.原始数据 1.ROS话题 1)相机原始图像数据 Type: sensor_msgs::Image Topic: 左目&#xff1a;/image_left 右目&#xff1a;/image_right 2&#xff09;imu数据 Type: sensor_msgs::Imu Topic: /imu 3&#xff09;TOF数据 点云数据&#xff1a; Type: sensor_msgs::P…

DP读书:鲲鹏处理器 架构与编程(十三)操作系统内核与云基础软件

操作系统内核与云基础软件 鲲鹏软件构成硬件特定软件 鲲鹏软件构成硬件特定软件1. Boot Loader2. SBSA 与 SBBR3. UEFI4. ACPI 操作系统内核Linux系统调用Linux进程调度Linux内存管理Linux虚拟文件系统Linux网络子系统Linux进程间通信Linux可加载内核模块Linux设备驱动程序Linu…

警惕!10本“On Hold”期刊已被踢,仍有12本期刊被标记!

目录更新&#xff1a;2023年8月SCI、SSCI、ESCI期刊 2023年8月21日&#xff0c;科睿唯安更新了WOS期刊目录&#xff0c;此次8月更新中&#xff0c;有24本期刊发生更名或被剔除&#xff0c;其中有10本期刊曾被标记为“On Hold”状态&#xff0c;现已被踢出SCIE/ESCI数据库&…

C语言网络编程实现广播

1.概念 如果同时发给局域网中的所有主机&#xff0c;称为广播 我们可以使用命令查看我们Linux下当前的广播地址&#xff1a;ifconfig 2.广播地址 以192.168.1.0 (255.255.255.0) 网段为例&#xff0c;最大的主机地址192.168.1.255代表该网段的广播地址&#xff08;具体以ifcon…

wmv格式转换成mp4怎么转?分享一种简单好用转换方法

WMV格式和MP4格式是两种常见的视频格式。WMV格式通常是Windows Media Player默认的格式。虽然在Windows上播放WMV文件很容易&#xff0c;但是在其他平台上可能会遇到兼容性问题。另一方面&#xff0c;MP4格式是一种通用的视频格式&#xff0c;几乎可以在所有设备上播放&#xf…

ATA-3080功率放大器的电子实验案例(案例合集)

ATA-3080是一款理想的可放大交、直流信号的功率放大器。最大输出720Wp功率&#xff0c;可以驱动功率型负载。凭借其优异的指标参数受到不少电子工程师的喜欢&#xff0c;其在电子实验中的应用也非常频繁&#xff0c;下面为大家整理出ATA-3080功率放大器的应用案例合集&#xff…

七、同步与异步

一个控制器&#xff0c;有上下两个mos管&#xff0c;上管就可以当功率管&#xff0c;下管当做同步的场效应管&#xff0c;如此就可以看出他是一个同步结构的buck电路&#xff1b; 2、异步的优缺点 1、在输出电流变化的情况下&#xff0c;二极管的电压降相当恒定&#xff1a; …

linux系统(centos、ubuntu、银河麒麟服务、uos、deepin)判断程序是否已安装,通用判断方法:适用所有应用和命令的判断

前言 项目中需要判断linux服务器中是否已经安装了某个服务 方法有很多种&#xff0c;但是很多都不通用&#xff0c; 脚本代码就不容易做成统一的 解决方案 用下面的脚本代码去进行判断 用jdk测试 脚本意思如下&#xff1a; 输入java -version命令&#xff0c;将返回的字…

行业报告|3D感知技术快速发展,打造“机器之眼”,助推各行业加速升级!

原创 | 文 BFT机器人 01 3D视觉感知全栈式平台&#xff0c;硬核实力蓄势待发 1.1 3D视觉感知为“机器之眼”&#xff0c;未来市场空间广阔 3D视觉感知技术充分弥补了2D成像技术的以上不足&#xff0c;可获取空间几何尺寸信息。 过去数十年2D成像技术蓬勃发展&#xff0c;分辨…

【真题解析】系统集成项目管理工程师 2022 年上半年真题卷(案例分析)

本文为系统集成项目管理工程师考试(软考) 2022 年上半年真题&#xff08;全国卷&#xff09;&#xff0c;包含答案与详细解析。考试共分为两科&#xff0c;成绩均 ≥45 即可通过考试&#xff1a; 综合知识&#xff08;选择题 75 道&#xff0c;75分&#xff09;案例分析&#x…

无涯教程-Android Studio函数

第1步-系统要求 您将很高兴知道您可以在以下两种操作系统之一上开始Android应用程序的开发- MicrosoftWindows10/8/7/Vista/2003(32或64位)MacOSX10.8.5或更高版本,最高10.9(小牛) GNOME或KDE桌面 第二点是,开发Android应用程序所需的所有工具都是开源的,可以从Web上下载。以…

TiDB 源码编译之 TiProxy 篇

作者&#xff1a; ShawnYan 原文来源&#xff1a; https://tidb.net/blog/3d57f54d TiProxy 简介 TiProxy 是一个基于 Apache 2.0 协议开源的、轻量级的 TiDB 数据库代理&#xff0c;基于 Go 语言编写&#xff0c;支持 MySQL 协议。 TiProxy 支持负载均衡&#xff0c;接收来…

SpringBoot笔记——(狂神说)——待续

路线 javase: OOPmysql:持久化 htmlcssjsjquery框架:视图&#xff0c;框架不熟练&#xff0c;css不好; javaweb:独立开发MVC三层架构的网站了∶原始 ssm :框架:简化了我们的开发流程&#xff0c;配置也开始较为复杂; war: tomcat运行 spring再简化: SpringBoot - jar:内嵌tomca…

【Grasshopper基础15】“右键菜单似乎不太对劲”

距离上一篇文章已经过去了挺久的&#xff0c;很长时间没有写GH基础部分的内容了&#xff0c;原因其一是本职工作太忙了&#xff0c;进度也有些落后&#xff0c;白天工作累成马&#xff0c;回家只想躺着&#xff1b;其二则是感觉GH基础系列基本上也介绍得差不多了&#xff0c;电…

保护网站安全:学习蓝莲花的安装和使用,复现跨站脚本攻击漏洞及XSS接收平台

这篇文章旨在用于网络安全学习&#xff0c;请勿进行任何非法行为&#xff0c;否则后果自负。 环境准备 一、XSS基础 1、反射型XSS 攻击介绍 原理 攻击者通过向目标网站提交包含恶意脚本的请求&#xff0c;然后将该恶意脚本注入到响应页面中&#xff0c;使其他用户在查看…

如何建设数据资产目录?

数据资产目录其实一个记录和管理组织内各种数据资产的清单或目录。它提供了对数据资产的基本信息和属性的可视化和查询能力&#xff0c;让组织能够更好的了解和利用自己拥有的数据资产。数据资产目录通常包括数据集的名称、描述、来源、格式、存储位置、更新频率等信息&#xf…

fatal: ServicePointManager 不支持具有 socks5 方案的代理。

报错 解决前 git config --global --list 查看git的设置 解决后 // 代理更改为http (7890是我的代理软件clash的port默认的&#xff0c;有些博客使用的是1080&#xff0c;依个人情况而定) git config --global http.proxy http://127.0.0.1:7890 git config --global https…

40、Thymeleaf的自动配置和基本语法、springboot 整合 Thymeleaf

★ Spring Boot支持如下模板技术&#xff1a; FreeMarkerGroovyThymeleafMustache官方推荐使用 ThymeleafJSP不再被推荐。★ Thymeleaf的优势 Thymeleaf标准方言中的大多数处理器都是属性处理器。这种页面模版即使在未被处理之前&#xff0c;浏览器也可正确地显示HTML模板文件…

听力总结易错点+口语准则

目录 听力总结易错点 where are you come from&#xff1f;其实是错的 杯子的大小表达 口语准则 一些常见蔬菜的英文名称&#xff1a; To get a lot out of 英语复述句子题 听力总结易错点 1,在section 1 &#xff0c;很容易把a读成n 2. silver colored cloth 这个clo…

Spring PropertyEditor 使用案例

1. 继承 PropertyEditorSupport 重写 setAsText 方法 import java.beans.PropertyEditorSupport;public class StringToArrayEditor extends PropertyEditorSupport {Overridepublic void setAsText(String text) throws IllegalArgumentException {//接收Text的值并处理String…