动手实践环节说明
• 通过ART-Pi-Smart SDK 仓库(Gitee)下载最新的 ART-Pi Smart SDK 软件包:https://gitee.com/rtthread/ART-Pi-smart
• ART-Pi Smart SDK 软件包结构框图,如下所示。其中,Kernel部份仅包含一个 BSP:imx6ull-artpi-smart
工具链的下载和安装
rt-smart 采用的工具链为:
arm-linux-musleabi 工具链
需要用户自行通过下面网址下载 Linux版本或 Windows 版本的工具链
链接: https://pan.baidu.com/s/1p7PRhV3dTGIb7hxv34YWYw 提取码: ndxq
将下载下来的工具链,解压到上述下载的SDK指定的路径 /rt-smart/tools/gnu_gcc/下面
Windows 下,从 RT-Thread 官网下载 Env 工具:https://www.rt-thread.org/page/download.html
Env 用户手册(准备工具、使用方法):https://www.rt-thread.org/document/site/#/development-tools/env/env
Env 工具集成了编译构建环境(scons)、图形化系统配置(menuconfig)及软件包管理功能等工具
通过ART-Pi-Smart SDK 仓库(Gitee)下载最新的 ART-Pi Smart SDK 软件包
打开 Env 控制台终端窗口,然后切换到这个代码包根目录,运行 smart-env.bat进行环境变量的设置,然后整体的 rt-smart 开发环境就可以使用了,具体操作如下所示:
# 进入到 rt-smart 目录
> cd rt-smart
# 设置对应的环境变量(rt-smart 工具链、编译器等)。和原 RT-Thread 相比,多了RTT_CC_PREFIX 环境变量
> smart-env.bat
# 查看环境变量是否生效,输入下面命令,即可查看 musl 工具链、RTT_CC_PREFIX环境变量
> set RTT
RTT_CC=gcc
RTT_CC_PREFIX=arm-linux-musleabi-
RTT_EXEC_PATH=E:\test\rt-smart\tools\gnu_gcc\arm-linux-musleabi_for_i686-w64-mingw32\bin
# [可选操作]确定工具链是否可以使用,输入下面命令,即可查看工具链相关版本信息
> arm-linux-musleabi-gcc -v
1
2Using built-in specs.
3COLLECT_GCC=arm-linux-musleabi-gcc
4COLLECT_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
5Target: arm-linux-musleabi
6Configured 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-bootstrapAR_FOR_TARGET=arm-linux-musleabi-ar AS_FOR_TARGET=arm-linux-musleabi-asLD_FOR_TARGET=arm-linux-musleabi-ld NM_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
7Thread model: posix
8gcc version 7.3.0 (GCC)
9build date: Sep 30 2021 13:47:19
10build sha: b998444eb32a74bdeb55fd70963187255ae6efe0
11build job: 173019
# 进入到 rt-smart 的imx6ull-artpi-smart BSP 内核目录
> cd rt-smart\kernel\bsp\imx6ull-artpi-smart\
# 清除编译生成的临时文件和目标文件
> scons -c
# 编译rt-smart 内核
> scons
如果编译无误,会生成 rtthread.elf、rtthread.bin、rtthread.imx 内核的固件文件
生成的 rtthread.imx 内核固件文件,用于 USB 方式加载内核固件至开发板运行
生成的 rtthread.bin 内核固件文件,用于 Uboot + TFTP 方式加载内核固件至开发板运行
如果编译代码时,想同时查看详细的编译 log,可以使用scons--verbose命令来编译构建
# 进入到 rt-smart/userapp 用户代码目录
> cd rt-smart/userapps
# 清除编译生成的临时文件和目标文件
> scons -c
# 只编译rt-smart/userapp/apps 目录下的用户APP 代码:hello。编译成功后,在 userapps/root/bin 目录下会生成 hello.elf 固件文件
> scons --app=hello
# 编译rt-smart/userapp/apps 目录下的所有用户APP。编译成功后,在userapps/root/bin 目录下会生成所有用户APP相对应的*.elf 固件文件
> scons
# [可选操作]如果要缩小可执行程序的体积(删除固件中调试信息),例如,缩小 hello.elf 固件体积。⚠️如果需要 gdb 调试用户 APP 时,则不能进行此操作
> arm-linux-musleabi-strip root/bin/hello.elf
如果编译无误,“userapps” 目录下的用户应用程序,将编译成一个个“.elf” 可执行文件,存放于 userapps/root/bin 目录
将 root 整个文件夹(包含了用户 APP 的 elf 固件文件)通过 USB 读卡器直接复制到 SD 卡,并将 SD 卡插到 ART-Pi Smart 开发板背面的 Micro SD 卡槽
WIFI连接:打开手机热点,利用串口输入wifijoin
网络接口:将测试电脑连接手机热点,保证开发板和测试电脑连接在同一个局域网内
通过网络下载编译好的app到开发板运行
PC端需要准备MyWebServer应用程序,设置好需要传输的app所在目录,ip,端口,如下图所示:
将开发板连接到和PC同一个网络,运行下面的程序即可完成下载
./root/bin/webclient.elf http://192.168.88.98/hello.elf hello.elf
如下图所示,即表示下载成功:
运行刚刚下载的到板子上的应用程序
你可以添加微信17775982065为好友,注明:公司+姓名,拉进RT-Thread官方微信交流群!
👇 阅读原文报名开发者大会