0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RT-Thread操作系统的问题及解决方案

RTThread物联网操作系统 来源:古月居 作者:better_coder 2021-04-07 17:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

现在的裸机程序已经不能满足嵌入式机器人所需的代码结构要求了,因为一个嵌入式机器人的系统是非常庞大的,分别由感知算法,决策算法和控制算法等组成,这还没有算上一些需要联网的程序。庞大的代码需要一个芯片级的操作系统来屏蔽掉硬件对于上层算法的影响,同时向上层提供API,帮助上层的算法调用底层硬件,因此一个芯片级操作系统就十分重要了,而RT-Thread是一种国产的芯片级操作系统,而我的课程刚好也涉及到了该系统,所以我准备写一系列的博客来记录下我在学习这个操作系统过程中的种种问题,希望能带给大家一些帮助~

问题现象

这学期我们在上嵌入式的课程,学习了一个新的轻量级操作系统——RT-Thread(后面简称为rtt),这是一个国产的操作系统,这个操作系统的特点就是只有线程,没有进程,那么我们要使用这个系统的话只需要操作相应的线程就可以了,那么我们用好这个系统的方法就很简单了,我们只需要实现各个线程间的协调工作就可以了。

言归正传,在我学习这个rtt的时候我出现了一个问题,那就是当我的main函数的while(1)里面啥东西也不放,空跑的时候,整个芯片就宕机了,代码如图:

3723a6f6-93fa-11eb-8b86-12bb97331649.jpg

原因及解决办法

【走过的弯路】

开始的时候我以为这个原因就是在我的整个工程中main线程的优先级比较高,其他线程的优先级都是最低的(我这里设置的是25),那么在线程调度的时候高优先级的线程会先被调度,main线程作为我的系统中优先级最高的线程,而且是在空跑的一个线程,那么就是这个main线程在一直占用着系统资源,其他线程都不能被调度,因此出现了类似于系统宕机的现象。

说到这里就不得不说一下我们这张rtt系统的线程调度的状态流转图了。

3747aa74-93fa-11eb-8b86-12bb97331649.jpg

在普通的操作系统中,这些状态之间的流转还是比较好理解的,但是在rtt中,它有一个与其他操作系统所不同的地方,这我在前面也已经讲过了,那就是它是没有进程这个东西的,因此在rtt操作系统中,就绪状态=运行状态。也就是说图中的2号圆圈代表的循环就相当于等价。

但是,这样就出现问题了,因为如果按照我这个逻辑的话,不止是在空跑main线程的while(1)的时候会出现系统宕机的情况,就算main线程的while(1)里面加入了任务程序,那么我们整个rtt系统也是会根据系统进程的调度机制(高优先级的线程一定会先被调度)来不停的循环调用main线程里while(1)里面的任务,同样其他的线程也是不会被调用的,这样肯定是不行的,于是我就去rtt的官网查询相关资料,最终解开了这个问题背后的谜团。

恍然大悟

首先让我们来rtt系统中明确一些概念。

我们以下面这个代码段来举例说明:

void thread_entry(void* paramenter) { /* 等待事件的发生 */ /* 对事件进行服务、进行处理 */ }

线程就绪/运行

这个代码是线程的实体函数,那rtt系统届时会怎样执行这个程序呢?我画一个形象的图给大家解释一下。

3765d512-93fa-11eb-8b86-12bb97331649.jpg

如果这个线程优先级够高的话,rtt系统会一直执行这个线程,也就不会执行其他线程了,因为该线程运行结束之后会进入就绪状态,又因为该线程有最高优先级,所以进入线程调度池之后马上又会被调度运行,进入运行状态,但是在rtt 中,实际上(实现过程中)线程并不存在运行状态,就绪状态和运行状态是等同的,但是在理解机制时照上面说的来理解较为方便。

线程挂起

rtt官网有对其较为详细,清楚的描述,我这里做了一个搬运,侵删。

377cd352-93fa-11eb-8b86-12bb97331649.jpg

这段话里面重要的就是这句话,线程不参与调度,也就是说不论该线程优先级有多高,他都不会进入到线程调度池里面,根据表格中的描述,导致线程挂起的条件有2个资源不可用。

线程主动延时一段时间

解决问题

main线程就是一个特殊的线程,所以他肯定也符合rtt系统管理线程的机制。

那我们这个问题就很好说明了。当main线程的while(1)循环内程序没有发生资源不可用或者线程主动延时的操作时,该线程一直会处于运行/就绪阶段,又因为我的程序中,main线程优先级最高,所以我的main线程一直霸占着系统资源,造成了系统宕机的假象。但是如果我在main线程的while(1)循环中插入一段延时程序,main线程就会进入挂起状态,让出系统资源,从而使其他线程有机会得到调度,使得该系统能稳定运行。

