LINUX设备驱动程序(第3版)
小饼仙子
这个作者很懒,什么都没留下…
展开
-
linux 2.6&3.0 内核构造
linux 内核 是针对特定的cpu运行的内核程序。不同的处理器架构意味着不同的指令集。因此,在构造内核时,必须获取针对指定处理器架构的内核版本。不存在一个内核同时兼容多种处理器架构的情况。另外,LINUX设备驱动程序(第3版) 第二章提到linux 2.6内核构造模块时,除了从kernel.org获取“主线”内核并安装到自己的系统中,还必须在自己的系统中配置和构建好自己的“内核树”。所谓内核原创 2013-11-04 11:09:53 · 997 阅读 · 0 评论 -
驱动程序设计开发基本概念和原则
LINUX设备驱动程序(第3版) 第一章介绍了驱动开发和设计的基本概念与原则。主要内容为: 1.驱动程序旨在提供机制而非策略。策略是上层应用软件提供的。驱动程序提供机制意味着提供硬件可以实现的功能。所以,编写访问硬件的内核代码时不要给用户强加任何特定的策略。 2.驱动程序开发的特征在于:异步操作和同步操作都支持,允许被多次打开,充分利用硬件特性,不具备用来简化任务或提供共与策略相关原创 2013-11-04 11:21:45 · 1246 阅读 · 0 评论 -
内核空间&用户空间
模块运行在内核空间,应用程序运行在用户空间 在UNIX下,内核运行在最高级别,CPU允许其进行任何操作;应用程序运行在用户空间,级别比较低,cpu控制其对硬件的直接访问以及对内存的非授权访问。 用户空间与内核空间拥有各自的内存映射,即地址空间。 模块是内核功能的延伸,运行在内核空间。驱动完成功能:1,作为系统调用的一部分被执行;2,其他函数负责中断处理。原创 2013-11-04 16:19:13 · 585 阅读 · 0 评论 -
模块构造的编译和装载
模块名称:module.komakefile1:makefile2:原创 2013-11-04 17:55:47 · 587 阅读 · 0 评论 -
spin_lock_irqsave和spin_lock
驱动开发中为了进行竞态保护,对于全局变量的访问提供自旋锁功能。在中断处理中,使用时,对于自旋锁采用spin_lock_irqsave 进行加锁(1.保存中断状态,关闭本地终端,获取锁)。访问结束通过 spin_unlock_irqrestore进行释放。如果本地中断已经开启,那么不需要保存中断状态,可调用spin_lock_irq 和 spin_unlock_irq进行保护原创 2013-11-11 13:43:00 · 945 阅读 · 0 评论 -
第七章时间,延迟和延缓操作
内核通过定时器中断来跟踪时间变化。时钟中断的间隔为HZ。unsigend long jiffies (只读)记录了自最近一次系统启动之后的时钟滴答数。大约五十天左右会出现一次溢出,需要在使用时进行处理。jiffies 表示未来N秒后的时间: jiffies + N × HZ 转换为毫秒值:( jiffies + N * HZ ) * 1000时间戳计数器:TSC 随时钟周期不断原创 2013-11-13 14:59:20 · 866 阅读 · 0 评论 -
MII
1.概念MAC和PHY之间的接口协议,用于定义双方的交互方式。其中MAC是媒体介入控制器(数据链路层),PHY则是物理接口收发器(物理层)。MII 是 IEEE-802.3定义的以太网行业标准。它包括一个数据接口以及一个MAC和PHY之间的管理接口。数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。管理接口是个双原创 2013-11-14 18:24:56 · 968 阅读 · 0 评论