【RDC2022纪念板】RT-Smart D1s上手

news2024/11/20 1:42:37

目录

    • 环境准备
    • 开发板硬件介绍
    • 开发环境搭建
    • 烧录

环境准备

  • windows电脑(用于烧录固件和串口日志查看)
  • Ubuntu虚拟机(用于编译生成固件)
  • RDC2022纪念板
  • TypeC数据线

开发板硬件介绍

在这里插入图片描述
在这里插入图片描述
开发板使用了全志科技的D1s芯片,全志RISC-V D1s芯片是一款基于RISC-V架构的低功耗、高性能的嵌入式处理器,该芯片主要用于智能家居、智能音箱、智能门锁、智能监控等物联网应用领域,全志RISC-V D1s芯片的主要技术特点包括:

  • 处理器:采用RISC-V架构,主频高达1.5GHz,性能强劲。

  • 显卡:集成Mali400 MP2 GPU,支持OpenGL ES 2.0/1.1、OpenVG 1.1等图形加速技术,能够提供流畅的图像处理和游戏体验。

  • 存储:支持DDR3/DDR3L/LPDDR2/LPDDR3等多种内存类型,最大支持4GB RAM和64GB eMMC存储。

  • 视频:支持1080P H.264/H.265硬解码,能够提供高清视频播放和流畅的视频通话体验。

  • 音频:支持多种音频格式,包括AAC、MP3、WMA、FLAC等,能够提供高品质的音频播放和语音识别体验。

  • 网络:支持多种网络连接方式,包括Wi-Fi、蓝牙、以太网等,能够提供快速、稳定的网络连接。

总之,全志RISC-V D1s芯片是一款功能强大、性能优异的嵌入式处理器,适用于各种物联网应用领域。它能够提供高清视频播放、流畅的游戏体验、高品质的音频播放和语音识别等功能,同时还具有RISC-V架构的优点,如开放、灵活、可扩展等,是物联网应用开发的理想选择。

板载的两个USB-TypeC座子一个是用来烧录,一个用来显示串口日志,由于开发板上已经集成了USB转串口芯片,故可以直接接USB串口。

开发板上的三个按键分别是:

  • FEL 程序下载按键,用来进入烧录状态
  • RST复位按键
  • USR用户按键

开发板贴了一片128Mb的SD card,可以直接烧录固件到这里。

开发环境搭建

  1. 首先下载RT-Smart 用户态应用开发SDK
# git clone https://github.com/RT-Thread/userapps.git
  1. 进入到userapps目录,下载rt-smart源码(目前rt-smart的源码已经合入master仓库,可以直接clone)
userapps# git clone https://github.com/RT-Thread/rt-thread.git
  1. 配置编译工具链,由于D1s是RISCV架构,所以直接用riscv64
root@ubuntu:/home/RDC2022_D1s/userapps# python3 tools/get_toolchain.py riscv64
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 1.66%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 15.74%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 28.31%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 35.43%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 41.75%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 46.03%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 50.80%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 59.79%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 72.06%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 79.57%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 83.99%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 89.86%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 95.91%
riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2: 100%

  1. 刷新环境变量
root@ubuntu:/home/RDC2022_D1s/userapps# source smart-env.sh riscv64
Arch      => riscv64
CC        => gcc
PREFIX    => riscv64-unknown-linux-musl-
EXEC_PATH => /home/RDC2022_D1s/userapps/tools/gnu_gcc/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin

  1. 下载scons,如果已经有scons环境则忽略。
sudo apt install scons
  1. 配置串口
    进入 rt-thread/bsp/allwinner/d1s 目录下
    使用 scons --menuconfig 查看配置。smart 使用的串口为 UART3 ,对应引脚为 PG8 和 PG9。检查 UART3 是否开启,以及引脚是否正确。
    在这里插入图片描述
    在这里插入图片描述
  2. 编译内核源码
