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

news2024/10/7 14:22:36

作者@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 decoding
    H.265 up to 1080p@60fps 
    H.264 up to 1080p@60fps 
    MPEG-1/2/4, JPEG, VC1 up to 1080p@60fps

Video encoding
    JPEG/MJPEG up to 1080p@60fps
    Supports 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.coloradmin.cn/o/365930.html

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

相关文章

Kubernetes 如何通过ingress-nginx实现应用灰度发布?

在日常的工作中,我们会经常对应用进行发版升级,在互联网公司尤为频繁,主要是为了满足快速的业务发展。我们经常用到的发布方式有滚动更新、蓝绿发布、灰度发布。滚动更新:依次进行新旧替换,直到旧的全部被替换为止。蓝…

FATFS函数浅谈 看完学会FATSFS,建议收藏

目录 一、注册工作区域 二、打开文件夹 三、读取文件夹 四、打开\新建一个文件 五、读取文件 六、写文件 七、移动文件指针 八、截断文件 九、刷新缓存消息 十、新建文件夹 十一、删除文件或文件夹 十二、重命名\移动文件或文件夹 十三、获取文件信息 十四、改变…

KNN算法及Python实现

0 建议学时 2学时 1 KNN算法 1.1 KNN原理 KNN:K Nearest Neighbors,即K个最近的邻居; 预测一个新值xxx,根据距离最近的K个点的类别来判断xxx属于哪一类。 算法核心要点: K值的选取非常重要; 距离公式…

山东大学电磁场与电磁波期末试题

文章目录一、电磁场的基本规律二、静态电磁场及其边值问题的解三、分离变量法四、均匀平面波的反射与透射五、时变电磁场与均匀平面波在无界空间中的传播六、导行电磁波七、电磁辐射往年真题回忆复习建议一、电磁场的基本规律 设在 x<0x<0x<0 处为真空&#xff0c;x&…

LeetCode分类刷题----回溯算法

回溯1.回溯问题77.组合216.组合总和|||17.电话号码的字母组合39.组合总和40.组合总和||131.分割回文串93.复原IP地址78.子集90.子集||491.递增子序列46.全排列47.全排列||51.N皇后37.解数独1.回溯问题 77.组合 思路&#xff1a; 回溯的本质是用一棵树来描述&#xff0c;用pat…

Gitee码云 操作

1&#xff1a;Git团队协作机制1.1&#xff1a;团队内协作1.2&#xff1a;跨团队协作2&#xff1a;Gitee码云 操作码云网址&#xff1a; https://githee.com/2.1&#xff1a;创建远程仓库2.2&#xff1a;远程仓库操作命令名称作用git remote -v查看当前所有远程地址别名git remo…

Java缓存面试题——Redis应用

文章目录1、为什么要使用Redis做缓存&#xff1f;2、为什么Redis单线程模型效率也能那么高&#xff1f;3、Redis6.0为什么要引入多线程呢&#xff1f;4、Redis常见数据结构以及使用场景字符串&#xff08;String&#xff09;哈希(Hash)列表&#xff08;list&#xff09;集合&am…

【机器学习】马尔可夫链与隐马尔可夫模型(HMM)

1.马尔可夫链(Markov Chain) 马尔可夫链&#xff08;Markov chain&#xff09;&#xff0c;又称离散时间马尔可夫链&#xff08;discrete-time Markov chain&#xff09;&#xff0c;因俄国数学家安德烈马尔可夫&#xff08;A.A.Markov&#xff09;得名。描述的是状态空间中经过…

Win11系统user profile service服务登录失败解决方法

Win11系统user profile service服务登录失败解决方法分享。有用户在使用电脑的时候遇到了一些问题&#xff0c;系统的user profile service服务无法登录了。出现这个问题可能是系统文件损坏&#xff0c;或者中了病毒。接下来我们一起来看看如何解决这个问题的操作方法分享吧。 …

【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏&#xff1a;unity细节和bug ⭐基于unity子对象为什么无法进行z轴的拖拽移动和z轴自动归位⭐ 文章目录⭐基于u…

学习系统编程No.5【虚拟地址空间】

