【ART-PISmart抛砖引玉一】系统开发环境搭建与代码构建编译运行

ART-PI Smart 开发板介绍


art-pi smart 是rt-thread公司推出的一款基于NXP公司imx6ull处理器的开发板,主要用来测试评估RT公司去年新发布的混合微内核操作系统RT-Smart。


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


rt-smart 是一款高性能混合微内核操作系统,在传统嵌入式操作系统划分中,rt-smart 能够填补传统 RTOS 和大型操作系统 Linux 之间的空白,在实时性、成本、安全性、启动速度等方面可以取得最佳的平衡。

开发环境的建立

下载RT-Smart SDK

RT官方针对ART-PI Smart开发板提供了完整的SDK开发包,该SDK有完整的bsp支持,并且有详细的readme文件作为离线参考,在进行开发之前,先从gittee上获取该sdk完整的文件(本人电脑离线使用居多,所以简单粗暴直接从gittee上下载zip本地解压即可)。这里需要注意一下,因为后续本人选择的是scons构建工具通过ENV命令行窗口来进行构建,所以SDK放置的目录一定不要有中文(任何开发设计工作,都不要出现中文路径,这是个好习惯)。
1.ART-Pi-Smart SDK仓库

https://gitee.com/rtthread/ART-Pi-smart


2.ART-Pi-Smart 用户手册

https://art-pi.gitee.io/smart-website/docs/#/user_manual/user_manual?id=windows-%e4%b8%8b%ef%bc%8c%e5%bf%ab%e9%80%9f%e4%bd%93%e9%aa%8c-rt-smart


如下图所示,是ART-PI Smart的SDK目录结构:

如下图所示,是开发板控制台界面下smart系统目录结构,具体开发板上电链接流程请参考官方文档,此处不赘述。需要注意的是,电脑上要提前安装cp210x的驱动。


安装ENV和SCONS构建工具

Env 是 RT-Thread 推出的开发辅助工具,针对基于 RT-Thread 操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。
其内置的 menuconfig 提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由裁剪,使系统以搭积木的方式进行构建。

主要特性

menuconfig 图形化配置界面,交互性好,操作逻辑强;
  • 丰富的文字帮助说明,配置无需查阅文档;
  • 使用灵活,自动处理依赖,功能开关彻底;
  • 自动生成 rtconfig.h,无需手动修改;
  • 使用scons工具生成工程,提供编译环境,操作简单;
  • 提供多种软件包,模块化软件包耦合关联少,可维护性好;
  • 软件包可在线下载,软件包持续集成,包可靠性高;

具体的ENV安装和使用,参考最权威的官方文档即可,这里不做过多赘述啦。
  • RT官方ENV用户手册


https://www.rt-thread.org/document/site/#/development-tools/env/env



  • RT官方SCONS用户手册


https://www.rt-thread.org/document/site/#/development-tools/scons/scons


安装对应系统下的编译工具链

ART-PT Smart可以在windows下开发,也可以在Linux环境下开发,本人选择了日常熟悉的windows环境开部署相关的编译工具链,也方便后续新上手的朋友们快速熟悉。
在解压好的SDK根目录下,找到toos文件夹,进去之后,在tools文件夹下,打开ENV窗口,输入指令
1python get_toolchain.py

在主机保证联网的前提下,该脚本会自动识别用户当前的开发环境,自动安装相匹配的编译工具链

安装完毕之后,在ENV命令行界面,输入如下指令,查看工具链是否安装正确:

1arm-linux-musleabi-gcc -v


出现如下内容代表工具链已经自动安装好:

 1Using built-in specs.
