前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全志A40i开发板——Linux-RT内核应用开发教程(3)

全志A40i开发板——Linux-RT内核应用开发教程(3)

原创
作者头像
创龙科技Tronlong
发布2022-04-19 11:32:51
1.1K0
发布2022-04-19 11:32:51
举报

目录 1 Linux-RT内核简介 3 2 Linux系统实时性测试 3 3 rt_gpio_ctrl案例 10 4 rt_input案例 15

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

案例说明

通过创建一个基本的实时线程,在线程内打开input设备,并对按键事件进行监听,然后触发LED的电平翻转,再通过示波器测量按键触发到LED电平翻转期间的实际耗时。程序原理大致如下:

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

(2)实时线程中对打开的input设备节点进行按键事件监听,通过判断监听得到的按键事件来触发LED(/sys/class/leds/user-led0/brightness)的电平翻转。

案例测试

将案例bin目录下的可执行文件复制到评估板文件系统,并执行如下命令运行测试程序,程序运行后按下USER KEY0(KEY3)用户按键点亮LED,松开按键后LED熄灭,再按"Ctrl + C"退出测试程序。

Target# ./rt_input /dev/input/event1

图 20

分别使用示波器探头1测量按键USER KEY0(KEY3)管脚1,使用示波器探头2测量LED电路R28电阻一端。

图 21

图 22

从按键下降沿触发的开始(下图黄线)到LED上升沿触发的完成(下图绿线)的时间间隔,即为系统实时捕获按键输入时间并响应触发LED电平翻转的时间∆x,从图中可以看到∆x=22.20ms。

图 23

补充说明:

  1. 在硬件特性上,由于按键电压由低电平上拉到高电平比较缓慢,因此本次测试实时事件的输入采用下降沿触发方式。
  2. 本次测得延时较高,可能与驱动、mdev相关。

案例编译

将产品资料“4-软件资料\Demo\linux-rt-demos\rt_input\”案例源码复制到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

图 24

关键代码说明

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

图 25

(2)在线程中打开input设备节点并监听按键事件,同时触发LED电平的翻转。

图 26

好了,讲到这里,本期的Linux-RT内核应用开发内容讲解完毕

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux-RT内核简介
  • rt_input案例
  • 案例说明
  • 案例测试
  • 案例编译
  • 关键代码说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档