root@ubuntu:/home/RDC2022_D1s/userapps/rt-thread/bsp/allwinner/d1s# scons # 直接在d1s目录scons进行编译

在这里插入图片描述
8. 编译app源码
打包用户态程序,需要用到当前目录下的SDCard制作脚本,我们回到userapp目录,然后把这个脚本copy过来

root@ubuntu:/home/RDC2022_D1s/userapps# cp rt-thread/bsp/allwinner/d1s/mksdcard.sh ./mksdcard.sh

然后运行scons,编译用户态代码

root@ubuntu:/home/RDC2022_D1s/userapps# scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
CC apps/webclient/packages/webclient-v2.1.2/src/webclient.o
CC apps/webclient/packages/webclient-v2.1.2/src/webclient_file.o
CC apps/webserver/packages/webnet-v2.0.2/module/wn_module_alias.o
CC apps/webserver/packages/webnet-v2.0.2/module/wn_module_asp.o
CC apps/webserver/packages/webnet-v2.0.2/module/wn_module_auth.o
CC apps/webserver/packages/webnet-v2.0.2/module/wn_module_cgi.o
CC apps/webserver/packages/webnet-v2.0.2/module/wn_module_index.o
CC apps/webserver/packages/webnet-v2.0.2/module/wn_module_ssi.o
CC apps/webserver/packages/webnet-v2.0.2/module/wn_module_upload.o
CC apps/webserver/packages/webnet-v2.0.2/samples/wn_sample.o
CC apps/webserver/packages/webnet-v2.0.2/samples/wn_sample_upload.o
CC apps/webserver/packages/webnet-v2.0.2/src/webnet.o
CC apps/webserver/packages/webnet-v2.0.2/src/wn_mimetype.o
CC apps/webserver/packages/webnet-v2.0.2/src/wn_module.o
CC apps/webserver/packages/webnet-v2.0.2/src/wn_request.o
CC apps/webserver/packages/webnet-v2.0.2/src/wn_session.o
CC apps/webserver/packages/webnet-v2.0.2/src/wn_utils.o
CC build/hello/main.o
CC build/ping/main.o
CC build/pong/main.o
CC build/umailbox/lwp_umailbox.o
CC build/umailbox/umailbox_test.o
CC build/vi/optparse-v1.0.0/optparse.o
CC build/vi/vi.o
CC build/vi/vi_utils.o
CC build/webclient/main.o
CC build/webserver/main.o
LINK root/bin/hello.elf
LINK root/bin/ping.elf
LINK root/bin/pong.elf
LINK root/bin/umailbox.elf
LINK root/bin/vi.elf
LINK root/bin/webclient.elf
LINK root/bin/webserver.elf
scons: done building targets.

编译完成后,运行sdcard.sh脚本来打包用户态代码

root@ubuntu:/home/RDC2022_D1s/userapps# ./mksdcard.sh 
4+0 records in
4+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.0160885 s, 261 MB/s
mkfs.fat 4.1 (2017-01-24)
root@ubuntu:/home/RDC2022_D1s/userapps# ls
apps  build  cconfig.h  configs  figures  Kconfig  linker_scripts  mksdcard.sh  prebuilt  README.md  README_ZH.md  root  rtconfig.h  rt-thread  SConstruct  sdk  sdroot.bin  smart-env.bat  smart-env.sh  tools

至此,我们完成了内核源码和用户态源码的编译,主要生成了sd.bin(内核态bin)和sdroot.bin(用户态)两个文件用于烧录。

烧录

  1. 开发板进入烧录状态,首先将TypeC线插到USER那个typeC口,然后按住FEL按键,接着按一下RST按键,让开发板进入烧录模式。第一次进入烧录模式需要安装驱动,如下图所示:
    在这里插入图片描述
  2. 我们找到附件中的Zadig软件,双击打开,他会自动识别未知USB设备,然后点击Install Driver即可。
    在这里插入图片描述
    在这里插入图片描述
  3. 驱动安装成功后,我们就可以使用XFEL软件来烧录了。将之前编译生成的bin文件都放到xfel目录下
