探索新升级!在 ART-Pi Smart 体验 RT-Thread Smart v5.1.0

1.引言

RT-Thread Smart v5.1.0 已经正式发布。这一版本在内核和功能上做了大量的改进与增强。我们可以在ART-Pi Smart开发板尽情探索这一新版更完善更强大的RT-Thread Smart操作系统。ART-Pi Smart开发板搭载了米尔科技的i.MX6ULL核心板,硬件设计和制作由韦东山团队完成,整体的BSP板级支持包由社区完成。这是首个运行 RT-Thread Smart 的 ARM Cortex-A7 开发板,具有强大的硬件性能和丰富的外设接口,非常适合学习,开发和调试RT-Thread Smart系统。

硬件规格情况

c4dfe8052c409a0a2f4dfbe115131b1a.png

🔗开发板购买链接:https://m.tb.cn/h.gUlY2J1?tk=7ah8Wy7fME1

在ART-Pi Smart的板卡上包括了百兆以太网,TF卡插槽,USB device,USB host接口,以及RW007 WiFi模块,Type-C的USB UART,RGB888 FPC座,Camera FPC座等资源。核心板上板载i.MX6ULL 800MHz ARM Cortex-A7单核32位处理器,512MB DDR3内存,4GB eMMC。

2.  RT-Thread Smart v5.1.0 新体验

RT-Thread v5.1.0 版本的 Smart 中带来了诸多改进和新功能,以下是一些和Smart系统密切相关的主要新增特性和增强点:

●  更完善的libc支持:高性能互斥锁 futex 和原生 libc 动态链接功能,使系统在多任务处理和内存管理上更高效。新增或修复了 setitimer、setaffinity 等API,提升了系统的灵活性和稳定性。

●  更完善的 POSIX 终端支持:

○  完整的终端设备及伪终端设备支持

○  可嵌套,支持作业控制,支持系统调用重启的 POSIX 信号支持

○  进程组和会话管理

○  新的IPC方法 `rt_condvar`

○  dfsv2 devfs 支持符号链接等功能。

○  ……

这些特性不仅使 RT-Thread Smart 在功能上更加完善,同时也提升了系统的稳定性和性能,为开发者提供了更强大的工具和更多的可能性。

3.  快速上手

下面介绍如何在ART-Pi Smart开发板上运行v5.1.0版本RT-Thread Smart操作系统。

○  搭建xmake编译环境

对于RT-Thread Smart的开发,推荐使用Linux Ubuntu环境,也可以远程使用Linux环境,在Windows桌面上使用VSCode登陆到Linux Ubuntu环境上使用。

在Linux Ubuntu下需要先安装xmake环境

1sudo add-apt-repository ppa:xmake-io/xmake
2sudo apt update
3sudo apt install xmake

更多安装方式,请参考

https://xmake.io/#/zh-cn/guide/installation

○  应用编译

拉取用户态应用仓库 https://github.com/RT-Thread/userapps.git 可以获得一些示例程序工程。我们通过 xmake f 命令配置构建的目标平台,使用 xmake 命令编译构建工程,最后通过 xmake smart-rootfs -f fat 命令将构建完成的产物制作为 fat 格式的根文件系统镜像。这个镜像会在后面被烧录到 sd 卡中使用。

1source env.sh//设置环境变量
2//编译app
3cd apps
4// 配置为 arm平台
5xmake f -a arm
6xmake -j8
7//生成rootfs
8xmake samrt-image -f fat

○  内核编译

前面xmake已经下载了工具链,工具链具体位置在这里(arm-smart-musleabi 路径后的数字可能因为版本更新而不同)

1~/.xmake/packages/a/arm-smart-musleabi/211536-3de435f234/f5d0c3febbd2497fa950eb569871a3c0

下载内核主线最新代码 https://github.com/RT-Thread/rt-thread.git

进入bsp目录 rt-thread/bsp/nxp/imx/imx6ull-smart

1# 更新在线软件包 (主要涉及wifi软件包)
2source ~/.env/env.sh 
3pkgs --update
4# 编译内核
5scons -j8

○  eMMC镜像制作

