目录

1 Linux-RT内核简介 3

2 Linux系统实时性测试 3

3 rt_gpio_ctrl案例 10

4 rt_input案例 15

本文为Linux-RT内核应用开发教程的第一章节——Linux-RT内核简介、Linux系统实时性测试,欢迎各位阅读!本期用到的案例板子是创龙科技旗下的A40i工业级别开发板,是基于全志科技A40i处理器设计,4核ARM Cortex-A7的高性能低功耗国产开发板,每核主频高达1.2GHz。

基于全志科技A40i开发板,其接口资源丰富,可引出双路网口、双路CAN、双路USB、双路RS485等通信接口,板载Bluetooth、WIFI、4G(选配)模块,同时引出MIPI LCD、LVDS LCD、TFT LCD、HDMI OUT、CVBS OUT、CAMERA、LINE IN、H/P OUT等音视频多媒体接口,支持双屏异显、1080P@45fps H.264视频硬件编码、1080P@60fps H.264视频硬件解码,并支持SATA大容量存储接口。

A40i核心板采用100%国产元器件方案,并经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境,应用于能源电力、轨道交通、工业控制、工业网关、仪器仪表、安防监控等典型领域。

Linux-RT内核简介

创龙科技提供的Linux-RT内核应用了开源的RT PREEMPT机制进行补丁。PREEMPT_RT补丁的关键是最小化不可抢占的内核代码量,同时最小化必须更改的代码量,以便提供这种附加的可抢占性。PREEMPT_RT补丁利用Linux内核的SMP功能来添加这种额外的抢占性,而不需要完整的内核重写。Linux-RT内核增加PREEMPT_RT补丁后,增加了系统响应的确定性和实时性,但是代价是CPU性能降低。

Linux-RT内核与普通Linux内核相比,几个主要的相同之处是:

(1) 具有相同的开发生态系统,包括相同工具链、文件系统和安装方法,以及相同的POSIX API等。

(2) 仍然存在内核空间和用户空间的划分。

(3) Linux应用程序在用户空间中运行。

Linux-RT内核与普通Linux内核在常规编程方式上的几个主要不同之处是:

(1) 调度策略。

(2) 优先级和内存控制。

(3) 基于Linux-RT内核的应用程序使用了调度策略后,系统将根据调度策略对其进行调优。

Linux系统实时性测试

本章节主要介绍使用Cyclictest延迟检测工具测试Linux系统实时性的方法。Cyclictest是rt-tests测试套件下的一个测试工具,也是rt-tests下使用最广泛的测试工具,一般主要用来测试内核的延迟,从而判断内核的实时性。

创龙科技默认使用是的Linux内核,同时提供了Linux-RT内核位于产品资料“4-软件资料\Linux\Kernel\bin\linux-3.10.65-[版本号]-[Git系列号]\”目录下,请按照如下方法更换为Linux-RT内核。

将Linux-RT内核镜像boot-rt.fex和Linux-RT内核配套的内核模块目录modules-rt拷贝至Ubuntu工作目录下,执行如下命令,将boot-rt.fex重命名为boot.fex,并进入modules-rt目录下将内核模块压缩包解压。

Host# mv boot-rt.fex boot.fex

Host# cd modules-rt/

Host# tar -zxf 3.10.65-rt69-g1f1e2d0.tar.gz

图 1

将重命名后的内核镜像和解压后的内核模块拷贝至评估板文件系统任意目录下。执行如下命令替换内核镜像和内核模块,评估板重启生效。

备注:mmcblk1为Micro SD对应的设备节点,如需固化至eMMC,请将设备节点修改为mmcblk0。

Target# dd if=boot.fex of=/dev/mmcblk1p6

Target# cp 3.10.65-rt69-g1f1e2d0/ /lib/modules/ -r

Target# rm /system/vendor/ -r

Target# sync

Target# reboot

图 2
 
图 3 Linux-RT内核

Cyclictest工具简介

