【Rayeager PX2分享】最简单helloworld驱动编写

论坛里应该有一部分人是想学驱动,却不知道该怎么入门吧,在这里我教大家写一个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

时间: 2024-07-29 10:37:04

【Rayeager PX2分享】最简单helloworld驱动编写的相关文章

linux最简单的驱动编写及测试流程

本文采用nfs挂载网络文件系统的方式,手动创建设备节点, 动态加载驱动模块,对理解驱动编写流程有很大好处! 一.初级驱动执行流程: 1.写好Makefile文件,里面包含将应用程序编译成app文件,将驱动程序编译成mydrv.ko文件的脚本 2.在ubuntu里执行sudo make 3.确保mydrv.ko和app被拷贝到nfs挂载的根文件系统的/modules目录 4.在模块中创建设备节点(在串口软件显示的开发板文件系统里执行) mknod /dev/dcx-drv c 250 0 4.1.

【Rayeager PX2分享】PX2上ttys3串口测试程序编写

在PX2开发板上有个已引出的的ttys3,大家如果用PX2来开发或者学习,时不时总是会需要用到这个串口的,而在android系统中,使用串口的方式也很简单,因为在PX2的源码中已经有了ttys3的驱动,我们只需要将起编译进内核(编译fangshihttp://bbs.chipspark.com/forum.p ... =%E4%B8%B2%E5%8F%A3)就可以像操作文件一样,操作这个串口,然后操作这个串口的时候,我们需要做的也只有先做个初始的配置,就是设置波特率,停止位,数据位,奇偶校验.

【Rayeager PX2分享】修改安卓开机后进入主屏幕流程分析

在之前楼主在学习了Android的启动流程后,继续学了下去,然后看了上面这位博主的分享,便对修改主屏有明确思路了 开始尝试修改开机后首次进入的界面,首先楼主先写了一个简单的apk,主要最初默认的程序中在AndroidMain里fiter里加了句 <category android:name="android.intent.category.HOME" />主要在android启动后选择主屏幕可以找到这个apk. 显示hello PX2样子如下 生成apk,然后在linux环

【Rayeager PX2分享】解决px2开发板的usb转串口不可用问题

本人在使用px2开发板的usb作为串口时遇到问题,在/dev目录下有出现ttyusb0,但不可用.注:没有插上串口线是不会出现ttyusb0的. 解决办法如下: 1.请用本帖提供的usb-serial.c与usb-serial.h文件替换px2所自带的文件.文件路径如下:/home/zoubin/sdk/kernel/drivers/usb/serial. 2.进入kernel目录下,进行make menuconfig来配置内核编译选项.选项如下:Devces drivers-->USB seu

【Rayeager PX2分享】OpenCV入门之线段检测

线段检测主要运用Hough变换,Hough变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等).最基本的霍夫变换是从黑白图像中检测直线(线段). 在OpenCV编程中,实现线段检测主要使用cvHoughLines2函数. 函数原型: CvSeq* cvHoughLines2( CvArr* image, void* line_storage, int method, double rho, doubl

liunx中字符驱动编写的简单模板

下面是关于字符驱动两个程序,主要是说明驱动编写的思想,理解驱动是怎么一步一步被实现的. 驱动的第一个实现程序,是相对于裸机编程的,主要是体会一下驱动编程思想: cdev.h: 所包含的头文件 #ifndef CDEV_H_#define CDEV_H_ #define MAX_CDEVS 1024 struct cdev { struct file_operations *ops; char *name; int id;}; fs.h : 包含的另一个头文件 #ifndef FS_H_#defi

【Rayeager PX2】PX2上使用GPIO口的例程

之前楼主在论坛中已经分享了简单驱动的编写,现在楼主再来教刚接触板子的新手们如何引用调用GPIO,不过这里楼主并没有将GPIO口的函数封装成库,然后在eclipse上调用,楼主这边的例子,只是简单的用adb工具进入板中,然后用一个测试程序使用端口,有兴趣想要在安卓界面调用端口的,可以参考楼主之前写的那编jni调用的帖子. 首先我们依旧来简单地说下步骤, 1.在/kernel/drivers下建个文件夹,自己创建并添加Kconfig和makefile,内容如下, 2.在该目录下写个gpio驱动,内容

Tiny4412之串口(Uart)驱动编写

一:tiny4412串口驱动编写 1.串口通信简介 串口通信指串口按位(bit)发送和接收字节,串口通信的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线 接收数据.它很简单并且能够实现远距离通信.比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2 米:而对于串口而言,长度可达1200米. 串口通信所采用的通信协议为RS-232,RS-232通信方式允许简单连

第三十三天:Tiny4412驱动开发之LED驱动和按键驱动编写

从今天开始进入驱动开发的课程的学习,共完成四件事情.一:u-boot的简单移植,二:uboot中编写helloword程序 三:开发板中led灯的驱动编写,包括led点亮,闪烁,跑马,流水.四:开发板中按键的驱动编写,按下按键后在屏幕中显示字符. 一:u-boot的简单移植 1.进入开发板提供的源码文件包,解压uboot源码包. cd /home/bunfly/source_code/ tar xf uboot_tiny4412-20130729.tgz 2.进入uboot文件夹,更改uboot