RT-Thread Smart(简称rt-smart)是基于RT-Thread操作系统衍生的新分支,面向带MMU,中高端应用的芯片,例如ARM Cortex-A系列芯片,MIPS芯片,带MMU的RISC-V芯片等。rt-smart在RT-Thread操作系统的基础上启用独立、完整的进程方式,同时以混合微内核模式执行。

rt-smart.zip软件包是RT-Thread Smart的用户体验软件包,可在QEMU模拟的VExpress-A9机器中或树莓派4B开发板上执行。本文档是针对QEMU、树莓派4B开发板上快速上手rt-smart入门指南文档。

软件包说明

下载rt-smart软件包

可以在以下链接下载rt-smart的软件包,文件名称为rt-smart-20201125.zip:

https://realthread.cowtransfer.com/s/1c2b64ba968748

把它解压,假设它解压后的目录名是rt-smart,以下都以rt-smart来代表这个目录名。相关的几个主要目录及说明如下图所示:

准备工具链

针对Linux和Windows环境需要下载对应的arm-linux-musleabi工具链,如果是rt-smart的软件包,则自带Linux环境下的工具链。

● Linux版本工具链:install_arm-linux-musleabi_for_x86_64-pc-linux-gnu.tar

● Windows版本工具链:install_arm-linux-musleabi_for_i686-w64-mingw32

工具链下载链接:

https://realthread.cowtransfer.com/s/1c2b64ba968748

请根据自己的开发环境选择对用的工具链下载使用。

下载下来后分别解压展开到`rt-smart/tools/gnu_gcc`目录下,rt-smart目录下的smart-env.bat/sh设置的环境变量,其中工具链路径都指向到这个目录下。

Linux下编译并在QEMU模拟环境上执行

在Linux系统下,需要安装一些基本的环境,然后才能编译rt-smart。本文档是基于Ubuntu16.04系统环境操作,其它Linux版本类似。

安装编译环境

首先安装编译时需要用到的其他工具,软件包,可以通过如下的一些命令来安装:

1sudo apt-get update
2sudo apt-get install vim scons git bzip2 net-tools
3sudo apt-get install python-all python-all-dev
4sudo apt-get install qemu-system-arm qemu-system-common qemu-utils

以上命令会安装一些系统基础工具、python环境、scons、qemu工具等。

编译应用程序

 1# 进入到rt-smart目录2cd rt-smart34# 设置对应的环境变量,和原RT-Thread相比,多了RTT_CC_PREFIX环境变量5source smart-env.sh67# 编译用户态程序8cd userapps9scons
10
11scons: Reading SConscript files ...
12scons: done reading SConscript files.
13scons: Building targets ...
14CC build/hello/main.o
15CC build/ping/main.o
16CC build/pong/main.o
17CC build/vi/optparse-v1.0.0/optparse.o
18CC build/vi/vi.o
19CC build/vi/vi_utils.o
20CC build/webclient/main.o
21LINK root/bin/hello.elf
22LINK root/bin/ping.elf
23LINK root/bin/pong.elf
24LINK root/bin/vi.elf
25LINK root/bin/webclient.elf
26scons: done building targets.

编译成功后,`userapps/apps`下的应用程序会编译成一个个的elf可执行文件,并放置于`userapps/root/bin`目录下,可以把它转换成romfs、C语言数组的方式给rt-smart内核使用,这样可以不依赖于其他文件系统就可以直接执行,生成romfs、C语言数组可以用如下的命令行:

1cd userapps
2python ../tools/mkromfs.py root ../kernel/bsp/qemu-vexpress-a9/applications/romfs.c

编译rt-smart内核

 1cd rt-smart/kernel/bsp/qemu-vexpress-a92scons3... ...4CC build/kernel/src/thread.o5CC build/kernel/src/timer.o6LINK rtthread.elf7arm-linux-musleabi-objcopy -O binary rtthread.elf rtthread.bin8arm-linux-musleabi-size rtthread.elf9   text    data     bss     dec     hex filename
101219480   40652  122444 1382576  1518b0 rtthread.elf
11scons: done building targets.

如果编译无误,会生成rtthread.elf内核文件。

模拟执行

通过qemu模拟的vexpress-a9开发板来直接运行:

 1cd rt-smart/kernel/bsp/qemu-vexpress-a92./qemu-nographic.sh34 \ | /5- RT -     Thread Smart Operating System6 / | \     5.0.0 build Nov 15 20207 2006 - 2020 Copyright by rt-thread team8lwIP-2.0.2 initialized!9try to allocate fb... | w - 640, h - 480 | done!
10fb => 0x61100000
11[I/sal.skt] Socket Abstraction Layer initialize success.
12[I/SDIO] SD card capacity 65536 KB.
13Dir /mnt mount failed!
14hello rt-thread
15msh />
16msh />/bin/hello.elf
17msh />hello world!

退出qemu的方法: "Ctrl+A, X"。上面我们也运行了这次编译的应用程序`/bin/hello.elf`,并看到它输出`hello world!`。

