自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

临时工 Temporary's Space

有脾气也得没脾气!

  • 博客(19)
  • 收藏
  • 关注

转载 Linux设备驱动程序学习(15)

热插拔有 2 个不同角度来看待热插拔:   从内核角度看,热插拔是在硬件、内核和内核驱动之间的交互。   从用户角度看,热插拔是内核和用户空间之间,通过调用用户空间程序(如hotplug、udev 和 mdev)的交互。 当需要通知用户内核发生了某种热插拔事件时,内核才调用这个用户空间程序。现在的计算机系统,要求 Linux 内核能够在硬件从系统中增删时,可靠稳定地运行。这就对设备驱动作者增加了压

2008-01-14 12:04:00 4787

转载 Linux设备驱动程序学习(14)

通过一个设备在内核中生命周期的各个阶段,可以更好地理解Linux设备模型。我将通过分析lddbus和sculld的源码来了解Linux设备模型中各环节的整合。《LDD3》中的(PCI总线)各环节的整合这部分内容作为参考资料,因为嵌入式Linux比较少用到PCI总线。看这部分内容一定要先熟悉一下 lddbus 和 sculld 的源码。  一、lddbus模块:添加总线、导出总线设备和设备驱

2008-01-14 11:59:00 4797

转载 Linux设备驱动程序学习(13)

总线总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟"platform"总线。总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。在 Linux 设备模型中, 总线由 bus_type 结构表示, 定义在 : struct bus_t

2008-01-14 11:57:00 4710 1

转载 Linux设备驱动程序学习(12)

-Linux设备模型(底层原理简介)  以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但是我个人认为:对于一个嵌入式Linux的底层程序员来说,这部分内容是很重要的。以我学习的ARM9为例,有很多总线(如SPI、IIC、IIS等等)在Linux下已经被编写成了子系统,无需自己写驱动;而这些总线又不像PCI、USB等在《LD

2008-01-14 11:55:00 11629

转载 Linux设备驱动程序学习(3-补)

