D1s RDC2022纪念版开发板开箱评测及点屏教程

news/2024/4/26 18:52:43/文章来源:https://blog.csdn.net/weixin_43094346/article/details/129174847

作者@new_bee
本文转自:https://bbs.aw-ol.com/topic/3005/

目录

  1. 芯片介绍
  2. 开发板介绍
  3. RT-Smart用户态系统编译使用
  4. 感想
  5. 引用

1. 芯片介绍

RISC-V架构由于其精简和开源的特性,得到业界的认可,近几年可谓相当热门。操作系统方面有RT-Thread,Linux等支持。在今年早些时候,Google希望RISC-V成为Android支持的“一级”架构。

D1s 是22nm 64bit RISC-V 架构的处理器,主频720MHz。内置64M DDR2。支持RGB,MIPI等视频输出接口,ADC、DAC、I2S、PCM、DMIC、OWA 等多种音频接口。音视频编解码支持如下:

Video decodingH.265 up to 1080p@60fps H.264 up to 1080p@60fps MPEG-1/2/4, JPEG, VC1 up to 1080p@60fpsVideo encodingJPEG/MJPEG up to 1080p@60fpsSupports input picture scaler up/down

芯片框图如下:

在这里插入图片描述

2. 开发板介绍

RDC2022 纪念版开发板是基于D1s芯片的小尺寸开发板,尺寸为5.5cm*4cm。正面包含一块D1s核心板,外围电路采用ME3116作为DCDC降压芯片,CH340N作为USB-TTL芯片,PT4103作为背光驱动,并包含一块LM4890音频功放。总体电路比较简洁。

开发板上方USB为烧录口,下方为串口,可以在开发板启动后接串口调试。

在这里插入图片描述

开发板背面为SD卡插槽,一个RGB888接口接显示屏,和一个触摸屏接口。该开发板还包含两组12脚的PMOD接口用于接插外设。

在这里插入图片描述

RGB接口按引脚定义可以接入通用RGB屏幕,我这里接的是480*272的屏幕,引脚定义如下:

在这里插入图片描述

整体开发板原理图:
2022-RDC-D1S.pdf

3. RT-Smart用户态系统编译使用

RT-Smart 是基于 RT-Thread 操作系统上的混合操作系统,把应用从内核中独立出来,形成独立的用户态应用程序。这样更加安全。
以下编译过程参考了快来尝鲜!!使用 D1s (RDC2022 纪念版) 运行 RT-Smart,并将过程中一些小坑记录下,方便后面遇到同样问题的人。

3.1 刷机&调试环境准备

操作系统:Windows
下载 zadig.7z

首先用typec数据线一端插入烧录口,按住FEL按钮同时另一端插入电脑,此时设备进入FEL模式。第一次插入设备管理器会发现未知设备。运行Zadig安装驱动,如下图:

在这里插入图片描述

之后就可以在FEL模式下刷机。

用typec数据线一端插入调试口,另一端插入电脑。电脑打开串口软件,选择对应串口,波特率设为500000,则可以通过串口进行调试。
在这里插入图片描述

3.2 开发编译环境准备

操作系统:Ubuntu 20.04

下载用户态代码:

git clone https://github.com/RT-Thread/userapps.git

下载内核态代码:
注:位置可以与用户态代码分开,只要设置RISCV64的工具链环境变量即可

git clone https://github.com/RT-Thread/rt-thread.git

下载RISC-V 64工具链

cd userapps
python3 tools/get_toolchain.py riscv64

配置RISC-V 64工具链环境变量
注意:按官方脚本需要执行

source smart-env.sh riscv64

这个脚本完成两个工作:

  1. 设置RTT_CC等环境变量
  2. copy riscv的config到.config

但是某些shell下获取当前脚本目录错误,导致无法完成copy,第一次使用的话会继续用默认的arm工具链编译。
比较简单的解决办法是执行两步:

source smart-env.sh riscv64
cp configs/def_config_riscv64 .config

3.3 编译rt-thread内核

进入bsp目录

cd rt-thread/bsp/allwinner/d1s

修改编译配置

scons --menuconfig

首先打开UART3串口,路径为
General Deivers Configuration->General Purpose UARTs
选中UART3,并修改TX引脚为GPIOG08,RX引脚为GPIOG09
在这里插入图片描述

