Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
2024-RSOC
[2024-RSOC] 初识RTOS以及线程管理学习
发布于 2024-07-23 19:09:17 浏览:253
订阅该版
[2024-RSOC] DAY2笔记 今日学习RTOS的概念,讲解了rt启动的流程以及线程管理 #####什么是实时系统(RTOS)?什么是分时系统? 实时系统是对外部事件或数据源在规定的时间范围内作出反应,并能够保障系统的正确运行的计算机系统。 分时系统是一种多用户、多任务操作系统,它将计算机的时间划分为多个时间片,并分配给不同的用户或任务使用。熟悉的桌面操作系统windows,以及linux都是分时系统。 #####裸机和实时系统有什么区别? 裸机运行程序,使用while循环或者中断捕获事件。中断是指当外部事件发生时,会触发处理器中断当前正在运行的程序,并跳转到相应的处理程序执行。 实时系统强调实时性,多线程,支持优先级,可抢占, 根据任务的优先级来分配 CPU 时间 。 #####RT-Thread的初始化流程 可以通过查看和调试project\libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Source\Templates\gcc\startup_stm32f407xx.s 这个启动文件来分析初始化流程 使用vscode设置断点,单步调试等 gdb ####线程管理 参考文档链接:https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/thread/thread 线程分为系统线程和用户线程,分别由系统内核创建和用户创建 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/60cd19ac5dbfb61b83e8f76dd2738a91.png.webp) 线程控制块是系统用于管理线程的一个数据结构 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/5f47f9722650ba11f161e187d3669930.png.webp) 线程退出时会调用一个钩子函数进行清除 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/1e88992a83988e1a0f97b6f0d196430d.png) 线程优先级,rt支持0~255 共256个优先级,和freeRTOS不一样,rt数值越小优先级越高,255通常是idle线程的优先级 线程入口函数由用户定义,确定线程所执行的操作 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/09220d26e709a5b2c0a65a90f1379f30.png.webp) ARM 上需要做 4 字节对齐 ####线程状态机切换 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/c19510069e92d98af905fb52cbb821f5.png.webp) 线程的状态可以通过ps命令查看 动态创建线程,系统分配堆内存,分配出来的栈空间按照 RT_ALIGN_SIZE 方式对齐 rt_thread_create 静态创建线程,在编译时就被确定、被分配处理,内核不参与动态分配内存 rt_thread_init 将函数作为可执行的命令导出到命令行 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/0f15b95cf705dc8299fdce109ad9df4e.png.webp) 板卡烧录上电后,就能在rt系统命令行调用所写函数 这里分析了源码, __attribute__ 在ARM中,这是编译器识别的一个符号。用来指定编译后数据存放的位置。 我们写的函数名称和描述被放到.rodata.name段中 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/725043a87b3c29f06a3215e14e72c750.png) ps列出当前系统的运行状态 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/17f7374d8362a0630c2db543350e76f0.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/091aacfffe4c171c64cd5c88681abd31.png) delay的时候线程让出cpu,此时可以被其他线程抢占 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/4b8e6af0082b0a84090409ca3f4e35bf.png.webp) 使用gitignore 忽略提交的文件 一些触发异常的操作 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/2cb7159d5521a040c7a81779688fda89.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240723/6e08b9cc709d45de7e59cbe6e965c8c1.png.webp) menuconfig配置 utest ctrl+t >反汇编
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
VHCZ_2606
这家伙很懒,什么也没写!
文章
4
回答
0
被采纳
0
关注TA
发私信
相关文章
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部