huluwa
1
参考下文搭建起aosp14的环境,kernel选择6.1,
VIM3/VIM3L AOSP Android 14.0 Upside Down Cake - Announcements - Khadas Community
在kernel 中新加驱动编译ko,在Android自动中insmod会报错
错误log如下
[ 2963.428783][ T2964] module bcmdhd: unsupported RELA relocation: 311
insmod: failed to load /vendor/lib/modules/bcmdhd.ko: Exec format error
请问这是什么原因导致?
rebuild kernel也是按照下面方式执行,然后rebuild Android,重新烧录img过程
cd ~/src/khadas-kernel/
export DIST_DIR=~/src/khadas-aosp-14/device/amlogic/yukawa-kernel/6.1
tools/bazel run //yukawa-device:yukawa_dist – --dist_dir=$DIST_DIR
hi @huluwa
(1)KO是 整编内核得到的 还是 单编得到的 ?
(2) 使用直接编译进内核的方式,新加的驱动可以正常吗?
huluwa
4
系统开机init自动安装,还有adb shell 安装都有测试,一样的错误提示
从报错上看是ko文件并不是适合我们平台运行的文件。
可以使用file + XXX.ko 查看一下。 确认一下ko是否为可在我们平台运行的文件吗?
huluwa
7
如下
vim3:/vendor/lib/modules # uname -a
Linux localhost 6.1.25-android14-11-maybe-dirty #1 SMP PREEMPT Thu Jan 1 00:00:00 UTC 1970 aarch64 Toybox
modinfo信息
vermagic: 6.1.25-android14-11-maybe-dirty SMP preempt mod_unload modversions aarch64
huluwa
8
补充下,kernel原本的代码重新编译出来的ko是正常可用的,就是我单独加的这个模块驱动不可用.怀疑是不是哪里配置不对才引起的,不过没有什么方向.看网上解释,试过也没有生效
compile kpm using ndk and solve errors/kpm使用ndk编译的方法和错误解决 · Issue #27 · bmax121/KernelPatch · GitHub
error1:unsupported RELA relocation: 311
Solution:Add cflag: -fno-PIC
使用命令是是
file bcmdhd.ko
通过这个命令可以查看出来编译的ko是使用那个工具链编译的。
你可以通过file 原本内核的ko 和 file bcmdhd.ko 进行对比。
从上面报错来看,是工具链的问题。
huluwa
10
工具链没有问题吧,我是放到kernel里编译的,如下两个ko上面是已经安装进去的,下面就是手动添加的显示一样的
vim3:/vendor/lib/modules # file btqca.ko
btqca.ko: ELF relocatable, 64-bit LSB arm64, static, BuildID=b1eef79ccea843fe9a85538c23cf57bb56e9f2ad, not stripped
vim3:/vendor/lib/modules # file bcmdhd.ko
bcmdhd.ko: ELF relocatable, 64-bit LSB arm64, static, BuildID=fca8a199d4f385686788e6b457f7ed2d71692fb3, not stripped
@huluwa
下面是把驱动放在内核代码里编译并且可以加载安装的例子。你可以参考一下。
驱动可被加载安装注意的事项:
(1)编译工具链是否用对
(2)不放到内核里编译。检查编译时候指定的内核源代码