当前位置:   article > 正文

基于GEC6818智能家居的实现--点亮LED灯_gec6818点灯功能日志

gec6818点灯功能日志

嵌入式Linux学习篇:

Linux内核模块

	Linux内核模块----Linux Kernel Module。
	在Linux内核中,驱动程序是以模块的形式存在,每个驱动程序都是一个个独立的模块。模块之间可以是独立的,不相关的。
	通俗而言:Linux的设备驱动程序是存放在Linux内核模块中的,我们设计驱动程序之前,先要设计一个Linux内核模块。
  • 1
  • 2
  • 3

在一般情况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 将一个内核模块移除内核。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

设计一个简单的Linux内核模块

在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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/48214
推荐阅读
相关标签
  

闽ICP备14008679号