在第一次执行时,会输出`Dir /mnt mount failed!`,这个是因为最开始执行时,qemu的脚本会生成一个空的sd.bin文件做为一个sd卡给到vexpress-a9使用。所以在第一次执行时,需要对sd0进行格式化

 1 \ | /2- RT -     Thread Smart Operating System3 / | \     5.0.0 build Nov 24 20204 2006 - 2020 Copyright by rt-thread team5lwIP-2.0.2 initialized!6try to allocate fb... | w - 640, h - 480 | done!7fb => 0x611000008[I/sal.skt] Socket Abstraction Layer initialize success.9[I/SDIO] SD card capacity 65536 KB.
10[I/SDIO] switching card to high speed failed!
11Dir /mnt mount failed!
12hello rt-thread
13msh />mkfs sd0
14msh />
15
16# Ctrl + A, X退出
17QEMU: Terminated
18
19bernard@fuchsia-NUC8i7BEH:~/workspace/rt-smart/smart/kernel/bsp/qemu-vexpress-a9$ ./qemu-nographic.sh
20 \ | /
21- RT -     Thread Smart Operating System
22 / | \     5.0.0 build Nov 24 2020
23 2006 - 2020 Copyright by rt-thread team
24lwIP-2.0.2 initialized!
25try to allocate fb... | w - 640, h - 480 | done!
26fb => 0x61100000
27[I/sal.skt] Socket Abstraction Layer initialize success.
28[I/SDIO] SD card capacity 65536 KB.
29[I/SDIO] switching card to high speed failed!
30file system initialization done!
31hello rt-thread
32msh />

Windows下编译并在树莓派4B上执行

在Windows上同样也可以进行编译,在qemu或树莓派4B开发板上执行起来,这里主要提及如何在树莓派4B上执行的方式。

准备编译环境

在Windows上编译rt-smart,可以借助RT-Thread的env工具,env工具下载及安装请参考:https://www.rt-thread.org/page/download.html

请确保env可以正常使用。因为rt-smart.zip软件包并不携带Windows环境下的工具链,所以务必记得安装前面描述的 准备工具链 章节下载Windows工具链并在`rt-smart\tools\gnu_gcc`下解压展开。打开env的终端窗口,切换到这个rt-smart代码包根目录,运行smart-env.bat,它会设置一定的环境变量,然后整体的smart开发环境就可以使用了。

1#进入rt-smart目录,设置环境变量
2cd rt-smart
3> smart-env.bat

注:此处运行smart-env.bat设置环境,它包括编译器设置,同时它也会设置工具链的前缀,可以在env终端下输入以下命令查看返回结果是否生效:

1# 查看环境变量是否生效
2> set RTT_CC_PREFIX
3RTT_CC_PREFIX=arm-linux-musleabi-

编译应用程序

当要编译应用程序时,使用方式和Linux的类似:

1#进入userapps目录进行编译
2cd rt-smart\userapps
3scons

编译rt-smart内核

 1#进入raspberry-pi\raspi4-32目录进行编译2cd rt-smart\kernel\bsp\raspberry-pi\raspi4-323scons4... ...5CC build/kernel/src/signal.o6CC build/kernel/src/thread.o7CC build/kernel/src/timer.o8LINK rtthread.elf9arm-linux-musleabi-objcopy -O binary rtthread.elf kernel7.img
10arm-linux-musleabi-size rtthread.elf
11   text    data     bss     dec     hex filename
12 710780   40448   64730  815958   c7356 rtthread.elf
13scons: done building targets.

编译无误后,会在当前目录下生成kernel7.img文件,这个是树莓派上32位的版本。目前rt-smart还只支持32位系统,所以在树莓派4B上是以32位模式来执行。

在树莓派上执行

准备硬件连接

为了在树莓派4B上执行,需要准备如下硬件清单,并连接串口线到开发板,连接图示如下:

1.树莓派4B

2.SD卡(32GB或32GB以下)

3.USB转TTL串口线

4.网线

5.TYPE-C(用于供电)

6.读卡器(用于把编译好的文件写入到SD卡中)

准备SD卡上的软件

树莓派的加载需要将一些boot文件放到sd卡中。rpi4_rt-smart_boot.zip为树莓派的加载需要将一些boot文件,可以在如下的地址中进行下载:

https://realthread.cowtransfer.com/s/1c2b64ba968748

将下载后的文件解压后和kernel7.img一起放入空的SD卡根目录,如下图所示,其中bin文件夹中存放`userapps\root\bin`目录下已编译好的可执行elf文件。

打开串口调试助手,插上电源,可以看到程序已经正常的运行起来,进入bin目录下即可执行示例程序:

 1heap: 0xc00c9a0a - 0xc40c9a0a2\ | /3- RT -     Thread Smart Operating System4 / | \     5.0.0 build Nov 15 20205 2006 - 2020 Copyright by rt-thread team6lwIP-2.0.2 initialized!7version is B18bcmgenet: PHY startup ok!9[I/sal.skt] Socket Abstraction Layer initialize success.
