查看: 1090|回复: 2

[求助] Android驱动里如何修改Linux 内核的config

[复制链接]
  • TA的每日心情
    难过
    2021-12-8 10:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    12

    主题

    19

    帖子

    0

    注册会员

    Rank: 2

    积分
    104
    最后登录
    2022-1-2
    发表于 2021-11-30 16:53:40 | 显示全部楼层 |阅读模式



    我用的是NXP官方的Android 10.0.0,根据NXP官方的手册编译后下载到IMX8QXP内,Android正常启动
    然后我想试着加入一个自己的hello驱动,我在Android_10.0.0/android_build/vendor/nxp-opensource/kernel_imx/drivers/下加入hello文件夹
    文件夹内加入相关代码  在Android_10.0.0/android_build/vendor/nxp-opensource/kernel_imx/ 目录执行make menuconfig,将hello 设置编译进内核,

    然后在Android_10.0.0/android_build/ 目录执行./imx-make.sh -j4
    然后启动发现没有hello的驱动,经查,是Android_10.0.0/android_build/out/target/product/mek_8q/obj/KERNEL_OBJ/.config 里没有我新加的hello的配置,
    查看编译过程的log如下:
    make: 进入目录“ /home/kostal-aen/8TB/Android_10.0.0/android_build”
    rm -rf /home/kostal-aen/8TB/Android_10.0.0/android_build/out/target/product/mek_8q/obj/UBOOT_OBJ/ubootenv.sh
    mkdir -p /home/kostal-aen/8TB/Android_10.0.0/android_build/out/target/product/mek_8q/obj/UBOOT_COLLECTION
    if [ -n "0" ]; then \
        echo 'export ROLLBACK_INDEX_IN_FIT=0' > /home/kostal-aen/8TB/Android_10.0.0/android_build/out/target/product/mek_8q/obj/UBOOT_OBJ/ubootenv.sh; \
        echo 'export ROLLBACK_INDEX_IN_CONTAINER=0' >> /home/kostal-aen/8TB/Android_10.0.0/android_build/out/target/product/mek_8q/obj/UBOOT_OBJ/ubootenv.s      h; \
    else \
        echo 'export ROLLBACK_INDEX_IN_FIT=' > /home/kostal-aen/8TB/Android_10.0.0/android_build/out/target/product/mek_8q/obj/UBOOT_OBJ/ubootenv.sh; \
        echo 'export ROLLBACK_INDEX_IN_CONTAINER=' >> /home/kostal-aen/8TB/Android_10.0.0/android_build/out/target/product/mek_8q/obj/UBOOT_OBJ/ubootenv.sh      ; \
    fi
    Merging KERNEL config
    rm -f /home/kostal-aen/8TB/Android_10.0.0/android_build/out/target/product/mek_8q/obj/KERNEL_OBJ/.config
    device/fsl/common/tools/mergeconfig.sh vendor/nxp-opensource/kernel_imx /home/kostal-aen/8TB/Android_10.0.0/android_build/out/target/product/mek_8q/obj      /KERNEL_OBJ \
    arm64 vendor/nxp-opensource/kernel_imx/arch/arm64/configs/android_car_defconfig  /home/kostal-aen/8TB/Android_10.0.0/android_build/device/fsl/imx8q/mek      _8q/android_addition_defconfig
    Building arm64 2019.04 U-Boot ...
    Using /home/kostal-aen/8TB/Android_10.0.0/android_build/vendor/nxp-opensource/kernel_imx/arch/arm64/configs/android_car_defconfig as base
    Merging /home/kostal-aen/8TB/Android_10.0.0/android_build/device/fsl/imx8q/mek_8q/android_addition_defconfig
    make[1]: 进入目录“ /home/kostal-aen/8TB/Android_10.0.0/android_build/vendor/nxp-opensource/kernel_imx”
    make[1]: 警告: jobserver 不可用: 正使用 -j1。添加 “ +”  到父 make 的规则。
    make[2]: 进入目录“ /home/kostal-aen/8TB/Android_10.0.0/android_build/out/target/product/mek_8q/obj/KERNEL_OBJ”


    我认为开始编译后使用的是Android_10.0.0/android_build/vendor/nxp-opensource/kernel_imx/arch/arm64/configs/android_car_defconfig和Android_10.0.0/android_build/device/fsl/imx8q/mek_8q/android_addition_defconfig生成的.config  我make menuconfig生成的.config没有参与,所以我的hello 根本没编译进来

    在这种情况下怎么操作才能使我的hello编译进Android_10.0.0/android_build/out/target/product/mek_8q/obj/KERNEL_OBJ/.config 并最终在系统启动后能有hello的驱动,?

    最佳答案

    驱动选择必须手动添加进android_addition_defconfig,才会被编译。
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    19943
    最后登录
    2024-4-19
    发表于 2021-12-1 10:43:13 | 显示全部楼层
    驱动选择必须手动添加进android_addition_defconfig,才会被编译。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-8 10:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    12

    主题

    19

    帖子

    0

    注册会员

    Rank: 2

    积分
    104
    最后登录
    2022-1-2
     楼主| 发表于 2021-12-2 09:45:23 | 显示全部楼层
    本帖最后由 wang12zhe-291294 于 2021-12-2 21:21 编辑
    小恩GG 发表于 2021-12-1 10:43
    驱动选择必须手动添加进android_addition_defconfig,才会被编译。

    我试了一下还是不行呀
    我的步骤:
    1.  在android_build/vendor/nxp-opensource/kernel_imx/drivers/目录下增加hello文件夹,文件夹内包含:
    hello/
    ├── hello.c
    ├── hello.h
    ├── Kconfig
    └── Makefile
    2. 修改android_build/vendor/nxp-opensource/kernel_imx/drivers/Makefile在最后加入obj-$(CONFIG_HELLO)      += hello/
    3. 修改android_build/vendor/nxp-opensource/kernel_imx/drivers/Kconfig,在最后加入source "drivers/hello/Kconfig"

    4. 在android_build$ cat device/fsl/imx8q/mek_8q/android_addition_defconfig文件加入CONFIG_HELLO=m

    5. 编译,
        source build/envsetup.sh
        lunch mek_8q_car-userdebug
        ./imx-make.sh -j4 2>&1 | tee build-log.txt
        由于之前编译过,这次的编译比较快,
    6.编译过程中查看.config
    $ cat out/target/product/mek_8q/obj/KERNEL_OBJ/.config | grep HELLO
    CONFIG_HELLO=m

    7.编译成功后在android_build以及 子目录下都没找到hello.ko文件,
    8.查看 android_build/out/target/product/mek_8q/obj/KERNEL_OBJ/drivers/hello 目录,里边生成了built-in.a  hello.o  modules.order
       这说明hello.c 确实已经编译了,但是为什么没有对应的ko文件?


    我的操作步骤哪里还有问题吗?
    官方有出类似的指导性文档吗?或者哪里有值得借鉴的文档?




    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-20 06:48 , Processed in 0.117880 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表