【Tiny6410 And Linux】—(1.4)—device 设备模型——代码

原创 2012年05月05日 13:48:24

这三个程序本是一体的!

但是一开始写的时候有这个顺序,所以也就来这个顺序吧!!

 

1、内核代码

 

①、bus.c

这个代码跟上一篇文章的代码一样,我也就是拷贝的!

 

②、device.c

#include <linux/device.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/string.h>


MODULE_AUTHOR("_Justin");
MODULE_LICENSE("GPL");

extern struct device my_bus_dev;
extern struct bus_type my_bus_type;

static void my_dev_release(struct device *dev)
{
	printk("[Call my_dev_release!]\n");
}

struct device my_dev = 
{
	.init_name = "my_dev",
	.bus = &my_bus_type,
	.parent = &my_bus_dev,
	.release = my_dev_release,		/* 这个函数必须有,可以为空 */
};

/* 属性文件的读操作 */
static ssize_t mydev_show(struct device *dev,struct device_attribute *attr,
				char *buf)
{
	return sprintf(buf,"%s\n","This is my device!");
}

/* 创建结构描述的属性文件 */
static DEVICE_ATTR(dev,S_IRUGO,mydev_show,NULL);

static int __init my_device_init(void)
{
	int ret = 0;
	printk("[Call my_device_init!]\n");	

	/* 注册设备 */
	ret = device_register(&my_dev);
	if(ret)
		return ret;

	/* 创建属性文件 */
	ret = device_create_file(&my_dev,&dev_attr_dev);

	return ret;
}

static void __exit my_device_exit(void)
{
	printk("[Call my_device_exit!]\n");	
	device_unregister(&my_dev);
}

module_init(my_device_init);
module_exit(my_device_exit);


③、Makefile

ifneq ($(KERNELRELEASE),)
obj-m := device.o

else
KDIR := /home/_Jana/linux-2.6.38

all:
	make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-

clean:
	rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order

endif


2、测试结果

 

 

 

 

【Tiny6410 And Linux】—(1.4)—device 设备模型——原理

上一节原理中有一个特别重要的东西: 总线也是一个设备,必须按照设备注册! 1、设备描述结构 在 Linux 设备模型中,总线由 device 结构表示,定义在 中。 其中 relea...
  • LonlyCorner520
  • LonlyCorner520
  • 2012年05月04日 16:57
  • 585

Linux设备模型分析之device_driver(基于3.10.1内核)

作者:刘昊昱  博客:http://blog.csdn.net/liuhaoyutz 内核版本:3.10.1   一、device_driver定义 181/** 182 * struct dev...
  • liuhaoyutz
  • liuhaoyutz
  • 2013年11月11日 17:46
  • 6992

Linux设备驱动模型框架分析(三)——LDDM的实体bus_type、device和device_driver

在Linux设备模型中,Bus(总线)是一类特殊的设备,它是连接处理器和其它设备之间的通道(channel)。为了方便设备模型的实现,内核规定,系统中的每个设备都要连接在一个Bus上,这个Bus可以是...
  • u010352083
  • u010352083
  • 2017年08月05日 08:33
  • 291

【Tiny6410 And Linux】—(1.5)—driver 设备模型——代码

三个中的最后一个!   1、内核代码   ①、bus.c 还是跟上面的文章的一样,我依旧粘贴!!   ②、driver.c #include #include #include...
  • LonlyCorner520
  • LonlyCorner520
  • 2012年05月05日 13:52
  • 566

【Tiny6410 And Linux】—(1.3)—bus 设备模型——代码

又是一个周六,放假! 无所事事,干脆整整代码吧,谁知道这也遇到不少问题,各种内核异常!!!!不过最后还是查出问题来了,主要是内核版本的更新,有的元素不再包含了!   1、驱动程序   ①、b...
  • LonlyCorner520
  • LonlyCorner520
  • 2012年05月05日 13:42
  • 583

Linux 设备模型(上)之底层模型

以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但是我个人认为:对于一个嵌入式Linux的底层程序员来说,这部分内容是很重要的。以我学习的ARM9...
  • xy010902100449
  • xy010902100449
  • 2015年06月15日 21:15
  • 1159

Linux设备模型-1-主要概念

随着计算机的周边外设越来越丰富,设备管理已经成为现代操作系统的一项重要任务,这对于Linux来说也是同样的情况。每次Linux内核新版本的发布,都会伴随着一批设备驱动进入内核。在Linux内核里,驱动...
  • shenwanjiang111
  • shenwanjiang111
  • 2016年08月31日 09:19
  • 683

阅读Linux设备驱动模型源码之 device结构体成员详解

【前言】         我们学习 Linux 设备驱动,很多人在一开始往往急于想找到快速入门的方法,希望能有一个提纲挈领的使用说明来帮助我们快速理解 Linux 设备驱动的设计思路和框架,从而摆脱掉...
  • Qidi_Huang
  • Qidi_Huang
  • 2016年09月01日 20:35
  • 1639

Linux 设备模型基本概念 (一)

1、设备模型引入 Linux 2.6内核最初为了应付电源管理的需要,提出了一个设备模型来管理所有的设备。在物理上,外设之间是有一种层次关系的,比如把一个U盘插到笔记本上,实际上这个U盘是接在一个US...
  • xy010902100449
  • xy010902100449
  • 2015年06月04日 10:37
  • 1648

linux设备模型(三 device)

#include #include #include #include #include MODULE_AUTHOR("David Xie"); MODULE_LICEN...
  • lbaihao
  • lbaihao
  • 2015年08月13日 23:15
  • 312
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Tiny6410 And Linux】—(1.4)—device 设备模型——代码
举报原因:
原因补充:

(最多只允许输入30个字)