10[I/SDIO] SD card capacity 31465472 KB.
11found part[0], begin: 4194304, size: 256.0MB
12found part[1], begin: 272629760, size: 29.772GB
13file system initialization done!
14hello rt-thread!
15msh />/bin/hello.elf
16msh />hello world!

1.虚拟圆桌会议Part 1——嵌入式系统信息安全

2.华为5G的秘密原来掌握在一个土耳其人的手中?!

3.半导体最新排名出炉,英伟达实现50%增长!

4.【MCU】一种"灵活且省资源"的IAP升级方案

5.RISC-V为什么会成为热点?

6.适合开发人员看的鸿蒙OS介绍~

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

RT-Thread Smart上手指南~相关推荐

  1. 基于rt thread smart构建EtherCAT主站

    我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开.rt thre ...

  2. allegro库函数 c语言,[转载]Allegro之Dev-Cpp版上手指南

    [转载]Allegro之Dev-Cpp版上手指南 找了很久,终于找到了,大家分享... Allegro之Dev-Cpp版上手指南: 呵呵,终于成功了!搞了三天... 最近想学一学Allegro(一个图 ...

  3. 关于RT thread系统节拍时钟的配置

    关于RT thread系统节拍时钟的配置                  -----本文基于rt-thread-3.1.3版本编写 首先,使用RTthread OS时,要配置(或者明白)它的系统节拍 ...

  4. Go Pro 半小时上手指南

    Jack刚买了台Go Pro 6,商品包装内没有说明书,希望尽快拍那种慢动作或者酷炫的照片,去网上看了些贴都是注重结果,很少讲具体设置或技巧,光靠自己研究什么时候才能入门?<Go Pro 半小时 ...

  5. android组件浮动在activity上_Jetpack Hilt 依赖注入框架上手指南

    code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者:LvKang-insist 链接:https://juejin.im/post/5efdff9d6fb9a07e ...

  6. 英雄探长的机器人怎么拼_LOL路人局都畏惧的辅助英雄,新版机器人布里兹上手指南...

    最近国服版本更新到9.9对这个所谓的机器人做了不小的改动,算是一波不错的加强,在此推出一篇上手指南,希望能帮助大家上分. 版本更新如下: 解析:坦度下滑,伤害提升,大招被动机制不在干扰我方ADC补刀, ...

  7. 「最简单」的 Core Data 上手指南

    本文讲的是「最简单」的 Core Data 上手指南, 原文地址:The Easiest Core Data 原文作者:Alberto De Bortoli 译文出自:掘金翻译计划 译者:Zheaol ...

  8. 分布式作业 Elastic-Job 快速上手指南

    转载自 分布式作业 Elastic-Job 快速上手指南 Elastic-Job支持 JAVA API 和 Spring 配置两种方式配置任务,这里我们使用 JAVA API 的形式来创建一个简单的任 ...

  9. TortoiseGit + GitHub 快速上手指南

    TortoiseGit + GitHub 快速上手指南 名词解释: 1. TortoiseGit 是 TortoiseSVN的Git版,它很好的实现了与windows资源管理器的融合,使用界面与Tor ...

最新文章

  1. 二级mysql怎么备考_备考:二级MySQL试题
  2. yum工具安装Nginx
  3. 封装的cookie存储、获取、删除方法
  4. php try 中 抛出异常处理,php中try catch捕获异常实例详解
  5. 吴恩达机器学习(第六章)——正则化
  6. 『ACM-算法-lowbit』算法竞赛进阶指南--lowbit运算,找到二进制下所有是1的位
  7. 从零开始学Pytorch(六)之梯度消失、梯度爆炸
  8. java 路由器_一篇文章,了解清楚路由器的各种组网
  9. ajax post提交到SpringMVC的Controller并将处理结果传递到前台输出总结(1)
  10. CCNA配置试验之八 帧中继——点到点子接口(point-to-point)的配置
  11. Android实现计算器布局(线性布局)
  12. 深夜不睡的我爬取一下美女照片!!!哈哈!!来吧,刺激磁刺激!!!
  13. 《凤凰项目》读书笔记(一)
  14. VS2013编译eXosip2-5.0.0
  15. 荣耀8桌面添加计算机,华为荣耀手机如何添加快捷开关到快捷功能界面中
  16. 1153:绝对素数(一本通)
  17. 40页PPT详解:京东大数据基础构架与创新应用
  18. TweenMax.js
  19. python裁剪图片边缘模糊_用cv2模糊部分图像后的锐利边缘
  20. Android中多个style,Android设计规范 Material Design-Style(4图像)

热门文章

  1. 【日常】纪录一个愚蠢的问题
  2. python实现离散型变量分组统计
  3. 机器人编程和少儿编程哪个难
  4. iPhone7黔驴技穷,Moto Z另辟蹊径,谁才能引领行业创新?
  5. [《Python2.1宝典》笔记] 12-14章
  6. 【JS数组 习题练习】
  7. 【数字信号处理】Python离散信号卷积的代码实现/时域直接法/列表法/信号与系统
  8. 云服务器如何计算宽带
  9. 零基础的人怎么备考二建
  10. H5音乐播放器我的2.0