如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Linux学习汇报(三)1、linux驱动模块简介2、linux驱动模块编程方法3、linux驱动模块编程实例4、驱动验证实验5、后期学习计划1、linux驱动模块简介Linux内核Linux操作系统将所有的设备驱动通过模块化来管理,而内核中将模块分为三大类:字符设备cdev,块设备bdev,网络设备netdev。字符设备是指那些必须以串行顺序进行访问的设备,如触摸屏,磁带驱动器,鼠标等。块设备可以用任意顺序进行访问,以块单位进行操作,如硬盘,软驱等。cdev,bdev设备映射为系统内核文件节点,用户操作硬件时通过系统调用对文件的读写来实现。2、linux驱动模块编程方法现代linux内核的整体结构已经非常庞大,而且其包含的组件也非常多,我要将自己的驱动模块用起来有两种方法:1,将所有的功能都编译到linux内核2,使用模块动态的加入到内核以下介绍一个最简单的内核功能模块(不是驱动)helloworld!:Staticvoidhello_exit(void)//功能模块退出{Printk(KERN_INFO”helloworldexit!\n”);}Module_init(hello_init);//初始化调用Module_exit(hello_exit);//退出调用MODULE_AUTHOR(“XXXXX”);//作者名MODULE_LICENSE(“DualBSD/GPL”);//模块遵循的协议gpl从以上的内核功能模块可以看出,一个内核功能模块程序至少应包含初始化,退出两个函数。经过gcc编译过后会产生一个xxx.ko的文件,然后用insmod或者modprobe将其加载到内核。用rmmod来卸载模块。字符设备驱动的组成:1.字符设备驱动模块的加载与卸载函数2.字符设备驱动读,写,i/o控制函数3.字符设备驱动文件操作结构体3、linux驱动模块编程实例开发板硬件资源:4、驱动验证实验驱动在用户空间的验证主要是通过用户编写应用程序来调用驱动的接口实现对固定硬件的控制。在linux下编程主要应用c/c++,bash,pearl,java,pythond等语言,在此应用c++来编写对驱动接口的调用程序。嵌入式linuxc++编程的图形界面编程应用的是qtembeded,他是普通qt在嵌入式领域的扩展。如下是qt编写的几个简单程序:对前面的外部led驱动验证的qt应用程序界面和代码如下:代码主要包含一个用户界面文件,c++标准头文件,c++标准源文件构成:#include<QtGui/QApplication>#include"ledt.h"intmain(intargc,char*argv[]){QApplicationa(argc,argv);ledtw;w.show();returna.exec();}编译时先用qt集成开发环境生成.pro工程文件,然后由arm-qmake构建makefile,然后运行make调用arm-linux-g++进行交叉编译。编译完成后要在目标机上执行首先要确信目标机上已经成功移植了qt4.7。然后将程序通过tftp下载到目标机的sdcard。在同级目录下建立一个xxx.sh的shell脚本程序用来配置程序的运行环境,然后执行shell脚本即可。Shell脚本内容如下:5、后期学习计划1、中断的使用2、步进电机控制3、现场总线4、无线通信5、网络谢谢大家请多多指教