您的位置:首页 > 移动开发

Android开发-从硬件到APP(一) : 单独编内核驱动模块

2014-05-16 23:57 375 查看


Android开发-从硬件到APP(一) : 单独编内核驱动模块

引用请注明出处!!


我的邮箱qinxiaoyu@163.com

本人肉身在山西太原,欢迎各位联系哦!好久没有更新博客了,虽然能找出一大堆的理由:工作太忙,相亲太频繁(不伤肾的相亲真是无趣),还有去考公务猿({企图从一种猿(程序猿)变异成为另一种猿},但是,最根本的原因还是因为,我太懒了~~~。公司里打算做android的东西了,虽然1年半前在深圳就接触过了

android的驱动开发,但是还是非常的水,只会换换驱动什么的。现在公司也不愿意多花钱招人专门做这个,上一个CC2530的项目也在量产,所以,就让我来做android 的开发了。你没看错,是从硬件驱动到App都是我来做。虽然可能做出来的东西很水,但是,也能给初学者摸门路打打基础(虽然我也还是初学者)。

我手头的板子是一块SMDT出的全志A20的开发板(想找板子的可以直接百度他们家),上个礼拜2拿到的代码,然后就是搭建环境什么的常规程式。搭建环境就不细说了,网上的例子多的数不清。而且他们提供了一个已经打包好的64为ubunt12.04的IOS。想想当初搭建瑞星微的RK2818,RK2918的开发环境,各种apt-get isntall 满脸都是泪啊。

不想看废话的直接看这里哦!

我们在搭建好环境,编译过整个的kernel和android文件系统后。做驱动的第一件事就是能够编译模块,也就是常说的.ko文件。.ko文件可以通过insmod加载到android的linux内核中。可以驱动一些我们想要驱动的芯片,上网找了资料弄出了Makefile可以直接单独编译你想编译的文件。

ifneq ($(KERNELRELEASE),)
obj-m := qxy_test.o
else
KDIR := /media/515bab37-4e3a-4b51-b900-cd92d1965d96/a20-420-V12/lichee/linux-3.3
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers modul*
endif




qxy_test.o是这里你要生成的模块的名称。我的源文件名称和模块名称是一样的。
KDIR:= 后面的路径表示你的板子的linux系统文件放在哪里
ARCH=arm CROSS_COMILE=arm-linux-gnueabi-
的意思是你的编译工具是什么的。
这3处地方都改了以后,你就能试试看能不能编译你的模块啦。
关于工具链的问题:
1.如果你将工具链写成了我上面这样,那么必须将这个工具链设置到环境变量中
1> 输入 vim /etc/profile,在profile的最后一行加入
export PATH=$PATH:/home/smdt/external-toolchain/bin 保存
2> 输入 source /etc/profile 使环境变量有效
3> 在执行make就可以编译了。
4> 具体想知道自己的工具链是什么的,可以查看linux-3.3下的makefile得知,一般在”CROSS_COMPILE“后面跟的那个
地址就是编译链的地址。RK2918当时就是这种写法,还有6410的makefile也是这种。全志A20写了更多的shell文件来
简化编译方式。所以它的工具链是卸载linux-3.3下的build.sh里的。在build.sh里的第40行 :
tooldir="$(dirname `pwd`)/out/${LICHEE_PLATFORM}/common/buildroot/external-toolchain"
可以明显的看到,它的工具链是在
/lichee/out/android/common/buildroot/external-toolchain/bin 中。

所以知道自己工具链在哪里的人可以这么写make -C $(KDIR) M=$(PWD) modules
ARCH=arm CROSS_COMPILE

=/home/smdt/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
(这相当于直接指定工具链的路径)!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