Android开发-从硬件到APP(一) : 单独编内核驱动模块
来源:互联网 发布:网络语言吃鸡什么意思 编辑:程序博客网 时间:2024/04/28 10:16
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.oelseKDIR := /media/515bab37-4e3a-4b51-b900-cd92d1965d96/a20-420-V12/lichee/linux-3.3all: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-
(这相当于直接指定工具链的路径)!
- Android开发-从硬件到APP(一) : 单独编内核驱动模块
- 从内核驱动到android app
- 从内核驱动到android app
- android平台led开发之内核硬件驱动层(一)
- Android开发-从硬件到APP(十) : 数据库的读写
- Android开发-从硬件到APP-xml解析中string转document(十二)
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响—linux2.4单独编译驱动模块
- 单独编译Android app模块
- 从硬件操作到内核来谈网卡驱动
- android 从驱动到应用(一)
- Linux 驱动开发之内核模块开发 (一)—— 内核模块机制基础
- 为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程
- Android驱动(一)硬件访问服务学习之(四)Android应用程序APP编写
- 开发android硬件驱动程序-实现内核驱动程序模块
- Android 从硬件到应用:一步一步向上爬 3 -- 硬件抽象层访问硬件驱动
- android平台led开发之内核硬件驱动层
- android平台led开发之内核硬件驱动层
- android 外部单独编一个模块MAKEFILE示例
- 显示Mac隐藏文件
- LeetCode:Reverse Words in a String
- 给网站添加https访问连接
- Async详解之一:流程控制
- dwr中的session error问题解决
- Android开发-从硬件到APP(一) : 单独编内核驱动模块
- 感动前行——给医学媳妇写的演讲稿(非IT类)
- 微内核介绍
- Dijkstra和Floyd算法
- ARM汇编学习(1)
- Sql server 2008 复制
- 连载《一个程序员的成长历程》-5.开始懵懂的恋情
- 查看端口使用
- VMware虚拟机上网络连接的三种模式--bridged、host-only、NAT