[嵌入式系统-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 组件 定义了宽高 然后 如果我…

2024.02.15作业

一.选择题 1.变量的指针,其含义是指该变量的 B 。 A)值 B)地址 C)名 D)一个标志 2.已有定义int k2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k&#x…

数据接收程序

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

寒假作业2月14号

指针练习 1、选择题 1.1、若有下面的变量定义&#xff0c;以下语句中合法的是&#xff08; A &#xff09;。 int i&#xff0c;a[10]&#xff0c;*p&#xff1b; A&#xff09; pa2; B&#xff09; pa[5]; C&#xff09; pa[2]2; D&#xff09; p&(i…

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 授…

第10章 智能租房——用户中心

学习目标 掌握用户注册功能的逻辑,能够独立编写代码实现用户注册功能 掌握用户中心页展示功能的逻辑,能够实现在用户中心页上展示账号信息、收藏记录和浏览记录 掌握用户登录与退出的逻辑,能够实现用户登录与退出功能 掌握账号信息修改的逻辑,能够实现账号信息修改功能 掌握…

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

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

CGAL Mesh分割

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

B3650 [语言月赛202208] 求和

题目描述 输入一个整数 n(1≤n≤107)&#xff0c;每行输出一个数&#xff0c;表示数字 1 到 i 的和。 比如&#xff0c;当 n5 时&#xff0c; 第 1 行输出一个数字 1&#xff1b; 第 2 行输出数字 3&#xff0c;因为 1 2 3&#xff1b; 第 3 行输出数字 6&#xff0c;因…

创建线程实现火车站多窗口买票问题

1.首先要知道创建线程的方式 &#xff08;1&#xff09;通过继承Thread类的方式 &#xff08;2&#xff09;通过实现runnable的方式 2.多个线程&#xff08;多个窗口&#xff09;卖票这里要考虑线程安全问题&#xff0c;不然会出现错票和重票的问题。这里有上面两种方式实现…

对进程与线程的理解

目录 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 线程池的实现(懒汉模式) 为什么线程池中需要有互斥锁和条件变…

第三百四十六回

文章目录 1. 概念介绍2. 原理与方法2.1 知识对比2.2 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"加密包crypto"相关的内容&#xff0c;本章回中将介绍characters包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 在项目中会遇到获取字…

片上网络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…