原文标题:机器人”大脑”:RT-Thread的main线程“卡死”的一种可能原因及解决方案

文章出处:【微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    213

    文章

    30619

    浏览量

    219691
  • 操作系统
    +关注

    关注

    37

    文章

    7331

    浏览量

    128669
  • RT-Thread
    +关注

    关注

    32

    文章

    1544

    浏览量

    44299
  • RTThread
    +关注

    关注

    8

    文章

    133

    浏览量

    42553

原文标题:机器人”大脑”:RT-Thread的main线程“卡死”的一种可能原因及解决方案

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【好书推荐】RT-Thread第22本相关书籍!《嵌入式实时操作系统开发实践》| 技术集结

    随着物联网、智能家居与工业控制等领域的快速发展,嵌入式实时操作系统的应用愈发广泛。RT-Thread作为国产开源RTOS的代表,凭借其出色的实时性、组件化设计和强大的生态体系,已成为众多工程师和高校
    的头像 发表于 10-16 18:46 381次阅读
    【好书推荐】<b class='flag-5'>RT-Thread</b>第22本相关书籍!《嵌入式实时<b class='flag-5'>操作系统</b>开发实践》| 技术集结

    RT-Thread睿赛德荣获工博会“CIIF信息技术奖”,“1+X+N”战略推动国产操作系统体系化发展 | 新闻速递

    在第二十五届中国国际工业博览会(工博会)上,国产嵌入式操作系统领军企业RT-Thread睿赛德凭借其在嵌入式操作系统领域的持续创新与产业贡献,荣获2025年“CIIF信息技术奖”。此次获奖
    的头像 发表于 10-10 10:05 792次阅读
    <b class='flag-5'>RT-Thread</b>睿赛德荣获工博会“CIIF信息技术奖”,“1+X+N”战略推动国产<b class='flag-5'>操作系统</b>体系化发展 | 新闻速递

    学习强国深度报道 RT-Thread“1+X+N”战略,国产操作系统赋能高端制造引关注|媒体视角

    近日,国产嵌入式操作系统领军企业RT-Thread睿赛德在工博会发布的“1+X+N”战略体系,获得了国家级权威媒体平台“学习强国”的重点报道。该报道从产业高度深入剖析了RT-Thread睿赛德以自主
    的头像 发表于 09-29 17:37 921次阅读
    学习强国深度报道 <b class='flag-5'>RT-Thread</b>“1+X+N”战略,国产<b class='flag-5'>操作系统</b>赋能高端制造引关注|媒体视角

    【好书推荐】RT-Thread第20本相关书籍!《嵌入式实时操作系统RT-Thread原理与应用》| 技术集结

    01内容简介ContentSummary本书为读者提供了一个全面、系统RT-Thread学习指南,旨在帮助初学者及有经验的开发者掌握RT-Thread实时操作系统和STM32嵌入式微
    的头像 发表于 08-24 10:05 695次阅读
    【好书推荐】<b class='flag-5'>RT-Thread</b>第20本相关书籍!《嵌入式实时<b class='flag-5'>操作系统</b><b class='flag-5'>RT-Thread</b>原理与应用》| 技术集结

    经济日报:国产嵌入式操作系统领军企业RT-Thread正在持续把新思想、新技术留给上海|媒体视角

    。此次,RT-Thread睿赛德携边端侧AI创新方案精彩亮相大会。其联合创始人&工业负责人邱祎阐释“AIOS”理念,在OS+AI架构上重构升级,通过操作系统层深度
    的头像 发表于 08-05 21:02 960次阅读
    经济日报:国产嵌入式<b class='flag-5'>操作系统</b>领军企业<b class='flag-5'>RT-Thread</b>正在持续把新思想、新技术留给上海|媒体视角

    RT-Thread 遇上 Rust:安全内核 RusT-Thread 的诞生

    大家好,我们是中国科学技术大学操作系统原理与设计(H)课oooooS小组。这个项目是我们的课程大作业:参考RT-Thread架构,使用Rust搭建一个原生的嵌入式操作系统内核。初识Rust是因为xk
    的头像 发表于 08-02 11:03 3225次阅读
    <b class='flag-5'>RT-Thread</b> 遇上 Rust:安全内核 RusT-<b class='flag-5'>Thread</b> 的诞生

    权威认证!RT-Thread操作系统100%国产自主可控,铸就睿擎工业平台安全基石​ !

    在工业自动化、电力控制、轨道交通等高端装备领域,操作系统的安全可靠与自主可控是关乎产业命脉的核心诉求。作为国产嵌入式实时操作系统(RTOS)的领军者,RT-Thread始终将代码的透明性与自主性置于
    的头像 发表于 07-11 17:05 2760次阅读
    权威认证!<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系统</b>100%国产自主可控,铸就睿擎工业平台安全基石​ !

    RT-Thread荣获2025优秀开源项目 | 新闻速递

    6月底,RT-Thread睿赛德受邀参与由上海开源信息技术协会主办的2025上海开源创新精英荟。上海市商委副主任张杰出席会议并致辞。RT-Thread嵌入式操作系统项目凭借其卓越的技术创新与开源生态
    的头像 发表于 07-04 09:04 2442次阅读
    <b class='flag-5'>RT-Thread</b>荣获2025优秀开源项目 | 新闻速递

    揭秘RT-Thread上的AUTOSAR CP系统

    标准,同时保留RT-Thread的POSIX支持与可裁剪性,实现了通信隔离、诊断模块集成等关键技术突破,为车载系统提供高安全、可扩展的解决方案。车载电子系统与传统
    的头像 发表于 06-23 20:22 2960次阅读
    揭秘<b class='flag-5'>RT-Thread</b>上的AUTOSAR CP<b class='flag-5'>系统</b>

    人形机器人敏捷开发新路径:RT-Thread以软件底座破解复杂系统难题 | 新闻速递

    机器人行业解决方案负责人郭占鑫发表《从异构通信到虚拟化技术:RT-Thread助力机器人敏捷、可持续开发》主题演讲,系统阐述了RT-Thread操作
    的头像 发表于 06-04 14:03 1038次阅读
    人形机器人敏捷开发新路径:<b class='flag-5'>RT-Thread</b>以软件底座破解复杂<b class='flag-5'>系统</b>难题 | 新闻速递

    【直播预告】《实时操作系统应用技术—基于RT-Thread与ARM的编程实践》教学脉络及资源简介

    直播预告直播主题:《实时操作系统应用技术—基于RT-Thread与ARM的编程实践》教学脉络及资源简介开放时间:2025年5月29日(周四)20:00主讲老师:王宜怀课程类型:视频直播观看平台
    的头像 发表于 05-26 17:50 1108次阅读
    【直播预告】《实时<b class='flag-5'>操作系统</b>应用技术—基于<b class='flag-5'>RT-Thread</b>与ARM的编程实践》教学脉络及资源简介

    RT-Thread审核团招募: 深度参与开源RTOS社区治理与演进

    的开源实时操作系统,正持续优化社区协作流程,现面向全球开发者招募审核团(ReviewTeam)成员,共同维护代码质量,推动RT-Thread生态繁荣发展!什么是RT
    的头像 发表于 05-21 18:02 1072次阅读
    <b class='flag-5'>RT-Thread</b>审核团招募: 深度参与开源RTOS社区治理与演进

    RT-Thread嵌入式操作系统专业培训班-深圳站重磅开启!

    RT-Thread官方将在深圳举办为期三天的嵌入式操作系统专业培训班!本次培训将深入讲解RT-Thread嵌入式实时操作系统的核心技术与实战应用,助力开发者快速掌握RTOS开发精髓。无
    的头像 发表于 04-11 18:18 657次阅读
    <b class='flag-5'>RT-Thread</b>嵌入式<b class='flag-5'>操作系统</b>专业培训班-深圳站重磅开启!

    RT-Thread嵌入式操作系统专业培训班来上海啦!

    RT-Thread官方将在上海(RT-Thread大本营)发起为期三天的嵌入式操作系统专业培训班!本次培训将会深入讲解RT-Thread嵌入式实时
    的头像 发表于 02-27 17:27 832次阅读
    <b class='flag-5'>RT-Thread</b>嵌入式<b class='flag-5'>操作系统</b>专业培训班来上海啦!

    RT-Thread嵌入式操作系统专业培训班登陆郑州!

    RT-Thread官方将在河南-郑州发起为期三天的嵌入式操作系统专业培训班!本次培训将深入讲解RT-Thread嵌入式实时操作系统的核心概念、实战技巧和应用场景。无论您是刚接触嵌入式开
    的头像 发表于 02-12 18:28 725次阅读
    <b class='flag-5'>RT-Thread</b>嵌入式<b class='flag-5'>操作系统</b>专业培训班登陆郑州!