赞
踩
嵌入式Linux学习篇:
Linux内核模块----Linux Kernel Module。
在Linux内核中,驱动程序是以模块的形式存在,每个驱动程序都是一个个独立的模块。模块之间可以是独立的,不相关的。
通俗而言:Linux的设备驱动程序是存放在Linux内核模块中的,我们设计驱动程序之前,先要设计一个Linux内核模块。
在一般情况Linux设备驱动程序通过环境编译后会生成一个后缀为ko的文件,该文件可以通过命令进行安装或卸载。
本次以LED灯的驱动程序为例进行安装或卸载: 安装(insmod): [root@GEC6818 /test]#insmod led_drv.ko [ 66.646000] GEC6818 led_drv init ...... 查看是否安装成功: [root@GEC6818 /test]#lsmod led_drv 2932 0 - Live 0xbf22c000 (O) 卸载LED灯的驱动(rmmod): [root@GEC6818 /test]#rmmod led_drv [ 312.365000] GEC6818 led_dev exit ..... 补充: insmod---insert module 将一个模块插入内核 rmmod---remove module 将一个内核模块移除内核。
在Linux内核源码中,有Linux设备驱动程序(推荐使用Source Insight软件查看)。
GEC6818板子的内核源码:6818GEC.tar
修改后得到的框架:
#include <linux/module.h> #include <linux/kernel.h> //模块的入口和出口 static int __init gec6818_led_init(void) //入口---驱动的安装函数 { printk("GEC6818 led_drv init ......\n"); //串口控制台输出 return 0; } static void __exit gec6818_led_exit(void) //出口---驱动的卸载函数 { printk("GEC6818 led_dev exit .....\n"); } module_init(gec6818_led_init
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。