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、执行ls /dev

观察是否有设备dcx-drv,有则ok

5、安装模块设备

insmod /modules/mydrv.ko

5.1、执行cat /proc/devices (这个文件里的设备是由驱动程序生成的)

观察是否有“250 dcx-drv”,有则ok

6、执行./modules/app

观察创建的内核模块是否有执行,有则ok

二、代码改动后需要重新编译,完毕后执行:

1、删掉原模块:

rmmod /modules/mydrv

2、安装新模块:

insmod /modules/mydrv.ko

3、执行应用程序:

./modules/app

三、本文采用的Makefile文件

obj-m += mydrv.o

KERNEL_DIR = /opt/03.kernel_transplant/android-kernel-samsung-dev

GCC = arm-linux-gcc

all:

make -C $(KERNEL_DIR) M=`pwd` modules #编译驱动程序

$(GCC) -Wall app.c -o app #编译应用程序

cp ./mydrv.ko /mini_rootfs/modules

cp ./app /mini_rootfs/modules

#clean:

rm -rf ./*.o

rm -rf ./*.order

rm -rf ./*.symvers

rm -rf ./*.mod.c

时间: 2024-10-13 19:31:11

linux最简单的驱动编写及测试流程的相关文章

Linux字符设备驱动编写和测试

一.字符设备结构体 字符设备驱动.块设备驱动和网络设备驱动作为linux内核三大驱动设备,字符设备主要完成字节的读写操作,常见的应用有鼠标.键盘等,结构体形式如下所示: 1 struct cdev{ 3 struct kobject kobj; 5 struct module *owner;//所说模块 7 struct file_operations *ops;//字符设备操作方法 9 struct list_head list; 11 dev_t dev;     //设备 13 unsig

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

论坛里应该有一部分人是想学驱动,却不知道该怎么入门吧,在这里我教大家写一个helloworld的简单随linux内核加载的驱动. 1.首先在/kernel/drivers下建一个新的文件夹hello,在文件夹里添加四个文件分别是hello.c,hello.hKconfig,Makefile, hello.c文件里也有注释,这个文件主要就是为了注册和初始化设备文件以及定义驱动接口,主要是用啦file_operations这个结构体,大家想了解驱动可以先了解这个,这个程序里的注释可以帮助大家理解下一

【详解】如何编写Linux下Nand Flash驱动

From: http://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html 版本:v2.2 Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flash的常见的物理特性,且深入介绍了Nand Flash的一些高级功能,然后开始介绍Linux下面和Nand Flash相关的软件架构MTD的相关知识,最后介绍了

新书《编写可测试的JavaScript代码 》出版,感谢支持

本书介绍 JavaScript专业开发人员必须具备的一个技能是能够编写可测试的代码.不管是创建新应用程序,还是重写遗留代码,本书都将向你展示如何为客户端和服务器编写和维护可测试的JavaScript代码. 从减少代码复杂性的方法,到单元测试.代码覆盖率.调试.以及自动化,您将全面学到如何编写让你和你同事能够轻松修复和维护的JavaScript代码.测试JavaScript代码是一个复杂的过程.本书将在很大程度上帮你简化该过程. 目标读者 本书主要目标受众是那些想成为JavaScript专业开发人

基于Linux的v4l2视频架构驱动编写(转载)

转自:http://www.linuxidc.com/Linux/2011-03/33022.htm 其实,我刚开始一直都不知道怎么写驱动,什么都不懂的,只知道我需要在做项目的过程中学习,所以,我就自己找了一个关于编写Linux下的视频采集监控项 目做,然后上学期刚开学的时候听师兄说,跟院长做项目,没做出来也没关系,所以直接退出博士的团队,投靠了院长的门下,呵呵,说到这里其实并不是我太见风 使驼了,而是····老是让我做单片机的东东,我嫌没意思,他也知道我一开始就要学嵌入式,所以,最后,我想了一

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

Linux I2C设备驱动编写(二)

在(一)中简述了Linux I2C子系统的三个主要成员i2c_adapter.i2c_driver.i2c_client.三者的关系也在上一节进行了描述.应该已经算是对Linux I2C子系统有了初步的了解.下面再对他们之间的关系进行代码层的深入分析,我认为对他们的关系了解的越好,越有助于I2C设备的驱动开发及调试. 带着问题去分析可能会更有帮助吧,通过对(一)的了解后,可能会产生以下的几点疑问: i2c_adapter驱动如何添加? i2c_client与i2c_board_info究竟是什么

Linux I2C设备驱动编写(一)

在Linux驱动中I2C系统中主要包含以下几个成员: I2C adapter 即I2C适配器 I2C driver 某个I2C设备的设备驱动,可以以driver理解. I2C client 某个I2C设备的设备声明,可以以device理解. I2C adapter 是CPU集成或外接的I2C适配器,用来控制各种I2C从设备,其驱动需要完成对适配器的完整描述,最主要的工作是需要完成i2c_algorithm结构体.这个结构体包含了此I2C控制器的数据传输具体实现,以及对外上报此设备所支持的功能类型

Linux I2C驱动编写要点

继续上一篇博文没讲完的内容“针对 RepStart 型i2c设备的驱动模型”,其中涉及的内容有:i2c_client 的注册.i2c_driver 的注册.驱动程序的编写. 一.i2c 设备的注册分析:在新版本内核的i2c驱动模型中,支持多种方式来注册 i2c 设备,在Documentation/i2c/instantiating-devices文件中有讲到,在内核中对应的抽象数据结构就是 struct i2c_client. (1)Declare the I2C devices by bus