0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

优雅的在D1S上运行RT-Smart

RTThread物联网操作系统 来源:未知 2022-11-16 20:15 次阅读

前言

最近在学习 RT-Smart ,正巧有在全志开发者论坛看到这么一篇帖子【惊】在麻雀上运行国产rt-smart系统,看到很多人都在关注 D1S 在 Smart 上的运行情况。如今该 BSP 已经合并到 RT-Smart 主仓库,于是我来展示一下 D1S 运行 RT-Smart 的步骤,供大家参考~

嵌入式开发的人对 RT-Thread 操作系统平台应该都是非常熟悉的,而 RT-Thread Smart 是基于 RT-Thread 操作系统上的混合操作系统,简称为 rt-smart,它把应用从内核中独立出来,形成独立的用户态应用程序,并具备独立的地址空间。相比较于 linux 操作系统而言,RT-Thread Smart 是实时的操作系统。

环境及所需工具

软件环境:

  • Ubuntu20.0.4


硬件环境:

  • 全志F系列—D1s芯片

  • 柿饼派M7

  • 麻雀MQ


下载代码

下载 RT-Smart 用户态应用代码:

gitclonehttps://github.com/RT-Thread/userapps.git
进入到 userapps 目录,克隆 RT-Thread rt-smart 分支
gitclone-brt-smarthttps://gitee.com/rtthread/rt-thread.git

配置工具链

在 userapps ools 目录下运行 get_toolchain.py 的脚本,会下载对应的工具链并展开到 userapps oolsgun_gcc 目录。后面的工具链名称可以是 arm | riscv64。

因为 D1S 是 RISCV-64 架构的,所以输入下面的命令:

python3get_toolchain.pyriscv64

在 userapps 目录下,运行 smart-env.sh 配置工具链路径,目前支持的参数可以是 arm | riscv64

sourcesmart-env.shriscv64

编译内核程序

进入 rt-thread/bsp/allwinner/d1s 目录下,执行以下命令拉取一下软件包

  • 注:若系统没有安装 env,需要手动输入 scons --menuconfig 命令手动下载 env

source~/.env/env.sh
pkgs--update

使用 scons 命令进行编译,编译成功后会在 userapps/rt-thread/bsp/allwinner/d1s 目录下生成 sd.bin,这个文件就是我们需要烧录到开发板中的文件,它包括了 uboot.dtb,opensbi,rtthread.bin。

烧录程序

接下来介绍两种烧录方式:

  • 第一种针对使用 EMMC 启动方式的 D1S,例:柿饼派M7

详见:D1S/README.md 文档中的 真实硬件环境搭建 章节。

  • 第二种是针对使用 TF卡 作为启动方式的开发板,例:麻雀 D1S

1、首先准备一张容量在 128G 以内的空白 TF卡

2、使用 fdisk 分区。将 TF卡 挂载到 ubuntu 系统后,使用 df 查看设备路径。笔者使用的 32GB TF卡,扇区大小 512 字节,我们需要预留前 8M 的空间,那么计算得知分区扇区开始于:16384,使用命令:sudo fdisk /dev/sdb,选择:o,n,p,1,16384,回车。

 1Command(mforhelp):o
2
3CreatedanewDOSdisklabelwithdiskidentifier0x3668b987.
4
5Command(mforhelp):n
6
7Partitiontype
8
9pprimary(0primary,0extended,4free)
10
11eextended(containerforlogicalpartitions)
12
13Select(defaultp):p
14
15Partitionnumber(1-4,default1):1
16
17Firstsector(2048-62410751,default2048):16384
18
19Lastsector,+sectorsor+size{K,M,G,T,P}(16384-62410751,default62410751):
20
21Createdanewpartition1oftype'Linux'andofsize29.8GiB.
22
23Command(mforhelp):w
24
25Thepartitiontablehasbeenaltered.

正确的分区效果如下:

然后格式化 sdb1 分区为 fat32 格式:

1$sudomkfs-tfat/dev/sdb1

这里可以使用 Gparted 工具可视化查看一下分区状况:

3、接下来使用以下命令烧录 RT-SMART 内核:

1sudoddif=boot0_sdcard_sun20iw1p1_d1s.binof=/dev/sdbbs=1024seek=8
2
3sudoddif=sd.binof=/dev/sdbbs=1024seek=56
  • 注:boot0_sdcard_sun20iw1p1_d1s.bin 文件在 userapps/rt-thread/bsp/allwinner/d1s/tools 路径下

  • 这里的 /dev/sdb 设备要根据自己的选择


下面是烧录成功的显示:

启动 RT-Smart

方式一(EMMC)启动:

串口0 波特率 500000,然后上电即可。


方式二(TF 卡)启动:

此时将 TF 卡放入开发板,串口0(底部排针的7,8脚),串口波特率 500000,然后上电,如下 RT-Smart 已经成功启动!(真的快,啪的一下就进入系统了

 1|/
2-RT-ThreadSmartOperatingSystem
3/|5.0.0buildNov12022
42006-2022Copyrightbyrt-threadteam
5lwIP-2.0.2initialized!
6hal_sdc_create0
7card_detectinsert
8Initialcardsuccess.capacity:30436MB
9sdmmcbytes_per_secotr:200,sectorcount:3b72400
10foundpart[0],begin:8388608,size:29.732GB
11foundpartition:sd0ofmbratoffset0000000000004000,size:0000000003b6e400
12hal_sdc_create1
13card_detectinsert
14Initialcardfailed!!
15[E/drv-sdmmc]initsdmmcfailed!
16[E/drv-sdmmc]sdmmc_initfailed!
17[I/sal.skt]SocketAbstractionLayerinitializesuccess.
18[D/FAL](fal_flash_init:47)Flashdevice|sdcard0|addr:0x00000000|len:0x76e480000|blk_size:0x00000200|initializedfinish.
19[I/FAL]====================FALpartitiontable====================
20[I/FAL]|name|flash_dev|offset|length|
21[I/FAL]-------------------------------------------------------------
22[I/FAL]|download|sdcard0|0x00800000|0x00800000|
23[I/FAL]|easyflash|sdcard0|0x01000000|0x00100000|
24[I/FAL]|filesystem|sdcard0|0x01100000|0x00c00000|
25[I/FAL]=============================================================
26[I/FAL]RT-ThreadFlashAbstractionLayerinitializesuccess.
27HelloRISC-V
28[W/DBG]disp:[parser_disp_init_para575]of_property_readscreen1_output_typefail
29msh/>Mount"sd0p0"on"/"success
30msh/>


编译用户态程序

进入 userapps 目录下,使用 scons 编译用户态程序,编译好的文件会生成在 root/bin 目录下。

运行用户态程序

从 root/bin 目录下拷贝出祖传 hello 程序,到 TF卡 的文件系统中。

拔出 TF 卡,插入到开发板,上电。即可体验属于自己的 helloworld 程序了。

 1msh/bin>ls
2Directory/bin:
3dbkit_client.elf616960
4elmFATKit.elf373880
5em.elf585504
6hdc_test.elf339976
7hello.elf339624
8lvgl.elf1382168
9lwIPKit.elf976784
10mmapctrl.elf339976
11ntp.elf363560
12ping.elf344208
13pmq.elf345176
14pong.elf339624
15syslog.elf364736
16syslogd.elf377560
17vi.elf446568
18webclient.elf358048
19msh/bin>
20msh/bin>hello.elf
21msh/bin>helloworld!


Q&A


Q:不小心把 TF 卡分区烧录错了/如何格式化分区?

A:首先使用 sudo fdisk /dev/sdX 命令,输入 p ,查看 SD卡 现有分区,如下图该 SD卡有一个分区。

然后输入 d,删除这个分区。

使用 sudo fdisk -l 查看SD卡分区情况,可以看到已经没有分区了,接着按照教程方式重新制作分区即可。

更多 QA 可详见:D1S/README.md 文档中的 QA 章节。


版权声明:本文为RT-Thread论坛用户「Rb君」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

https://club.rt-thread.org/ask/article/c0609a2215117c31.html



END



2022RDC RT-Thread开发者大会


一年一度的 RDC RT-Thread 开发者大会正式启动报名,本届大会以 "聚势而强,乘势而上" 为主题,并将于 2022年12月25日在上海丽昂豪生大酒店举行。


立即扫码报名



你可以添加微信17775983565为好友,注明:公司+姓名,拉进RT-Thread官方微信交流群!



爱我就给我点在看

点击阅读原文进入论坛


原文标题:优雅的在D1S上运行RT-Smart

文章出处:【微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RT-Thread
    +关注

    关注

    31

    文章

    1289

    浏览量

    40144

原文标题:优雅的在D1S上运行RT-Smart

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RT-Smart首次线下培训,锁定2024 RT-Thread开发者大会!

    2024年RT-Thread开发者大会将于12月21日正式拉开帷幕!本次大会以“开源共生商业共赢”为主题,RT-Thread将携手合作伙伴、客户伙伴、行业专家,以及全球开发者,共同探索如何在开源
    的头像 发表于 12-11 18:41 336次阅读
    <b class='flag-5'>RT-Smart</b>首次线下培训,锁定2024 <b class='flag-5'>RT</b>-Thread开发者大会!

    Made with KiCad(十六):全志RISC-V 64 SoC F133/D1s开发板

    “   全志F133是首款基于RISC-V架构的F系列处理器,F133是一款64bit处理器,性能比以往的F系列芯片有很大的提升。   ” 概览 全志D1s,又名 F133,它是早些时候和支持
    的头像 发表于 12-04 18:22 1071次阅读
    Made with KiCad(十六):全志RISC-V 64 SoC F133/<b class='flag-5'>D1s</b>开发板

    s7-200_SMART系统手册

    电子发烧友网站提供《s7-200_SMART系统手册.pdf》资料免费下载
    发表于 10-21 10:50 7次下载

    RK3568平台RT-smart系统跑不起来,为什么?

    RK3568平台RT-smart系统跑不起来
    发表于 09-13 07:28

    如何优雅OpenMV使用LVGL

    板级适配得益于官方团队对RA8D1-VisionBoard的SDK贴心地维护,对于板级配置文件configuration.xml板载的摄像头、SDRAM、LCD、TOUCH等众多外设都已经配置好了
    的头像 发表于 07-31 08:36 1069次阅读
    如何<b class='flag-5'>优雅</b>的<b class='flag-5'>在</b>OpenMV<b class='flag-5'>上</b>使用LVGL

    ART-PI Smart User运行LED程序崩溃的原因?怎么处理?

    done! open em failed! hello rt-smart userapps中添加led_test.c,代码如下: #include \"led_test.h
    发表于 07-05 08:21

    ART-Pi Smart 体验 RT-Thread Smart v5.1.0

    1.引言RT-ThreadSmartv5.1.0已经正式发布。这一版本在内核和功能上做了大量的改进与增强。我们可以ART-PiSmart开发板尽情探索这一新版更完善更强
    的头像 发表于 06-14 08:35 617次阅读
    <b class='flag-5'>在</b> ART-Pi <b class='flag-5'>Smart</b> 体验 <b class='flag-5'>RT</b>-Thread <b class='flag-5'>Smart</b> v5.1.0

    全志D1s软件入门之Tina Linux编译教程

    的是 d1s_nezha 板子,也正是 D1s Nezha 开发板。输入 5 回车即可。如果是其他板子,也可以输入对应板子的序号选择方案。 lunch 之后 SDK 会自动根据你所选择的方案解压编译工具链,创建环境
    发表于 06-05 09:50

    【Vision Board创客营连载体验】RA8D1 Vision Board Camera 初体验

    开发环境: RT-Thread Studio:v2.2.7 开发板:RA8D1 Vision Board开发板 MCU:R7FA8D1BHEC337AS02 1 硬件连接 Camera
    发表于 04-27 08:50

    全志D1s裸机开发之体验第一个程序

    体验第一个程序 2.1 编译烧录运行 2.1.1编译 先进入源码目录,打开 Git Bash,如下图操作: 然后 Git Bash 中执行 make 命令,可以生成
    发表于 03-08 11:43

    全志D1s开发板裸机开发之坏境搭建

    、串口打印,并将主芯片所有的信号全部引出,其中左右两侧兼容了树莓派的电源信号定义,可以很方便扩展模块。 D1S 是针对智能解码市场推出的高性价比 AIoT 芯片,它使用阿里平头哥的 64bit
    发表于 03-06 13:54

    西门子S7-200 SMART的通信端口解析

    S7-200 SMART CPU 集成的 RS485 通信端口(端口0)是与 RS485 兼容的9针 D 型连接器。CPU 集成的 RS485 通信端口的引脚分配如表1.
    发表于 02-27 11:28 2946次阅读
    西门子<b class='flag-5'>S</b>7-200 <b class='flag-5'>SMART</b>的通信端口解析

    如何在PSoC62 Evaluation kit开发板运行RT-Thread呢?

    本文主要介绍如何在PSoC62 Evaluation kit开发板运行RT-Thread,如何连接CYW43012 WiFi蓝牙模组,以及如何进行WiFi联网、网络延迟、网络带宽测试。
    的头像 发表于 02-27 10:49 1027次阅读
    如何在PSoC62 Evaluation kit开发板<b class='flag-5'>上</b><b class='flag-5'>运行</b><b class='flag-5'>RT</b>-Thread呢?

    rtthread d1s编译报错的原因是什么?如何处理?

    我使用使用的是现在git的rtthread的最新的master分支,因为rt-smart已经并入主线,所以我想在windows下用env工具编译。 因为要编译riscv架构的全志D1S,我下载了
    发表于 02-22 06:43

    优雅停机是什么?SpringBoot+Nacos+k8s实现优雅停机

    优雅停机是什么?网上说的优雅下线、无损下线,都是一个意思。
    的头像 发表于 02-20 10:00 2066次阅读
    <b class='flag-5'>优雅</b>停机是什么?SpringBoot+Nacos+k8<b class='flag-5'>s</b>实现<b class='flag-5'>优雅</b>停机