PS D:\test\d1s_xfel> ls


    目录: D:\test\d1s_xfel


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          2022/9/8     12:00          49152 boot0_sdcard_sun20iw1p1_f133.bin
-ar---         2023/1/17     10:44         252580 libusb-1.0.dll
-a----          2023/5/5     14:29         799232 sd.bin
-a----          2023/5/5     14:28        4194304 sdroot.bin
-a----          2022/9/7     15:41         267264 xfel.exe
  1. 执行烧录命令来烧录
PS D:\test\d1s_xfel> ./xfel.exe sd write 8192 boot0_sdcard_sun20iw1p1_f133.bin
write 48Kbytes
swap buf:00023E00,len=512, cmdlen=512
Found SD card 126877696 bytes
100% [================================================] 48.000 KB, 179.791 KB/s
PS D:\test\d1s_xfel> ./xfel.exe sd write 57344 sd.bin
align up to 8KB, write 799232 ==> 784Kbytes
swap buf:00023E00,len=512, cmdlen=512
Found SD card 126877696 bytes
100% [================================================] 784.000 KB, 209.118 KB/s
PS D:\test\d1s_xfel> ./xfel.exe sd write 8388608 sdroot.bin
write 4096Kbytes
swap buf:00023E00,len=512, cmdlen=512
Found SD card 126877696 bytes
100% [================================================] 4.000 MB, 213.683 KB/s
  1. 重新将Type C线插到UART口,重新上电后就可以正常打印,并且也可以正常执行hello world程序
 \ | /
- RT -     Thread Smart Operating System
 / | \     5.0.1 build May  4 2023 03:14:58
 2006 - 2022 Copyright by RT-Thread team
hal_sdc_create 0
card_detect insert
Initial card success. capacity :121MB
sdmmc bytes_per_secotr:200, sector count:3c800
found part[0], begin: 8388608, size: 90.0MB
found partition:sd0 of mbr at offset 0x0000000000004000, size:0x000000000002d000
found part[1], begin: 102760448, size: 23.0MB
found partition:sd1 of mbr at offset 0x0000000000031000, size:0x000000000000b800
hal_sdc_create 1
card_detect insert
Initial card failed!!
[E/drv-sdmmc] init sdmmc failed!
[E/drv-sdmmc] sdmmc_init failed!
[D/FAL] (fal_flash_init:47) Flash device |                  sdcard0 | addr: 0x00000000 | len: 0x07900000 | blk_size: 0x00000200 |initialized finish.
[I/FAL] ==================== FAL partition table ====================
[I/FAL] | name       | flash_dev |   offset   |    length  |
[I/FAL] -------------------------------------------------------------
[I/FAL] | download   | sdcard0   | 0x00800000 | 0x00800000 |
[I/FAL] | easyflash  | sdcard0   | 0x01000000 | 0x00100000 |
[I/FAL] | filesystem | sdcard0   | 0x01100000 | 0x00c00000 |
[I/FAL] =============================================================
[I/FAL] RT-Thread Flash Abstraction Layer initialize success.
Hello RISC-V
msh />Mount "sd0p0" on "/" success
Mount "sd0p1" on "/data" fail
hal_sdc_create 1
[os E] OS_MutexCreate():42, handle 0x405263e0
card_detect insert
mmc_send_app_op_cond,109 100
Initial card failed!!
[E/drv-sdmmc] init sdmmc failed!
sdmmc bytes_per_secotr:200, sector count:0
[E/drv-sdmmc] read offset 0 over part sector 0
[E/drv-sdmmc] device read mbr 1-sector failure


msh />ls
Directory /:
hello.elf           255488                   
ping.elf            261272                   
pong.elf            256416                   
umailbox.elf        271608                   
vi.elf              425896                   
webclient.elf       304496                   
webserver.elf       401048                   
msh />./he
msh />./hello.elf
msh />hello world!

