動手實踐環節說明

?? 通過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官方微信交流群!

???閱讀原文報名開發者大會