Linux2.6 DM9000驱动模编译为模块
来源:互联网 发布:情义我心知粤语版 编辑:程序博客网 时间:2024/05/19 05:29
1199 static int __init
1200 dm9000_init(void)
1201 {
1202 printk(KERN_INFO "%s Ethernet Driver\n", CARDNAME);
1203
1204 return platform_driver_register(&dm9000_driver); /* search board and register */
1205 }
platform是一个虚拟的地址总线,它主要用于描述SOC上的片上资源。
16struct platform_device { //这个结构直接和硬件交互
17 const char * name;
18 u32 id;
19 struct device dev;
20 u32 num_resources;
21 struct resource * resource; //所描述的设备的硬件资源
22};
16 struct resource {
17 const char *name;
18 unsigned long start, end;
19 unsigned long flags;
20 struct resource *parent, *sibling, *child;
21 };
//挂在CPU上的每个独立的设备单元,都需要一段线性的地址空间来描述-查看memory map.
//resource->start描述设备实体在cpu总线上的线性起始物理地址;
//resource->end -描述设备实体在cpu总线上的线性结尾物理地址;
//resource->name 描述这个设备实体的名称,这个名字开发人员可以随意起,但最好贴切;
//resource->flag 描述这个设备实体的一些共性和特性的标志位;
static struct resource xx_dm9k_resource[] = {
[0] = {
.strat = NGCS2, //MA2 = 0.传输地址时使用这个地址
.end = NGCS2 + 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = NGCS2 + 4, //MA2 = 1.传输数据时使用这个地址
.end = NGCS2 + 4 + 1,
.flags = IORESOURCE_MEM,
},
[2] = {
.start = ENT14, //中断号
.end = ENT14,
.flags = IORESOURCE_IRQ,
}
};
static struct dm9000_plat_data xx_dm9k_platdata = {
.flags = DM9000_PLATF_16BITONLY,
};
static struct platform_device xx_dm9k_device = {
.name = "DM9000",
.id = 0,
.num_resource = ARRAY_SIZE(xx_dm9k_resource),
.resource = xx_dm9k_resource,
.dev = {
.platform_data = &xx_dm9k_platdata,
}
};
在 linux2.6.17/drivers/net/dm9000.c添加注册platform设备:static int __init
dm9000_init(void)
{
BSP_WR32((GPIO2_BASE|GPIO_IPOL), (1<<8));
printk(KERN_INFO "%s Ethernet Driver\n", CARDNAME);
platform_driver_register(&dm9000_driver); /* search board and register */
platform_device_register(&nl_dm9k_device); //注册设备
return 0;
}
static void __exit
dm9000_cleanup(void)
{
platform_driver_unregister(&dm9000_driver); //注销驱动
platform_device_unregister(&nl_dm9k_device); //注销设备
}
上一篇:linux2.6.28-tty设备驱动学习(二)
下一篇:字符设备的信号量,阻塞和非阻塞,poll实现
- VMware下CentOS 6编译内核...
- Linux设备驱动程序
- 2014商派首届电商技术大会【门...
- “放弃旧的”【管式螺旋输送机...
- 【详解】如何编写Linux下Nand ...
- linux 常见服务端口
- 【ROOTFS搭建】busybox的httpd...
- xmanager 2.0 for linux配置
- 什么是shell
- linux socket的bug??
- 初学UNIX环境高级编程的,关于...
- chinaunix博客什么时候可以设...
- 一个访问量较大网站的服务器。...
- 收音机驱动与v4l2架构的关系,...
- 如何将linux驱动改为裸机驱动(...
- Linux2.6 DM9000驱动模编译为模块
- Linux2.6 DM9000驱动模编译为模块
- Linux2.6 DM9000驱动模编译为模块
- Linux2.6移植:DM9000驱动
- Linux2.6移植:DM9000驱动 .
- Linux2.6移植:DM9000驱动
- Linux2.6移植:DM9000驱动
- linux2.6下驱动模块编译问题
- Linux2.6 下DM9000网卡驱动
- linux2.6内核下驱动模块的编译方法
- Linux2.6驱动编译分析
- linux2.6驱动编译-常见问题
- 基于linux2.6.30.4内核的DM9000网卡驱动编译成模块成功ping通
- 基于linux2.6.30.4内核的DM9000网卡驱动编译成模块成功ping通
- Linux2.6.34下DM9000网卡驱动移植
- Linux2.6下内核模块编译
- linux2.6内核模块的编译
- 为LWIP移植DM9000驱动
- 读《C缺陷与陷阱》之-函数声明理解
- 2.6内核字符设备驱动程序解析(续)
- shell十三问之exec 跟 source 差在哪? 解析
- linux2.6.28-tty设备驱动学习(一)
- linux2.6.28-tty设备驱动学习(二)
- Linux2.6 DM9000驱动模编译为模块
- 字符设备的信号量,阻塞和非阻塞,poll实现
- 进程间通信--信号量+共享内存
- ps -aux 详解
- 从PC总线到ARM的内部总线
- 控制函数assert.h, setjmp.h和signal.h
- ADS分散加载文件及其应用
- 收藏:让你吃惊的60个绝对得看的常识!!!!
- linux内核可变参数分析