百工联工业互联网技术服务平台

使用嵌入式 Linux 进行实时系统开发

Linux操作系统嵌入式系统系统开发硬件测试嵌入式设计
简介
我们提供多种方法来使用嵌入式Linux进行实时系统开发,包括与Linux内核一起运行hypervisor或co-kernel、使用非对称异构多核系统以及通过PREEMPT_RT补丁提高Linux的抢占性。测试结果显示,PREEMPT_RT补丁和Xenomai的实时性能相近,最大延时分别为106us和17.5us。使用iMX7的HMP异构多核处理器可以实现实时任务的独占性,最大抖动为0.5us。通过这些方法,用户可以在不改变硬件平台的情况下实现实时应用。需要注意的是,基于软件方式实现的实时Linux可能需要修改部分外设驱动代码以确保整个任务的实时性。
正文
针对实时、决策或低延时应用,我们可以采用多种方法来使用嵌入式Linux进行实时系统开发。首先,我们可以与Linux内核一起运行一个hypervisor或co-kernel,其中hypervisor或co-kernel的优先级高于Linux,实时任务在其中运行。另一种方法是使用非对称异构多核系统,将Linux和另一个实时内核分别运行在不同的处理器内核上。最后,我们还可以通过PREEMPT_RT补丁使Linux具有更高的抢占性,从而提高其实时性能。

在实时系统中,实时能力并不仅仅表示处理速度的高低,而是指系统能够在规定的时间内完成响应。这个时间范围可以是微秒、毫秒甚至是秒级。较小的时间范围对于系统的软件和硬件要求也更高。在本文中,我们使用Toradex计算机模块来实现嵌入式实时Linux方案,并通过三种不同的方法进行测试。

首先是普通的Linux系统,测试结果显示,在普通Linux系统下,翻转一个GPIO的抖动在40us以内的占比为92%,最糟糕的情况下延时超过15ms。普通的Linux系统很难保证任务在规定的时间内完成,即使将响应时间上限放宽到10ms。

接下来是使用PREEMPT_RT补丁的Real-time Linux系统,测试结果显示,在应用PREEMPT_RT补丁后,几乎所有任务的抖动都在40us以内。相比于普通的Linux系统,抖动分布更加集中在10us以内,最大延时为106us。

第三种方法是使用Xenomai的Real-time Linux系统,测试结果显示,Xenomai通过co-kernel的方式提供高于Linux内核优先级的任务运行。与PREEMPT_RT相比,Xenomai的实时性能表现相近,但最大延时为17.5us。

最后,我们使用iMX7的HMP异构多核处理器进行测试,该处理器集成了Cortex-A7和Cortex-M4内核。Cortex-A7可以运行复杂的多任务操作系统,如Linux,而Cortex-M4可以运行实时操作系统,如FreeRTOS,甚至可以直接运行应用程序。由于实时任务和Linux分别运行在独立的处理器内核上,因此两者之间不会产生CPU资源竞争,保证了实时任务的独占性。测试结果显示,信号翻转几乎都在200us的时间点上完成,最大抖动为0.5us。

综上所述,通过内核补丁或引入高优先级的co-kernel,我们可以显著改善Linux的实时性能。用户可以在不改变硬件平台的情况下实现实时应用。需要注意的是,基于软件方式实现的实时Linux可能会导致部分Linux内核API发生变化,因此用户可能需要修改部分外设驱动代码以确保整个任务的实时性。而使用硬件方式,如iMX7的HMP异构多核处理器,可以通过不同的处理器内核分离非实时和实时任务,从而实现更好的实时性能。

陕西***有限公司

有类似项目?立即免费发布需求