引言: 北京时间&#xff1a;2023/2/22&#xff0c;离补考期末考试还有5天&#xff0c;不慌&#xff0c;刚午觉睡醒&#xff0c;闹钟2点20&#xff0c;拖到2点50&#xff0c;是近以来&#xff0c;唯一一次有一种睡不醒的感觉&#xff0c;但是现在却没有精神&#xff0c;因为听了…

【Spring Cloud Alibaba】007-Nacos 配置*

【Spring Cloud Alibaba】007-Nacos 配置* 文章目录【Spring Cloud Alibaba】007-Nacos 配置*一、概述1、概述2、对比 spring cloud config二、基本使用1、在管理界面新建配置2、启动权限3、 搭建 nacos-config 服务第一步&#xff1a;引入依赖第二步&#xff1a;修改 yaml 配置…

交叉编译 MQTT/Mosquitto

交叉编译 MQTT/Mosquitto 概述 Eclipse Mosquitto 是一个开源&#xff08;EPL/EDL许可&#xff09;消息代理&#xff0c;它实现了 MQTT 协议版本 5.0、3.1.1 和 3.1。Mosquitto 重量轻&#xff0c;适用于从低功耗单板计算机到全服务器的所有设备。 MQTT 协议提供了一种使用发…

【Linux】-- 开发工具(vim、gcc、g++、make/Makefile)

目录 Linux编辑器-vim使用 vim的基本概念 vim的简单配置 vim的基本操作 vim进阶命令集 插入模式 从插入模式切换为命令模式 移动光标 删除文字 复制 替换 撤销上一次操作 更改 跳至指定的行 vim底行模式命令集 列出行号 跳到文件中的某一行 查找字符 保存文…

黑马程序员 Java 项目《瑞吉外卖》

教程链接&#xff1a;https://www.bilibili.com/video/BV13a411q753 Gitee 仓库&#xff1a;https://gitee.com/weixinyang1980/reggie_take_out 运行视频&#xff1a; 瑞吉外卖后台运行视频 瑞吉外卖用户端运行视频 目录开发环境搭建数据库环境搭建Maven 项目搭建后台登录功能…

通过连接另一个数组的子数组得到一个数组

给你一个长度为 n 的二维整数数组 groups &#xff0c;同时给你一个整数数组 nums 。 你是否可以从 nums 中选出 n 个 不相交 的子数组&#xff0c;使得第 i 个子数组与 groups[i] &#xff08;下标从 0 开始&#xff09;完全相同&#xff0c;且如果 i > 0 &#xff0c;那么…

Python四大主题之一【 Web】 编程框架

目前Python的网络编程框架已经多达几十个&#xff0c;逐个学习它们显然不现实。但这些框架在系统架构和运行环境中有很多共通之处&#xff0c;本文带领读者学习基于Python网络框架开发的常用知识,及目前的4种主流Python网络框架&#xff1a;Django、Tornado、Flask、Twisted。 …

论文复现:风电、光伏与抽水蓄能电站互补调度运行(MATLAB-Yalmip全代码)

论文复现:风电、光伏与抽水蓄能电站互补调度运行(MATLAB-Yalmip全代码) 针对风电、光伏与抽水蓄能站互补运行的问题,已有大量通过启发式算法寻优的案例,但工程上更注重实用性和普适性。Yalmip工具箱则是一种基于MATLAB平台的优化软件工具箱,被广泛应用于工程界优化问题和…

JVM知识最强总结

类加载运行全过程1.java.exe调用底层jvm.dll创建java虚拟机&#xff0c;2.创建引导类加载器实例&#xff0c;3.完成实例的创建后需要一个启动器&#xff0c;这个是通过sun.misc.launcher类实现&#xff0c;通过该类的getLaunch()方法启动&#xff0c;4.然后调用该类的getClassL…

梳理数字资产,亚马逊云科技助力致盛咨询带来药物研发新福音

作为医疗保健领域的咨询公司&#xff0c;ZS需要保证服务可靠性、敏捷性和安全性的同时&#xff0c;获得经济效益。亚马逊云科技丰富的云服务产品简化了ZS基础架构的搭建&#xff0c;为ZS节省了大量的人力与资金成本。同时&#xff0c;缩短了ZS扩展基础设施的周转时间&#xff0…