我试图为手臂交叉编译zaptel驱动程序
我正在关注这个项目http://svn.astfin.org/software/baps/trunk,为blackfin arch建立zaptel驱动程序。
在构建uClinux,oslec和修补zaptel.patch以构建额外的模块wcfxs, sport_interface, bfsi
而不是原始模块之后,这个命令可以实现神奇的
make -C /home/working/BAPS/uClinux-dist/linux-2.6.x/ SUBDIRS=/home/working/BAPS/zaptel-1.4.3/ modules V=1 ARCH=blackfin CROSS_COMPILE=bfin-uclinux- EXTRA_CFLAGS="-DCONFIG_4FX_SPI_INTERFACE"
构建过程成功运行,bfsi.ko, sport_interface.ko, wcfxs.ko, zaptel.ko
生成并且对我的astfin板有用(以及前一过程中的oslec.ko)。
bfsi.ko: ELF 32-bit LSB relocatable, Analog Devices Blackfin, version 1 (SYSV), not stripped
sport_interface.ko: ELF 32-bit LSB relocatable, Analog Devices Blackfin, version 1 (SYSV), not stripped
wcfxs.ko: ELF 32-bit LSB relocatable, Analog Devices Blackfin, version 1 (SYSV), not stripped
zaptel.ko: ELF 32-bit LSB relocatable, Analog Devices Blackfin, version 1 (SYSV), not stripped
那么我想用我的扶手板(尤其是我的Beaglebone Black)做同样的事情
首先,我完全构建了BBB Kernel,然后是oslec。我知道oslec也是一个内核模块,但我很容易构建它。
make -C [my bbb kernel] ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- EXTRA_CFLAGS="-I/home/working/AAPS/oslec/kernel -I/home/working/AAPS/oslec/spandsp-0.0.3/src/spandsp" SUBDIRS=/home/working/AAPS/oslec/kernel modules
我有oslec.ko,看起来还不错。
kernel/oslec.ko: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped
但我陷入了最后一步 - 建立zaptel
这是我的make命令
make -C /home/working/AAPS/dl/buildroot-bbb/output/build/linux-3.8.13/\
SUBDIRS=/home/working/AAPS/zaptel-1.4.3/ modules V=1 ARCH=arm\
CROSS_COMPILE=arm-linux-gnueabihf- KBUILD_NOPEDANTIC=1\
EXTRA_CFLAGS="-DCONFIG_4FX_SPORT_INTERFACE -I/home/working/AAPS/zaptel-1.4.3/staging/usr/include "
有错误:
include/linux/wait.h:159:47: error: ‘TASK_INTERRUPTIBLE’ undeclared (first use in this function)
#define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
我发现常量TASK_INTERRUPTIBLE是在$(my_bbb_kernel)/include/linux/sched.h
和$(blackfin_uclinux_kernel)/linux-2.6.x/include/linux/sched.h
中定义的,但是一个工作(uclinux用于blackfin)而一个不工作(我的bbb内核)。我不知道他们怎么能包括因为我对linux内核模块的开发不太熟悉
因此,如果有人在这种情况下有任何想法,请给我一些指示或解释
最诚挚的问候
Loi Dang