第12课 设备驱动

12.1 动态加载

动态加载利用内核模块特性,当驱动程序须要运行的时候就被加载执行,不须要的时候就卸载它,这个过程不须要重启操做系统。linux

加载的时候用insmod函数

卸载的时候用rmmod测试

首先,准备一个测试程序,该程序位于Lesson 12目录下的testgpio.c,按照第二课的方式,把他放在一个scu文件夹里,并修改Makefile文件。spa

动态加载步骤:操作系统

首先建立目录/work/uClinux-dist/linux-2.4.x/drivers/char/mvgpio,而后将驱动程序Lesson 12\dynamic\char\gpio.c拷贝到建立的目录下。而且在该目录下建立一个Makefile文件,代码以下图所示:3d

 

修改文件/work/uClinux-dist/linux-2.4.x/drivers/char/Config.in,在“tristate 'Standard/generic (8250/16550 and compatible UARTs) serial support' CONFIG_SERIAL”以前增长“tristate 'MVGPIO serial device support' CONFIG_MYDRIVER_MVGPIO”,以下图所示:blog

 

第三,修改/work/uClinux-dist/linux-2.4.x/drivers/char/Makefile文件,在“mod-subdirs:= joystick ftape drm drm-4.0 pcmcia”以后添加“mvgpio”,以下图:ci

 

同时在“obj-$(CONFIG_TS_AU1000_ADS7846) += au1000_ts.o”以后添加“subdir-$(CONFIG_MYDRIVER_MVGPIO) += mvgpio”,以下图:开发

 

第四,在/work/uClinux-dist目录下,执行sudo make config,进入内核配置,选择Character devices选项,将“MVGPIO serial device support”选择为“m”,以下图,若是没有选择,是不会产生mvgpio.o文件的。it

 

保存退出,而后执行命令:sudo make modules,

到目录/work/uClinux-dist/linux-2.4.x/drivers/char/mvgpio下,将mvgpio.o文件复制到目录/work/uClinux-dist/romfs/lib/modules里。

 

最后在/work/uClinux-dist/目录下执行命令:sudo make image。

 

还有一步就是须要修改vendors/Marvell/Firefox/Makefile文件

 

这样在测试的时候才会在dev目录下产生mvgpio。

而后在/work/uClinux-dist/目录下执行sudo make,执行完之后,下载进开发板。

进入目录/lib/modules/下,使用insmod命令将驱动程序安装。

 

此时使用cat命令能够在/proc/modules目录下看到

 

使用cat能够查看设备号

 

运行testgpio测试程序,

 

可以读取文件里的内容

12.2 静态加载

静态加载是直接将驱动程序编写进内核,系统启动的时候就直接调用。

静态加载步骤:

首先,复制Lesson 12\static\char\mvgpio.c 到/work/uClinux-dist/linux-

2.4.x/drivers/char目录下,

修改/work/uClinux-dist/linux-2.4.x/drivers/char/Config.in文件,在“bool ‘LED Manager support’ CONFIG_LEDMAN”以前添加“bool ‘MV_GPIO support’ CONFIG_MVGPIO”,以下图:

 

修改/work/uClinux-dist/linux-2.4.x/drivers/char/Makefile,在“obj-$(CONFIG_SERIAL) += $(SERIAL)”以后添加“obj-$(CONFIG_MVGPIO) += mvgpio.o”,以下图:

 

修改/work/uClinux-dist/linux-2.4.x/drivers/char/mem.c文件,在开头添加(以下图):

 

在chr_dev_init()函数里面,“return 0”前面添加:

 

修改vendors/Marvell/Firefox/Makefile文件

 

 

在目录/work/uClinux-dist下,执行:sudo make xconfig,配置内核,以下图,选择“Character devices->MV_GPIO support”

 

 

配置完成后,分别执行下面两条命令:

 

下载到开发板,能够看到打印出来的信息,下图红框的内容,说明程序在系统启动的时候开始加载。

 

使用cat命令查看,能够看到是在字符设备第254号。

 

12.3 总结

这节课经过一个简单的字符设备驱动程序,让咱们走进了驱动代码的大门,但这只是最初级的了解阶段,要想加深仍是得多看多学才能作的更好。

相关文章
相关标签/搜索