使用新的驱动程序模块交叉编译Linux Arm核心

我正在尝试在我的arch linux arm机器上包含一个驱动程序。 我尝试使用这些步骤来包含驱动程序模块,但我的交叉编译的内核与添加的驱动程序不加载。

1) Include the driver I want to add by making it have < M > beside it's name in make ARCH=arm menuconfig 2) run: make ARCH=arm CROSS_COMPILE=/home/z3/bin/arm- (the path for my cross-compiling toolchain) 3) run: make ARCH=arm CROSS_COMPILE=/home/z3/bin/arm- modules 4) run: make ARCH=arm CROSS_COMPILE=/home/z3/bin/arm- install 5) run: make ARCH=arm CROSS_COMPILE=/home/z3/bin/arm- modules_install 6) copy my uImage from: arch/arm/boot to my boot location: /tftpboot/ 

然后当我的embedded式Linuxarm试图加载内核uImage,它挂起:编辑:改变入口点地址80008000,所以现在它挂起:

 Filename '/tftpboot/uImage'. Load address: 0x81800000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# #################################### done 

字节传输= 3174848(3071c0hex)

从旧版映像引导内核81800000 …

图像名称:2.6.35-ModifiedEntry
图像types:ARM Linux内核映像(未压缩)
数据大小:3174784字节= 3 MiB
加载地址:80008000
入口点:80008000
validation校验和…确定
加载内核映像…好的

启动内核…

我交叉编译我的内核错了吗? 它无法加载uImage。 我所要做的就是用一个新包含的驱动程序(包含在make menuconfig的configuration文件中)为linux arm机器交叉编译我的内核。 我是否错过了其他步骤?

在内核构建过程中你犯了两个错误。

1) make menuconfig之前

你需要有一个.config文件应该在源代码中退出。

你怎么能得到它

1)使ARCH = arm board_defconfig

检查/ arch / arm / configs中的默认配置

例如使ARCH = arm versatile_defconfig

这会将default配置写入.config

2)如果你不知道你的默认配置,你可以在目标板文件系统中得到它。

它会在/proc/config.gz中复制到你的主机上解压,并作为顶级源代码中的.config复制。 或者它可能出现在/boot/config.xxx中

如果不按照上面的步骤使ARCH = arm menuconfig这将复制主机的x86配置文件从/ boot / config-xxx这将是错误的配置文件

一旦上面的步骤完成,那么下一步使ARCH = arm menuconfig在这里启用你的驱动程序。

第二个错误是make ARCH=arm CROSS_COMPILE=/home/z3/bin/arm- modules_install

这将在x86主机的/ lib / modules中安装模块。

所以按照下面的一个

make ARCH=arm CROSS_COMPILE=(path to arm) uImage modules

创建一个目录来安装您的动态可加载模块

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules_install INSTALL_MOD_PATH=<path to install modules>

那么你需要将模块复制到你的目标。

有关更多详细信息,您可以运行Qemu后参考这个只是黑色的屏幕