鸣涧 发表于 2022-5-2 00:13:13

在Windows下 rt-smart开发环境搭建 内核编译到应用开发 hello

在Windows下,快速体验 rt-smart开发环境搭建 内核编译到应用开发 Say hello to ART-Pi-Smart


环境搭建(基于 Windows 环境)安装 Env 环境

[*]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 软件包
(可以用命令git clone https://gitee.com/rtthread/ART-Pi-smart.git)

目录结构


如下图所示为 ART-Pi Smart SDK 软件包结构框图。其中内核的BSP是 imx6ull-artpi-smart。

rt-smart SDK 软件包结构框图

安装编译工具链

(前注:我第一次按旧文档的)
ART-Pi smart sdk本身并不携带工具链,所以在下载了sdk后需要自行安装工具链,不过安装工具链非常简单,只需要在sdk的tools目录下执行下python脚本即可:
cd tools
python get_toolchain.py


代码编译设置环境变量(基于 Windows)

打开 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=F:\RT-Thread\ART-Pi-smart\tools\gnu_gcc\arm-linux-musleabi_for_i686-w64-mingw32\bin

# [可选操作]确定工具链是否可以使用,输入下面命令,即可查看工具链相关版本信息
$ arm-linux-musleabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-musleabi-gcc
COLLECT_LTO_WRAPPER=f:/rt-thread/art-pi-smart/tools/gnu_gcc/arm-linux-musleabi_for_i686-w64-mingw32/bin/../libexec/gcc/arm-linux-musleabi/7.3.0/lto-wrapper.exe
Target: arm-linux-musleabi
Configured 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
Thread model: posix
gcc version 7.3.0 (GCC)
build date: Mar 27 2022 15:07:07
build sha: 718bab50a3b283939442fd3bbbf3d473deda1998
build job: 299929

编译 rt-smart 内核代码(基于 imx6ull-artpi-smart BSP)


可用menuconfig 配置
$ menuconifg

我未更改配置,直接退出
# 进入到 rt-smart 的 imx6ull-artpi-smart BSP 内核目录
$ cd rt-smart\kernel\bsp\imx6ull-artpi-smart\

# 清除编译生成的临时文件和目标文件
$ scons -c

# 编译 rt-smart 内核
$ scons
(有一个插曲,第一次编译不通过,学习群里小伙伴@Rick Grimes 经验,感谢.重启env,再决编译通过)
[*]如果编译无误,会生成 rtthread.elf、rtthread.bin、rtthread.imx 内核的固件文件

[*]生成的 rtthread.imx 内核固件文件,用于 USB 方式加载内核固件至开发板运行
[*]生成的 rtthread.bin 内核固件文件,用于 Uboot + TFTP 方式加载内核固件至开发板运行
[*]如果编译代码时,想同时查看详细的编译 log,可以使用scons --verbose命令来编译构建

基于vscode的第一个应用程序Hello worldvscode RT-Samrt应用开发环境搭建安装RT-Thread-Smart vscode插件


在vscode 搜索RT-Thread-Smart->install


新建hello工程


在 VS Code 上使用 Ctrlt+Shift+P 快捷键,输入 RT-Thread 关键字,选择 “创建 RT-Thread Smart 工程”:
依据向导依次设置工程名\SDK 根目录\构建工具
编辑代码如下:
/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: GPL-2.0 * * Change Logs: * Date         Author       Notes * 2022-5-1       lojam      The first version */#include <stdio.h>int main(int argc, char **argv){    printf("hello world!\n");    printf("hello RT-smart!!!\n");    printf("Hello Sunshine Siliocn!\n");    return 0;}

编译hello出错:
(venv) F:\RT-Thread\ART-Pi-smart\userapps\workspace\hello-rt-smart>scons'scons' 不是内部或外部命令,也不是可运行的程序或批处理文件。
提示没有安装scons,那就安装一下:
(venv) F:\RT-Thread\ART-Pi-smart\userapps\workspace\hello-rt-smart>pip install scons
Collecting scons
Downloading SCons-4.3.0-py3-none-any.whl (4.2 MB)
   ---------------------------------------- 4.2/4.2 MB 17.6 kB/s eta 0:00:00
Requirement already satisfied: setuptools in c:\users\lojam\appdata\local\programs\python\python37\lib\site-packages (from scons) (40.8.0)
Installing collected packages: scons
Successfully installed scons-4.3.0
(小插曲,第一次看https://art-pi.gitee.io/smart-website/docs/#/user_manual/user_manual在百度网盘下载的工具链接编译会出错)

几经波折,想在say hello 不容易,  编译成功后 在“userapps” 目录下的用户应用程序,将编译成一个个“.elf” 可执行文件,存放于 userapps/root/bin 目录
将 root 整个文件夹(包含了用户 APP 的 elf 固件文件)通过 USB 读卡器直接复制到 SD 卡,并将 SD 卡插到 ART-Pi Smart 开发板背面的 Micro SD 卡槽
(原可以方便用udb方法的,但多次体验不成功)

开发运行 hello.elf

msh /sd>hello.elf
msh /sd>hello world!
hello RT-smart!!!
Hello Sunshine Siliocn!Say Hello to ART-Pi smart 成功,不容易啊.

总结


虽然Say hello to ART-Pi smart 几经波折,总体来说,还是比较顺利的,相对OpenHarmony环境(太多工具,头疼)。总之,大道至简,越简单越好!!!
                        

sunsili 发表于 2022-5-18 14:15:19

新版vs插件 udb 可以成功,使用真方便

谷谷小师妹 发表于 2022-5-18 20:54:11

赞一个,学习了
页: [1]
查看完整版本: 在Windows下 rt-smart开发环境搭建 内核编译到应用开发 hello