Cyclictest常用于实时系统的基准测试,是评估实时系统相对性能的最常用工具之一。Cyclictest反复测量并精确统计线程的实际唤醒时间,以提供有关系统的延迟信息。它可测量由硬件、固件和操作系统引起的实时系统的延迟。

为了测量延迟,Cyclictest运行一个非实时主线程(调度类SCHED_OTHER),该线程以定义的实时优先级(调度类SCHED_FIFO)启动定义数量的测量线程。测量线程周期性地被一个到期的计时器(循环报警)所定义的间隔唤醒,随后计算有效唤醒时间,并通过共享内存将其传递给主线程。主线程统计延迟值并打印最小、最大和平均延迟时间。

参考链接:https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start?s[]=cyclictest。

编译Cyclictest工具

将产品资料“4-软件资料\Demo\linux-rt-demos\Cyclictest\”目录下的rt-tests.tar.gz压缩包复制到Ubuntu系统,执行如下命令将其解压。

Host# tar -zxf rt-tests.tar.gz

图 4

请先确保已参考Linux系统使用手册编译过LinuxSDK,构建A40i处理器对应的GCC编译器。进入解压生成的rt-tests源文件目录执行如下命令,使用LinuxSDK开发包目录下的GCC编译器进行案例编译。编译完成后,将在当前目录下生成可执行文件。

Host# CC=/home/tronlong/A40i/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/bin/arm-linux-gnueabihf-gcc make

图 5
图 6

编译完成后,将在当前路径下生成cyclictest可执行文件,将其复制到评估板文件系统。

使用Cyclictest测试系统实时性

本次测试对比基于Linux-RT-3.10.65内核和Linux-3.10.65内核的Linux系统实时性。参照如下步骤,结合Iperf和Cyclictest工具测试系统的实时性。此处使用Iperf工具不断触发系统中断,提高中断处理负载,以便更好测试系统实时特性。

在Ubuntu执行如下命令查看IP地址,并以服务器模式启动Iperf测试。

Host# ifconfig

Host# iperf -s -i 1

图 7

分别使用Linux-RT-3.10.65内核和Linux-3.10.65内核启动评估板,执行如下命令以客户端模式启动Iperf,并连接到服务器端(Ubuntu系统)。192.168.0.40为Ubuntu的IP地址,"-t3600"指定测试时间为3600秒,&表示让程序在后台运行。

Target# iperf -c 192.168.0.40 -d -t3600&

图 8

执行如下命令使用Cyclictest程序测试系统实时性。

Target# ./cyclictest -t5 -p98 -m -n -D10m

图 9 Linux-RT-3.10.65内核测试结果
 
图 10 Linux-3.10.65内核测试结果
 
表 1 Cyclictest测试结果说明

Cyclictest命令参数解析可执行"./cyclictest --help"查看,如下图所示。对比测试数据,可看到基于Linux-RT-3.10.65内核的系统的延时更加稳定,最大延时更低,系统实时性更佳。

图 11
图 12

好了,到这里本次开发例程的第一章节就阅读完毕,如需看到更多案例,请返回点击更多文章阅读,欢迎您的关注,也可以在评论区留言获取更多资料。

