"); //-->
By Toradex 胡珊逢
1). 简介
对于实时、决策或者低延时应用,Linux能够提供多种方案。第一种方法是和 Linux 内核一起运行一个 hypervisor或者co-kernel。这种方案中hypervisor或者co-kernel的优先级高于 Linux,实时任务则运行于其中。另外一种方式是使用非对称异构多核系统,Linux和另外一个实时内核分别运行在不同处理器内核上。最后,还可使 Linux 更具抢占性从而提高其实时性能。这通常可以通过 PREEMPT_RT 补丁实现。本文就基于Toradex Colilbri iMX6 ARM计算机模块系统着重介绍如何部署病测试PREEMPT_RT 补丁。
2). 部署
a). 下载 Linux 内核源码
---------------------
Toradex-ubuntu$ git clone -b toradex_4.1-2.0.x-imx git://git.toradex.com/linux-toradex.git
---------------------
或者从 FTP 下载
Linux/I.MX6/SourceCode/v2.7/linux-toradex.tar.gz
b). 下载rt补丁
Linux/I.MX6/RT-Linux/Linux4.1.35/patch.tar.gz
c). 安装补丁
---------------------
Toradex-ubuntu $cdlinux-toradex
Toradex-ubuntu $ patch -p1 < ../patch/patch-4.1.35-rt41.patch
Toradex-ubuntu $ patch -p1 < ../patch/0001-fix-build.patch
Toradex-ubuntu $ patch -p1 < ../patch/0002-fix-build.patch
Toradex-ubuntu $ patch -p1 < ../patch/0003-Work-around-CPU-stalls-in-the-imx-sdma-driver.patch
Toradex-ubuntu $ patch -p1 < ../patch/0004-export-swait-locked-functions.patch
---------------------
注意,根据所在的目录,需要调整 patch 命令–p 的参数。
d). 配置内核
---------------------
Toradex-ubuntu $ make colibri_imx6_defconfig
Toradex-ubuntu $ make menuconfig
---------------------
勾选下面选项
---------------------
./ Kernel Features --->Preemption Model (Fully Preemptible Kernel (RT)) --->(X) Fully Preemptible Kernel (RT)
./ Timer frequency (100 Hz) --->(X) 1000 Hz
---------------------
虽然在 Linux 使用了rt补丁,但是Linux 的大部分驱动却并不是使用PREEMPT_RT API,这些驱动的存在会影响实时性能,特别是显示驱动。因此,如果你的应用中不需要显示功能,那么可以在 Linux 内核配置中禁用它,以及其他你所不需要的功能。设备驱动位于下面位置:
---------------------
Device Drivers --→
---------------------
e). 编译内核
---------------------
Toradex-ubuntu $ make -j4 uImage LOADADDR=10008000
---------------------
3). 测试
a). 这里我们也将使用 console image(无图形界面)的镜像作为测试。
Linux/I.MX6/RT-Linux/Linux4.1.35/Colibri_iMX6_LinuxConsoleImageV2.7_20170308.tar.bz2
b). 根据这里说明将上面console image更新到Colibri iMX6模块上面, 然后用上一章节编译出的uImage 替换Colibri iMX6 上的内核,并重新启动。
c). 在没有使用 PREEMPT_RT 补丁的 Linux 中,cyclictest测试如下,测试过程中使用 stress 增加 CPU负荷
---------------------
root@colibri-imx6:~# uname -a
Linux colibri-imx6 4.1.35-v2.7b1+gc117783 #1 SMP Thu Jan 19 09:06:57 CST 2017 armv7l GNU/Linux
root@colibri-imx6:~# stress -c 2 &
[1] 535
root@colibri-imx6:~# stress: info: [535] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
root@colibri-imx6:~# cyclictest -n -p 80 -t -D10m
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 2.00 1.79 1.04 3/74 541
T: 0 ( 539) P:80 I:1000 C: 599994 Min: 10 Act: 13 Avg: 13 Max: 826
T: 1 ( 540) P:80 I:1500 C: 399996 Min: 10 Act: 13 Avg: 13 Max: 42
---------------------
d). 使用 PREEMPT_RT 补丁后,做同样的测试
---------------------
root@colibri-imx6:~# uname -a
Linux colibri-imx6 4.1.35-rt41 #1 SMP PREEMPT RT Wed Mar 8 11:41:31 CST 2017 armv7l GNU/Linux
root@colibri-imx6:~# stress -c 2 &
[1] 526
root@colibri-imx6:~# stress: info: [526] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
root@colibri-imx6:~# cyclictest -n -p 80 -t -D10m
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 2.00 1.78 1.01 3/114 535
T: 0 ( 530) P:80 I:1000 C: 599994 Min: 14 Act: 20 Avg: 18 Max: 71
T: 1 ( 531) P:80 I:1500 C: 399996 Min: 14 Act: 16 Avg: 17 Max: 50
---------------------
通过对比测试发现,使用 PREEMPT_RT 补丁后,最大延时由 826us 降到 71us。
4). 总结
PREEMPT_RT通过软件的方法提高普通 Linux 的实时能力,但这仍然不是真正意义上的实时,正如上面的测试,还是会出现数十微秒的延时,当系统的负荷增加时,可能出现更长的延时情况。Colibri iMX7 上的 M4 内核可以运行FreeRTOS,从而提供真正的实时操作系统。详细的情况,请参考Toradex举办的网络研讨会《使用嵌入式 Linux 进行实时系统开发》
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
将 DC/DC 转换器改造为高性能的全功能电池充电器
电子管威廉姆斯功放
旋极公司提供的DSP 用 RTOS介绍(中文)
翼菲科技冲刺港股, 堪称轻工业机器人先锋
关于尼得科完成对中国涡旋压缩机制造商常州赛科为能源科技有限公司股权收购的通知
液晶显示模块在6502单片机监测系统中的应用
Apache成为PCTEL无线产品大中华区经销商
电子管麦景图MC-275(McIntosh 275)功率放大器电路图
Nordic Semiconductor推出高度集nPM1304电源管理IC支持小尺寸电池产品
全球经济减缓——半导体产业的机会在哪里?
Conexant以近10亿美元收购GlobespanVirata
大联大品佳集团推出基于Microchip产品的3.3KW双向图腾柱PFC逆变电源方案
消费科技品牌Nothing采用Ceva的RealSpace软件为耳机和耳塞用户带来身临其境的空间音频体验
电子管金牛VAA 70功放
输出电压调节
村田发布首款搭载XBAR技术的商品化高频滤波器
芯源的单片机教程
研华AIR-120紧凑型边缘AI系统上市:助力AI应用加快落地进程
面向 RF 应用的低相位噪声频率合成器
电子管马兰士一8功放机
9月全球半导体销售上升6.5%,三季度增长17.5%
Semico的IPI证实IC产业强劲复苏,04年一片光明
奇瑞-罗姆供应链技术共创交流日:携手谱写汽车电子技术新篇章
小区物业管理方案IC应用实例
电子管Dynaco ST70功放
发展中国家“数字鸿沟”扩大,加深社会不平等
芯源的单片机教程(上册)
中国国际国防电子展览会
通用队列管理模块设计 —— 简洁高效的嵌入式数据调度核心
富昌电子将在广州举办技术日活动,聚焦AI驱动下的工业创新