免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1583 | 回复: 3
打印 上一主题 下一主题

有关驱动编程的头文件的疑惑??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-06 14:15 |只看该作者 |倒序浏览
在Linux下编写普通的应用程序,头文件都是在 $(LINUX_HOME)/include下吧.
而驱动程序中用到的那些头文件具体是放在哪里的呢?
是否存在某些头文件既可用于普通应用编程,也可用于模块编程?
相对某一特定平台,那些CPU内的寄存器以及板级寄存器是定义在哪个头文件中的?

以上这个问题恳请各位帮小弟解释一下
谢谢!!

论坛徽章:
0
2 [报告]
发表于 2006-04-06 14:46 |只看该作者
编写所谓的普通应用程序所需的头文件在: /usr/include下,
驱动程序所需的头文件一般在 /lib/modules/`uname -r`/build,通过链接到一个具体的位置
其实驱动与普通程序的头文件一般来说是一致的,但在kernel 2.6之后,内核对于所要加载的驱动有着更高的要求,需要与具体的内核版本绑定,所以在编译是需要指定内核头文件的具体位置便是出于这个原因
至于你所提到的平台相关的一些头文件在内核源码中/include/asm文件,它会链接到一种指定硬件架构上,具体链接到哪种架构取决于编译内核源码是所加的参数“ARCH=”的具体值
剩下的你自己慢慢体会吧!

论坛徽章:
0
3 [报告]
发表于 2006-04-06 14:48 |只看该作者
>Linux下编写普通的应用程序,头文件都是在 $(LINUX_HOME)/include下吧.
>而驱动程序中用到的那些头文件具体是放在哪里的呢?
颠倒了, 前者是内核/驱动程序所用头文件的目录; 应用程序呢, 用gcc -###查看

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

>相对某一特定平台,那些CPU内的寄存器以及板级寄存器是定义在哪个头文件中的?
寄存器不会出现在C的头文件中, 它只由as程序在产生二进制代码时使用。

论坛徽章:
0
4 [报告]
发表于 2006-04-09 22:08 |只看该作者
非常感谢两位的解答!!!
我在$(LINUX_HOME)/include/asm-arm/arch-pxa目录下发现了CPU寄存器和板级寄存器的定义
但是我发现在驱动程序中虽然用到了这些所定义的寄存器,然而并没有include包含这些寄存器定义的头文件!
那这些头文件是怎样被包含进来的呢?!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP