RT-Thread源码下载介绍

转载:https://blog.csdn.net/RootCode/article/details/84066981

RT-Thread 源码下载应用笔记

摘要

本文将详细介绍如何获取 RT-Thread 源代码。

1 本文的目的和结构

1.1 本文的目的和背景

RT-Thread 源代码托管在 GitHub,对于不熟悉 GitHub 的新手,初次接触 RT-Thread 不知道如何从 GitHub 获取 RT-Thread 源代码。本文档将一步步介绍如何从 GitHub 获取 RT-Thread 源代码。

1.2 本文的结构

本文先介绍了 RT-Thread 源代码下载链接,然后讲解了使用 Git 命令下载 RT-Thread 源代码,最后对 RT-Thread 源代码目录及 BSP目录 做了简要介绍。

2 RT-Thread 源代码下载链接

前提条件:安装好 Git ,git clone 命令需要用到 Git 工具。请参考文档Git 安装应用笔记

在 RT-Thread 官网提供了3种 RT-Thread 源代码的下载链接。

 

1、GitHub 的下载链接:https://github.com/RT-Thread/rt-thread

2、Gitee 的下载链接:https://gitee.com/rtthread/rt-thread

3、百度网盘的下载链接:https://pan.baidu.com/s/1mgIAyWo#list/path=%2F

百度网盘包含 RT-Thread 发布的各个版本源代码压缩包,压缩包不包括 RT-Thread 项目版本的历史记录。

Gitee 的源码是 GitHub 的镜像,会及时自动和 GitHub 保持同步,从这2个地方下载源代码都有2种方式,一种是复制 RT-Thread 项目仓库地址后使用 git clone 命令下载,另外一种是直接下载 RT-Thread 项目压缩包。两者的差别是后者不包括 RT-Thread 项目版本的历史记录,而前者会在本地创建一个本地仓库,并且包含 RT-Thread 项目所有版本的历史记录,并且可以直接使用 Git 工具对这个本地仓库进行管理,强烈建议使用 git clone 命令下载 RT-Thread 源代码

Gitee 和 GitHub 2种下载方式如下面2张图所示,可以通过点击对应链接进入下载页面。

RT-Thead项目GitHub下载链接

 

3 RT-Thread源代码下载

如上图所示复制 GitHub 上 RT-Thread 项目仓库地址后,打开 windows 命令行工具 或者Git Bash,切换到你想要放置源代码的目录,注意目录路径中不可以有中文字符或者空格,否则影响后续 env 工具的使用。然后使用git clone https://github.com/RT-Thread/rt-thread.git命令克隆 RT-Thread 远程仓库到本地,如下图所示使用 git clone命令后将在 D盘的repository 目录下创建 rt-thread目录。

git-clone-RT-Thead项目

由于国外服务器 GitHub 下载代码速度较慢,建议从 Gitee 下载,可以很快就下载好 RT-Thread 源代码,如上图所示复制 Gitee 上 RT-Thread 项目仓库地址后,同样使用git clone命令下载代码,只是仓库地址为 RT-Thread 项目在 Gitee 的仓库地址。使用git clone https://gitee.com/rtthread/rt-thread.git命令克隆 RT-Thread 远程仓库到本地。

 

如果想要修改从 Gitee 克隆的本地 RT-Thread 仓库对应的远程仓库为 GitHub 上的仓库,可以按照下图所示修改,打开本地 RT-Thread 仓库 .git 目录里的config文件,修改 url 地址为 GitHub 上 RT-Thread 项目仓库地址。

 

说明:RT-Thread 源代码下载包较大,因其包含有将近 90 个 BSP(实际你只需要提取自己的板卡对应的 BSP 即可),而 Git 仓库不提供单独下载某个文件,请下载源码时多一些耐心。

4 RT-Thread 源代码目录简介

RT-Thread 源代码目录结构如下图所示:

RT-Thread 源代码目录结构

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

5 RT-Thread BSP 介绍

目前 RT-Thread 已经针对将近90种开发板做好了移植,大部分 BSP 都支持 MDK﹑IAR开发环境和GCC编译器,并且已经提供了默认的 MDK 和 IAR 工程,用户可以直接基于这个工程添加自己的应用代码。 每个 BSP 的目录结构都类似,大部分 BSP 都提供一个 README.md 文件,这是一个 markdown 格式的文件,包含了对这个 BSP 的基本介绍,以及怎么样简单上手使用这个BSP,相当于是这份BSP的使用说明。大家找到对应的 BSP 以后首先应该看一下这份使用说明,才能少走弯路,快速的把RT-Thread 操作系统跑起来。下图是 stm32f4xx-HAL BSP 的目录描述。

 

