[嵌入式系统-17]:RT-Thread -3- 源代码目录结构

目录

前言:功能模块

一、RT-Thread 源代码目录结构

二、支持的CPU架构

三、SRC内核代码


前言:功能模块

一、RT-Thread 源代码目录结构

从RT-Thread的GitHub官网上面下载了内核源码,下载链接如下
https://github.com/RT-Thread/rt-thread/tags

解压出压缩包后主目录下如下:

目录说明
github打开里面只有一个readme文件,可以删除;
bsp顾明思议,是包含了很多平台的扳级支持包,留一个自己有用的就可以;
componentsRT-Thread外部组件代码,如Finsh、Lwip、文件系统;
documentation一些介绍性的文档,包括其代码风格 ;
examples各种示例应用程序的示例代码,是很好的学习素材 ;
include一些.h头文件;
libcpu各类CPU芯片/内核的移植代码,比如STM32 ;
srcRT-Thread内核代码文件;
tools使用 scon 自动化创建工具时需要的一些文件;
.gitattributes有关git的一个文件,不过多讲述;
.gitignore有关git的一个文件,不过多讲述;
.travis.yml有关git的一个文件,不过多描述;
AUTHORS开发者贡献信息;
ChangeLog.md该版本和该版本之前的变更日志 ;
Kconfig对内核和组件的功能进行配置,对组件进行自由裁剪;
License类似于许可证的存在;
README.md关于RT-Thread英文版说明;
README_zh.md关于RT-Thread中文版说明。

RT-Thread 的源代码目录结构主要包括以下几个主要部分:

  1. BSP(Board Support Package):该目录下包含了具体硬件平台的支持代码,每个硬件平台都有一个对应的 BSP 目录。在该目录中,通常包含了启动文件、时钟配置、中断管理、外设驱动等与硬件相关的代码。

  2. Libcpu:该目录包含了与具体处理器平台相关的代码,包括处理器的寄存器定义、中断处理机制等。

  3. Components:该目录下包含了 RT-Thread 提供的各种功能组件和功能模块,例如文件系统(FS)、网络协议栈(Net)、GUI 界面库(GUI)、TCP/IP 协议栈(lwIP)、USB 支持库等。开发者可以根据需求选择并集成相应的组件。

  4. Examples:该目录下包含了一些应用示例程序,演示了如何使用 RT-Thread 的各种功能和组件。这些示例程序对初学者来说是非常有用的参考。

  5. src/Kernel:该目录是 RT-Thread 操作系统内核的核心代码所在位置。它包含了线程管理、任务调度、内存管理、中断管理、时钟管理等与操作系统相关的代码。

  6. src/RT-Thread:该目录包含了 RT-Thread 系统的核心代码和头文件,包括内核初始化、任务调度、时间管理、线程操作等。

  7. Tools:该目录下包含了一些工具和脚本文件,用于编译和调试 RT-Thread 系统。

此外,还有一些其他的目录和文件,用于存放配置信息、编译工具链、编译输出等。

二、支持的CPU架构

RT-Thread RTOS 支持许多架构,并且已经涵盖了当前应用中的主要架构。

涉及的架构和芯片制造商有:

  • ARM Cortex-M0/M0+:如芯片制造商 ST

  • ARM Cortex-M3:如芯片制造商 ST、全志、灵动等.

  • ARM Cortex-M4:如芯片制造商 ST、Nuvton、NXP、GigaDevice、Realtek、Ambiq Micro 等

  • ARM Cortex-M7:如芯片制造商 ST、NXP

  • ARM Cortex-M23:如芯片制造商 GigaDevice

  • ARM Cortex-R4

  • ARM Cortex-A8/A9:如芯片制造商 NXP

  • ARM7:如芯片制造商 Samsung

  • ARM9:如芯片制造商 Allwinner、Xilinx 、GOKE

  • ARM11:如芯片制造商 Fullhan

  • MIPS32:如芯片制造商 loongson、Ingenic

  • RISC-V:如芯片制造商 Hifive、Kendryte

  • ARC:如芯片制造商 SYNOPSYS

  • DSP:如芯片制造商 TI

  • C-Sky

  • x86

三、SRC内核代码

在 RT-Thread 源代码中,src 目录是其中一个主要目录,它包含了 RT-Thread 操作系统的核心代码。src 目录通常包括以下几个子目录:

  1. rt-thread:该目录包含了 RT-Thread 操作系统的核心代码,包括任务管理、线程调度、中断处理、内存管理、定时器管理等与操作系统运行相关的功能。

  2. components:内部组件,该目录包含了 RT-Thread 提供的各种功能模块和组件的源代码。例如文件系统、网络协议栈、GUI 界面库、USB 驱动等。开发者可以根据需要选择并集成适合的组件。

  3. device:该目录包含了设备驱动相关的源代码。每个子目录通常对应一种设备类型,例如串口设备、以太网设备、SPI 设备等。在这些子目录中,你可以找到设备驱动的初始化、读写函数等与设备操作相关的代码。

  4. libcpu:该目录包含了与具体处理器平台相关的源代码文件,用于支持 RT-Thread 在不同处理器平台上的移植和运行。

  5. sal:该目录包含了供应商抽象层 (System Abstraction Layer) 的源代码。这些代码提供了对底层硬件的访问接口,支持 RT-Thread 在不同的硬件平台上进行移植和使用

  6. user:该目录是用户自定义的目录,用于存放用户自己开发的应用程序和功能模块。

  7. finsh:该目录包含了 RT-Thread 的命令行 shell 组件 FinSH 的源代码。FinSH 提供了一个交互式的命令行界面,使用户能够通过命令行与 RT-Thread 进行交互。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/683623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS 通过getInspectorByKey获取指定元素高宽等属性