ART-Pi Smart 支持 eMMC,SD,tftp 等方式启动内核。我们以 eMMC 为例子说明。在 bsp 目录下,可以看到 ./emmc/boot.fat文件。这是一个预先制作的 fat 文件系统镜像,其中已经包含一些文件。我们创建 tmp 目录,将 boot.fat 临时本地挂载到 tmp 目录下,使用tree命令可以看到如下的文件目录结构。

1.
 2├── boot.fat
 3├── image
 4│   ├── genimage
 5│   ├── genimage.cfg
 6│   ├── images
 7│   │   └── art-pi.img
 8│   ├── input
 9│   │   ├── boot.fat
10│   │   └── u-boot-dtb.imx
11│   ├── root
12│   └── tmp
13│       └── root
14└── tmp
15    ├── bin
16    │   └── ash
17    ├── etc
18    │   └── inittab
19    ├── kernel
20    │   ├── rtthread.bin
21    │   ├── rtthread.elf
22    │   ├── rtthread.img
23    │   └── rtthread.imx
24    ├── root
25    │   └── bin
26    │       └── hello.elf
27    └── sbin
28        └── init

● tmp/kernel下是内核相关文件

● tmp/sbin/init和tmp/bin/ash用来开机启动ash

● tmp/root/bin是应用文件夹,可以放置一些自定义应用

每次更新内核/应用,可以参考以下脚本内容生成新的art-pi.img映像文件

