RT-Thread
文章平均质量分 85
基于RT-Thread V4.0.4版本,使用stm32l476-nucleo硬件平台学习
只想.静静
聊一聊物联网那些事
展开
-
RT-Thread分析-日志系统-rt_kprintf分析
目录1 前言2 rt_kprintf()3 配置选项4 console设备4.1 设备声明4.2 设备创建4.3 获取_console_device5 分析rt_kprintf()函数6 rt_kprintf重定向1 前言内核除了提供接口rt_kprintf()用于输出打印信息,还支持一整套完善的日志组件ulog。两者在实现上有重叠部分,都使用到console模块;其余功能都相互独立,只有深究其实现机制,才能更好的去使用或者移植该系统。2 rt_kprin原创 2022-02-11 17:43:27 · 2223 阅读 · 0 评论 -
RT-Thread分析-对象容器实现与作用
目录1 前言2 相关数据结构2.1 对象1)类型2)数据结构2.3 容器1)数据结构2)容器定义 _object_container[]2.3 对象容器链接图3 获取对象容器 rt_object_get_information()4对象初始化 rt_object_init()5对象删除 rt_object_delete()6 查找对象rt_object_find()7 总结1 前言在内核中,所有数据结构都视作一个对象,包括:...原创 2022-02-10 15:17:50 · 1367 阅读 · 0 评论 -
RT-Thread分析-动态内存堆管理-slab算法
目录1 前言2 slab管理算法3 页分配器3.1 rt_page_head数据头3.2 rt_page_init()3.3rt_page_alloc()3.4rt_page_free()3.5 申请释放流程图4 zone管理3.1 struct slab_zone3.2 memusage/btokup()3.3 zone_array[NZONES]3.4 zone_free & zone_free_cnt3.5rt_system_hea...原创 2022-01-27 17:03:12 · 2208 阅读 · 0 评论 -
RT-Thread分析-动态内存堆管理-小内存算法
目录1 前言2 动态管理3 小内存管理算法4.1 内存块数据头4.2 统一的API接口4.3rt_system_heap_init()4.4 rt_malloc()4.5 rt_free()1 前言内存管理模块管理系统的内存资源,它是操作系统的核心模块之一。主要包括内存的初始化、分配以及释放。RT-Thread 的内存管理模块的算法总体上可分为两类:动态内存堆管理和静态内存池管理。其中动态内存堆管理又根据具体设备内存大小划分为三种...原创 2022-01-17 15:29:05 · 2458 阅读 · 0 评论 -
RT-Thread分析-静态内存池管理
目录1 前言2 静态内存池管理3.1 内存池控制块3.2 接口函数分析1)rt_mp_init()2)rt_mp_create()3)rt_mp_alloc()4)rt_mp_free()1 前言内存管理模块管理系统的内存资源,它是操作系统的核心模块之一。主要包括内存的初始化、分配以及释放。RT-Thread 的内存管理模块的算法总体上可分为两类:动态内存堆管理和静态内存池管理。其中动态内存堆管理又根据具体设备内存大小划分为三种情况:针对小内存块的分配管理(小原创 2022-01-17 15:13:13 · 1189 阅读 · 0 评论 -
RT-Thread分析-时钟节拍和定时器管理
1 前言2 时钟节拍时钟节拍用于系统处理所有和时间有关的事件,如线程的延时、线程的时间片轮转调度以及定时器超时等,可以理解为内核的心跳。2.1 RT_TICK_PER_SECOND时钟节拍都由一个固定的硬件定时器来实现,该定时器设定固定的超时时间,一般为1~100ms。时钟节拍率越快,系统的额外开销就越大,但系统的响应速度会更快。可 以 根 据 RT_TICK_PER_SECOND 的 定 义 来 调 整, 等 于 1/ RT_TI...原创 2022-01-10 20:47:49 · 3012 阅读 · 0 评论