修改了Kconfig 和Makefile文件,要编译musb module模块,但编译的结果是:系统提示这样的错误:
drivers/usb/musb/musb_io.h: In function ‘readsl’:
drivers/usb/musb/musb_io.h:44: error: implicit declaration of function ‘insl’
drivers/usb/musb/musb_io.h: In function ‘readsw’:
drivers/usb/musb/musb_io.h:46: error: implicit declaration of function ‘insw’
drivers/usb/musb/musb_io.h: In function ‘readsb’:
drivers/usb/musb/musb_io.h:48: error: implicit declaration of function ‘insb’
drivers/usb/musb/musb_io.h: In function ‘writesl’:
drivers/usb/musb/musb_io.h:51: error: implicit declaration of function ‘outsl’
drivers/usb/musb/musb_io.h: In function ‘writesw’:
drivers/usb/musb/musb_io.h:53: error: implicit declaration of function ‘outsw’
drivers/usb/musb/musb_io.h: In function ‘writesb’:
drivers/usb/musb/musb_io.h:55: error: implicit declaration of function ‘outsb’
google了半天也没有解决问题,没办法了,打开musb_io.h看个究竟吧。
看的结果是:在readsl()函数中调用里insl(),但musb_io.h中没有insl()函数的定义,那就去它包含的头文件中看看。其中include
#define __raw_readsb(p, d, l) do{*(int *)0 = 0;}while(0)
#define __raw_readsw(p, d, l) do{*(int *)0 = 0;}while(0)
#define __raw_readsl(p, d, l) do{*(int *)0 = 0;}while(0)
#define __raw_writesb(p, d, l) do{*(int *)0 = 0;}while(0)
#define __raw_writesw(p, d, l) do{*(int *)0 = 0;}while(0)
#define __raw_writesl(p, d, l) do{*(int *)0 = 0;}while(0)
#define __io(p) 0
#define outsb(p, d, l) __raw_writesb(__io(p), d, 1)
#define outsw(p, d, l) __raw_writesw(__io(p), d, 1)
#define outsl(p, d, l) __raw_writesl(__io(p), d, 1)
#define insb(p, d, l) __raw_readsb(__io(p), d, 1)
#define insw(p, d, l) __raw_readsw(__io(p), d, 1)
#define insl(p, d, l) __raw_readsl(__io(p), d, 1)
保存,再次make modules。OK编译过了,也生成了musb下的.o文件,但不知道是不是我想要的。因为修改Kconfig,Makefile都是瞎摸索的,也不知道修改的是否有道理,是否对,就一个目的,能musb驱动在可配置选项中,且能编译过。
到目前为止,好像目的达到了,但心里没底呀,下步该怎么做呢?