gpt4 book ai didi

Linux:以独立方式编译内核设备驱动程序

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:14 25 4
gpt4 key购买 nike

我正在为 ARM 板编译 Linux。我需要对内核存储库中存在的现有驱动程序代码进行一些自定义更改,然后重新加载驱动程序。

我希望在完成 make 后在驱动程序目录中找到一个“.ko”文件,但不存在这样的文件。显然 uImage/设备 TreeMap 像编译不能那样工作。

是否需要为独立设备驱动程序编译编写自己的 Makefile?

这可能是个愚蠢的问题,但抱歉我对内核/设备驱动程序还很陌生。

编辑:我遵循了此处概述的过程:http://odroid.com/dokuwiki/doku.php?id=en:c1_building_kernel在 git checkout 和安装交叉编译器(arm-linux-gnueabihf-gcc 4.9.2)之后,我发出基本的 make 命令

$ make odroidc_defconfig
$ make -j4
$ make -j4 modules
$ make uImage

所有步骤都成功了。最后几行日志看起来像

KSYM    .tmp_kallsyms1.o
KSYM .tmp_kallsyms2.o
LD vmlinux
SORTEX vmlinux
SYSMAP System.map
OBJCOPY arch/arm/boot/ccImage
Kernel: arch/arm/boot/ccImage is ready
Image arch/arm/boot/ccImage.lzo is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-3.10.72
Created: Sat Mar 28 22:44:45 2015
Image Type: ARM Linux Kernel Image (lzo compressed)
Data Size: 5459649 Bytes = 5331.69 kB = 5.21 MB
Load Address: 00208000
Entry Point: 00208000
Image arch/arm/boot/uImage is ready

编辑 2:驱动程序代码的路径 https://github.com/hardkernel/linux/tree/odroidc-3.10.y/drivers/amlogic/efuse

最佳答案

检查你的 Makefile

#                             
# Makefile for eFuse.
#

obj-$(CONFIG_EFUSE) += efuse_bch_8.o efuse_version.o efuse_hw.o efuse.o

我们了解到,代码可以构建为可加载模块,也可以永久链接到内核本身。

从我们发现的说明中提到的分支 odroidc-3.10.y-android 检查 odroidc_defconfig

#
# EFUSE Support
#
CONFIG_EFUSE=y

带有“y”的表示代码要链接到驱动程序中。如果它改为说“m”,它将被构建为一个模块。

您可以在内核配置中更改它,但如果在需要模块之前没有设置加载模块,它也可能会导致问题。

很可能简单地安装新构建的内核以及内部已经链接的代码(即,忘记模块的想法)就可以了。

关于Linux:以独立方式编译内核设备驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29318906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com