Chinaunix

标题: 有关驱动编程的头文件的疑惑??? [打印本页]

作者: phenix_yw    时间: 2006-04-06 14:15
标题: 有关驱动编程的头文件的疑惑???
在Linux下编写普通的应用程序,头文件都是在 $(LINUX_HOME)/include下吧.
而驱动程序中用到的那些头文件具体是放在哪里的呢?
是否存在某些头文件既可用于普通应用编程,也可用于模块编程?
相对某一特定平台,那些CPU内的寄存器以及板级寄存器是定义在哪个头文件中的?

以上这个问题恳请各位帮小弟解释一下
谢谢!!
作者: dragonII    时间: 2006-04-06 14:46
编写所谓的普通应用程序所需的头文件在: /usr/include下,
驱动程序所需的头文件一般在 /lib/modules/`uname -r`/build,通过链接到一个具体的位置
其实驱动与普通程序的头文件一般来说是一致的,但在kernel 2.6之后,内核对于所要加载的驱动有着更高的要求,需要与具体的内核版本绑定,所以在编译是需要指定内核头文件的具体位置便是出于这个原因
至于你所提到的平台相关的一些头文件在内核源码中/include/asm文件,它会链接到一种指定硬件架构上,具体链接到哪种架构取决于编译内核源码是所加的参数“ARCH=”的具体值
剩下的你自己慢慢体会吧!
作者: albcamus    时间: 2006-04-06 14:48
>Linux下编写普通的应用程序,头文件都是在 $(LINUX_HOME)/include下吧.
>而驱动程序中用到的那些头文件具体是放在哪里的呢?
颠倒了, 前者是内核/驱动程序所用头文件的目录; 应用程序呢, 用gcc -###查看

>是否存在某些头文件既可用于普通应用编程,也可用于模块编程?
应该是没有

>相对某一特定平台,那些CPU内的寄存器以及板级寄存器是定义在哪个头文件中的?
寄存器不会出现在C的头文件中, 它只由as程序在产生二进制代码时使用。
作者: phenix_yw    时间: 2006-04-09 22:08
非常感谢两位的解答!!!
我在$(LINUX_HOME)/include/asm-arm/arch-pxa目录下发现了CPU寄存器和板级寄存器的定义
但是我发现在驱动程序中虽然用到了这些所定义的寄存器,然而并没有include包含这些寄存器定义的头文件!
那这些头文件是怎样被包含进来的呢?!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2