2COLLECT_GCC=arm-linux-musleabi-gcc
3COLLECT_LTO_WRAPPER=e:/test/rt-smart/tools/gnu_gcc/arm-linux-musleabi_for_i686-w64-mingw32/bin/../libexec/gcc/arm-linux-musleabi/7.3.0/lto-wrapper.exe
4Target: arm-linux-musleabi
5Configured with: ../src_gcc/configure --disable-werror --prefix= --target=arm-linux-musleabi --with-sysroot=/arm-linux-musleabi --with-build-sysroot=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_i686-w64-mingw32/sysroot/ --enable-languages=c,c++ --disable-multilib --enable-tls --disable-libmudflap --disable-libsanitizer --disable-gnu-indirect-function --disable-libmpx --enable-libstdcxx-time --host=i686-w64-mingw32 --disable-bootstrap AR_FOR_TARGET=arm-linux-musleabi-ar AS_FOR_TARGET=arm-linux-musleabi-as LD_FOR_TARGET=arm-linux-musleabi-ld NM_FOR_TARGET=arm-linux-musleabi-nm OBJCOPY_FOR_TARGET=arm-linux-musleabi-objcopy OBJDUMP_FOR_TARGET=arm-linux-musleabi-objdump RANLIB_FOR_TARGET=arm-linux-musleabi-ranlib READELF_FOR_TARGET=arm-linux-musleabi-readelf STRIP_FOR_TARGET=arm-linux-musleabi-strip
6Thread model: posix
7gcc version 7.3.0 (GCC)
8build date: Sep 30 2021 13:47:19
9build sha: b998444eb32a74bdeb55fd70963187255ae6efe0
10build job: 173019


接着,打开ENV工具,然后输入执行:


1smart-env.bat

该操作是在进一步开发前先设置好环境变量(rt-smart 工具链、编译器等),输入如下指令,查看环境变量是否生效:
1set RTT


如果生效,则会显示如下信息,否则请检sdk相关查路径是否有中文,或者工具链没有安装等。

1RTT_CC=gcc
2RTT_CC_PREFIX=arm-linux-musleabi-
3RTT_EXEC_PATH=E:\test\rt-smart\tools\gnu_gcc\arm-linux-musleabi_for_i686-w64-        mingw32
4\bin

(注意:后续每次打开ENV工具进行scons之类的操作,都必须线设置该环境变量,否则后续编译构建将会报错!)

构建和编译内核

内核裁剪与构建

进入到SDK根目录下,然后依次进入到ART-PI Smart BSP所在的目录下,例如:

1盘符:\..\ART-Pi-smart-master\kernel\bsp\imx6ull-artpi-smart


在该目录下,打开ENV命令行窗口,输入指令:

1menuconfig


则ENV窗口会自动弹出内核的图形配置界面,如下图所示:

在menuconfig配置界面下,有丰富的外设资源和各种系统相关的组件,以及内核相关的功能供开发者进行勾选、适配和裁剪。如果之前有过RT-Thread的开发经验,那么这个流程将会非常熟悉。
配置完成后,依次推出并保存,回到命令行界面,然后输入如下指令对刚才配置好的内核进行编译:
1scons


该编译指令其实还可以配合其他参数一起使用,具体细节请参考前文提到的官方SCONS用户手册。

新内核的更新方式

在bsp目录下,scons成功之后,将会生成内核的可执行文件,分别是:

1rtthread.bin
2rtthread.elf
3rtthread.imx
4rtthread.img


运行新的内核,本文只用到了以上两种文件格式,分别是imx和bin格式的内核文件。

单次运行新内核

通过开发板网络接口,可以传输内核文件到开发板并且执行,检测内核当前运行情况。同时也可以利用开发板上第二个usb接口,通过上位机软件加载启动内核。这两种方式在官方手册里介绍的较为详细,本文不再赘述。请参考前文给出的官方链接。

在这里提及这种方式,主要是想引出一个自己遇到的问题,本人手中的板子,emmc文件系统上的内核文件版本较老,网络IP不能静态设置,只能DHCP动态分配,而我身边恰好没有路由器,更新之后内核用到官方的方式加载运行之后,可以正常设置静态IP,但是复位之后,系统内核又回到旧的版本,也就是说,上面提到的官方示例的加载运行方式是把内核文件加载到RAM种运行了,所以,如果跟我一样有需要把内核文件上传到emmc的文件系统中的朋友,可以用下面两种方式。

固化内核到EMMC文件系统

方法一:通过webserver传输
目前Smart的内核中,带有webclien.elf程序,在电脑端可以建立一个webserver服务器,在板子上,执行webclient.elf,可以直接访问并下载对应路径下的内核bin文件,然后在控制台窗口,通过cp指令把新的内核bin文件拷贝覆盖到旧的内核所在的路径下即可。这种方式比较一劳永逸,但是,在本人实际测试过程中,webclient下载到的文件一直出错,文件大小也不对。不知道是否是webclient.elf源码有bug。该方法暂时记录在此处,有兴趣研究的朋友可以后续自行尝试。

下面贴出我在电脑端建立建议websever的python指令:
1python -m http.server 8080


方法二:通过sd传输
除了web下载内核bin文件到emmc上的文件系统中,还可以更简单粗暴的通过sd卡把bin文件传输到文件系统中。该过程较为简单,在系统控制台界面,进入sd卡的bin文件所在路径,直接cp操作就ok。

这里需要记录一下本人在使用SD卡时出现的小问题。当前smart系统不支持sd卡的热插拔检测,所以,在系统运行时,拔掉sd卡,内核会报rt_device相关的错误。其二是,在系统初始化打印信息的时候,每次都提示SD卡初始化失败,但是进入系统后,sd卡目录又能正常访问,不知道是不是系统bug,后续感兴趣的朋友可以尝试解决一下。

用户态程序编译

内核的相关操作之后,就是用户APP程序的相关操作介绍了。这一部分较为简单,在ENV窗口下(确保已经执在根目录下行过set RTT指令,并且检查环境变量是正确的),进入到如下路径

1盘符:\...\ART-Pi-smart-master\userapps

该路径下apps文件夹下,存放的是用户app的源文件,例如HELLO文件夹下,存放的就是输出“hello world”的历程源码,在root/bin路径下,存放的是用户app对应编译生成的系统elf格式的可执行文件。
用户APP程序构建使用的是SCONS工具,该工具采用的python语言编写,类似于Liunx下常用的的Cmake之类的工具,我们以官方hello程序为例,默认scons构建脚本已经写好,具体scons的操作方法,请参考前文提到的官网文档,此处不赘述。此时在ENV界面下,输入如下指令即可完成编辑和生成elf文件:
1scons --app=hello


编译成功之后,会看到相应的信息和生成的elf文件名称,如果程序有语法错误,那么此处会有详细的报错。
这里再本人测试使用中发现一个问题,当前编译检查较为严格,移植之前自己写的小例程,发现一些没有调用的变量和函数,统统会被视为错误,或者一些不是那么匹配的数据类型(如char到int之类的),也是直接全部报错,而不是警告,这一点是可以修改编译规则的,但是本人太熟悉对应的脚本文件,所以暂时没有处理,在次提出该问题,供后来朋友避坑。

用户态程序下载运行

在sd卡运行

用户程序生成的elf文件,在root/bin路径下,拷贝该elf文件到sd卡,并且挂载sd卡到系统上,进入到对应目录,即可运行用户的应用程序。
这个方法对于需要反复调试的操作很不友好。所以更推荐下面这种做法。

tftp方式运行

在群友@Red 的推荐下,本人测试了一款开源的tftp客户端,名字叫做tftpx
tftpx github仓库链接

https://github.com/ideawu/tftpx/blob/master/client.c


它在开发板上运行之后,配合电脑端tftp服务器,即可下载对应路径下的elf文件到板子系统中去。
电脑端推荐使用tftp64.exe这个软件,按照要求建立好TFTP服务器,设置好IP和文件所在路径,即可。然后通过SD卡,把tftpx.elf文件拷贝到板子系统root/bin路径下,并且执行,执行格式如下:
1tftpx.elf 192.168.1.100 8080

此时只要网络畅通,就会提示相应的操作说明,我们可以输入如下指令,来下载刚刚编译好的hello.elf

用户app。

1get hello.elf


