我的DIY Android之旅--驱动并控制你的Android开发板蜂鸣器

     这些天一直在想Android驱动框架层的实现,本文借助老罗老师的博客和现有通过过分析台湾的Jollen的mokoid 工程代码,并尝试在Android开发板上驱动一个简单的蜂鸣器,来解析Android下驱动的调用。    

 

  HAL架构由Patrick Brady (Google) 在2008 Google  I/O演讲中提出的,如下图。

  其实可以考虑先编写驱动代码,然后使用NDK编译库层的代码,最后在Android应用层来直接完成对硬件驱动层的调用!

 

先编写一个简单的蜂鸣器驱动程序,根据开发板上的硬件IO接口和Android驱动规范,在kernel中的driver目录中新建一个Buzzer文件,新建一个buzzer.c的源文件

#include<linux/init.h>
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/ioport.h>
#include<linux/fs.h>
#include<asm/io.h>
#include<asm/uaccess.h>

#define DRIVER_AUTHOR "canjianfantasy"
#define DRIVER_DESCRIBLE "buzzer test program"

#define BUZZER_MAJOR 248 //Device Driver Major Number
#define BUZZER_NAME "BUZZER_IO_PORT" //Device Name

#define BUZZER_DRIVER_VERSION "BUZZER IO PORT V0.1" //Device Driver Version

#define BUZZER_ADDRESS 0x88000050 //physical address 
#define BUZZER_ADDRESS_RANGE 0x1000 // I/O region  range

//Glable variable 
static int buzzer_usage = 0;  //if device is already used ?
static unsigned long *buzzer_ioremap ; //io address region


//It is called when program called open() system call

int buzzer_open(struct inode
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值