msh />

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

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

相关文章

PAVC100R4222 PARKER轴向柱塞泵

PAVC100R4222 PARKER轴向柱塞泵特点: 1、壳体为高强度铸铁 2、两段设计便于维护 3、全密封的轴用轴承 4、内置增压器***高转速性能,可达3000 RPM( PAVC100为2600 RPM) 5、控制器为插装形式,易于现场更换 6、配流盘为可替换的青铜复合 10、过滤…

R实践——paleobioDB详解(paleobiology database)

paleobioDB详解(paleobiology database) PBDB初步认识paleobioDB一个简单的例子 所有函数详解1. pbdb_collection描述用法参数细节值例子 2. pbdb_collections描述用法参数值例子 3. pbdb_collections_geo描述用法参数值例子 4. pbdb_interval描述用法参…

成为数据分析师,需要具备哪些技能?

随着互联网的发展,数据分析师的特点越来越明显,对数据分析师综合素质的要求也较高。 1、较强的数据挖掘、信息整理、和逻辑分析能力 数据分析,也是数据分析师的一个方向。 制作日常性的经营报表,对公司或者行业KPI指标进行拆解…

【Linux超强学习路线图】赶紧收藏学习!

​很多朋友在学习Linux时,不知道学什么,不知道怎么学,有的朋友甚至把所有知识点都当成重点学起,但其实这样不仅浪费时间更浪费精力。今天就给大家安排一份「Linux超强学习路线图」! 这张Linux超强学习路线图&#xff…

ThingsBoard使用jar包单机部署的问题以及如何解决问题

1、概述 这一节我将给大家讲述一下前面章节的问题,因为我直接都是跳过问题直接给大家演示正确的步骤,相当于我帮大家把坑踩完了,我主要讲两个问题,尤其是第一个问题,很多人都遇到过。 2、问题1 为什么要在thingsboard.yml中配置install.data_dir? 如果不配置这个inst…

7种优秀的导航菜单设计总结

导航是应用程序界面中最常见的模块之一,在链接应用程序中起着每个页面的作用。 不同的设计需求和业务目标决定了导航的设计因品而异,移动设备的尺寸远小于计算机。因此,在设计移动终端导航时,应考虑更全面,以确保简单…

手把手教你怎么搭建自己的AI数字人直播间?帮你24小时不间断直播卖货

在搭建AI数字人直播间之前,您需要了解数字人技术。 一、什么是AI数字人、数字人直播间? 数字人是一种由人工智能技术构建的虚拟人物,其外貌、行为、语言等特征与真实人物相似,可以与人进行互动。数字人可以通过语音合成、人脸识…

国产化:复旦微JFM7K325T +华为海思 HI3531DV200 的综合视频处理平台

板卡概述 TES714 是自主研制的一款 5 路 HD-SDI 视频采集图像处理平台,该平台采用上海复旦微的高性能 Kintex 系列 FPGA 加上华为海 思的高性能视频处理器 HI3531DV200 来实现。 华为海思的 HI3531DV200 是一款集成了 ARM A53 四核处理 器性能强大的神经网络引擎…

SpringFox SpringDoc 附件ui展示

文章目录 前言一、swagger v3 附件类型参数二、springdoc 附件类型参数1.springfox迁移springdoc注解对应关系2.springdoc 附件参数处理 三、RequestBody、RequestPart、RequestBody的区别3.1 RequestParam3.2 RequestBody3.3 RequestPart 前言 swagger 升级V3后发现swagger u…

【光伏预报/太阳能预报】上海道宁与Solargi为您提供开发地理数据库模拟工具和网络服务

Solargis提供开发地理数据库 模拟工具和网络服务 用于太阳能发电的规划 性能监控和管理 推动全球经济 转向可持续生产和消费 并推广环保能源技术 Solargis数据是用于 屋顶光伏系统性能监测的 日射强度计的实用替代方案 对于大型地面安装光伏系统 Solargis可作为 独立…

