菜鳥學習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>

除上述的幾個頭文件,如果引用的其他的頭文件也出現此類錯誤,調試的思路是相同的。這個問題我好久前就遇到了。當時沒放在心上,就在自己的驅動中補上了缺少的宏定義。

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