下载完毕后退出,即可。本人把编译好的tftpx.elf文件放在附件中,供有需要的朋友下载使用。
如果您有更方便更高效的elf传输加载方式,也可回帖分享介绍哦。(●'◡'●)

总结

rt-smart作为国产新一代操作系统。未来可期。在起步阶段,能做到当下的完成程度,实属不易,任何一个做软件开发的工程师,都能想象到这其中的艰辛和不易。在本次初步使用过程中,既体会到了RT系统高效精炼的特点,也发现了些许问题,在积极与群里各位大佬交流中,不仅解决了问题,还学到了很多其他方面的知识。我认为这才是一种良心循环。作为一个开源系统,衷心希望在@bernard 的带领下,大家都多多参与进来,贡献自己微薄的力量,让Smart在未来能以洪水之势迅猛发展。
最后,再次感谢RT官方提供的这次试用机会,感谢熊大@bernard 在半夜还在给大家解决问题.感谢@RT-Thread小师弟 认真负责的态度,在疫情期间保证了板子的顺利发货以及本活动的顺利进行。
本人预计后续会陆续把最近在使用过程中的一些心得、程序设计等方面的感悟分享出来。作为该分享的第一篇,我想以诗人北岛的诗《回答》中的几句话,作为第一篇文章的结束;致代码,致理想,致这个世界上每一个参与开源项目的芸芸码农。
“如果海洋注定要决堤,
就让所有的苦水都注入我心中,
如果陆地注定要上升,
就让人类重新选择生存的峰顶。
新的转机和闪闪星斗,
正在缀满没有遮拦的天空。
那是五千年的象形文字,
那是未来人们凝视的眼睛。”
---北岛《回答》节选

作者:RT-Thread社区成员RickFlying

原文链接:

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


内容仅供各位学习参考,文章仅代表作者个人看法,不代表本平台观点,版权归原作者所有,转载请联系作者,如有版权疑问,请联系本微信后台,我们会第一时间处理。



关注我们




点击阅读原文

爱我就请给我在看