DB2 将多行记录合并成一行

SELECT replace(replace(xml2clob(xmlagg(xmlelement(NAME A, wdd.CASE_NUMBER||,))),<A>,),</A>,) AS CASE_NUMBERFROM WMS_DECLARE_DETAIL wdd其中&#xff1a;NAME A 要与 ‘’ 相同 &#xff0c;wdd.CASE_NUMBER 为字段&#xff0c;也可以加上GROUP BY 进行分组…

“邮件营销:5个关键问题,缺一不可

外贸公司的客户习惯使用邮件处理日常和工作事项。所以&#xff0c;我们也可以考虑使用邮件来和他们达成长期联系。而邮件营销作为最早出现的一批营销方式&#xff0c;它以极高的投资回报比依然占据着不可撼动的地位。但是&#xff0c;对于想开始邮件营销&#xff0c;但苦于没有…

W10做 .py文件的定时任务

因为领导让我们每天六点报当天数据,所以我写了个自动化的脚本,在定时这个问题研究了一两天 我有尝试过通过使用pyinstaller来打包我的.py文件,打包成exe文件,但是打包后存在各种问题,最多的就是缺少包,但是把包的文件夹导了也会出现问题,那就只能另辟蹊径了 1.我在py里面做了…

什么是模糊控制?

模糊控制设计原理 1、传统控制系统和模糊控制系统 传统控制系统结构&#xff1a; 控制目的&#xff1a;通过控制器调节控制信号u&#xff0c;使输出信号y达到要求 模糊控制系统结构&#xff1a; 与传统控制系统的差异&#xff1a;用模糊控制器FC&#xff08;Fuzzy Controller&…

Qt5.9学习笔记-事件(二) 自定义事件

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…

算法设计与智能计算 || 专题八: 拉普拉斯算子与图拉普拉斯

拉普拉斯算子与图拉普拉斯 文章目录 拉普拉斯算子与图拉普拉斯1. 拉普拉斯基本概念与计算1.1 哈密尔顿算子1.2 梯度(gradient)1.3 散度(divergence)1.4 拉普拉斯算子 2. 图像或图上的拉普拉斯算子2.1 离散网格上的拉普拉斯算子2.2 图(graph)上的拉普拉斯算子2.2.1 图的梯度(考虑…

云时通助力耐消品行业经销商数字化管理,全面破除渠道管理难题

随着中国商业正在从“消费红利”经济向“数智创新”经济进化&#xff0c;耐用消费品零售发展思路从单节点成本和效率提升&#xff0c;向数字技术触发的全链路数智化转型。如何顺利从“传统分销模型”向“零售模式”转型成为企业关注重点问题。 耐消品作为典型的长链条交易&…

人生不能重来,于是有了电影

人生不能重来&#xff0c;于是有了电影&#x1f3ac;&#xff0c;2020年对于我来说是特殊的年份&#xff0c;由于疫情公司受到严重打击&#xff0c;我所属的行业与我背道而驰&#xff0c;就这样&#xff0c;我失业了&#xff0c;从没想过&#xff0c;会因为这个原因而离开一家自…

机器学习之朴素贝叶斯一

一、概述 朴素贝叶斯算法是典型的有监督学习算法&#xff0c;解决的是分类问题 贝叶斯算法是一种基于贝叶斯定理的分类算法&#xff0c;它的优点和缺点如下&#xff1a; 优点&#xff1a; 算法原理简单易懂&#xff0c;实现较为容易&#xff1b;可以利用先验知识对模型进行训…

2.0 Vue框架设计的核心要素

本章主要讲解&#xff0c;一个好的框架在构建的时候&#xff0c;需要考虑到的要素&#xff0c;包含报错信息反馈、警告信息反馈、减少打包体积、良好的输出、特性开关&#xff08;兼容&#xff09;等 1、提升用户开发体验 提升用户开发体验主要体现在用户使用框架进行开发时&…