原创 基于全志A40i开发板——Linux-RT内核应用开发教程(2)

2022-4-19 17:25 1622 6 6 分类: MCU/ 嵌入式

目录

1 Linux-RT内核简介 3

2 Linux系统实时性测试 3

3 rt_gpio_ctrl案例 10

4 rt_input案例 15

本文为Linux-RT内核应用开发教程的第二章节——rt_gpio_ctrl案例,欢迎各位阅读!本期用到的案例板子是创龙科技旗下的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性能降低。

rt_gpio_ctrl案例案例说明

通过创建一个基本的实时线程,在线程内触发LED的电平翻转,同时程序统计实时线程的调度延时,并通过示波器测出LED电平两次翻转的时间间隔。由于程序默认以最高优先级运行,为避免CPU资源被程序完全占用,导致系统被挂起,因此在程序中增加100us的延时。程序原理大致如下:

(1)在Linux-RT内核上创建、使用实时线程。

(2)实时线程中,计算出触发LED(/sys/class/leds/user-led0/brightness)电平翻转的系统调度延时。

案例测试

将案例bin目录下的可执行文件复制到评估板文件系统,并执行如下命令运行测试程序,再按"Ctrl + C"退出测试,串口终端将打印程序统计的延时数据,如下图所示。

备注:Error results为偏差分析结果,不是错误结果。程序统计打印的Error results平均值为1041us,延时较高,可能与驱动、mdev相关。

Target# ./rt_gpio_ctrl

图 13

同时使用示波器捕捉LED两次电平翻转之间的间隔就对应上线程调度的延迟,测试点为R28电阻一端。

图 14

算出电平两次翻转的时间间隔为∆x=177us,如下图所示。由于程序中默认增加了100us的时间延时,实际延时应为:177us-100us=77us。

图 15

案例编译

将产品资料“4-软件资料\Demo\linux-rt-demos\rt_gpio_ctrl\”案例源码复制到Ubuntu。进入案例源码目录,执行如下命令,编译案例生成可执行文件。

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

图 16

关键代码说明

(1)创建一个基于PREEMPT_RT的实时任务,具体操作包括内存锁定、线程堆栈内存设置、调度策略和优先级配置等。

图 17

(2)在线程中打开LED文件节点,并对LED状态进行翻转。

图 18

(3)统计调度时间延时情况。

图 19

本文的Linux-RT内核应用开发教程第二章节——rt_gpio_ctrl案例就讲解完毕,后面,我们将继续解读Linux-RT内核应用开发的 rt_input案例部分,请多关注,感兴趣可在下方评论区留言。

作者: Tronlong, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3881012.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条