最近在学习RT-Thread,原子的某例程的的主函数如下(这是在keil5下的截图): ? 这是主函数中的全部代码,主要是创建一个led线程并启动。...这就涉及到RT-Thread的启动过程。 我们可以借助jlink仿真器进行硬件单步调试就可以知道程序的执行流程了。 首先,进入调试界面,并点击复位按钮光标就可以跳到程序开始运行的地方。如: ?...在《RT-Thread内核实现与应用开发实战指南》这本书中有解释到: RTThread 使用编译器(这里仅讲解 KEIL, IAR 或者 GCC 稍微有点区别,但是原理是一样的)自带的$Sub$$和$...简单来说,$Sub$$和$Super$$具有补丁功能,可以给一些函数打上补丁,如RT-Thread的内核文件component.c中就给我们的用户主函数main打上了”补丁“。...以上就是关于RT-Thread启动过程的一点总结,如有错误欢迎指出!谢谢
下面我们来从原理层面和实现层面上讲一下rt-thread裁剪相关的知识。...02 rt-thread具有高度的可裁剪性 RT-Thread 主要采用 C 语言编写,浅显易懂,方便移植。...得益于 RT-Thread 的高度可裁剪性,通过对完整版的裁剪,可以十分便捷的小资源 平台上使用上 RT-Thread。可以通过 env 工具十分方便地进行裁剪,env 工具使用方法如下图所示: ?...对于RT-Thread中,比较关心的是ROM资源以及RAM资源,所以在设计之初,首先评估资源是否合理去跑一个rtos。...06 业务逻辑裁剪 在使用rt-thread操作系统时,往往都是利用rt-thread实现自己的业务逻辑,所以我们在编写自己的代码的时候,也需要充分的理解rt-thread的设计思想。
这里我选择国产实时操作系统RT-Thread进行学习,因为现在很火呀。...之前已经有简单地过了一遍RT-Thread,奈何学过地知识一旦不用,就会很容易地忘掉,所以应当多做一些学习笔记~ RT-Thread简介 RT-Thread,全称是 Real Time-Thread,顾名思义...RT-Thread提供了一些网络组件及软件包,我们可以运用这些软件包很方便地与云端进行通讯。因此,RT-Thread是一个物联网操作系统(IoT OS)。...RT-Thread 内核基础 RT-Thread内核架构如下: ? 其中,内核库kservice.c是为了保证内核能够独立运行的一套小型的类似 C 库的函数实现子集。...时钟管理 RT-Thread 的时钟管理以时钟节拍为基础,时钟节拍是 RT-Thread 操作系统中最小的时钟单位。
从RT-Thread的github上clone下源码(git@github.com:RT-Thread/rt-thread.git) 2....从源码路径:rt-thread\bsp\stm32\libraries\templates中,复制一份stm32f10x的模板到源码路径:rt-thread\bsp\stm32,并修改其名字(我的修改为...8.打开工程路径:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6\board的SConscript,修改启动芯片和目标芯片,因为目录下\rt-thread...16.以上的移植过程都是RT-Thread的源码上做的,太多文件夹了,如果你先将工程分离出来,输入scons –dist。等待。。。。。。...生成完之后,可以在工程路径下:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6\dist,将工程拷贝到任意位置。
文章目录 一、初识RT-Thread 1.简介 2.前景 3.软件生态 二、实验准备 三、实验需求 四、操作流程 1.新建RT-Thread工程 2.RT-Thread Studio界面介绍 3.代码编写...4.烧录 5.串口监视 五、代码演示 六、原理讲解 一、初识RT-Thread 做世界级的 OS,让万物互联,信息畅通无阻。...1.简介 RT-Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread 也是一个组件完整丰富、高度可伸缩...2.前景 RT-Thread 具备一个 IoT OS 平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。...二、实验准备 编程工具:RT-Thread studio 开发板:潘多拉STM32L475 三、实验需求 1.使用按键控制蜂鸣器和电机,当按下KEY0 后电机左转,当按下KEY1 后电机 右转,当按下
统一管理网卡调试命令(ping、ifconfig、netstat、dns 等命令); 网卡概念: 网卡概念介绍之前先了解协议栈相关概念,协议栈是指网络中各层协议的总和,每种协议栈反映了不同的网络数据交互方式,RT-Thread...SAL 组件提供对不同协议栈或网络实现接口的抽象和统一,组件在 socket 创建时通过判断传入的协议簇(domain)类型来判断使用的协议栈或网络功能,完成 RT-Thread 系统中多协议的接入与使用...3.1 AT 组件简介 AT 组件是基于 RT-Thread 系统的 AT Server 和 AT Client 的实现,组件完成 AT 命令的发送、命令格式及参数判断、命令的响应、响应数据的接收、响应数据的解析...4.2.1 添加lwip协议栈软件包 在 RT-Thread Setting 文件中借助图形化配置工具打开软件 lwip 的组件,保存更新。 ?...4.2.3 网络设备层和LAN8720驱动解析 4.2.3.1 网络设备层解析 RT-Thread 的 lwIP 移植在原版的基础上,添加了网络设备层以替换原来的驱动层。
上一节我们学习了RTT的PIN设备的使用,从PIN设备的例程再一次体会到RTT编程的灵活和简单,最重要的是让开发者专注于应用开发,文章链接: RT-Thread PIN设备学习笔记 今天我们来学习RT-Thread...本节,我们将会学习到RT-Thread ADC设备的基本使用。 接下来,我们将基于RT-Thread Studio来构建。...; 参数 描述 dev ADC 设备句柄 channel ADC 通道 返回 —— 读取的数值 根据API,我们很容易写出以下程序: /* * Copyright (c) 2006-2019, RT-Thread...SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2019-09-09 RT-Thread...* * STEP 1, open adc driver framework support in the RT-Thread Settings file * * STEP 2, define
前面我们学习了RTT的UART设备的使用,不得不说真的超级给力呀,不到100行秒杀任何MCU最原始的串口编程模式,不得不感叹RTT发展如此强大,文章链接: RT-Thread UART设备驱动框架初体验...RT-Thread PIN设备!学习一个新东西,我个人主张带着需求去学习,而不是漫无目的的去学,有了需求驱动,并且是一个努力付出就可以拥有的成果,那么这还不容易嘛!...我们将基于RT-Thread Studio来构建。 2、开始实践 2.1、RT-Thread Studio工程创建与基础配置 (1)创建RT-Thread项目 ? (2)配置项目 ?...RT-Thread选择v4.0.2,这个版本包含基本的组件,而选择nano的话则不包含。 厂商目前只支持ST,相信后面会支持更多。...-2.0 * * Change Logs: * Date Author Notes * 2019-09-09 RT-Thread first version
一、介绍 FinSH 是 RT-Thread 的命令行组件(shell),有了 shell,就像在开发者和计算机之间架起了一座沟通的桥梁,开发者能很方便的获取系统的运行情况,并通过命令控制系统的运行。...二、FinSH 内置命令 2.1、tap键 按下 Tab 键后打印出来的当前支持的所有显示 RT-Thread 内核状态信息的命令。...导出无参数命令时,函数的入参为 void,示例如下: void hello(void) { rt_kprintf("hello RT-Thread!...\n"); } MSH_CMD_EXPORT(hello , say hello to RT-Thread); 导出有参数的命令时,函数的入参为 int argc 和 char**argv 。
rt-thread的内存管理分析 1.概述 2.静态内存与动态内存 3.小内存管理 4.slab内存管理 4.1 rt-thread上slab基本介绍 4.2 rt-thread上slab内存的管理 5...本文主要从RT-Thread的内存管理策略的角度出发,梳理一下目前RT-Thread系统中的内存管理,同时从实际应用的角度出发,选择合适的方案进行内存管理。...对于RT-Thread的内存管理方式,主要从小内存管理、slab、memheap以及内存池这四种内存管理策略上去分析对比,从而选择最佳的内存管理策略。...3.小内存管理 rt-thread的小内存管理算法是一种比较简单的内存分配管理算法。应用的场景在内存在1MB以下使用比较合适。...4.slab内存管理 4.1 rt-thread上slab基本介绍 RT-Thread 的 slab 分配器是在 DragonFly BSD 创始人 Matthew Dillon 实现的 slab 分配器基础上
线程管理特点 RT-Thread 线程管理的主要功能是对线程进行管理和调度,系统中总共存在两类线程,分别是系统线程和用户线程,系统线程是由 RT-Thread 内核创建的线程,用户线程是由应用程序创建的线程...---- 线程属性 线程栈 RT-Thread 线程具有独立的栈,当进行线程切换时,会将当前线程的上下文存在栈中,当线程要恢复运行时,再从栈中读取上下文信息,进行恢复。...此状态在 RT-Thread 中的宏定义为 RT_THREAD_READY 这个状态线程是参与调度的,只不过没有占用CPU。 运行状态 线程当前正在运行。...此状态在 RT-Thread 中的宏定义为 RT_THREAD_SUSPEND 关闭状态 当线程运行结束时将处于关闭状态。关闭状态的线程不参与线程的调度。...此状态在 RT-Thread 中的宏定义为 RT_THREAD_CLOSE 线程优先级 RT-Thread 最大支持 256 个线程优先级 (0~255),数值越小的优先级越高,0
trace32 for rt-thread support 1.概述 2.trace32的基本使用 3.trace32系统插件原理 4.离线trace32得到rt-thread状态信息 4.1 trace32...而在rt-thread中,有个核心的全局静态变量,对象容器(rt_object_container)。...task.config D:\work\rt-thread\bsp\raspberry-pi\raspi2\rtthread.t32 menu.reprogram D:\work\rt-thread\bsp...Data.LOAD.Binary D:\work\rt-thread\bsp\raspberry-pi\raspi2\rtt_dump 0x8000 Data.LOAD.Elf D:\work\rt-thread...5.总结 rt-thread在trace32上的扩展插件使用,可以非常方便的分析系统的状态。
本文介绍了如何在 RT-Thread Studio 上使用 RT-Thread Nano,并基于BearPI-IOT STM32L431RCT6的基础工程进行讲解如何使用PIN设备接口及相关软件包使用。...RT-Thread Nano:仅仅只是一个 RTOS 内核。没有任何组件。 Nano 是无法直接使用 RT-Thread 丰富软件包功能。...准备工作 使用 RT-Thread Studio 建立一个 STM32L431RCT6 的 RT-Thread Nano 基础工程。...基础工程创建可参考:在 RT-Thread Studio 上使用 RT-Thread Nano PIN 设备接口 在 RT-Thread 标准版中,PIN设备设备提供了一套设备管理接口来访问 GPIO,...通过这样的方式,学习完 RT-THREAD Nano 在转移到 RT-THREAD 标准版的学习,更加简单方便。
RT-Thread 中的多线程 博主介绍 RT-Thread 线程管理和调度 系统线程 空闲线程 主线程 线程管理 RT-Thread 自动初始化机制 在新线程控制LED RT-Thread 线程管理和调度...RT-Thread 线程管理的主要功能是对线程进行管理和调度,系统中总共存在两类线程,分别是系统线程和用户线程,系统线程是由 RT-Thread 内核创建的线程,用户线程是由应用程序创建的线程,这两类线程都会从内核对象容器中分配线程对象...RT-Thread的线程调度器是抢占式的,主要的工作就是从就绪线程列表中查找最高优先级线程,保证最高优先级的线程能够被运行,最高优先级的任务一旦就绪,总能得到CPU的使用权。...系统线程 系统线程是指由系统创建的线程,用户线程是由用户程序调用线程管理接口创建的线程,在 RT-Thread 内核中的系统线程有空闲线程和主线程。...另外,空闲线程在 RT-Thread 也有着它的特殊用途: 若某线程运行完毕,系统将自动删除线程:自动执行 rt_thread_exit() 函数,先将该线程从系统就绪队列中删除,再将该线程的状态更改为关闭状态
在RT-Thread 中,与上述子任务对应的程序实体就是线程,线程是实现任务的载体。...在RT-Thread 中,线程包含五种状态,操作系统会自动根据它运行的情况来动态调整它的状态。...此状态在RT-Thread 中的宏定义为RT_THREAD_READY 运行态 线程当前正在运行。...此状态在RT-Thread 中的宏定义为RT_THREAD_CLOSE (3) 线程优先级 RT-Thread 线程的优先级是表示线程被调度的优先程度。...RT-Thread 最大支持256 个线程优先级(0~255),数值越小的优先级越高,0 为最高优先级。
时钟管理 RT-Thread 的时钟管理以时钟节拍为基础,时钟节拍是 RT-Thread 操作系统中最小的时钟单位。...RT-Thread 的定时器提供两类定时器机制:第一类是单次触发定时器,这类定时器在启动后只会触发一次定时器事件,然后定时器自动停止。...RT-Thread 的定时器可以设置为 HARD_TIMER (硬件)模式或者 SOFT_TIMER(软件) 模式。...内存管理 RT-Thread 支持静态内存池管理及动态内存堆管理。...(地址不连续) I/O 设备管理 RT-Thread 将 PIN、I2C、SPI、USB、UART 等作为外设设备,统一通过设备注册完成。
前面我们学习了RTT的I2C总线设备的使用,文章链接: RT-Thread I2C总线设备学习笔记 这节学习RTT里非常简单的设备--RTC设备 1、RTC设备简介 RTC是什么呢?...相信学习嵌入式的伙伴都熟悉,以下介绍引用自RT-Thread文档中心-RTC设备 RTC(Real-Time Clock)实时时钟可以提供精确的实时时间,它可以用于产生年、月、日、时、分、秒等信息。...RT-Thread 的 RTC设备为操作系统的时间系统提供了基础服务。面对越来越多的 IoT 场景,RTC 已经成为产品的标配,甚至在诸如 SSL 的安全传输过程中,RTC 已经成为不可或缺的部分。...2、RTC设备操作接口 RT-Thread为RTC设备提供了三个用户层次的应用操作接口,分别是设置日期、设置时间和获取当前时间。...在RT-Thread的设备中,有且仅有一个RTC设备,设备名称为"rtc"。
回顾2018 2018年,对于RT-Thread来说,可以认为是重树形象的一年。 ? 以前RT-Thread给大家停留的一个印象是:文档少,书籍少,上手比较难。...的认可,给予了非常得力和及时的支持,撰写出版了《RT-Thread内核实现与应用开发实战指南——基于STM32》;RT-Thread官方团队也在加班加点撰写更为系统的《实时嵌入式系统:RT-Thread...相信未来大家在STM32上使用RT-Thread将变得更容易、轻松。 ? 技术上,当然RT-Thread也不落下,v4.x加入了多核SMP调度,以及64位处理器支持。...真正的IoT OS 2018年做了一系列活动,包括RT-Thread入门,线上学习营,RT-Thread开发者大会,RT-Thread入门workshop。...一起见证RT-Thread,2019 加油!
2 DFS 简介 DFS( Device File System)是一种抽象的文件机制,RT-Thread中对文件系统的相关操作实际上都是通过操作DFS实现,也就是说DFS是对各种文件系统的抽象。...DFS使的其他部分无须关心不同文件系统之间的差异,使得RT-Thread可以支持多种类型的文件系统。...3 DFS 框架 RT-Thread DFS 组件的主要功能特点有: 为应用程序提供统一的 POSIX 文件和目录操作接口:read、write、poll/select 等。...在 RT-Thread 中,挂载是指将一个存储设备挂接到一个已存在的路径上。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的路径上,然后通过这个路径来访问存储设备。...RT-Thread的RamFS设计之初未考虑支持文件夹,所以不能使用mkdir。
rt-thread的线程调度与管理 ?1.调度是什么? ?2.调度怎么实现? ?3.什么时候系统做调度? ?3.1 任务主动block ?3.2 被更高优先级的任务唤醒 ?...本文主要是听完熊大对rt-thread调度讲解之后,自己做了一些反思总结,打算分享一下rt-thread线程的调度与管理相关的比较核心和重要的部分的笔记。 1.调度是什么?...rt-thread调度器就是起到判决线程当前的优先级,然后去执行当前最高优先级的就绪的线程。 调度又可以细分为两种。可打断调度:关键防止优先级倒置 ;不可打断调度:先来先服务,不可中断。...5.总结 rt-thread线程的调度原理和过程上述文章已经写的比较详细了,主要需要注意的是调度器的原理以及调度的时机的问题。...往往在利用rt-thread做具体的项目的时候,需要非常清楚的理解调度过程,通过阅读代码,就能预测程序下一步的执行动作。真正的做到手中有粮,心中不慌。
领取专属 10元无门槛券
手把手带您无忧上云