基于GEC6818智能家居的实现--点亮LED灯

嵌入式Linux学习篇:Linux内核模块 Linux内核模块----Linux Kernel Module。 在Linux内核中,驱动程序是以模块的形式存在,每个驱动程序都是一个个独立的模块。模块之间可以是独立的,不相关的。 通俗而言:Linux的设备驱动程序是存放在Linux内核模块中的,我们设计驱动程序之前,先要设计一个Linux内核模块。在一般情况Linux设备驱动程序通过环境编译后会生成一个后缀为ko的文件,该文件可以通过命令进行安装或卸载。 本次以LED灯的驱动程序为例进行安装或卸
摘要由CSDN通过智能技术生成

嵌入式Linux学习篇:

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内核源码中,有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
  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值