LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1123|回复: 2

请教几个问题

[复制链接]
发表于 2007-7-4 17:34:32 | 显示全部楼层 |阅读模式
各位大仙好  小弟想请教一下  

1.   底层设备驱动是否是使用linux内核提供的二百五十多个系统调用来写的?

2.   底层驱动和应用程序区别在哪里?(表笑我  我知道是运行在不同空间 但是我明明看见usb摄像头驱动里面使用了printf函数而非printk)

3.   类似fork这样的系统调用和内核函数什么关系?  和_syscall()又是什么关系? 和API之间有没有什么关系?

4.   哪位大仙能慷慨赐教一个已经完成的驱动程序?让小弟学习一哈!  

小弟再次万分感谢!
发表于 2007-7-5 10:02:51 | 显示全部楼层
各位大仙好  小弟想请教一下  

>>1.   底层设备驱动是否是使用linux内核提供的二百五十多个系统调用来写的?

不是的. 而且感觉说反了. 应该是系统调用是为应用程序提供一个接口, 让应用程序来调用底层的驱动.

>>2.   底层驱动和应用程序区别在哪里?(表笑我  我知道是运行在不同空间 但是我明明看见usb摄像头驱动里面使用了printf函数而非printk)

一个在内核态, 一个在用户态. 你看到的可能是调用驱动程序的应用程序. printf是C的库函数.

>>3.   类似fork这样的系统调用和内核函数什么关系?  和_syscall()又是什么关系? 和API之间有没有什么关系?

fork是系统调用, 具体的关系在<Linux kernel development>一书中的系统调用一节讲得很清楚. 你去看看, 如果有不懂的再提出来.

>>4.   哪位大仙能慷慨赐教一个已经完成的驱动程序?让小弟学习一哈!  

小弟再次万分感谢!

一个简单的字符驱动程序网上很多.  在本版中也有, 你找找看!
回复 支持 反对

使用道具 举报

发表于 2007-8-2 22:42:39 | 显示全部楼层

对驱动的理解希望对你有帮助

驱动程序主要是完成器件和操作系统的适配。对于具体的一个器件。在内部硬件实现了一部分处理逻辑。对于软件提供了寄存器和中断控制线,这些就是软硬件的接口. 驱动程序通过寄存器完成对芯片的控制和交互. 同时通过中断来得到器件的主动响应. 由于一些更复杂的算法逻辑不适合通过硬件完成. 所以驱动中也完成一些主要算法实现. 这样就可以借助宿主机的CPU来完成部分算法逻辑. 减少硬件的成本. 这也就是一些芯片厂商不公布一些驱动源码的原因.

对于驱动程序设计通常分为两个部分:一个是通用处理部分,主要完成某一类硬件的通用处理逻辑. 这部分是和具体器件无关的部分.通常也完成和操作系统的相关接口,可以说是上层的接口。另一部分就是和具体器件型号相关的处理。这部分依赖于具体型号的器件。也可以说是下层的接口。这部分通常包括两部分处理。具体寄存器的配置和中断函数注册和处理。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表