RTThread物联网操作系统 帮助您了解RT-Thread相关的资讯.
评论
  • 随着数字化的不断推进,LED显示屏行业对4K、8K等超高清画质的需求日益提升。与此同时,Mini及Micro LED技术的日益成熟,推动了间距小于1.2 Pitch的Mini、Micro LED显示屏的快速发展。这类显示屏不仅画质卓越,而且尺寸适中,通常在110至1000英寸之间,非常适合应用于电影院、监控中心、大型会议、以及电影拍摄等多种室内场景。鉴于室内LED显示屏与用户距离较近,因此对于噪音控制、体积小型化、冗余备份能力及电气安全性的要求尤为严格。为满足这一市场需求,开关电源技术推出了专为
    晶台光耦 2025-01-13 10:42 525浏览
  • 数字隔离芯片是现代电气工程师在进行电路设计时所必须考虑的一种电子元件,主要用于保护低压控制电路中敏感电子设备的稳定运行与操作人员的人身安全。其不仅能隔离两个或多个高低压回路之间的电气联系,还能防止漏电流、共模噪声与浪涌等干扰信号的传播,有效增强电路间信号传输的抗干扰能力,同时提升电子系统的电磁兼容性与通信稳定性。容耦隔离芯片的典型应用原理图值得一提的是,在电子电路中引入隔离措施会带来传输延迟、功耗增加、成本增加与尺寸增加等问题,而数字隔离芯片的目标就是尽可能消除这些不利影响,同时满足安全法规的要
    华普微HOPERF 2025-01-15 09:48 107浏览
  • 晶台光耦KL817和KL3053在小家电产品(如微波炉等)辅助电源中的广泛应用。具备小功率、高性能、高度集成以及低待机功耗的特点,同时支持宽输入电压范围。▲光耦在实物应用中的产品图其一次侧集成了交流电压过零检测与信号输出功能,该功能产生的过零信号可用于精确控制继电器、可控硅等器件的过零开关动作,从而有效减小开关应力,显著提升器件的使用寿命。通过高度的集成化和先进的控制技术,该电源大幅减少了所需的外围器件数量,不仅降低了系统成本和体积,还进一步增强了整体的可靠性。▲电路示意图该电路的过零检测信号由
    晶台光耦 2025-01-16 10:12 14浏览
  • PNT、GNSS、GPS均是卫星定位和导航相关领域中的常见缩写词,他们经常会被用到,且在很多情况下会被等同使用或替换使用。我们会把定位导航功能测试叫做PNT性能测试,也会叫做GNSS性能测试。我们会把定位导航终端叫做GNSS模块,也会叫做GPS模块。但是实际上他们之间是有一些重要的区别。伴随着技术发展与越发深入,我们有必要对这三个词汇做以清晰的区分。一、什么是GPS?GPS是Global Positioning System(全球定位系统)的缩写,它是美国建立的全球卫星定位导航系统,是GNSS概
    德思特测试测量 2025-01-13 15:42 528浏览
  • 根据Global Info Research(环洋市场咨询)项目团队最新调研,预计2030年全球无人机电池和电源产值达到2834百万美元,2024-2030年期间年复合增长率CAGR为10.1%。 无人机电池是为无人机提供动力并使其飞行的关键。无人机使用的电池类型因无人机的大小和型号而异。一些常见的无人机电池类型包括锂聚合物(LiPo)电池、锂离子电池和镍氢(NiMH)电池。锂聚合物电池是最常用的无人机电池类型,因为其能量密度高、设计轻巧。这些电池以输出功率大、飞行时间长而著称。不过,它们需要
    GIRtina 2025-01-13 10:49 214浏览
  • 流量传感器是实现对燃气、废气、生活用水、污水、冷却液、石油等各种流体流量精准计量的关键手段。但随着工业自动化、数字化、智能化与低碳化进程的不断加速,采用传统机械式检测方式的流量传感器已不能满足当代流体计量行业对于测量精度、测量范围、使用寿命与维护成本等方面的精细需求。流量传感器的应用场景(部分)超声波流量传感器,是一种利用超声波技术测量流体流量的新型传感器,其主要通过发射超声波信号并接收反射回来的信号,根据超声波在流体中传播的时间、幅度或相位变化等参数,间接计算流体的流量,具有非侵入式测量、高精
    华普微HOPERF 2025-01-13 14:18 514浏览
  •   在信号处理过程中,由于信号的时域截断会导致频谱扩展泄露现象。那么导致频谱泄露发生的根本原因是什么?又该采取什么样的改善方法。本文以ADC性能指标的测试场景为例,探讨了对ADC的输出结果进行非周期截断所带来的影响及问题总结。 两个点   为了更好的分析或处理信号,实际应用时需要从频域而非时域的角度观察原信号。但物理意义上只能直接获取信号的时域信息,为了得到信号的频域信息需要利用傅里叶变换这个工具计算出原信号的频谱函数。但对于计算机来说实现这种计算需要面对两个问题: 1.
    TIAN301 2025-01-14 14:15 124浏览
  • 故障现象 一辆2007款法拉利599 GTB车,搭载6.0 L V12自然吸气发动机(图1),累计行驶里程约为6万km。该车因发动机故障灯异常点亮进厂检修。 图1 发动机的布置 故障诊断接车后试车,发动机怠速轻微抖动,发动机故障灯长亮。用故障检测仪检测,发现发动机控制单元(NCM)中存储有故障代码“P0300 多缸失火”“P0309 气缸9失火”“P0307 气缸7失火”,初步判断发动机存在失火故障。考虑到该车使用年数较长,决定先使用虹科Pico汽车示波器进行相对压缩测试,以
    虹科Pico汽车示波器 2025-01-15 17:30 14浏览
  • 一个易用且轻量化的UI可以大大提高用户的使用效率和满意度——通过快速启动、直观操作和及时反馈,帮助用户快速上手并高效完成任务;轻量化设计则可以减少资源占用,提升启动和运行速度,增强产品竞争力。LVGL(Light and Versatile Graphics Library)是一个免费开源的图形库,专为嵌入式系统设计。它以轻量级、高效和易于使用而著称,支持多种屏幕分辨率和硬件配置,并提供了丰富的GUI组件,能够帮助开发者轻松构建出美观且功能强大的用户界面。近期,飞凌嵌入式为基于NXP i.MX9
    飞凌嵌入式 2025-01-16 13:15 21浏览
  • 全球领先的光学解决方案供应商艾迈斯欧司朗(SIX:AMS)近日宣布,与汽车技术领先者法雷奥合作,采用创新的开放系统协议(OSP)技术,旨在改变汽车内饰照明方式,革新汽车行业座舱照明理念。结合艾迈斯欧司朗开创性的OSIRE® E3731i智能LED和法雷奥的动态环境照明系统,两家公司将为车辆内饰设计和功能设立一套全新标准。汽车内饰照明的作用日益凸显,座舱设计的主流趋势应满足终端用户的需求:即易于使用、个性化,并能提供符合用户生活方式的清晰信息。因此,动态环境照明带来了众多新机遇。智能LED的应用已
    艾迈斯欧司朗 2025-01-15 19:00 18浏览
  • 食物浪费已成为全球亟待解决的严峻挑战,并对环境和经济造成了重大影响。最新统计数据显示,全球高达三分之一的粮食在生产过程中损失或被无谓浪费,这不仅导致了资源消耗,还加剧了温室气体排放,并带来了巨大经济损失。全球领先的光学解决方案供应商艾迈斯欧司朗(SIX:AMS)近日宣布,艾迈斯欧司朗基于AS7341多光谱传感器开发的创新应用来解决食物浪费这一全球性难题。其多光谱传感解决方案为农业与食品行业带来深远变革,该技术通过精确判定最佳收获时机,提升质量控制水平,并在整个供应链中有效减少浪费。 在2024
    艾迈斯欧司朗 2025-01-14 18:45 85浏览
  • 近期,智能家居领域Matter标准的制定者,全球最具影响力的科技联盟之一,连接标准联盟(Connectivity Standards Alliance,简称CSA)“利好”频出,不仅为智能家居领域的设备制造商们提供了更为快速便捷的Matter认证流程,而且苹果、三星与谷歌等智能家居平台厂商都表示会接纳CSA的Matter认证体系,并计划将其整合至各自的“Works with”项目中。那么,在本轮“利好”背景下,智能家居的设备制造商们该如何捉住机会,“掘金”万亿市场呢?重认证快通道计划,为家居设备
    华普微HOPERF 2025-01-16 10:22 17浏览
  • 实用性高值得收藏!! (时源芯微)时源专注于EMC整改与服务,配备完整器件 TVS全称Transient Voltage Suppre,亦称TVS管、瞬态抑制二极管等,有单向和双向之分。单向TVS 一般应用于直流供电电路,双向TVS 应用于电压交变的电路。在直流电路的应用中,TVS被并联接入电路中。在电路处于正常运行状态时,TVS会保持截止状态,从而不对电路的正常工作产生任何影响。然而,一旦电路中出现异常的过电压,并且这个电压达到TVS的击穿阈值时,TVS的状态就会
    时源芯微 2025-01-16 14:23 21浏览
  • 01. 什么是过程能力分析?过程能力研究利用生产过程中初始一批产品的数据,预测制造过程是否能够稳定地生产符合规格的产品。可以把它想象成一种预测。通过历史数据的分析,推断未来是否可以依赖该工艺持续生产高质量产品。客户可能会要求将过程能力研究作为生产件批准程序 (PPAP) 的一部分。这是为了确保制造过程能够持续稳定地生产合格的产品。02. 基本概念在定义制造过程时,目标是确保生产的零件符合上下规格限 (USL 和 LSL)。过程能力衡量制造过程能多大程度上稳定地生产符合规格的产品。核心概念很简单:
    优思学院 2025-01-12 15:43 558浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