551|1

504

帖子

4

TA的资源

纯净的硅(高级)

楼主
 

《嵌入式软件的时间分析》-第三章分享:多任务中需要注意的一些问题分享 [复制链接]

本章介绍了操作系统相关概念。

 

这里个人澄清一个事实,就是很多人把RTOS看作是微内核,这是错误的概念。

微内核和宏内核不是指的操作系统的规模的”微”还是”宏”,指的是其内核实现架构方式的区别,

如果把文件系统等组件也集成到内核中则属于宏架构,如果内核仅仅是实现内核调度等基本功能,其他的文件系统功能等在内核以外实现则属于微内核。

RTOS是把所有的组件和内核一起构建的,所以RTOS属于宏内核。

 

本章首先介绍了无操作系统的程序架构,属于前后台架构,程序主循环执行,中断可以打断主循环执行其他操作。

也可以完全不采用中断,使用轮询查询模式,上述架构优点是结构简单,缺点是不适合扩展和大规模业务。

 

然后介绍了OSEK/VDX 汽车电子开放系统及接口标准化委员会/法国汽车分布式执行标准委员会,即ISO17356-3:2005标准。

介绍了任务,中断,ErrorHook,调度策略等概念。

 

这里提一下RTOS的调度实现一般基于优先级调度,同优先级基于FIFO(uCOSII的查找最高优先级任务算法,FIFO实现等可以参考本人公众号系列文章分享:嵌入式Lee),

即按照就绪先后排队, 同时会实现时间片轮转,即同优先级任务可以指定每个任务轮流执行的时间片数,这里顺便提一下FreeRTOS的时间片每个任务都是固定为1,

而uCOSOIII每个任务可以指定时间片大小,相对更灵活。

 

然后介绍了多任务,介绍了堆栈消耗,数据一致性问题。

这两个问题是需要重点关注的,这里简单提一下,堆栈主要关注其消耗量避免溢出,实现方法是先初始化堆栈为固定内容比如0xA5这些值,

运行时检查剩余多少内容依然是0xA5就知道堆栈剩余多少未使用(可以参考本人公众号系列文章分享:嵌入式Lee)。

当然还可以使用MPU(ARM),PMP(RISC-V),Fireware等硬件技术对栈溢出进行检测(可以参考本人公众号系列文章分享:嵌入式Lee)。

 

数据一致性也是需要重点考虑的,多任务里最容易出的问题就是这类,比如资源共享需要考虑临界段处理,

举个简单的例子,freertos的heap实现malloc和free是通过关任务调度实现临界段保护的,所以其接口只能在任务中调用,

如果在中断中调用就可能抢占正在执行的malloc和free接口,导致堆的链表结构被破坏(某个malloc和free接口正在执行,另外一个maloc或者free在中断中抢占执行,链表操作非原子,导致破坏链表的结构)。

 

最后介绍了Posix,介绍了进程,线程的概念,状态图,调度策略。这里提一下RT_Thread参考Linux的风格进行设计是不错的选择,且有Posix兼容层,使用起来比较方便,当然其他RTOS也可以实现类似的Posix兼容层,这也是可移植性的一个考虑,在自己的项目中可以考虑实现。

此帖出自汽车电子论坛

最新回复

介绍了时钟方面的问题,有收货!   详情 回复 发表于 2024-6-29 18:21
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

介绍了时钟方面的问题,有收货!

此帖出自汽车电子论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表