我正在尝试在我的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
图像类型:ARM Linux内核映像(未压缩)
数据大小:3174784字节= 3 MiB
载入地址:80008000
入口点:80008000
验证校验和......好的
加载内核映像... OK
好的
启动内核......
我是否错误地交叉编译我的内核?它无法加载uImage。我想要做的就是使用新包含的驱动程序(包含在make menuconfig的配置中)为linux arm机器交叉编译我的内核。我错过了任何额外的步骤吗?
答案 0 :(得分:2)
你在内核构建过程中犯了两个错误。
1)在make menuconfig
之前
您需要在源代码中退出.config
文件。
你怎么能得到它
1)制作ARCH = arm board_defconfig
检查/ arch / arm / configs中的默认配置
例如make ARCH = arm versatile_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=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>
然后您需要将模块复制到目标。
有关详细信息,请参阅此Just black screen after running Qemu