【MCU学习】RTthread工程介绍

这篇具有很好参考价值的文章主要介绍了【MCU学习】RTthread工程介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RT-Thread架构

RT-Thread诞生于2006年,是一款以开源、中立、社区化发展起来的物联网操作系统。 RT-Thread主要采用 C 语言编写,浅显易懂,且具有方便移植的特性(可快速移植到多种主流 MCU 及模组芯片上)。RT-Thread把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。

RT-Thread有完整版和Nano版,对于资源受限的微控制器(MCU)系统,可通过简单易用的工具,裁剪出仅需要 3KB Flash、1.2KB RAM 内存资源的 NANO 内核版本;而相对资源丰富的物联网设备,可使用RT-Thread完整版,通过在线的软件包管理工具,配合系统配置工具实现直观快速的模块化裁剪,并且可以无缝地导入丰富的软件功能包,实现类似 Android 的图形界面及触摸滑动效果、智能语音交互效果等复杂功能。
RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件的物联网操作系统,架构如下:
【MCU学习】RTthread工程介绍,单片机学习,单片机,学习,嵌入式硬件

APP:
业务层代码库,主要代码为业务逻辑。例如LCD控制板业务,超声波板业务,拖地机业务,扫地机业务,吹风机业务,等。

Board:
项目配置;每一个项目,都会根据需求,针对bsp,app,components进行组件选择,然后生成统一的rtconfig.h,以及board_xxx_config.h;

Bsp:
不同的芯片平台,例如GD32F103,STM32F407等;

Components:
硬件无关的纯软代码;设备抽象的纯软代码;

Include:
Src:rtthread操作系统源代码(不需要阅读);

名称 描述
BSP Board Support Package(板级支持包)基于各种开发板的移植
components RT-Thread 的各个组件代码,例如 finsh,gui 等。
documentation 相关文档,如编码规范等
examples 相关示例代码
include RT-Thread 内核的头文件。
libcpu 各类芯片的移植代码。
src RT-Thread 内核的源文件。
tools RT-Thread 命令构建工具的脚本文件。

系统编译

首先,安装env,下载源代码,进入board的项目目录下:

menuconfig               //选择组件,配置参数
scons --target=mdk5      //生成keil5的工程
scons                    //使用scons工具链编译

Menuconfig

menuconfig用于配置模块是否编译进系统,以及选择模块参数

主菜单:

【MCU学习】RTthread工程介绍,单片机学习,单片机,学习,嵌入式硬件

选择BSP:

if RT_USING_BSP_STM32
        choice
        prompt "choice chip name"
        default y
        default RT_USING_CHIP_STM32F103RC
        
        config RT_USING_CHIP_STM32F103RC
                bool "STM32F103RC"
                default "STM32F103RC"
        config RT_USING_CHIP_STM32F103VC
                bool "STM32F103VC"
                default "STM32F103VC"
        config RT_USING_CHIP_STM32F103VE
                bool "STM32F103VE"
                default "STM32F103VE"
        config RT_USING_CHIP_STM32F407ZG
                bool "STM32F407ZG"
                default "STM32F407ZG"
        endchoice
endif

【MCU学习】RTthread工程介绍,单片机学习,单片机,学习,嵌入式硬件

配置参数:

【MCU学习】RTthread工程介绍,单片机学习,单片机,学习,嵌入式硬件

Scons

scons用于建立构建关系,并进行构建的一套环境,scons环境也是采用python语言编写。
根据rtconfig.h文件的解析,SConscript 对所有的系统文件建立构建关系,和makefile类似,根据所有的SConscript,将所有的工程文件组织在一起,与makefile不同的是,sconscript的包含关系,是需要手动在父目录包含字目录的。
每个模块都是单独编译自己的c文件,包含自己需要的h文件,编译成独立的o文件。

SconsStruct 编译过程

import os
import sys

print("#########Sconstruct##########")

#设置工程名称
PROJECT_NAME = os.path.basename(os.getcwd())
PROJECT_INC_DIR = os.path.normpath(os.getcwd() + '/board_config')

print("Project name is", PROJECT_NAME)
print("Project include dir is", PROJECT_INC_DIR)

if os.getenv('RTT_ROOT'):
    RTT_ROOT = os.getenv('RTT_ROOT')
else:
    RTT_ROOT = os.path.normpath(os.getcwd() + '/../..')

#设置使用的BSP目录
sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
sys.path = sys.path + [os.path.join(RTT_ROOT, 'bsp/stm32f10x')]  


# 导入全局配置文件
import rtconfig  


try:
    from building import *
