mt内核编译,配置,运行的不成功经历之一

MTK内核源码包中都带与kernel同层的mediatek目录,这里就是MTK的主要目录了。但kernel也有对MTK目录的调用,并且多数调用没用加配置定义。

首先尝试的是mt6732,下的是https://github.com/profglavcho/device_elephone_p6000.git的源码。编译是通过了,但没有这个型号的手机,改到TCL-p500m上做尝试,直接重启了。

MKT在编译linux 内核,android源码时,全部的临时文件,在外部输出目录out中,其中out/target/product/{pojectname}/obj/KERNEL-OBJ/为内核的临时目录。内核的配置文件.config也在这里。

.config是生成代码生成的。perl代码与内核原有命令自动交互的结果。perl代码的依据就是mediatek/config/{platform SOC name}/autoconfig/kconfig/platform .改动这个文件就直接影响内核的配置。但只改这里,用makeMtk编译时会报错。

再需要改的地方:mediatek/config/{project name}/ProjectConfig.mk 这里配的是一些android 最后生成的feature.因为MTK用的是一种用户空间驱动的方法,所以这里也要改才能与内核代码,在配置上对应上。具体的对应关系是一个烦心的事。这两个地方删去了MKT_FM_XX这个对收意机功能定义的代码。对不报错的编译通过,算是精简了代码。

export PATH=/media/ququ/android/other-android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin:$PATH
export CROSS_COMPILE=arm-linux-androideabi-

chmod 755 makeMtk
chmod 755 mk
cd kernel
chmod 755 build.sh
cd mediatek/dct
chmod 755 DrvGen

./makeMtk k01q_e new k

cd kernel
TARGET_PRODUCT=k01q_e make menuconfig
TARGET_PRODUCT=k01q_e make mrproper
TARGET_PRODUCT=k01q_e make oldconfig

./mk mrproper kernel
./makeMtk k01q_e r k

结论:经过多天的配置修改发现,如果不是手机配的源码的话,自改工作量比高通的大的多。因为MTK的硬件配置是在编译时用配置文件给出的,一但与实际硬件不要相符,就可通引起手机重启。而MSM的内核在加载外设验动时,会验证一下,如果与内核的数据不一样就不加载了,有些还会验证一下硬件的实际信息。MTK这方面可能为了加快启动速度,做成硬配置了 ,在编译时就配定了,如果不对,很有可有是内核重启。如果有UART接口的话,还能看看输出的信息,没有的话,这个启动时期时没有ADB接口的,所以对一个成器的,没有串口接出的手机来说,做这个调试,相当难。只能靠猜。或者深度修改源码,先去全部外设驱动,加一个个调试加入。

猜你喜欢

转载自blog.csdn.net/qushaobo/article/details/84980947