Android 驱动开发系列一
首先,需要搭建Android的开发环境。我这里采用的是Ubuntu 11.04 64bit的系统,里面使用gcc-4.4,Android 4.0.4源码,硬件是S5PV210。
搭建环境这一步就不说了。
其次,编译好u-boot、kernel和ICS。
最后,开始确定要编写什么驱动。
由于我这个210板子上没有可控制的GPIO设备,所以这里硬件部分就不涉及了,直接编写一个驱动,实现读写接口。
在开始之前,我们先来看看由驱动到接口、应用是怎么一个流程。
从这个图中可以看出我们需要 实现HAL层,实现Framework层,以及编写对应的程序。
在这里,有必要提一下:在Android下有以下两种访问HAL的方式:
1、Android 的 app 直接通过service 调用.so格式的JNI :此方法比较简单高效,但是不正规。
2、经过Manager 调用 Service :此方法实现起来比较复杂,但更符合目前的 Android框架。在此方法中 Manager 进程和 Service(JAVA) 进程需要通过进程通信的方式实现通信。
下面正式开始:
一、HAL层驱动的实现
1、添加 ttt 驱动
首先,打开终端,进入到kernel源码目录下的drivers目录,如:
[plain]
brantyou@brantyou-ubuntu:~/workspace$ cd samsung_android_kernel_3.0/drivers/
brantyou@brantyou-ubuntu:~/workspace/samsung_android_kernel_3.0/drivers$ ls
accessibility clk gpio Kconfig misc pcmcia sfi usb
acpi clocksource gpu Kconfig~ mmc platform sh uwb
amba connector hello leds modules.builtin pnp sn vhost
ata cpufreq hid lguest modules.order power spi video
atm cpuidle hwmon macintosh mtd pps ssb virtio
auxdisplay crypto hwspinlock Makefile net ps3 staging vlynq
base dca i2c Makefile~ nfc ptp switch w1
bcma dio ide mca nubus rapidio target watchdog
block dma idle md of regulator tc xen
bluetooth edac ieee802154 media oprofile rtc telephony zorro
built-in.o eisa infiniband memstick parisc s390 thermal
cdrom firewire input message parport sbus tty
char firmware isdn mfd pci scsi uio
brantyou@brantyou-ubuntu:~/workspace/samsung_android_kernel_3.0/drivers$
切换成超级用户权限:
[plain]
brantyou@brantyou-ubuntu:~/workspace/samsung_android_kernel_3.0/drivers$ sudo -s
[sudo] password for brantyou:
root@brantyou-ubuntu:~/workspace/samsung_android_kernel_3.0/drivers#
创建 ttt 驱动目录:
[plain]
root@brantyou-ubuntu:~/workspace/samsung_android_kernel_3.0/drivers# mkdir ttt
root@brantyou-ubuntu:~/workspace/samsung_android_kernel_3.0/drivers# ls
accessibility clk gpio Kconfig misc pcmcia sfi uio
acpi clocksource gpu Kconfig~ mmc platform sh usb
amba connector hello leds modules.builtin pnp sn uwb
ata cpufreq hid lguest modules.order power spi vhost
atm cpuidle hwmon macintosh mtd pps ssb video
auxdisplay crypto hwspinlock Makefile net ps3 staging virtio
base dca i2c Makefile~ nfc ptp switch vlynq
bcma dio ide mca nubus rapidio target w1
block dma idle md of regulator tc watchdog
bluetooth edac ieee802154 media oprofile rtc telephony xen
built-in.o eisa infiniband memstick parisc s390 thermal zorro
cdrom firewire input message parport sbus ttt
char firmware isdn mfd pci scsi &n
补充:移动开发 , Android ,