Lichee_RV学习系列---认识Lichee_RV、环境搭建和编译第一个程序

news2024/11/26 16:55:46

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、认识Lichee RV
    • 1、D1-H 芯片
    • 2、Lichee RV开发板
    • 3、系统镜像
  • 二、Lichee RV 固件烧录
    • 1、要求基本硬件
    • 2、基本资料下载
    • 3、固件烧录
    • 在这里插入图片描述
  • 三、连接上开发板
    • 1、ADB方式连接
      • a:ADB下载
      • b:ADB连接
      • c:ADB参考资料
    • 2、串口方式连接到开发板
      • a:驱动和串口工具下载和安装
      • b:硬件连接
      • c:登录到开发板
    • 3、SSH方式连接到开发板
  • 四、点亮第一个小灯
  • 五、Lichee RV PC环境搭建
    • 1、Ubuntu环境安装
    • 2、源码下载
  • 六、在开发板上运行第一个程序
    • 1、编写hello.c文件
    • 2、编译hello.c
      • a:直接编译
      • b:使用Makefile编译
    • 3、使用ADB传送文件到开发板
    • 3、使用ADB执行第一个程序
  • 资料下载
  • 参考资料


前言

这个系列是个人的学习笔记,主要目的是帮助自己上手Lichee RV这款开发板,为未来的驱动工程师的工作做铺垫。其内容包含四部分。

  • 第一部分:认识Lichee RV和环境搭建
  • 第二部分:移植三个应用到开发板,并记录整理移植过程和运行结果:dhrystone , coremark ,stream(分别是三个业内常用的 benchmark 工具)
  • 第三部分:在开发板上增加一个外设,通过 I2C、SPI、GPIO 方式访问都行,调通功能,输出说明文档和代码。
  • 第四部分:基于开发板自行搭建一个有生活场景的解决方案,完成功能调试。输出说明文档和代码。

一、认识Lichee RV

1、D1-H 芯片

Lichee RV搭载的是全志公司设计的D1-H芯片,该芯片内核采用的是平头哥设计的C906 CPU,该CPU是基于RISC-V指令集设计的CPU,不同与常见的ARM指令集设计的芯片,如STM32系列、麒麟系列芯片。该芯片可支持Linux、RTOS等系统,具有丰富的外设和接口和视频、音频处理等硬件支持。

在这里插入图片描述

2、Lichee RV开发板

笔者使用的是这款开发板,Lichee RV Dock(带WIFI)(之前有一个活动可以免费申请这个,笔者申请了就玩这个开发板)
在这里插入图片描述

开发板特性:
 主芯片全志 D1,平头哥玄铁 C906 核心,主频 1GHz
 主控内置 HiFi4 DSP,最高支持 4K 的 H.265/H.264 解码
 支持运行 Linux 系统,支持 WAFT 开发环境
 板载 512MB DDR3 内存,预留 SD NAND 焊盘
 板载电源管理电路,核心板可独立运行
 双 M.2 金手指连接器,引出 GPIO
 板载 TF 卡座,可插卡直接启动卡内固件
 板载 FEL 按钮与 USB TYPE-C OTG 接口
 板载一颗用户指示灯
 板载 8pin SPI 液晶屏连接器,可扩展 1.14 英寸液晶屏

可做应用:

  • RV Linux开发
  • 小屏幕播放器
  • 声源定位
  • 物联网控制器

核心版功能区:
在这里插入图片描述
底板功能区:
在这里插入图片描述

3、系统镜像

开发板系统镜像有三个,一个是Tina Linux系统,Tina Linux系统镜像在全志官方有很全面的文档资料,参考资料也比较多,推荐使用这个。

此处资料来源于官方D1-H介绍

Tina Linux是全志科技基于Linux内核开发的针对智能硬件类产品的嵌入式软件系统。Tina Linux基于openwrt-14.07 版本的软件开发包,包含了 Linux 系统开发用到的内核源码、驱动、工具、系统中间件与应用程序包。

openwrt 是知名的开源嵌入式 Linux 系统自动构建框架,是由 Makefile 脚本和 Kconfig 配置文件构成的。使得用户可以通过 menuconfig配置,编译出一个完整的可以直接烧写到机器上运行的 Linux 系统软件。

一个是Debian系统,Debian系统相对于Tina Linux系统更加大,Debian系统是一个开源的操作系统,Debian为桌面级系统。支持类似Ubuntu的一些桌面操作。