基于全志A40i开发板——Linux-RT内核应用开发教程(1)的更多相关文章

  1. 【嵌入式开发】写入开发板Linux系统-模型S3C6410

    笔者 : 万境绝尘 转载请著名出处 最终拿到板子了, 嵌入式开发正式开启. 板子型号 : 三星 S3C6410 基于ARM11, 指令集基于arm6指令集; 为毛不是 Cortext A9的板子; 烧 ...

  2. 在开发板Linux上挂载"驱动"挂载不成功,出现提示server 172.27.52.100 not responding, still trying

    1.在开发板具体操作步骤如下:   1.1 :设置IP ifconfig eth0 172.27.52.200   1.2 :ping通 虚拟机Linux 主机Linux ping XXX.XXX.X ...

  3. SecureCRT访问开发板linux系统

    前言: 最近在用OK6410开发板跑linux系统,经常在终端上敲一些指令,无奈开发板屏幕太小用起来非常不方便,所以使用终端一款能运行在windows上的软件与开发板连接,直接在电脑上操作开发板了,这 ...

  4. [分享] IMX6嵌入式开发板linux QT挂载U盘及TF卡

    本文转自迅为开发板:http://www.topeetboard.com 开发平台:iMX6开发板 linux QT 系统下挂载 u 盘如下图所示,qt 启动之后,在超级终端中使用命令“mknod / ...

  5. 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...

  6. samrt210开发板ping-系列问题(开发板ping通主机,主机ping通虚拟机,唯独~开发板ping不通虚拟机)

    硬件:PC机.虚拟机(Linux).开发板(smart210) 常用模型: 注:1).有线网卡与无线网不可同连一个路由器,不可在同网段: 2).vmware选择桥接模式,虚拟网络适配器选定具体的网卡名 ...

  7. 全志A33开发板Linux内核定时器编程

    开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 Linux 内核定时器是内核 ...

  8. 芯灵思Sinlinx A64开发板Linux内核定时器编程

    开发平台 芯灵思Sinlinx A64 内存: 1GB 存储: 4GB 开发板详细参数 https://m.tb.cn/h.3wMaSKm 开发板交流群 641395230 Linux 内核定时器是内 ...

  9. 全志A33 lichee 开发板 Linux中断编程原理说明

    开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 本节实验目标实现按键触发中断 ...

随机推荐

  1. position 的值absolute、fixed、relative和static的定位原点是什么

    position 的值absolute.fixed.relative和static的定位原点是什么 absolute 成绝对定位的元素,相对于值不为static的第一个父元素进行定位,也可以理解为离自 ...

  2. C语言对Mysql函数操作

    数据类型 MYSQL MYSQL结构代表一个数据库连接句柄,包含有关服务器的连接状态的信息,几乎所有函数都是用到它 typedef struct st_mysql { NET net; /* Comm ...

  3. DLink 815路由器栈溢出漏洞分析与复现

    DLink 815路由器栈溢出漏洞分析与复现 qemu模拟环境搭建 固件下载地址 File DIR-815_FIRMWARE_1.01.ZIP - Firmware for D-link DIR-81 ...

  4. 说说has a与is a的区别?

    is a是典型的"一般到特殊"的关系,也就是典型的继承关系.例如Apple is a Fruit.那么Apple是一种特殊的Fruit,也就是说Apple继承了Fruit. has ...

  5. spring-注解驱动模式

    spring web装配原理: /** * WebApplicationInitializer Spring MVC 提供接口. * * Spring中的web自动配置,也是可以, */ /** * ...

  6. springDataRedis忽略实体指定的属性

    如果是通过 RedisRepository定义的实体,可能存在想要忽略的属性,那么,就可以 使用 org.springframework.data.annotation.Transient 注解,就可 ...

  7. memcached 最大的优势是什么?

    Memcached 最大的好处就是它带来了极佳的水平可扩展性,特别是在一个巨大的 系统中.由于客户端自己做了一次哈希,那么我们很容易增加大量 memcached 到集群中.memcached 之间没有 ...

  8. Java 中堆和栈有什么区别?

    JVM 中堆和栈属于不同的内存区域,使用目的也不同.栈常用于保存方法帧和局 部变量,而对象总是在堆上分配.栈通常都比堆小,也不会在多个线程之间共享, 而堆被整个 JVM 的所有线程共享.

  9. synchronized、volatile、CAS 比较?

    1.synchronized 是悲观锁,属于抢占式,会引起其他线程阻塞. 2.volatile 提供多线程共享变量可见性和禁止指令重排序优化. 3.CAS 是基于冲突检测的乐观锁(非阻塞)

  10. RENIX非对称时延测试——网络测试仪实操

    本文主要介绍RENIX软件如何进行非对称时延测试.文章分为四部分,第一部分为非对称时延概述,第二部分为测试说明,第三部分为测试配置,第四部分为测试报告. 第一部分:非对称时延概述 1.RFC2544测 ...