设置终端使用UART3,路径为
RT-Thread Kernel->Kernel Device Object
修改为uart3
在这里插入图片描述

这回目标是点屏,所以要打开LCD驱动,路径为
General Deivers Configuration->Enable LCD
在这里插入图片描述

以上完成内核配置,保存退出。

编译内核:

scons

编译成功后会生成内核文件:
在这里插入图片描述

烧录内核
下载xfel工具:xfel_v1.2.9.7z
将sd.bin拷贝到windows下xfel工具目录下。按住开发板FEL按钮同时另一端插入电脑。执行命令完成烧录:

xfel.exe sd write 57344 sd.bin

3.4 编译rt-smart用户态应用点屏

首先将D1s bsp目录下 mksdcard.sh 脚本拷贝到userapps目录下。
这里借用丝滑的在RT-Smart用户态运行LVGL的LVGL移植成果

下载修改代码:

https://github.com/Rbb666/RT-Smart-UserAPP.git

拷贝项目下的lvgl到userapps/apps目录下

由于一些宏定义缺失,需要将lvgl-nes/lv_rtt_port下的lv_conf.h和lv_port.h拷到对应目录下
在这里插入图片描述

同时,由于我没有触摸屏设备,所以注释掉lv_demo.c中的触摸屏初始化代码
在这里插入图片描述

在用户态代码根目录下,编译用户态应用

scons

执行脚本制作root文件系统

./mksdcard.sh

生成sdroot.bin
在这里插入图片描述

最后烧录文件系统

xfel.exe sd write 8388608 sdroot.bin

3.5 点屏

烧录完成后重启,就可以用调试口看到目录下有lvgl.elf。执行点亮屏幕

./lvgl.elf

在这里插入图片描述

4. 感想

总体而言,RISC-V的生态在厂商和开源社区的努力下逐步完善起来。芯片,开发板,操作系统都有诸多选择,工具链也可以较透明的无缝移植。
但是感触比较深的还是缺少更多的文档和入门教程,对于新人不会像树莓派等有开箱即用的效果(当然树莓派现在的性价比就不说了)。
另外,scons编译确实较方便,不过针对一些复杂的基于makefile的开源项目,移植到scons较为繁复。在用RISCV工具链编译一些基于makefile的开源项目时,也遇到了一些坑,之后会写文章分享。当然RISCV的发展不是一蹴而就的事,仍需业界和开源社区大力支持。

5. 引用

D1s
RT-Thread文档中心
快来尝鲜!!使用 D1s (RDC2022 纪念版) 运行 RT-Smart
丝滑的在RT-Smart用户态运行LVGL

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

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

相关文章

Firebase常用功能和官方Demo简介

一、Firebase简介Firebase刚开始是一家实时后端数据库创业公司,它能帮助开发者很快的写出Web端和移动端的应用。自2014年10月Google收购Firebase以来,用户可以在更方便地使用Firebase的同时,结合Google的云服务。现在的Firebase算是谷歌旗下的…

模拟信号4-20mA /0-5V/0-75mV/0-100mV转RS-485/232,数据采集A/D转换模块 YL21

特点:● 模拟信号采集,隔离转换 RS-485/232输出● 采用12位AD转换器,测量精度优于0.1%● 通过RS-485/232接口可以程控校准模块精度● 信号输入 / 输出之间隔离耐压3000VDC ● 宽电源供电范围:8 ~ 32VDC● 可靠性高,编程…

界面控件DevExpress WinForm——轻松构建类Visual Studio UI(二)

DevExpress WinForm拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任…

海思SD3403/SS928V100开发(5)MIPI_YUV相机vio sample开发----修改思路

1. 前言 sensor输出格式: YUV422 8bit 硬件连接: MIPI_YUV相机(4lane MIPI) -> SS928V100 MIPI0(4lane) 框图: 2. 几个问题 基于SS928 SDK中的 vio sample修改; 但是sample里面都是基于RAW RGB sensor开发的sample, 没有现成的MIPI_YUV sensor的参考,需要自己…

CentOS 8利用Apache安装部署下载服务器

1:部署的目的是做一个类似下面开源镜像网站,把一些软件或者资料上传到服务器上面,减少用户在互联网上下载资料,提高效率,减少病毒。 2:使用下面的命令配置本机的IP地址主机名等信息。后期使用IP地址进行访问…