在学习到第十章 中断处理 时,其中的中断驱动的I/O需要使用缓冲区,我觉得与其自己实现一个缓冲区,不如利用内核已经写好的fifo。内核里有一个通用的循环缓冲区的实现在 。使用的数据结构如下: struct kfifo {    unsigned char *buffer;    /* 使用的缓冲区头指针

2008-01-14 11:53:00 4373

转载 Linux设备驱动程序学习(10)

度量时间差 时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据 HZ 值来设定,HZ 是一个体系依赖的值,在 中定义或该文件包含的某个子平台相关文件中。作为通用的规则,即便如果知道 HZ 的值,在编程时应当不依赖这个特定值,而始终使用HZ。对于当前版本,我们应完全信任内核开发者,他们已经选择了最适合的HZ值,最好保持 HZ 的默认值。  对用户空间,内核HZ几乎完全隐藏,用户

2008-01-14 11:51:00 4948

转载 Linux设备驱动程序学习(9)-与硬件通信

在学习有关I/O总线的内容时,最好先看看相关的知识:从PC总线到ARM的内部总线  I/O 端口和 I/O 内存每种外设都是通过读写寄存器来进行控制。 I/O 寄存器和常规内存在进入这部分学习的时候,首先要理解一个概念:side effect,书中译为边际效应,第二版译为副作用。我觉得不管它是怎么被翻译的,都不可能精准表达原作者的意思,所以我个人认为记住side effect就

2008-01-14 11:49:00 5486

转载 Linux设备驱动程序学习(8)-分配内存

内核为设备驱动提供了一个统一的内存管理接口,所以模块无需涉及分段和分页等问题。 我已经在第一个scull模块中使用了 kmalloc 和 kfree 来分配和释放内存空间。 kmalloc 函数内幕kmalloc 是一个功能强大且高速(除非被阻塞)的工具,所分配到的内存在物理内存中连续且保持原有的数据(不清零)。原型:

2008-01-14 11:47:00 4633

转载 Linux设备驱动程序学习(7)-内核的数据类型

由于前面的学习中有用到 第十一章 内核数据结构类型 的知识,所以我先看了。要点如下: 将linux 移植到新的体系结构时,开发者遇到的若干问题都与不正确的数据类型有关。坚持使用严格的数据类型和使用 -Wall -Wstrict-prototypes 进行编译可能避免大部分的 bug。内核数据使用的数据类型主要分为 3 个类型: 标准 C 语言类型、确定大小的类型和特定内核对象的类型。

2008-01-14 11:46:00 4521

转载 Linux设备驱动程序学习(6)

提供访问控制对于一个设备节点来的可靠性来说有时是至关重要的。这部分的内容只是在open和release方法上做些修改,增加一些检查机制既可。 独享设备最生硬的访问控制方式是只允许一个设备一次被一个进程打开(独享),这是一个设备驱动最简单的访问控制。实现十分简单,具体的代码看实验源码吧!模块程序链接:scullsingle.tar.gz模块测试程序链接:scullsingle-test.

2008-01-14 11:43:00 4536

转载 Linux设备驱动程序学习(5)

这一部分主要讨论:如果驱动程序无法立即满足请求,该如何响应?(65865346)  一、休眠进程被置为休眠,意味着它被标识为处于一个特殊的状态并且从调度器的运行队列中移走。这个进程将不被在任何 CPU 上调度,即将不会运行。 直到发生某些事情改变了那个状态。安全地进入休眠的两条规则:(1) 永远不要在原子上下文中进入休眠,即当驱动在持有一个自旋锁、seqlock或者 RCU

2008-01-14 11:41:00 4991

转载 Linux设备驱动程序学习(4)

一、ioctl大部分设备除了读写能力,还可进行超出简单的数据传输之外的操作,所以设备驱动也必须具备进行各种硬件控制操作的能力. 这些操作常常通过 ioctl 方法来支持,它有和用户空间版本不同的原型: int (*ioctl) (struct inode *inode, struct file *filp

2008-01-14 11:38:00 2117

转载 Linux设备驱动程序学习(3)-并发和竞态

一、并发及其管理竞态通常是作为对资源的共享访问结果而产生的。在设计自己的驱动程序时,第一个要记住的规则是:只要可能,就应该避免资源的共享。若没有并发访问,就不会有竞态。这种思想的最明显的应用是避免使用全局变量。但是,资源的共享是不可避免的 ,如硬件资源本质上就是共享、指针传递等等。资源共享的硬性规则:(1)在单个执行线程之外共享硬件或软件资源的任何时候,因为另外一个线程可能产生

2008-01-14 11:37:00 1210

转载 Linux设备驱动程序学习(2)-调试技术

一、内核中的调试支持在前面已经建议过:学习编写驱动程序要构建安装自己的内核(标准主线内核)。最重要的原因之一是:内核开发者已经建立了多项用于调试的功能。但是由于这些功能会造成额外的输出,并导致能下降,因此发行版厂商通常会禁止发行版内核中的调试功能。为了实现内核调试,我在内核配置上增加了几项:  Kernel hacking  --->             [*] Magic SysRq k

2008-01-14 11:35:00 1213

转载 Linux设备驱动程序学习(1)

今天进入《Linux设备驱动程序(第3版)》第三章字符设备驱动程序的学习。这一章主要通过介绍字符设备scull(Simple Character Utility for Loading Localities,区域装载的简单字符工具)的驱动程序编写,来学习Linux设备驱动的基本知识。scull可以为真正的设备驱动程序提供样板。一、主设备号和此设备号主设备号表示设备对应的驱动程序;次设备号由内核使用

2008-01-14 11:33:00 1490

转载 Linux设备驱动程序学习(0)

一个学习Linux设备驱动程序都会碰到的第一个例程: #include linux/init.h>#include linux/module.h> MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){    printk(KERN_ALERT

2008-01-14 11:32:00 1546

转载 加密连接工具?

互联网的匿名性保护了用户的信息和网络使用安全,然而我们也常常能在各种媒体里面了解到发生在互联网上的侵犯隐私的恶性事件。当前对用户的隐私威胁最大的不是用于跟踪用户的Cookie、间谍软件和用户浏览行为分析网站,而是我们日常使用的搜索引擎火狐浏览器。大部分搜索引擎在用户使用其服务时,都会记录用户的IP地址、搜索的关键词、从搜索结果中跳转到哪个网站等信息,通过数据挖掘等技术,搜索服务商可以从这些信息中获

2008-01-14 11:26:00 828

转载 Windows xp服务详解?

 A显示名称:Alerter 进程名称:svchost.exe -k LocalService 微软描述:通知所选用户和计算机有关系统管理级警报。如果服务停止,使用管理警报的程序将不会受到它们。如果此服务被禁用,任何直接依赖它的服务都将不能启动。 补充说明:警报器。该服务进程名为Services.exe,一般家用计算机根本不需要传送或接收计算机系统管理来的警示(Admini

2008-01-14 11:07:00 1250

转载 2007年度最有趣味的BT网站大全

2007年呐喊网络推荐了诸多网站,有另类趣味的,实用...等等,我将近一年时间推荐过的网站汇总发布,希望能对各位新老朋友有所帮助。互联网对比传统媒体的信息优势无非是两大类:黄页式的海量归纳和精确搜索的运用。于是前者有了“58同城”和“客齐集”,后者有了“酷讯”和“去哪儿”。 与那些急着翻新Web N.0概念的晚辈相比,它们的业务绝非新锐,但却为网民提供了最实用并体贴的使用功能,从而构筑起互联网应用

2008-01-04 11:00:00 1690

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除