镜像有很多版本:这些版本的含义如下
在这里插入图片描述
以下内容来自[官方文档](https://wiki.sipeed.com/hardware/zh/lichee/RV/flash.html)

镜像词缀说明含义
LicheeRVSipeed 专用的 RISCV D1 Linux 系列系统
Tina标记为 tina openwrt 系统
debian标记为 riscv debian 系统
86paneltaobao 86panel
docktaobao dock
hdmi表示屏幕默认输出到 HDMI 屏幕上
800480 / 480P表示屏幕默认输出到 LCD 屏幕上,分辨率可以是 800*480 或 480P (640X480)。
8723ds表示该镜像支持 8723ds WIFI / BLE 驱动。
xr829表示该镜像支持 xr829 WIFI / BLE 驱动
waft是否内置 waft 软件

二、Lichee RV 固件烧录

1、要求基本硬件

Lichee RV Docx开发板、Type-C USB数据线、读卡器、SD卡、(USB转串口、杜邦线这个如果占时没有,也可以使用ADB的方式替代串口连接上开发板)

2、基本资料下载

下载选择LICHEE目录就行,根据自己的我自己用的是Lichee_RV进入目录:/LICHEE/D1,下载Liechee_RV的内容,一般选择官方企业网盘进行下载。网盘资料内容挺全的,包含烧录软件、板级支持包、系统镜像(Debian镜像需要另外下载)等、SDK等。

Debian系统镜像下载,提取码:wbef

官网下载链接:适合单文件下载

官方网盘,一般>10M文件选择或者多文件这个渠道下载

Lichee_RV目录如下
在这里插入图片描述

3、固件烧录

固件烧录我们使用:PhoenixCard

工具在官方网盘下载后的目录:tool\PhoenixCard(Lichee_RV目录如上图)

管理员打开,使用读卡器插上>16G的SD卡(推荐使用官方的SD卡)

根据需求选择固件,我这里没有显示器,就选择就选选择以恶个LicheeRV_Tina_hdmi_8723ds版本的,LicheeRV_dock我这个版本用的WIFI是8723ds(可以拆开核心版,看底板的WIFI芯片能知道芯片的型号),注意不要选错了,版本选择哪个,可以看上面固件介绍。

固件路径:Lichee_RV\Lichee_RV\SDK\image

在这里插入图片描述

烧录成功后面输出信息会有烧录成功的提示

这样就烧写完成了
在这里插入图片描述

如果固件烧录出现问题,点击下面链接有介绍固件烧录出现问题如何解决
官方烧录例程

安装SD卡,同时连接上USB到电脑,启动开发板:

在这里插入图片描述

三、连接上开发板

1、ADB方式连接

如果你和我一样,USB转TTL还没到,手上只有SD卡,读卡器、Type-C数据线、Lichee RV Docx开发板就使用ADB的方式吧

ADB介绍:
ADB全称Android debug bridge,是连接安卓的桥梁。可以通过USB连接PC和Android设备的调试工具。ADB是用在连接安卓的一个命令行工具,可以通过ADB进行安坐设备的调试、apk包的安装、文件的上传等。我们可以通过PC端连接到开发板(开发板固件里面已经安装好ADB相关的程序了)

小试牛刀:简单演示效果,这里ADB程序已经安装好了

命令:adb version 查看ADB版本
命令:adb start-server 连接到ADB客服端(开发板)
命令:adb devices 当前输出当前ADB设备
命令:adb shell ls 利用adb 执行shell 的ls 命令
命令:adb shell 连接到shell ,这里就可以类似串口一样使用开发板了
在这里插入图片描述
在这里插入图片描述

a:ADB下载

友情下载连接

将安装包解压放在自己喜欢的任意位置,里面有adb.exe程序,我们之后需要用过命令行去运行这个程序,先记录下adb.exe程序的路径,把他复制出来,我的路径如下
在这里插入图片描述

b:ADB连接

打开windows命令行窗口,windows+r,输入cmd

切换到存放adb根目录,然后cd 命令切换到adb.exe所在目录

使用命令cd 切换路径:cd adb.exe所在的路径

使用adb version 查看是否可以执行adb命令

在这里插入图片描述
之后执行以下命令就行:

命令:adb start-server 连接到ADB客服端(开发板)
命令:adb devices 当前输出当前ADB设备
命令:adb shell 连接到shell ,这里就可以类似串口一样使用开发板了
在这里插入图片描述

c:ADB参考资料

ADB参考资料
ADB命令参考
ADB常用命令

2、串口方式连接到开发板

由于个人没有USB转TTL(还再路上),这里就不写啦,因为暂时使用ADB也够用,速度也比较快。这里就贴上一些链接参考。

a:驱动和串口工具下载和安装

驱动下载

b:硬件连接

docx板子后面有贴心地标出RX\TX,自己连接USB转TTL就行了,RX->TX,TX->RX,GND->GND即可

看原理图,连接引脚6,8,10即可
在这里插入图片描述
在这里插入图片描述

c:登录到开发板

Tina 系统登录用户名:root 密码:tina

3、SSH方式连接到开发板

这个等我先摸索一下怎么连接上wifi(不知道为什么我按照sipeed的方式: 修改/etc/wifi/wpa_supplicant.conf ),再更新这块

四、点亮第一个小灯

额外内容:在abd 操作命令中,windows内容复制后,在命令行鼠标右键是粘贴操作
此处内容来自sipeed官方基础操作

命令:

echo 255 > /sys/class/leds/sunxi_led0r/brightness #红灯亮
echo 0 > /sys/class/leds/sunxi_led0r/brightness   #红灯灭
echo 255 > /sys/class/leds/sunxi_led0g/brightness #绿灯亮
echo 0 > /sys/class/leds/sunxi_led0g/brightness   #绿灯灭
echo 255 > /sys/class/leds/sunxi_led0b/brightness #蓝灯亮
echo 0 > /sys/class/leds/sunxi_led0b/brightness   #蓝灯灭

不知道为什么:我不能运行官方的基础点灯提示报错,等我解决掉会续写这块


五、Lichee RV PC环境搭建

1、Ubuntu环境安装

使用的虚拟机是Virtual Box不是VMware注意了
Ubuntu建议安装:14.04版本,虚拟硬盘内存50G+,内存2G+,这里不建议自己搭建环境(不知道为什么我跟着官方搭建环境,用Ubuntu14.04的版本搭建不成功,可以试试用Ubuntu16的版本),建议使用官方搭建好的环境

Ubuntu14.04安装教程

阿里云Ubuntu镜像

选择ubuntu-14.04-desktop-amd64.iso即可
在这里插入图片描述
可以使用官方的Ubuntu14.04已经搭建好的环境
官方搭建好的环境:虚拟机下载地址

官方的配置好的虚拟机用户allwinner密码是:123456 root密码需要自己去配置,执行命令passwd即可配置命令

2、源码下载

根据官方下载即可,官方描述挺清晰的。官方的SDK挺大的要下载挺久,记得先把Ubuntu的下载源给换好,换成阿里云或者清华的源都可以。

SDK下载参考链接
AWOL参考链接

六、在开发板上运行第一个程序

在安装好virtual box、ubuntu14.04、和安装好SDK之后,我们就已经可以去编译我们的程序了。让我们编译第一个程序,经典的”hello world!“

1、编写hello.c文件

编写的文件可以在Ubuntu编写,不过我不建议,在我安装完Virtual Box7.0版本和安装官方的ubuntu14.04之后,系统出现一个小错误,vi编辑器不能正常使用。可以在windows编写之后然后使用共享文件夹的方式将文件拉到ubuntu自己的目录。

#include<stdio.h>        
int main()             
{                     
    printf("Hello world!");   
    return 0;           
}                   

2、编译hello.c

我们需要进入我们下载官方sdk的目录(之前是在这个目录使用repo sync 进行同步的)

这个是我下载的文件
在这里插入图片描述
编译到开发板的编译器GCC就在

// GCC 编译工具所在位置
/home/allwinner/workspace/tina-D1-H/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-gcc

a:直接编译

编译hello.c,这里要根据自己下载SDK的目录进行执行指令,也就是上面GCC编译工具链所在位置。
这块的路径都是一样的:
prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-gcc

/home/allwinner/workspace/tina-D1-H/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-gcc  -o hello hello.c

在这里插入图片描述

b:使用Makefile编译

Makefile文件内容,将Makefile文件与hello.c放在同一个文件夹

#设置编译链路径及工具
CTOOL:=riscv64-unknown-linux-gnu-
CCL:=/home/allwinner/workspace/tina-D1-H/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702
CC:=${CCL}/bin/${CTOOL}gcc

#设置编译规则
hello_word:hello.c
        ${CC} -o hello hello.c

#清理规则
clean:
        rm hello

执行make命令就可以了
在这里插入图片描述

3、使用ADB传送文件到开发板

将hello 文件放在共享文件夹当中(设置Virtual Box共享文件夹的方式在上面安装Virtual Box的链接已经有了)

这样就把文件放到Windos了
在这里插入图片描述
连接ADB(上文有教┗|`O′|┛ 嗷~~),使用push文件将文件传送到开发板
在这里插入图片描述

3、使用ADB执行第一个程序

运行前记得修改文件的权限
在这里插入图片描述


资料下载

Lichee D1资料下载

参考资料

D1-H详细介绍资料-AWOL
全志客服服务平台,D1-H官方文档资料在这里可以下载
WIKI.SIPEED官方教程
Lichee RV系列开发教程汇总
平头哥开放社区
哇酷开发社区

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

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

相关文章

孙溟㠭篆刻《无有中无尽藏》

《无有中无尽藏》孙溟㠭篆刻 无一物中无尽藏&#xff0c;是说当“我执”袪除&#xff0c;仅余“真如”时&#xff0c;便可以理解“无尽藏”。虽然身上没有东西&#xff0c;但是其实世人身上藏了所有的东西。“无心”亦是有心&#xff0c;心中富足。所以当人祛除心中的偏执&…

自动语音识别(ASR)研究综述

自动语音识别ASR研究综述 一、语言识别基础知识 从语音系统识别构成来讲&#xff0c;一套完整的语音识别系统包括&#xff1a;预处理、特征提取、声学模型、语言模型、以及搜索算法等模块&#xff0c;具体结构示意图如下所示: 特征提取&#xff08;MFCC声学特征&#xff09…

Error handling response: TypeError: self.processResponse is not a function

问题背景 &#xff1a; 自己在搭建 Vue 初始模板架子的时候 &#xff0c; 解决完 router 路由的报错问题后 &#xff0c; 控制台还剩下一个显眼的 Error 红色 Bug &#xff0c; 不解决的话看着难受 &#xff0c; 盘它 &#xff01; 点击报错内容后进入 &#xff1a; Error h…

redis应用笔记

1.登录服务 在登陆服务中,如果将数据全部存储到tomcat中,当存在多个tomcat的时候,数据是无法同步的,这就导致了数据的共享问题: 1、每台服务器中都有完整的一份session数据&#xff0c;服务器压力过大。 2、session拷贝数据时&#xff0c;可能会出现延迟 解决办法就是采用redi…

SpringBoot整合Redis实现优惠券秒杀服务(笔记+优化思路版)

本文属于看黑马的redis的学习笔记&#xff0c;记录了思路和优化流程&#xff0c;精简版最终版请点击这里查看。 文章目录一、全局ID生成器1.1 理论1.1.1 全局唯一ID生成策略1.2 代码(Redis自增)二、实现优惠券秒杀下单2.1 SQL2.2 SQL对应实体类2.2.1 普通券实体类2.2.2 秒杀券实…

声纹识别之说话人验证speaker verification

目录 一、speaker verification简介 二、主流方案和模型 1、Ecapa_TDNN模型 2、WavLm 三、代码实践 1、Ecapa_TDNN方案 a、模型结构 b、loss c、数据处理 d、模型训练和评估 e、说话人验证推理 2、WavLm预训练方案 a、模型结构和loss b、数据处理 c、模型训练 …

html5支持的几种音频格式介绍

关于音频的格式 ogg音频 Ogg全称应该是OGGVobis(oggVorbis)是一种新的音频压缩格式&#xff0c;类似于MP3等的音乐格式。Ogg是完全免费、开放和没 有专利限制的。OggVorbis文件的扩展名是.OGG。Ogg文件格式可以不断地进行大小和音质的改良&#xff0c;而不影响旧有的编码器或…

合合信息扫描全能王“照片高清修复”功能上线,3秒还原老照片

穿越时光的“美颜”!合合信息智能图像处理技术让老照片“焕新”“春运”已经开始&#xff0c;团聚时刻即将到来。和亲人们一起围炉话家常&#xff0c;翻开旧日的相册&#xff0c;品读一张张泛黄的照片背后最牵动人心的情感&#xff0c;也是“年味”所在。时光会在照片上留下斑驳…

巨量引擎·2023教育Future大会:扎根内容生态,做好经营提效

求知方寸间&#xff0c;如风过千川。当知识创作成为新的潮流&#xff0c;当教育数字化迈入直播与短视频新时代&#xff0c;当图书电商红红火火&#xff0c;如何做好教育全产业链升级与创新&#xff1f;新年伊始&#xff0c;巨量引擎举办“行知.行为.行万里 2023教育Future大会”…

嵌入式实时操作系统的设计与开发(六)

中断系统结构 在RTOS中&#xff0c;中断是与具体硬件平台关联度最大的部分&#xff0c;为了实现高可移植性、可配置性&#xff0c;中断子系统依照aCoral的整体结构来设计&#xff0c;划分为HAL&#xff08;硬件抽象层&#xff09;和内核层。 在HAL层先将各种中断汇拢&#xff…

第三周周二1.10

-A 添加规则 -I 插入 -F 清空 -L 查看 -p 调整默认规则 -D 删除规则 dport : -j ACCEPT DROP REJECT LOG /var/log/messages -n 以数字的形式显示结果 -v 详细信息 -x 精确的 -line-number 行号 删除&#xff1a;指…

2023 年你应该知道的 10 个开源项目

精心策划的 2023 年 GitHub 上最有趣的开发工具和项目列表。1.NetBeansNetBeans 是一个开源的集成开发环境&#xff0c;因其支持多种编程语言和平台而受到开发人员的欢迎。动图2.OpenCVOpenCV 是一个用于图像和视频处理的开源计算机视觉库。它广泛用于对象检测、面部识别和机器…

嬴图 | 走进 Ultipa Manager 之 高可视化

Ultipa Manager是嬴图数据库管理系统基于网页端的应用。自2019年至今&#xff0c;已迭代最新至v4.2版本。本系列&#xff0c;笔者将分三篇文章&#xff0c;引导大家走进嬴图之Ultipa Manager&#xff0c;详细了解其高可视化、数据科学家工具箱、便捷的数据迁移3大亮点功能&…

分享91个NET源码,总有一款适合您

NET源码 分享91个NET源码&#xff0c;总有一款适合您 91个NET源码下载链接&#xff1a;https://pan.baidu.com/s/1dqb9XgiiVfsVkq-wqKt3Kg?pwd275d 提取码&#xff1a;275d 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&…

mybatis插入mysql数据库PersistenceException 数据库连接超时

mybatis插入mysql部分数据失败mybatis插入mysql数据库PersistenceException1、异常堆栈信息&#xff1a;2、问题原因&#xff1a;3、问题排查3.1 查看数据库连接信息3.2 问题解决3.2.1 Spring项目可以在配置文件里面设置3.2.2 修改conn改成局部变量mybatis插入mysql数据库Persi…

python 语法(空行、变量、if条件控制、循环语句)编码示例

文章目录前言python 语法(空行、变量、if条件控制、循环语句)编码示例1 空行&#xff0c;在python中空行也是代码2 单个变量赋值、多个变量赋值3 if条件控制4 循环语句4.1 while循环4.2 for 循环前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff…

C++程序的编译与运行

C和C语言类似&#xff0c;也要经过编译和链接后才能运行。 下图是 C/C 代码生成可执行文件的过程&#xff1a; C源文件的后缀 C语言源文件的后缀非常统一&#xff0c;在不同的编译器下都是.c。C 源文件的后缀则有些混乱&#xff0c;不同的编译器支持不同的后缀&#xff0c;下…

新应用——设备巡检管理,系统化更具稳定性

对于生产制造型企业来说&#xff0c;随着企业逐步发展&#xff0c;产量增大&#xff0c;生产设备的稳定性和安全性就成为企业经济效益的关键。设备巡检是有效保证设备安全和稳定的重要环节。通过设备巡检&#xff0c;定期掌握各台设备的运行情况及周围环境的变化&#xff0c;尽…

算法竞赛百日——快速排序 - 分治

本文已收录于专栏 &#x1f332;《百日算法竞赛》&#x1f332; 目录 本文已收录于专栏 &#x1f332;《百日算法竞赛》&#x1f332; 快速排序 解题思路 ​ 思路分析&#xff1a; 模拟&#xff1a; AC_Code 二分查找 用二分法求 平方根 二分模板 快速排序 给定你…

纯前端导出Excel并修改样式

之前写过一篇前端导出&#xff1a;Vue实现导出功能&#xff08;无后端配合&#xff09; &#xff0c;但是当时没考虑到样式的问题&#xff0c;后来要求导出的Excel单元格的样式也需要调整&#xff0c;尤其是宽度&#xff0c;第一想到的就是xlsx-style这个包&#xff0c;之前也没…