RT-Thread系统学习
文章平均质量分 67
将学习RT-Thread实时操作系统内核的相关知识点整理记录于此。
晴天_QQ
嵌入式软件开发工程师
展开
-
RT-Thread内核启动流程
一般了解一份代码大多从启动部分开始,同样这里也采用这种方式,先寻找启动的源头。RT-Thread 支持多种平台和多种编译器,而 rtthread_startup() 函数是 RT-Thread 规定的统一启动入口。一般执行顺序是:系统先从启动文件开始运行,例如,STM32平台的汇编语言编写的启动文件,然后进入 RT-Thread 的启动 rtthread_startup() ,最后进入用户入口 main()。如下图(此图是使用RT-Thread官网的图片)所示。下面我们就以开发工具使用MDK为.原创 2021-05-05 20:15:29 · 1303 阅读 · 1 评论 -
RT-Thread内核中链表介绍
不管是学习分析FreeRTOS内核,还是学习分析RT-Thread内核源码;对内核中链表的相关定义的熟悉,以及API的使用是必不可少的。因为,在内核中很多其它组件的相关API函数,都要用到进行对象的管理。本文简要介绍RT-Thread Nano内核中双向循环链表和单向链表的定义,以及API相关源码分析。1.双向循环链表介绍双向循环链表结构体定义:/** * Double List structure * 双向循环链表结构体定义 */struct rt_list_node{ s原创 2021-04-24 21:24:59 · 748 阅读 · 0 评论 -
RT-Thread系统内核对象介绍
RT-Thread内核采用面向对象的设计思想进行设计,系统级的基础设施都是一种内核对象,例如线程,信号量,互斥量,定时器等。内核对象分为两类:静态内核对象和动态内核对象,静态内核对象通常放在RW段和ZI段中,在系统启动后在程序中初始化;动态内核对象则是从内存堆中创建的,而后手工做初始化。静态对象会占用RAM空间,不依赖于内存堆管理器,内存分配时间确定。动态对象则依赖于内存堆管理器,运行时申请RAM空间,当对象被删除后,占用的RAM空间被释放。这两种方式各有利弊,可以根据实际环境需求选择具体使用方式。原创 2021-01-12 19:16:15 · 1147 阅读 · 0 评论 -
STM32CubeIDE开发工具使用ulog组件无法输出float类型数据问题解决
问题现象:STM32CubeIDE开发工具,合入RT-Thread Nano系统代码;添加ulog组件,打印输出float类型数据。无法正常打印,打印字符串和整形数据均正常。原因分析:STM32CubeIDE工具为了节省资源,默认使用精简版本的libc库;而精简版本的C库,无法支持输出float类型数据。解决方案:进入“Project→Properties”;显示界面如下。按照图片中的设置完成即可!完毕!...原创 2021-01-11 14:48:06 · 694 阅读 · 1 评论