摘要: 输入子系统核心架构 1.设备驱动层 2.核心层 3.事件层 4.用户空间 输入设备注册 1.拿设备ID去匹配handler的ID,找到对应的handler(事件处理者) 最常用的handler是evdev_handler,相应的匹配表在evdev_ids中。如果设备的ID在事件驱动的ID表中,那么两 阅读全文
posted @ 2016-03-12 20:10 盛夏夜 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 为什么需要输入子系统 在Linux系统中按键属于输入型设备,同样的把按键换成鼠标、键盘等输入型设备,它们的注册和操作方法都是类似的,不同的是在中断处理中对硬件的操作。输入子系统就是把和输入设备有共性的部分提取出来,而把不同的部分让程序员来实现。 输入子系统模型 1.input device driv 阅读全文
posted @ 2016-03-12 20:07 盛夏夜 阅读(480) 评论(0) 推荐(0) 编辑
摘要: DM9000数据发送 DM9000数据发送函数是在/drivers/net/dm9000.c中的dm9000_start_xmit函数 static int dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev){ //发送数据长 阅读全文
posted @ 2016-03-12 20:05 盛夏夜 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 网卡初始化 1.分配描述结构,alloc_etherdev 2.获取平台资源,platform_get_resource 2.1.在s3c_dm9k_resource中有相关的资源 2.2.add地址由CS4和ADD2决定,是20000000 2.3.dat地址由CS4和ADD2决定,是200000 阅读全文
posted @ 2016-03-12 11:12 盛夏夜 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 网络发包模型 1.选择路由 2.交给邻居子系统(路由中紧挨着发送方的网关)。如果没有邻居信息,那么由Linux中的邻居子系统来建立邻居信息。 发送数据过程 //系统调用层和协议无关层 1.发送入口sock_aio_write 2.调用do_sock_write 3.调用__sock_sendmsg 阅读全文
posted @ 2016-03-12 09:56 盛夏夜 阅读(320) 评论(0) 推荐(0) 编辑