【Rayeager PX2分享】最简单helloworld驱动编写
2015-06-02 16:11
696 查看
论坛里应该有一部分人是想学驱动,却不知道该怎么入门吧,在这里我教大家写一个helloworld的简单随linux内核加载的驱动。
1.首先在/kernel/drivers下建一个新的文件夹hello,在文件夹里添加四个文件分别是hello.c,hello.hKconfig,Makefile,
hello.c文件里也有注释,这个文件主要就是为了注册和初始化设备文件以及定义驱动接口,主要是用啦file_operations这个结构体,大家想了解驱动可以先了解这个,这个程序里的注释可以帮助大家理解下一个简单驱动的结构
2.修改Kconfig,内容如下
3.修改Makefile,内容如下
4.返回dirvers目录下修改Kconfig,在最后加一句:source"drivers/hello/Kconfig"
5.修改Makefle文件,在里面添加一句 obj-$(CONFIG_HELLO_TEST) += hello/
6.返回kernel目录下,执行makemenuconfig 在/driver路径下找到设备,选定(注:这里设备的名字和我们之前写的Kconfig有一定的关系,修改Kconfig的相应的参数,可以改变menu下的名字)
,然后返回
makekernel.img
7,然后创建测试文件,在driver目录下创建目录hellotest,加入两个文件test和Android.mk
然后mm,在sdk/out/target/product/rkpx2/system/bin目录下找到测试文件,(如mm无法执行,可在根目录下执行下sourcebuild/envsetup.sh)
8.最后测试下结果,在window目录下,用adb工具把测试文件push进板中,然后在文件所在的位置给文件赋上权限,执行chmod777 test
执行./testhello 或./testgoodbye可看到结果如下,即驱动可成功加载
hellotest.zip
hello.zip
1.首先在/kernel/drivers下建一个新的文件夹hello,在文件夹里添加四个文件分别是hello.c,hello.hKconfig,Makefile,
hello.c文件里也有注释,这个文件主要就是为了注册和初始化设备文件以及定义驱动接口,主要是用啦file_operations这个结构体,大家想了解驱动可以先了解这个,这个程序里的注释可以帮助大家理解下一个简单驱动的结构
2.修改Kconfig,内容如下
3.修改Makefile,内容如下
4.返回dirvers目录下修改Kconfig,在最后加一句:source"drivers/hello/Kconfig"
5.修改Makefle文件,在里面添加一句 obj-$(CONFIG_HELLO_TEST) += hello/
6.返回kernel目录下,执行makemenuconfig 在/driver路径下找到设备,选定(注:这里设备的名字和我们之前写的Kconfig有一定的关系,修改Kconfig的相应的参数,可以改变menu下的名字)
,然后返回
makekernel.img
7,然后创建测试文件,在driver目录下创建目录hellotest,加入两个文件test和Android.mk
然后mm,在sdk/out/target/product/rkpx2/system/bin目录下找到测试文件,(如mm无法执行,可在根目录下执行下sourcebuild/envsetup.sh)
8.最后测试下结果,在window目录下,用adb工具把测试文件push进板中,然后在文件所在的位置给文件赋上权限,执行chmod777 test
执行./testhello 或./testgoodbye可看到结果如下,即驱动可成功加载
hellotest.zip
hello.zip
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories