【国产化】RT-THREAD ENV介绍和应用

o-O-oO / 2024-10-05 / 原文



原创 zgrxmm linux源码阅读

前言

作为一款优秀的国产实时操作系统,RT-THREAD 以其轻量级、高可靠性和丰富的生态系统,在众多嵌入式开发项目中崭露头角。

今天,基于RT-THREAD探索如何利用其强大的 ENV 工具链快速搭建和配置 STM32F429-ATK-APOLLO 开发板的工程项目。通过这篇教程,你不仅能够了解 RT-THREAD 的基本配置流程,还将学会如何使用 RT-THREAD 提供的强大工具进行高效开发,让你的嵌入式项目开发之路更加顺畅。

已经有官网内容了,为什么还要重复的写?

一来发现官网内容略有陈旧,比如menuconfig相关内容还未及时更新,二来也是为了巩固知识。当然,更详细的内容还是要参考官网。

ENV介绍

Env 是 RT-Thread 推出的一款开发辅助工具,专门针对基于 RT-Thread 操作系统的项目工程。Env 提供了编译构建环境、图形化系统配置以及软件包管理功能。其内置的menuconfig工具提供了简单易用的配置界面,允许用户自由裁剪内核、组件和软件包,从而使系统能够像搭积木一样进行构建和定制。通过 Env,开发者可以更加高效地管理和优化 RT-Thread 项目,极大地提高了开发效率和灵活性。

主要特性

    menuconfig 图形化配置界面,交互性好,操作逻辑强;

    丰富的文字帮助说明,配置无需查阅文档;

    使用灵活,自动处理依赖,功能开关彻底;

    自动生成 rtconfig.h,无需手动修改;

    使用 scons 工具生成工程,提供编译环境,操作简单;

    提供多种软件包,模块化软件包耦合关联少,可维护性好;

    软件包可在线下载,软件包持续集成,包可靠性高;

ENV下载和部署

ENV工具下载地址:

https://www.rt-thread.org/download.html

解压后

进入 Env 目录,可以运行本目录下的 env.exe,如果打开失败可以尝试使用 env.bat。

安装完整日志

验证是否按照成功,输入help命令

实际项目构建

进入到工程目录

回到工程目录:

D:\29_tools_install\RT-ThreadStudio\RT-ThreadStudio\repo\Extract\RT-Thread_Source_Code\RT-Thread\lts-v3.1.5\bsp\stm32\stm32f429-atk-apollo

其中D:\29_tools_install\RT-ThreadStudio是我的安装目录。

开始编译

Env 中携带了 Python & scons 环境,只需在RT-Thread\lts-v3.1.5\bsp\stm32\stm32f429-atk-apollo 目录中运行 scons 命令即可使用默认的 ARM_GCC 工具链编译 bsp。

编译成功的样子

BSP 配置:menuconfig

当你使用 RT-THREAD 的 ENV 工具配置 STM32F429-ATK-APOLLO 工程并通过 menuconfig 进行配置时,你会看到以下几个主要的配置选项,以及 menuconfig 常用快捷键如图所示:

1、RT-THREAD kernel

这一部分是 RT-THREAD 核心的配置选项。RT-THREAD 是一个实时操作系统,这一部分的配置决定了内核的行为,包括但不限于:

    内核调度方式:可以选择抢占式调度还是轮询式调度。

    任务管理:任务的数量、优先级范围等。

    内存管理:是否开启内存保护、堆管理等。

    中断管理:中断处理的相关配置。

    时间管理:定时器、时钟等配置。

    锁机制:互斥锁、信号量等。

    消息队列:队列的大小、类型等。

2、RT-THREAD components

这一部分配置的是 RT-THREAD 提供的各种组件,这些组件提供了操作系统的基础服务和功能,例如:

1、主线程堆栈大小和线程默认优先级

2、C++相关的feature

3、command shell相关配置

4、设备是否开启虚拟文件系统

5、设备驱动框架:HAL 驱动模型或其他驱动框架。

6、posix层和C标准库

7、网络协议栈:支持的网络协议,如socket接口、 TCP/IP 协议栈、AT commands。

8、VBUS

9、一些实用工具utilities,如Ymodem、ulog和RT-THREAD测试框架utest。

3、RT-THREAD online packages

这部分是 RT-THREAD 社区维护的在线组件库,提供了大量的扩展功能。在线组件可以方便地下载和安装,通常包括:

1、IOT:LoRa、MQTT、webClinet、webnet、FreeModbus、CoAP、WIFI等等

2、安全套件:常用的SSL/TLS库mbedtls、嵌入式加密库libsodium、libhydrogen、tinyCrypt等

3、中间件:如 图形库LVGL、uGUI,音视频库Openmv、二维码qrcode 等。

4、工具库:CmBacktrace、EasyFlash、EasyLogger、zdebug等调试工具库

5、AT相关库:libANN 是一个简单的神经网络库,主要用于教育和研究目的,提供了基本的神经网络功能;
   NNom 是一个专为微控制器优化的轻量级神经网络库,支持常见的神经网络层,并针对资源受限的嵌入式设备进行了优化;
   ONNX 后端 是指支持 ONNX 格式的推理引擎,用于在特定硬件上运行 ONNX 模型;
   ONNX 解析器 是工具用于解析 ONNX 模型文件,并将其转换为可以执行的代码;
   TensorFlow Lite Micro(TFLM)是 TensorFlow Lite 的一个子集,专为资源极其有限的微控制器设计,提供轻量级的机器学习推理能力;
   r-tinymaix 是一个轻量级的神经网络推理库,为嵌入式设备提供高性能的机器学习推理支持,并优化了内存使用和计算效率。

6、信号处理和控制算法库:常见的PID控制算法,FFT,CMSIS-DSP等。

4、Hardware Drivers config

这一部分是针对硬件设备的驱动配置,它定义了如何支持板子上的各种硬件设备,包括:

1、CPU 配置:如时钟配置、电源管理等。

2、外设驱动:如 GPIO、ADC、DAC、SPI、I2C、USART、CAN 等。

3、存储设备:如 SD 卡、Flash 存储等。

4、显示设备:如 LCD 屏幕、触摸屏等。

5、音频设备:如扬声器、麦克风等。

6、通信接口:如 USB、Ethernet 等。

7、外部设备:如传感器、电机控制器等。

通过 menuconfig 对这些配置项进行设置,可以定制出符合具体应用需求的 RT-THREAD 系统。选择合适的组件和驱动可以显著提高开发效率,并使系统更加精简和高效。在配置完成后,可以重新编译工程以应用新的配置。

素材来源官方媒体/网络新闻

参考🔗

https://mp.weixin.qq.com/s/-GpChwkxVl8yjtsMRisLFQ