动态加载利用内核模块特性,当驱动程序须要运行的时候就被加载执行,不须要的时候就卸载它,这个过程不须要重启操做系统。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测试程序,
可以读取文件里的内容
静态加载是直接将驱动程序编写进内核,系统启动的时候就直接调用。
静态加载步骤:
首先,复制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号。
这节课经过一个简单的字符设备驱动程序,让咱们走进了驱动代码的大门,但这只是最初级的了解阶段,要想加深仍是得多看多学才能作的更好。