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

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

3天内不再提示

ART-PI Smart开发板介绍与开发环境的建立

RTThread物联网操作系统 来源:Thread问答社区 作者:RickFlying 2022-05-13 09:45 次阅读

ART-PI Smart 开发板介绍

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

84df03a8-d1e4-11ec-bce3-dac502259ad0.jpg

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

854c0b60-d1e4-11ec-bce3-dac502259ad0.jpg

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目录结构:

855dd318-d1e4-11ec-bce3-dac502259ad0.jpg

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

85ed5114-d1e4-11ec-bce3-dac502259ad0.jpg

安装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窗口,输入指令
1pythonget_toolchain.py
在主机保证联网的前提下,该脚本会自动识别用户当前的开发环境,自动安装相匹配的编译工具链

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

1arm-linux-musleabi-gcc-v

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

 1Usingbuilt-inspecs.
 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
 5Configuredwith:../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-bootstrapAR_FOR_TARGET=arm-linux-musleabi-arAS_FOR_TARGET=arm-linux-musleabi-asLD_FOR_TARGET=arm-linux-musleabi-ldNM_FOR_TARGET=arm-linux-musleabi-nmOBJCOPY_FOR_TARGET=arm-linux-musleabi-objcopyOBJDUMP_FOR_TARGET=arm-linux-musleabi-objdumpRANLIB_FOR_TARGET=arm-linux-musleabi-ranlibREADELF_FOR_TARGET=arm-linux-musleabi-readelfSTRIP_FOR_TARGET=arm-linux-musleabi-strip
 6Threadmodel:posix
 7gccversion7.3.0(GCC)
 8builddate:Sep30202113:47:19
 9buildsha:b998444eb32a74bdeb55fd70963187255ae6efe0
10buildjob:173019

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

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

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

1RTT_CC=gcc
2RTT_CC_PREFIX=arm-linux-musleabi-
3RTT_EXEC_PATH=E:	est
t-smart	oolsgnu_gccarm-linux-musleabi_for_i686-w64-mingw32
4in

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

构建和编译内核

内核裁剪与构建

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

1盘符:..ART-Pi-smart-masterkernelspimx6ull-artpi-smart

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

1menuconfig

则ENV窗口会自动弹出内核的图形配置界面,如下图所示:
86659854-d1e4-11ec-bce3-dac502259ad0.png

在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-mhttp.server8080

方法二:通过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-masteruserapps
该路径下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.elf192.168.1.1008080

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

用户app。

1gethello.elf

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

总结

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

作者:RT-Thread社区成员RickFlying

原文标题:RickFlying

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

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

    关注

    60

    文章

    1214

    浏览量

    176969
  • 开发板
    +关注

    关注

    25

    文章

    4403

    浏览量

    93788
  • RT-Thread
    +关注

    关注

    31

    文章

    1148

    浏览量

    38857

原文标题:RickFlying

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

收藏 人收藏

    评论

    相关推荐

    ART-Pi Smart开发板开箱及爱之初次体验

    ART-Pi Smart 开发板初次尝鲜,ART-Pi Smart开箱及初次体验内置应用.
    的头像 发表于 05-03 16:25 4286次阅读
    <b class='flag-5'>ART-Pi</b> <b class='flag-5'>Smart</b><b class='flag-5'>开发板</b>开箱及爱之初次体验

    ART-Pi Smart开发板开箱体验

    拿到开发板,首先考虑的是如何接线,先看了一遍sdk包里面 ART-Pi-smart-masterdocuments目录下的操作文档,然后拿了一根TypeC的usb线连接开发板并开始体验ART-
    发表于 07-07 11:15 963次阅读

    ART-PI开发板是如何与5寸LCD屏幕进行连接的?

    如何启用TouchGFX的lib库?怎样将触摸坐标传到TouchGFX中去?ART-PI开发板是如何与5寸LCD屏幕进行连接的?有哪些流程?
    发表于 07-06 06:11

    请问ART-PI开发板如何连接玫瑰科技5寸LCD屏幕?

    请问ART-PI开发板如何连接玫瑰科技5寸LCD屏幕?
    发表于 10-27 06:09

    Art-Pi开发板学习笔记资料汇总

    正常显示。 ** 1.LVGL 不支持 24bit 的色彩,而 Art-Pi 媒体扩展版上的 LCD 刚好就是 24bit 的。开发环境: rt-thread studio 开发板
    发表于 03-21 14:56

    怎样将art-pi的基于rtt的bootloader移植到stm32h750vbt6开发板

    开发环境:rt-thread studio开发板ART-PI和stm32h750vbt6通用开发板手头除了
    发表于 03-22 09:56

    基于ART-Pi Smart平台的设计方案推荐

    播放的功能;SDL2 的功能不仅仅局限于图片、视频的播放;得益于 SDL2 丰富的拓展库,开发者可以快速、方便地实现非常多好玩的应用,例如:游戏开发。所以,在本篇文章中,基于 SDL2 以及其拓展库,我们将在 ART-Pi
    发表于 03-24 16:56

    如何在Windows下搭建一种rt-smart开发环境

    构建环境(scons)、图形化系统配置(menuconfig)及软件包管理功能等工具通过 ART-Pi-Smart SDK 仓库 (Gitee)下载最新的 ART-Pi Smart S
    发表于 03-30 17:02

    配置ART-Pi Smart开发板的启动方式资料推荐

    BOOT_MODE 寄存器、eFUSEs、配置管脚等状态来决定启动模式以及启动设备。故在启动前,用户可根据自己需要配置 ART-Pi Smart 开发板的启动方式。目前,ART-Pi
    发表于 05-05 17:30

    ART-Pi Smart开发板启动rtthread内核与开发环境搭建体验

    体验ART-Pi开发板。连接的usb口是一个usb转串口,使用串口工具链接ART-Pi Smart开发板,我们使用的是SecureCRT,在
    发表于 06-20 11:58

    基于Windows环境快速体验rt-smart相关资料介绍

    设置环境变量(基于 Windows)打开 Env 控制台终端窗口,然后切换到这个代码包根目录,运行 smart-env.bat 进行环境变量的设置,然后整体的 rt-smart
    发表于 06-30 12:01

    基于ART-PI开发板的智能管家精灵的设计

    概述主控平台以 ART-PI 开发板为核心,主要任务是抓取网络数据、如天气、疫情等,并由OLED实时显示最新数据,同时将抓取的数据当做log文件存储在SD卡上,供后续分析使用。并推送室内环境信息如
    发表于 09-02 15:21

    ART-Pi LoRa开发套件教程相关资料分享

    1、ART-Pi LoRa 开发套件简介  ART-Pi LoRa 开发套件(LSD4RFB-2EVKM0201)是利尔达科技与睿赛德科技联合出品的一套面向物联网
    发表于 09-30 11:57

    ART-PI开发板为核心的智能管家精灵设计

    概述 主控平台以 ART-PI 开发板为核心,主要任务是抓取网络数据、如天气、疫情等,并由OLED实时显示最新数据,同时将抓取的数据当做log文件存储在SD卡上,供后续分析使用。 并推送室内环境信息
    的头像 发表于 12-25 15:34 1575次阅读

    RT-Thread联合百问科技出品ART-Pi Smart开发板

    ART-Pi Smart 开发板是RT-Thread联合百问科技出品,用于学习和评估RT-Thread Smart微内核操作系统。 硬件配置 i.MX6ULL,单核 ARM Corte
    的头像 发表于 11-16 14:32 2600次阅读