except:
    print('Cannot found RT-Thread root directory, please check RTT_ROOT')
    print(RTT_ROOT)
    exit(-1)

#配置target文件名词
TARGET = 'bin/' + 'rtthread.' + rtconfig.TARGET_EXT 




# 配置编译工具链,Keil,iar,gcc
DefaultEnvironment(tools=[])
env = Environment(tools = ['mingw'],
    AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
    CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,
    AR = rtconfig.AR, ARFLAGS = '-rc',
    LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
env.
('PATH', rtconfig.EXEC_PATH)

if rtconfig.PLATFORM == 'iar':
    env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
    env.Replace(ARFLAGS = [''])
    env.Replace(LINKCOM = env["LINKCOM"] + ' --map project.map')

Export('RTT_ROOT')
Export('rtconfig')
Export('PROJECT_NAME')
Export('PROJECT_INC_DIR')

# 根据 rtconfig.h ,生成构建依赖关系
# prepare building environment
objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)

# 编译和链接,生成target文件
# make a building
DoBuilding(TARGET, objs)

目标文件:

rtthread.axf :调试文件,包含bin,map,以及所有调试需要的信息,使用axf文件可以直接进行调试
rtthread.bin:烧录使用的二进制文件
rtthread.map:map文件,用于分析Flash和内存分布

Total RO  Size (Code + RO Data)               104364 ( 101.92kB)
Total RW  Size (RW Data + ZI Data)             19624 (  19.16kB)
Total ROM Size (Code + RO Data + RW Data)     104832 ( 102.38kB)

RO:Const段
RW:初始化的全局变量
ZI:未初始化或初始化为0的全局变量;
RAM:RW + ZI
ROM:Code + RO + RW

设备驱动框架

IO设备注册流程:

【MCU学习】RTthread工程介绍,单片机学习,单片机,学习,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-605356.html

IO设备操作流程:

//电机MOS控制
p_robot_ctrl->h_mos_gpio = rt_pin_get("PA.13");
rt_pin_mode(p_robot_ctrl->h_mos_gpio, PIN_MODE_OUTPUT);
rt_pin_write(p_robot_ctrl->h_mos_gpio, PIN_LOW);

到了这里,关于【MCU学习】RTthread工程介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通信工程毕设 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月21日
    浏览(120)
  • 通信工程毕设 Stm32单片机的音乐播放器设计 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(53)
  • 通信工程毕设 基于ESP32的在线墨水屏桌面摆件 -物联网 单片机 嵌入式

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年02月19日
    浏览(55)
  • 通信工程毕设 基于Stm32的便携体测仪(心率 体温) - 单片机 嵌入式 物联网

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(53)
  • 通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月15日
    浏览(65)
  • 【单片机/嵌入式】最完整学习路线

            关于这个问题我在网上寻找到 了 相关文章解释得很详细,不了解的同学可以参考一下这篇文章: 到底什么是嵌入式?什么是单片机? - 知乎         一个人学习是孤独的,如果你是一名学生,建议加入学校的电子社团或者实验室,有老师的帮助和同学的互助

    2024年02月03日
    浏览(51)
  • 【唠唠嵌入式】__如何学习单片机?

    目录 前言 个人定位,从事软件还是硬件? 学习内容 (* ̄︶ ̄)创作不易!期待你们的 点赞、收藏和评论喔。 作为一个老司机,多年来跟 单片机 、 Keil 、 C语言 、 AD 、 烙铁 、 风枪 、 示波器 、 电子元器件 纠缠不清。期间经历了不少磨练,熬过了很多夜晚,也掉了大把头

    2024年02月06日
    浏览(67)
  • 嵌入式开发:单片机嵌入式Linux学习路径

    SOC(System on a Chip)的本质区别在于架构和功能。低端SOC如基于Cortex-M架构的芯片,如STM32和NXP LPC1xxx系列,不具备MMU(Memory Management Unit),适用于轻量级实时操作系统如uCOS和FreeRTOS。高端SOC如基于Cortex-A架构的芯片,如三星、高通、飞卡、全志和瑞芯微等,具备MMU,支持虚拟内

    2024年02月15日
    浏览(53)
  • 通信工程毕设 Stm32 WIFI智能家居温湿度和烟雾检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(58)
  • 单片机STM32看门狗详解(嵌入式学习)

    单片机STM32的看门狗(Watchdog)是一种硬件定时器,用于监控系统的运行状态并在出现故障或死锁时采取措施以恢复正常操作。看门狗的主要功能是定期检查系统是否正常运行,并在系统出现问题时触发复位操作。 STM32系列单片机通常配备了内置的看门狗定时器(通常称为独立

    2024年02月13日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包