用新的驱动器模块交叉编译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/

然后,当我嵌入的Linux手臂试图加载内核时,它会挂着:编辑:将入口点地址更改为80008000,因此现在挂着:

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

传输= 3174848(3071C0 HEX)

从传统图像启动内核,位于81800000 ...

图像名称:2.6.35-ModifiedEntry
图像类型:ARM Linux内核图像(未压缩)
数据大小:3174784字节= 3 MIB
加载地址:80008000
入口点:80008000
验证校验和...好
加载内核图像...好

启动内核...

我是在交叉编译我的内核错误吗?它无法加载Uimage。我要做的就是将Linux Arm机器的内核与新包含的驱动程序(包括Make Menuconfig的配置中)交叉编译。我是否错过了其他步骤?

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

1)在make menuconfig

之前

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

您如何获得它

1)MAKE ARCH = ARM BOOLD_DEFCONFIG

检查您的默认配置在/Arch/Arm/Arm/Configs

例如,make Arch = ARM VELSATILE_DEFCONFIG

这将将default配置写入.config

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

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

如果不遵循上面的步骤make make acr = arm menuconfig,则将从/boot/config-x.x.x复制主机x86配置文件,该文件将是错误的配置文件

完成一后,下一步使Arch = Arm Menuconfig在这里启用您的驾驶员。

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

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

所以请在一个下面

下面

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

之后将其引用此黑屏。

最新更新