如何给嵌入式Linux打实时补丁?

人走茶凉 提交于 2020-04-30 10:21:22

相关推荐:https://www.forlinx.com/article_view_261.html

一、实时系统分类
实时系统可以分为硬实时(Safety-Critical,低延时,比如几十个us内)和软实时(几百个us~几个/几十个ms),硬实时通常跟高确定性、可靠性要求同时出现,如果达不到,可能会造成重大生命或者财产损失,比如说航天飞控、汽车制动系统、精密仪器等都有较高的硬实时要求。对于软实时,可靠性要求没那么高,即使出现了延迟,造成的损失可控,比如说音频失真,视频不顺畅。

二、已有方案
Linux 本身已经有硬实时的方案,比如来自风河的 RT Linux,或者西班牙一家研究所的 XtratuM + PartiKle,还有其他的比如 Xenomai,RTAI 等。另外,内核官方还有完全抢占内核(Preempt-RT Linux)的支持,这个在某些情况下也达到了硬实时要求,改补丁现在有OSADL维护。

然后就是各种优化,包括驱动(irq, preempt disable), spin lock 等使用,中断函数线程化,mdelay 替换为 usleep_range() 等。优化时需要用到很多工具,比如 Ftrace, Perf, Cyclictest, Oscilloscope 等。

硬件本身的低延迟设计、可靠性设计等也会严重影响系统的实时性,比如说 ARM Cortex A/R/M 三系中的 R 就是专为高端 嵌入式实时系统设计的,在中断行为方面做了优化。

三、Linux RT-Preempt
飞凌FET335xD工业级 核心板因为其出色的工业级品质和运行的稳定性在工业自动化及通讯、电力、轨道交通、医疗器械等多种领域受到用户的认可。随着市场产品竞争的不断加剧,产品需要多样化的优势来体现产品价值。作为国内出货量较大的核心板厂商, 飞凌嵌入式同样需要不断的提升自己的产品特色以及市场竞争力,因为只有这样,才能间接的使终端用户的产品拥有更多的优势。为此,飞凌的软件工程师成功的在 FET335xD工业级核心板 上移植了Linux RT-Preempt版本,使用户在不增加成本的基础上拥有了硬实时操作系统。

飞凌移植的Linux RT-Preempt版本为3.2.88-RT126,拥有以下特点:

1、保证任务处理响应时间的确定性,线程可抢占,确保高优先级任务的响应时间,最快可达6μs

2、微秒级的任务切换时间与延迟,实测任务切换时间可达500μs,任务切换延迟在负载状态下最大仅100μsposix标准的实时任务函数,通用性高,可移植性行强,具有高度兼容性

3、支持QT4.8.6,方便用户界面开发

4、与普通版本Linux烧写方式一样,方便用户生产与使用

5、开机启动时间仅15秒(从上电到界面点亮)

飞凌嵌入式出品的FET335xD工业级核心板,采用TI AM3354处理器,核心板工业级标准以及双独立MAC千兆网,丰富的485、CAN、GPMC等多种总线接口使此款核心板本身就很非常适合工控领域,现在支持了实时操作系统Linux RT-Preempt,让FET335xD核心板在工控领域更具适应性。可以说用户选择此款核心则免费获得了实时操作系统的应用需求,不需要花费重金去购买付费的RTOS,也不需要自己进行高难度的系统移植工作。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!