提问者:小点点

交叉编译LinuxArm内核与新的驱动程序模块


我正在尝试包含一个驱动程序以在我的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/

然后当我的嵌入式linux arm尝试加载内核uImage时,它挂在:编辑:将切入点地址更改为80008000,所以现在它挂在:

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

传输的字节数=3174848(3071c0十六进制)

映像名称:2.6.35-ModifiedEntry
映像类型:ARMLinux内核映像(未压缩)
数据大小:3174784 Bytes=3 MiB
加载地址:80008000
入口点:80008000
验证校验和… OK
加载内核映像…OK
OK

启动内核…

我交叉编译内核错了吗?它无法加载uImage。我只想使用新包含的驱动程序(包含在make menuconfig的配置中)交叉编译linux arm机器的内核。我错过了任何额外的步骤吗?


共1个答案

匿名用户

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

1)在制作menuconfig之前

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

你怎么能得到它

1)使ARCH=armboard_defconfig

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

例如make ARCH=armversatile_defconfig

这会将default配置写入. config

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

它将在 /proc/config.gz复制到您的主机解压,并复制为顶部源代码中的. config。或者它可能存在于 /boot/config.x.x.x

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

完成上述步骤后,下一步使ARCH=arm menuconfig在此处启用您的驱动程序。

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

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

所以跟着下面一个

make ARCH=armCROSS_COMPILE=(arm的路径)uImage模块

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

make ARCH=armCROSS_COMPILE=arm-none-linux-gnueabi-modules_installINSTALL_MOD_PATH=

然后您需要将模块复制到您的目标。

更多细节你可以参考这个运行Qemu后只是黑屏