1sudo mount ./boot.fat ./tmp/
 2sudo rm -rf tmp/kernel/*
 3sudo cp -r ../rtthread.bin tmp/kernel/
 4sudo cp -r ../rtthread.elf tmp/kernel/
 5sudo cp -r ../rtthread.img tmp/kernel/
 6sudo cp -r ../rtthread.imx tmp/kernel/
 7sudo sync
 8sudo umount ./tmp
 9sudo cp boot.fat image/input/
10cd image
11mkdir root
12rm -rf tmp
13./genimage

art-pi.img位置在 rt-thread/bsp/nxp/imx/imx6ull-smart/emmc/image/images 目录下

○  镜像烧写

1.  首先准备一台 Windows 测试电脑,下载 100ask_imx6ull 烧写工具(由百问网提供)

a.  工具下载地址:

https://github.com/100askTeam/gui_for_nxp_uuu/blob/master/100ask_imx6ull%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7/100ask_imx6ull_flashing_tool.exe

b.  ⚠️100ask_imx6ull 烧写工具需要到 GitHub 去下载,网络不稳定。如果出现无法访问或无法下载,请多刷新网页多尝试几次

2.  将用于烧录的 USB Type-C(上方口) 先连接到 Windows 测试电脑

3.  将另外一个 USB Type-C(下方口)也连接上 Windows 测试电脑,给开发板供电

4.  在测试电脑上,打开串口调试终端:115200 波特率、8位数据位、1位停止位、无奇偶校验、无流控

5.  先拔掉 ART-Pi Smart 开发板上的 SD 卡(⚠️必须先拔掉 SD 卡)

6c9effbf4927a61348f1ff7ad2e682c4.png

6.  配置 ART-Pi Smart 开发板进入到 USB 固件下载模式

操作方法:开发板上电之后,先按下 "BOOT 启动按键" 不松开,再按下 “RST 复位键”,即可切换到 USB 固件下载模式。

7.  Windows 主机电脑上,打开烧录工具 100ask_imx6ull_flashing_tool.exe,查看烧录工具是否与ART-Pi Smart USB 连接成功

在烧写软件的专业版,烧写制作的镜像文件art-pi.img

2d08b840d6b2d01c6c101573727c2a62.png

○ 运行系统和应用

在运行系统之前,还有一件必不可少的工作 —— 准备根文件系统镜像。根文件系统提供了应用程序运行的必要环境。前文提到,我们在 userapp 仓库已经构建好了根文件系统。在前面我们以 eMMC 为例介绍了内核烧录的方式。这里换一种方式,我们以 SD/TF 卡为例子介绍根文件系统。

首先准备一张SD/TF卡,在Linux下为其创建一个大于1GB的分区作为第一分区,在userapp/apps/build下使用sudo dd if=fat.img of=/dev/sdb1命令将根文件系统烧入SD/TF卡中(这里的sd*根据自己SD/TF卡所在位置来设置):

3ebb021f2843468de556623c959c6e07.png

系统上电后我们进入 uboot 并将 bootcmd 修改如下。

1bootcmd=fatload mmc 1:1 0x80001000 /kernel/rtthread.bin; dcache flush; go 0x80001000

将SD卡插入再重新启动开发板后使用mount sd01 /mnt 将SD卡挂载到处我们的mnt目录下,进入mnt目录即可看到我们刚刚用userapp制作好的文件系统。

1e57f136f500f03c5aaaae6cff5b3214.png

进入/mnt/bin目录下可以看到该目录下已经包含了一些可执行程序。以 hello 程序为例子,输入命令执行程序,将得到如下输出。

477a65482683330286d349aa636c3abe.png


👇 RT-Thread Smart官方开发板助你开启RT-Thread Smart v5.1.0之旅


6624da712699cd8a90cddb0d7154077a.jpeg

🔗开发板购买链接:

https://m.tb.cn/h.gUlY2J1?tk=7ah8Wy7fME1

——————End——————

ee2e4f5b8a67dfeb7d1117544a912e08.jpeg

ff9386b7fd22eaade93a9c3364bcbd2d.gif

👇 点击阅读原文进入官网

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

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

相关文章

一文搞定Django学习

文章目录 一、Django项目1.安装django2.创建项目3.文件描述4.创建app5.测试 二、操作数据库1.安装mysqlclient2.setting.py文件中设置连接信息3.创建表操作(1)python manage.py makemigrations(2)python manage.py migrate 4.增删…

净化机应用领域广泛 美国是我国净化机主要出口国

净化机应用领域广泛 美国是我国净化机主要出口国 净化机,又称为空气清洁设备或空气清新机,是一种专门设计用于滤除或杀灭空气污染物、提升空气清洁度的装置。净化机具备高效的过滤功能,能够滤除空气中的悬浮微粒、细菌、病毒和花粉等污染物&a…

【Numpy】一文向您详细介绍 np.sqrt()

【Numpy】一文向您详细介绍 np.sqrt() 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通本硕,曾…

WebSocket 详解--spring boot简单使用案例

一、什么是WebSocket WebSocket 是一种网络通信协议,专为在单个 TCP 连接上进行全双工通信而设计。WebSocket 允许客户端和服务器之间的消息能够实时双向传输。这与传统的 HTTP 请求-响应模式有很大的不同。 二、WebSocket 的关键特性 双向通信:WebSocke…

【Mars3d】config.json中的蓝色底图map.basemap = 2017代码实现

本身的地图效果: Mars3d的蓝色地图效果: 关键代码: basemaps: [{name: "高德电子",icon: "img/basemaps/gaode_vec.png",type: "gaode",layer: "vec",show: true,invertColor: true,filterColor: &q…

ARM32开发--IIC时钟案例

知不足而奋进 望远山而前行 目录 文章目录 前言 目标 内容 需求 开发流程 移植驱动 修改I2C实现 测试功能 总结 前言 在现代嵌入式系统开发中,移植外设驱动并测试其功能是一项常见的任务。本次学习的目标是掌握移植方法和测试方法,以实现对开…

电容式传感器的基本原理

电容式传感器由电容量可变的电容器和测量电路组成,其变量间的转换原理如图5—2所示。 图5—2电容式传感器变量间的转换关系 由电学可知,两个平行金属极板组成的电容器,如果不考虑其边缘效应,其电容为 Se——两个极板介质的介电常…

chrome浏览器设置--disable-web-security解决跨域

在开发人员于后台进行接口测试的时候,老是遇到跨域问题,这时前端总是会让后台添加跨域请求头来允许跨域请求,今天介绍一个简单的方法跨过这一步操作的设置。 –disable-web-security参数,禁用同源策略,利于开发人员本…

ARMxy赋能温室环境自动化调控

智慧农业正以其独特的魅力描绘着未来的轮廓。作为这一变革的中坚力量,ARMxy工业计算机凭借其高性能、低功耗及高度灵活性,正逐步成为智能温室控制、精准灌溉及作物生长监测领域的核心引擎。 智能温室的智慧大脑 位于某地的现代农业园区,一座…

Springboot 开发之任务调度框架(一)Quartz 简介

一、引言 常见的定时任务框架有 Quartz、elastic-job、xxl-job等等,本文主要介绍 Spirng Boot 集成 Quartz 定时任务框架。 二、Quartz 简介 Quartz 是一个功能强大且灵活的开源作业调度库,广泛用于 Java 应用中。它允许开发者创建复杂的调度任务&…

Apache Doris 基础 -- 部分数据类型及操作

您还可以使用SHOW DATA TYPES;查看Doris支持的所有数据类型。 部分类型如下: Type nameNumber of bytesDescriptionSTRING/可变长度字符串,默认支持1048576字节(1Mb),最大精度限制为2147483643字节(2gb)。大小可以通过BE配置string_type_le…

硕思LOGO设计师软件最新版下载及详细安装教程

硕思Logo设计师是一款操作灵活简单,且功能强大的logo制作软件。它可以通过简单的点击就可以为网站、博客、论坛和邮件创建专业的logo、条幅、按钮、标题、图标和签名等。 该软件提供了很多精心设计的模板和丰富的资源,为更好的创建logo艺术作品&#xff…

CST Studio Suite 基础操作实验(稳恒电流的电场与磁场)

前言 前置的基础操作可见笔者之前一篇文章,在此不再赘述 因为整个实验要求都要用英文,有些不便更改部分的英文就没翻译了,见谅 CST Studio Suite 基础操作实验(静电场)-CSDN博客 核心步骤 无限长设置 假如是z轴上的…

算法体系-22 第二十二节:暴力递归到动态规划(四)

一 最小距离累加和 1.1 描述 给定一个二维数组matrix,一个人必须从左上角出发,最后到达右下角 沿途只可以向下或者向右走,沿途的数字都累加就是距离累加和 返回最小距离累加和 1.2 分析

【车载AI音视频电脑】200万像素迷你一体机

产品主要特点: -设备安装方便简洁,可通过3M胶直接将设备粘 贴到车前挡风玻璃上 -支持IE预览,手机,PAD实时预览, 支持电脑客 户端实时预览功能 -内置2路模拟高清, 每路均可达到200万像素。另 外可扩充2路1080P模拟…

什么是堡垒机?和跳板机是一个概念吗?

堡垒机,又称运维审计系统、跳板机,是一种位于内部网络与外部网络之间的安全防护设备,它充当了一个“中间人”的角色,所有对内部网络资源的远程访问都必须通过堡垒机进行。这一设计的核心目的,在于严格控制和记录所有进…

体验版小程序访问不到后端接口请求失败问题解决方案

文章目录 解决方案一:配置合法域名解决方案二:开发调试模式第一步:进入开发调试模式第二步:启用开发调试 注意事项结语 🎉欢迎来到Java面试技巧专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&…

IT运维三大王牌怎么选?一文看懂向日葵IT精英、行业青春、行业版

信息时代,随着智能化设备的不断普及,IT设备的数量是在不断增长的,企业的IT运维压力也逐渐增大,无论是大型企业、中小腰部企业、甚至初创企业和工作室,一款相对专业的远程IT运维方案也慢慢变成了刚需。 虽说大家都有着…

深度解析 | “透明部落(APT36)”持续攻击印度政府、国防部门

概要 近日,黑莓发现了总部位于巴基斯坦的高级持续威胁组织 Transparent Tribe (透明部落,APT36),其目标是印度的政府、国防和航空航天部门。该活动从 2023 年底持续到 2024 年 4 月,并预计将持续下去。 在 "透明部落 "…

Python 显示笔记本电脑的电池状态和百分比

方法一: import psutil import psutil battery psutil.sensors_battery() if battery is None:print("No battery is found.")exit() print (battery) percentagebattery.percent print(f"Battery Percentage: {percentage}%")Battery的信息…