imx6q led灯驱动及测试代码(自动创建设备文件v1)

2024-06-12 14:38

本文主要是介绍imx6q led灯驱动及测试代码(自动创建设备文件v1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

吐舌头驱动层代码 吐舌头
/*************************************************************************
> File Name: led_drv.c
> Author: XXDK
> Email: v.manstein@qq.com 
> Created Time: Sun 26 Feb 2017 04:28:00 AM PST
************************************************************************/
#include#include#include#include#include#include #include #define SABRESD_GPIO_LED4 IMX_GPIO_NR(3, 21) #define SABRESD_GPIO_LED5 IMX_GPIO_NR(3, 22) #define SABRESD_GPIO_LED6 IMX_GPIO_NR(3, 23) #define LED_ON 1 #define LED_OFF 0 struct led_resource { int gpio; char *name; int data; }; static struct cdev led_cdev; static dev_t led_dev_id; static struct class *cls; static struct led_resource led_res[] = { [0] = { .gpio = SABRESD_GPIO_LED4, .name = "xxdk_led4", }, [1] = { .gpio = SABRESD_GPIO_LED5, .name = "xxdk_led5", }, [2] = { .gpio = SABRESD_GPIO_LED6, .name = "xxdk_led6", } }; static int led_open(struct inode* ip, struct file* fp) { int i; printk("%s\n", __func__); for(i=0; i 
偷笑应用层代码 偷笑
/*************************************************************************
> File Name: led_test.c
> Author: XXDK
> Email: v.manstein@qq.com 
> Created Time: Sun 26 Feb 2017 05:22:08 AM PST
************************************************************************/
#include#include#include#includeint main(void)
{
int fd;
fd = open("/dev/led@xxdk", O_RDWR);
if(fd < 0) {
printf("open led device failed!\n");
return -1;
}
sleep(3);
close(fd);
return 0;
}
得意Makefile代码 得意
#Makefile
ifneq ($(KERNELRELEASE),)
obj-m += led_drv.o
else
KERNEL_DIR = /opt/EmbedSky/TQIMX6/TQ_COREC/linux_IMX6_CoreC_3.0.35_for_Linux
all:
PWD=$(shell pwd)
$(MAKE) -C $(KERNEL_DIR) M=$(PWD)
clean:
rm -rf .*.cmd *.o *.mod.c *.ko *.tmp_versions module* Module*
endif

这篇关于imx6q led灯驱动及测试代码(自动创建设备文件v1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054502

相关文章

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

录音功能在哪里? 电脑手机等设备打开录音功能的技巧

《录音功能在哪里?电脑手机等设备打开录音功能的技巧》很多时候我们需要使用录音功能,电脑和手机这些常用设备怎么使用录音功能呢?下面我们就来看看详细的教程... 我们在会议讨论、采访记录、课堂学习、灵感创作、法律取证、重要对话时,都可能有录音需求,便于留存关键信息。下面分享一下如何在电脑端和手机端上找到录音功能

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired