菜鸟学习OK6410 之遇到的问题 #include添加头文件提示不存在

error: asm/arch/regs-gpio.h: No such file or directory 此类问题的解决办法

注:基于linux2.6.31内核的问题解决方案,其思路适用于其他内核版本。

不少嵌入式Button或是Led驱动程序的头文件都包含<asm/hardware.h>,<asm/arch/regs-gpio.h>和<asm/arch/regs-irq.h>等这几个头文件。在这这些头文件中定义了硬件相关的资源描述,如I/O,中断的宏定义。当我们直接include上述头文件时,就会出现如下的错误。
error: asm/hardware.h: No such file or directory
error: asm/arch/regs-gpio.h: No such file or directory
error: asm/arch/regs-irq.h: No such file or directory

找不到头文件的原因,确实是相关文件夹下没有这些.h的头文件。关于如何确定头文件的位置,可以看下我转载的资料:ARM-Linux驱动相关头文件知识点。你可以先找一下,你include的头文件在不在。

其实,这些头文件只是换了存放的地方。如果你的开发板基于S3C2410,你可以在linux-2.6.31\arch\arm\mach-s3c2410\include\mach文件夹下找到这三个头文件。如果是基于S3C6410,就在linux-2.6.31\arch\arm\mach-s3c6400\include\mach下找找看。   (注: 这里的linux-2.6.31要对应自己的目录文件名,像我就是基于开发板OK6410的,我的文件名就不是linux-2.6.31,而是linux-ok6410。)

根据ARM-Linux驱动相关头文件知识点里头文件引用的规则,修改一下我们要引用的头文件如下:
#include <mach/hardware.h>
#include <mach/regs-gpio.h>
#include <mach/regs-irq.h>

除上述的几个头文件,如果引用的其他的头文件也出现此类错误,调试的思路是相同的。这个问题我好久前就遇到了。当时没放在心上,就在自己的驱动中补上了缺少的宏定义。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章