mtk硬件启动关闭蓝牙功能的项目:mtk上层操作GPIO应用示例
项目要求:
接上篇:
1:蓝牙按键(KCOL2+KROW1)长按3秒,软件上控制GPIO144拉高2秒后关闭,蓝牙就开启并搜索配对。同时拉高GPIO98,控制音频的模拟开关切换蓝牙音源。
2:蓝牙在工作状态下,给出个1.8V的高电平,给GPIO145用来检测蓝牙的工作状态。
3:蓝牙在工作装态下想要重新配对,在...
分类:
其他好文 时间:
2015-03-20 23:50:39
阅读次数:
506
项目要求:该项目由于没有使用android5.0,导致启动bluetooth的蓝牙audio
slave功能必须使用第三方模组,该第三方模组,启动是通过android主板通过GPIO控制。UI界面是通过图形选择或者一个kpd组合按键来打开关闭或者是启动蓝牙搜索功能。
1,用户按键的侦测:
标准的行为,用户的组合按键,kernel里面向上层发送scancode,然后framework把s...
分类:
其他好文 时间:
2015-03-20 18:47:57
阅读次数:
307
先上图: 所以4个KEY的GPIO定义如下: 1 #define GPF_KEY_4 8 2 #define GPF_KEY_4_INPUT 0x00 3 #define GPF_KEY_4_OUTPUT 0x01 4 5 #define GPF_KEY_...
分类:
其他好文 时间:
2015-03-17 23:28:25
阅读次数:
236
异步通知: 用户程序需完成两个步骤: 1、指定属主进程owner 使用fcntl系统调用的F_SETOWN,属主进程的进程ID就被保存在filp->f_owner中 2、真正启用异步通知机制 在设备中设置FASYNC标志,通过fcntl的F_SETFL 执行完这两个步骤后,输入文件就可以在新数据到达时请求发送..
分类:
其他好文 时间:
2015-03-16 06:31:28
阅读次数:
183
权能与受限操作 全部全能操作可以在<linux/capability.h>中找到,其中包含了系统能够理解的所有权能;不修改内核源码,对驱动程序开发者来讲有意义的权能如下所示: CAP_DAC_OVERRIDE 越过文件或目录的访问权限(数据访问控制或DAC)的能力 CAP_NET_ADMIN 执行网络管理任..
分类:
其他好文 时间:
2015-03-16 06:31:18
阅读次数:
238
linux驱动——并发和竟态序——正在运行的多个用户空间程序可能以一个令人惊讶的组合方式访问我们的代码。SMP系统甚至可能在不同的处理器上同时执行我们的代码。内核代码是可抢占的,因此我们的驱动程序代码可在任何时候丢失对处理器的独占。信号量(semaphore)的实现: 有一对..
分类:
其他好文 时间:
2015-03-16 06:30:42
阅读次数:
180
在linux中,一个等待队列通过一个“等待队列头(wait
queuehead)”来管理,等待队列头是一个类型为wait_queue_head_t的结构体,定义在<linux/wait.h>中 两种定义并初始化方法: DECLARE_WAIT_QUEUE_HEAD(name); wait_queue_head_t
my_queue; init_waitqueue_head(&m..
分类:
其他好文 时间:
2015-03-16 06:30:21
阅读次数:
258
linux驱动makefile写法:
ifneq
($*KERNELRELEASE),)
obj-m
:=hello.o
else
KERNELDIR?=/lib/modules/$(shell
uname-r)/build
PWD
:=$(shellpwd)
default:
$(MAKE)
-C$(KERNELDIR)M=$(PWD)modules
endif初始化和关闭:static
int__initinitialization_funciton(void)
{
*
}
mo..
分类:
其他好文 时间:
2015-03-16 06:30:11
阅读次数:
202
高级字符驱动程序操作之ioctlioctl: 用户空间原型:int
ioctl(intfd,unsignedlongcmd,…); “...”并非可变参数,而是可选参数,防止编译器进行类型检查。 驱动原型:int
(*ioctl)(structinode*inode,structfile*filp,unsignedintcmd,
unsignedlongarg); inode和flip是原来的f..
分类:
其他好文 时间:
2015-03-16 06:29:53
阅读次数:
276
度量时间差 时钟中断由定时硬件以周期性的间隔产生,这个间隔由内核根据HZ值设定,HZ是一个与体系结构有关的常数,定义在<linux/param.h>或者该文件包含的某个子平台相关的文件中。 可以通过修改HZ值来改变系统时钟中断发生的频率,但必须重新编译内核以及所有模块。 每..
分类:
其他好文 时间:
2015-03-16 06:28:28
阅读次数:
209