11技术太卷我学APEX-数据加载

11技术太卷我学APEX-数据加载 0 所谓的数据加载 就是导入数据到数据库表中,本示例就采用Excel导入数据到《技术太卷我学APEX》的apex_learn表。表结构大概是这样的 CREATE TABLE "APEX_LEARN" ( "P_ID" NUMBER(17,0) NOT NULL ENABLE, &quo…

【Elasticsearch】安装配置与使用

一、下载与安装Elasticsearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch#ga-release前端管理界面:https://github.com/mobz/elasticsearch-head这两个文件都是解压即可。二、配置与启动1.elasticsearch6以上的版本已经内置jdk&#xf…

2023年Java进阶架构师的必备思维导图,让你少走弯路!

架构师是什么?要做什么? 架构师 :是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。架构师不是一个人,他需要建立高效的体系,带领团队去攻城略地,在规定的时间内…

一文速学-Adaboost模型算法原理以及实现+Python项目实战

目录 前言 一、Adaboost算法概述 二、Adaboost模型原理 类推 计算原理 特点 适应较小量数据集,训练时间长 三、Python实例运用 AdaBoostClassifier分类 参数 实例实现分类 导入数据集 划分数据集 训练模型 评估算法 模型效果 前言 集成学习的方法在全…

[NOIP2002 普及组] 过河卒

题目描述: 棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表…

干测试5年,经常被开发看不起,现在总算证明了自己····

测试不止是点点点 我感觉我是一个比较有发言权的人吧,我在测试行业摸爬滚打5年,以前经常听到开发对我说,天天的点点点有意思没? 和IT圈外的同学、朋友聊起自己的工作,往往一说自己是测试,无形中也会被大家…

利用global mapper导出等高线 在sketch up制作三维模型

为了做一个地形模型,绞尽脑汁实验了所有能查到的教程,在免费的基础上总体尝试失败,一是需要花钱的插件例如bitmap to mesh,即便能下载到,也是无法安装使用。如果你能下到且安装上,别忘了分享给我。 二是有的…

什么是品牌营销?学会正确推广您的业务

什么是品牌营销? 品牌营销涉及长期战略规划,以推广整个品牌,而不是营销单个产品或服务。它分享了一个引人入胜的故事,以在潜在客户中产生品牌知名度并建立声誉。 面向消费者的品牌使用品牌智能软件来了解人们对其品牌的看法&#…

超级详细的Maven教程

超级详细的 Maven 教程(基础高级) 1. Maven 是什么 Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。 一个 Maven 工程有约定的目录结构,约定的目录结构对于 Maven 实现自动化构建而言是必不可少…

10套“2023年软考备考资料”送给你

距离软考考试越来越近了,备考的形势越发紧张了。考点那么多,我们需要抓出常考的大部分知识点。 ​为此,为大家整理了《2023年软考免费备考资料》,内含软考各科目不同类型共10套备考资料。 ​ 第1套:早鸟学习计划&am…

表格内容过多时单行/多行显示

分析 单行多行显示涉及到 table-layout: fixed; 这个属性,默认状态下的属性值是 auto (自动表格布局),两种不同的属性值区别如下: 方法 我在设置表格内容单行/多行显示时采用的方法: table 添加的样式&a…

13- 信用卡匹配 (OpenCV基础) (项目十三) *

项目要点 _, ref cv2.threshold(ref, 10, 255, cv2.THRESH_BINARY_INV) 二值化处理图片, 黑白化图片ref cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 灰度化处理ref_contours, _ cv2.findContours(ref.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 计算轮廓cv2.dr…

xselect 实现已用数据禁止选择

function queryExamtemplate() {layui.$.ajax({url: 接口地址,type: "get",data: {id: id, name: name},//传参数方式 无参[]dataType: "json",contentType: "application/json",success: function (res) {if (res.code 0) {let data [];res.…

滤波算法:经典卡尔曼滤波

卡尔曼滤波实质上就是基于观测值以及估计值二者的数据对真实值进行估计的过程。预测步骤如图1所示: ​图1 卡尔曼滤波原理流程图 假设我们能够得到被测物体的位置和速度的测量值 ​,在已知上一时刻的最优估计值 ​以及它的协方差矩阵 的条件下&#xff…

【数据结构】时间复杂度

🚀write in front🚀 📜所属专栏:初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对…