例如 这里 我们有这样一个组件 Entry Component struct Dom {build() {Column() {Row() {Circle({ width: 200, height: 200 }).fill(#20101010)}.id(ES)}.width(100%).height(100%)} }这里 我们就写了个很基本的组件结构 然后 我们写了个 Circle 组件 定义了宽高 然后 如果我…

数据接收程序

#include<reg51.h> //包含单片机寄存器的头文件 sbit pPSW^0; /***************************************************** 函数功能&#xff1a;接收一个字节数据 ***************************************************/ unsigned char Receive(void) { unsigned…

116. 填充每个节点的下一个右侧节点指针

给定一个 完美二叉树 &#xff0c;其所有叶子节点都在同一层&#xff0c;每个父节点都有两个子节点。二叉树定义如下&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到…

Flink理论—容错之状态

Flink理论—容错之状态 在 Flink 的框架中&#xff0c;进行有状态的计算是 Flink 最重要的特性之一。所谓的状态&#xff0c;其实指的是 Flink 程序的中间计算结果。Flink 支持了不同类型的状态&#xff0c;并且针对状态的持久化还提供了专门的机制和状态管理器。 Flink 使用…

7 大 Android 数据恢复软件,可轻松找回丢失的数据

每年&#xff0c;由于各种原因&#xff0c;数百万人从他们的 Android 设备中丢失数据。它可能像意外删除文件一样简单&#xff0c;也可能像系统崩溃一样复杂。在这种情况下&#xff0c;拥有高效的数据恢复工具可以证明是救命稻草。Mac 用户尤其需要找到与其系统兼容的软件。好消…

不止于浏览器:掌握Node.js,开启全栈开发新篇章!

介绍&#xff1a;Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;特别适合构建高性能的网络服务器和实时应用。具体介绍如下&#xff1a; 服务器端JavaScript&#xff1a;Node.js的核心优势之一是在服务器端运行JavaScript&#xff0c;这使得前端开发者可以…

如何利用SpringSecurity进行认证与授权

目录 一、SpringSecurity简介 1.1 入门Demo 二、认证 ​编辑 2.1 SpringSecurity完整流程 2.2 认证流程详解 2.3 自定义认证实现 2.3.1 数据库校验用户 2.3.2 密码加密存储 2.3.3 登录接口实现 2.3.4 认证过滤器 2.3.5 退出登录 三、授权 3.1 权限系统作用 3.2 授…

软件实例分享,门诊处方软件存储模板处方笺教程,个体诊所电子处方开单系统软件教程

软件实例分享&#xff0c;门诊处方软件存储模板处方笺教程&#xff0c;个体诊所电子处方开单系统软件教程、 一、前言 以下软件教程以 佳易王诊所电子处方管理软件V17.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 电子处方软件支持病历汇总…

CGAL Mesh分割

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 网格分割是将一个网格分解成更小的、有意义的子网格的过程。该过程用于建模,索具,纹理,形状检索,变形等应用。CGAL为我们提供了一个依赖于形状直径函数(SDF)的算法实现,即给定一个三角形表面网格包围一个3D实体…

对进程与线程的理解

目录 1、进程/任务&#xff08;Process/Task&#xff09; 2、进程控制块抽象(PCB Process Control Block) 2.1、PCB重要属性 2.2、PCB中支持进程调度的一些属性 3、 内存分配 —— 内存管理&#xff08;Memory Manage&#xff09; 4、线程&#xff08;Thread&#xff09;…

auto关键字详讲

目录 1.问题思考 2.auto关键字介绍 3. 早期auto的缺陷&#xff1a; 4.什么叫自动存储器&#xff1f; 5. c标准auto关键字 5.1auto的使用细节 5.2 auto什么时候不能推导变量的类型呢&#xff1f; 5.3基于范围的for循环 5.3.1范围for的用法 5.3.2 范围for的使用条件 6.…

书生浦语大模型实战营-课程笔记(3)

本节课主要是跟着教程做的&#xff0c;操作的东西放到作业里记录了。 这里主要记录一些视频里讲的非操作性的东西。 RAG外挂知识库&#xff1f;优点是成本低&#xff0c;不用重新训练 RAG的一个整体流程。 涉及了文本相似度匹配&#xff0c;是不是和传统的问答系统&#xff0…

【Linux学习】线程池

目录 23.线程池 23.1 什么是线程池 23.2 为什么需要线程池 23.3 线程池的应用场景 23.4 实现一个简单的线程池 23.4.1 RAII风格信号锁 23.4.2 线程的封装 23.4.3 日志打印 22.4.4 定义队列中存放Task类任务 23.4.5 线程池的实现(懒汉模式) 为什么线程池中需要有互斥锁和条件变…

片上网络NoC(3)——拓扑指标

目录 一、概述 二、指标 2.1 与网络流量无关的指标 2.1.1 度&#xff08;degree&#xff09; 2.1.2 对分带宽&#xff08;bisection bandwidth&#xff09; 2.1.3 网络直径&#xff08;diameter&#xff09; 2.2 与网络流量相关的指标 2.2.1 跳数&#xff08;hop coun…

【51单片机】初学者必读的一文【探究定时计数器与中断系统是如何配合起来的?】(9)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

Nvidia 推出了本地版聊天 Chat with RTX;OpenAI联创Karpathy宣布离职专注个人项目

&#x1f989; AI新闻 Nvidia 推出了本地版聊天 Chat with RTX 摘要&#xff1a;英伟达最近发布了名为“Chat with RTX”的Demo版个性化AI聊天机器人&#xff0c;适用于Windows平台&#xff0c;需要Nvidia的30系/40系显卡&#xff0c;显存至少为8GB&#xff0c;系统配置包括1…

【C++关联式容器】unordered_set

目录 unordered_set 1. 关联式容器额外的类型别名 2. 哈希桶 3. 无序容器对关键字类型的要求 4. Member functions 4.1 constructor、destructor、operator 4.1.1 constructor 4.1.2 destructor 4.1.3 operator 4.2 Capacity ​4.2.1 empty 4.2.2 size 4.2.3 max…

Rust - 切片Slice

Slice类型 Slice数据类型没有所有权&#xff0c;slice允许我们引用集合中一段连续的元素序列而不用引用整个集合。字符串slice(string slice) 是String中 一部分值的引用。如下述代码示例&#xff0c;不是对整个String的引用而是对部分String的引用&#xff1a; fn main() {l…

力扣例题----二叉树

文章目录 1. 100.相同的树2. 572. 另一颗树的子树3. 266.翻转二叉树4. LCR 175.计算二叉树的深度5. 110.平衡二叉树6. 101. 对称二叉树7. 牛客题目&#xff1a;KY11 二叉树遍历8. 102.二叉树的层序遍历9. 236.二叉树的最近公共祖先10. 105.根据前序和中序构造一棵二叉树11. 106…

【数位dp】【动态规划】【状态压缩】【推荐】1012. 至少有 1 位重复的数字

作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 LeetCode:1012. 至少有 1 位重复的数字 给定正整数 n&#xff0c;返回在 [1, n] 范围内具有 至少 1 位 重复数字的正整数的个数。 示例 1&#xff1a; 输入&#xff1a;n 20 输出&#xff1a;1 解释&#xff1a;具有至…