You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32MP25F7-EV1平台OpenSTDroid下btusb.ko模块insmod兼容问题求助

解决STM32MP25F7-EV1平台btusb.ko模块insmod格式错误问题

核心问题定位

模块vermagic(6.1.78-00024-ge4076639eb90)与设备内核vermagic(6.1.78-00024-gf31b8a21afa8)不匹配,这是导致Exec format error的直接原因——内核模块对内核源码的commit哈希、配置、编译环境有严格依赖,哪怕是同一版本号下的不同commit,模块也无法兼容。

针对性修复步骤

1. 切换到与设备完全一致的内核源码commit

  • 从设备获取完整内核commit信息:执行cat /proc/version,提取输出中commit串(即gf31b8a21afa8对应的完整哈希)。
  • 在内核目录切换到该commit:
    cd <AOSP_ROOT>/kernel/stm32mp2
    git checkout gf31b8a21afa8
    
  • 若本地无该commit,先拉取远程仓库所有内容:
    git fetch origin
    

2. 复用设备内核的.config配置

  • 从设备导出当前内核配置:
    adb pull /proc/config.gz .
    gzip -d config.gz
    mv config <AOSP_ROOT>/kernel/stm32mp2/.config
    
  • 执行命令确保配置与内核commit兼容:
    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- olddefconfig
    
    注:CROSS_COMPILE需使用OpenSTDroid构建系统提供的工具链,路径通常为<AOSP_ROOT>/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-

3. 编译匹配的btusb模块

  • 直接基于匹配的.config和commit编译单个模块,避免全量编译内核引入新差异:
    cd <AOSP_ROOT>/kernel/stm32mp2
    make ARCH=arm64 CROSS_COMPILE=<正确工具链前缀> M=drivers/bluetooth modules
    
  • 检查模块vermagic是否匹配:
    modinfo btusb.ko | grep vermagic
    
    确认输出与设备/proc/version中的vermagic完全一致。

4. 验证模块加载

  • 推送模块到设备:
    adb push btusb.ko /system/lib/modules/
    
  • 加载模块:
    adb shell insmod /system/lib/modules/btusb.ko
    

额外注意事项

  • 确保交叉编译工具链版本与OpenSTDroid构建设备内核时的版本完全一致,工具链差异也可能导致vermagic不匹配或二进制格式问题。
  • 优先使用OpenSTDroid提供的预构建内核源码包(含正确commit和.config),避免自行拉取源码时的commit偏差。

内容的提问来源于stack exchange,提问作者ozi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:57:12