基于全志A33的LED驱动开发,安卓6.0.1平台

本文介绍了基于全志A33 SoC进行LED驱动开发的过程,特别是在Android 6.0.1系统上遇到的SELinux权限问题及解决方案。通过关闭SELinux来解决驱动无法打开节点的问题,并详细讲解了GPIO基地址、配置寄存器和数据寄存器在驱动开发中的应用。同时提供了驱动开发的头文件定义和驱动程序示例,适用于其他类似板子。
摘要由CSDN通过智能技术生成

板子用的是全志A33开发,其它板子也是通用的,有一点要说一下,比如在写一个驱动之后,在Android上无法打开节点,很可能是因为SELinux权限导致的,所以可以通过关闭SELinux的方式解决问题,网上有很多关闭的文章可以看,这里说一个临时关闭的方法:

在串口终端或者adb终端输入:setenforce 0,即可临时关闭,重启恢复,接下来介绍一下驱动开发:

根据全志的用户手册可以看到,GPIO的基地址是0X01C20800,然后需要驱动哪个口,就在基地址上增加偏移地址即可,本板子用到是PF2口:

     

如上图,PF口的Configure寄存器的偏移地址是0XB4,这个在驱动开发的时候会用到,下面的驱动程序中可以看到,然后找到PF2口,如下图:

 

如上图红线框起来的,本例选择输出,

然后,有了configure寄存器的信息之后,还需要上图的data寄存器信息,这个信息全志给的太随便了,需要有一定经验才能猜到,5:0,一看就知道有6个IO口喽,然后0代表0口,以此类推,也就是PF口有6个IO喽,带着疑惑看了老师写的驱动,还真是!然后data寄存器的偏移量是0XC4,嘿嘿,就是基地址+0XC4,也就是0x01C208C4,

那么有了以上资料之后,我们就可以写驱动了,当然这个驱动是老师写的,我拿来给大家分享,首先定义一个头文件:

 

#ifndef __S5PC100_LED_H
#define __S5PC100_LED_H

#define LED_ON 	_IO('k', 0)
#define LED_OFF _IO('k', 1)

#endif


定义头文件主要是接下来的驱动中用到了i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值