双击打开 stm32f4xx-HAL BSP 下的MDK 工程文件 project.uvprojx 。

stm32f4xx-HAL 工程文件

在工程主窗口的左侧 “Project” 栏里可以看到该工程的文件列表,这些文件被分别存放到如下几个组内,其他 BSP 提供的工程文件也是类似的分组方式。

目录组描述
Drivers对应的目录为 stm32f4xx-HAL/drivers,它用于存放根据RT-Thread 提供的驱动框架实现的底层驱动代码。
CMSIS对应目录为 stm32f4xx-HAL/Libraries/CMSIS, stm32 CMSIS系统文件。
STM32F4XX_HAL_Driver对应的目录为 stm32f4xx-HAL/Libraries/STM32F4xx_HAL_Driver,它用于存放 STM32 的固件库文件。
Applications对应的目录为 stm32f4xx-HAL/applications,它用于存放用户自己的应用代码。
Kernel对应的目录为 rt-thread/src,它用于存放 RT-Thread 内核核心代码。
CORTEX-M4对应的目录为 rt-thread/libcpu/arm,它用于存放 ARM Cortex-M4移植代码。
DeviceDrivers对应的目录为 rt-thread/components/drivers,它用于存放 RT-Thread 驱动框架源代码。
finsh对应的目录为 rt-thread/components/finsh,它用于存放 RT-Thread finsh 命令行组件。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答你的问题。首先,RT-Thread是一个实时操作系统,它提供了一些基本的实时操作系统功能,例如线程、信号量、消息队列、定时器等。其中,定时器是一种非常重要的实时操作系统功能,它可以用来在指定的时间间隔内执行一些操作。 在RT-Thread中,定时器的实现是基于软件定时器,即在内核中维护一个定时器列表,每个定时器都有一个超时时间。当定时器到期时,内核会调用定时器回调函数来执行相应的操作。 下面是RT-Thread定时器的源码分析: 1. 定时器结构体 在RT-Thread中,定时器的结构体定义如下: ```c struct rt_timer { char name[RT_NAME_MAX]; /* 定时器名称 */ rt_list_t list; /* 定时器列表 */ rt_tick_t timeout_tick; /* 定时器超时时间 */ rt_tick_t init_tick; /* 定时器初始时间 */ rt_uint8_t flag; /* 定时器标志 */ rt_uint8_t state; /* 定时器状态 */ void (*timeout_func)(void* parameter); /* 定时器回调函数 */ void* parameter; /* 回调函数参数 */ }; ``` 可以看到,定时器结构体包含了定时器的名称、超时时间、标志、状态、回调函数等信息。 2. 定时器创建 在RT-Thread中,定时器的创建函数是rt_timer_create(),它的函数原型如下: ```c rt_err_t rt_timer_create(rt_timer_t *timer, const char *name, void (*timeout_func)(void* parameter), void* parameter, rt_tick_t time, rt_uint8_t flag); ``` 其中,timer表示定时器指针,name表示定时器名称,timeout_func表示定时器回调函数,parameter表示回调函数参数,time表示定时器超时时间,flag表示定时器标志。 rt_timer_create()函数会在内核中创建一个定时器,并将定时器添加到定时器列表中。如果创建成功,函数返回RT_EOK,否则返回错误码。 3. 定时器启动 在RT-Thread中,定时器的启动函数是rt_timer_start(),它的函数原型如下: ```c rt_err_t rt_timer_start(rt_timer_t timer); ``` rt_timer_start()函数会启动指定的定时器,并将其状态设置为RT_TIMER_FLAG_ACTIVATED。如果启动成功,函数返回RT_EOK,否则返回错误码。 4. 定时器停止 在RT-Thread中,定时器的停止函数是rt_timer_stop(),它的函数原型如下: ```c rt_err_t rt_timer_stop(rt_timer_t timer); ``` rt_timer_stop()函数会停止指定的定时器,并将其状态设置为RT_TIMER_FLAG_DEACTIVATED。如果停止成功,函数返回RT_EOK,否则返回错误码。 5. 定时器删除 在RT-Thread中,定时器的删除函数是rt_timer_delete(),它的函数原型如下: ```c rt_err_t rt_timer_delete(rt_timer_t timer); ``` rt_timer_delete()函数会删除指定的定时器,并释放相应的资源。如果删除成功,函数返回RT_EOK,否则返回错误码。 以上就是RT-Thread定时器的源码分析,希望能对你有所帮助。如果你有其他问题,可以继续问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值