MTK平台定制化

来源:互联网 发布:随身wifi网络不稳定 编辑:程序博客网 时间:2024/06/06 21:40

Settings中相关信息的更改

Settings中About Phone 的Model number等信息的修改:

修改alps\build\tools\buildinfo.sh
-修改echo "ro.build.display.id=$BUILD_DISPLAY_ID", 把 $BUILD_DISPLAY_ID 修改成
其他的名称可改变 Build Nubmer. 注意此时要去除$.
-修改echo "ro.product.model=$PRODUCT_MODEL",    把  $PRODUCT_MODEL 修改成其他的名
称可改变 Model Nubmer. 注意此时要去除$
-修改echo  "ro.build.version.release=2.1" , 中的2.1, 可改变显示的Firmware
version
-但是做上述修改时需要注意,某些属性是跟fingerprint相关的,如果修改了跟
fingerprint相关的属性,那么ro.build.fingerprint也要做出相应修改
 原始状态下ro.product.fingerprint属性设置如下:echo
“ro.build.fingerprint=$BUILD_FINGERPRINT”
 其中$BUILD_FINGERPRINT=$( PRODUCT_BRAND)/$(PRODUCT_NAME)/$(
TARGET_DEVICE):$( PLATFORM_VERSION)/$(BUILD_ID)/$(BUILD_NUMBER):$(
TARGET_BUILD_TYPE)/$( BUILD_VERSION_TAGS)
=>[ro.build.brand]/[ro.product.name]/[ro.product.device]:[ro.build.version
.release]/[ro.build.id]/[ro.build.version.incremental]:[ro.build.type]/[ro
.build.tags]
 所以,如果修改了ro.build.brand、ro.product.name、ro.product.device、
ro.build.version.release、ro.build.id、ro.build.version.incremental、
ro.build.type、 ro.build.tags这些属性
 那么,ro.product.fingerprint的属性设置需要做出修改
 假如贵司修改了”echo ro.product.name=test_name”,那么
ro.product.fingerprint的属性设置需要修改为:
 echo
"ro.build.fingerprint=${PRODUCT_BRAND}/test_name/${TARGET_DEVICE}:${PLATFO
RM_VERSION}/${BUILD_ID}/
${BUILD_NUMBER}:${TARGET_BUILD_TYPE}/${BUILD_VERSION_TAGS}"
Baseband Version 直接写在 modem.img 中,开机后modem 自动推送到AP 端。
Kernel Version 为linux 编译过程中产生, 按照标准的linux格式生成(compile.h), 最后版本信息
写在文件/proc/version 下,所有的版本信息即在该文件的第 一行,然后使用了一个正则表达式过滤了版本信息
中一些字符,参考DeviceInfoSettings 下的getFormattedKernelVersion 方法。

Kernel 定制化

配置kernel部分是使用kernel的原生命令make menuconfig即可,但不同的软件版本稍有差别。

ICS/GB版本请在alps代码目录下shell:
./mk ${project name} new /* 在配置kernel前先保证new过,如果已经new过可以省却这步。new后会在kenerl目录下生成.config,该文件在make menuconfig会用到,如果不存在.config文件则所有的kernel配置都会恢复成默认的 */ 
  
cd kernel /* 切换到kernel目录 */ 
  
TARGET_PRODUCT=${project name} make menuconfig /* 使用menuconfig配置,修改选项后保存退出,此时会在kernel目录下重新生成.config文件 */   

将.config复制到mediatek/config/${project name}/autoconfig/kconfig/目录下并重命名为project   

重新new kernel和用./mk bootimage即可下载

ICS2以后的版本请在alps代码目录下shell:

 ./mk ${project name} new /* 在配置kernel前先保证new过,如果已经new过可以省却这步。
new后会在kenerl目录下生成.config,该文件在make menuconfig会用到,如果不存在.config文件
则所有的kernel配置都会恢复成默认的 */


cd kernel /* 切换到kernel目录 */


TARGET_PRODUCT=${project name} make O=../out menuconfig /* 如果出现
../mediatek/build/kernel/Makefile找不到的错误,请用 TARGET_PRODUCT=${project name}
KBUILD_OUTPUT_SUPPORT=yes make O=out menuconfig.

配置完后,new kernel, 如果还有错误可以用./mk mrproper kernel清除kernel并删除
kernel/include/config目录,然后再new kernel */


将out/.config复制到mediatek/config/${project name}/autoconfig/kconfig/目录下并重命名
为project


重新new kernel和用./mk bootimage即可下载


上面的定制化方法参考自MTK_on_line_FAQ_SW_ALPS_20131021.pdf.但是根据上面定制化时出现的问题如下:

第一:在给内核添加xinput驱动时,按照上面的配置出错,当时也没有找到更好的方法,直接采用了最为暴力的方式,直接把相对应的模块加入到了obj-y 变量,编译成功!

后面经过摸索,发现一种较为合理的方式可以解决上述问题,暴力方式虽然直接但建议最好不要轻易使用。

因为mtkSDK是内核已经被mtk根据自己的平台定制过,所以在配置时需加载定制过的.config。但在kernel目录里面找不到此文件。可以从如下路径拷贝out/target/product/goldstone85_bx_ip_kk/obj/KERNEL_OBJ/.config 其中goldstone85_bx_ip_kk为工程名。拷贝之后可以按照上述的方法定制化内核,选择需要添加的模块,保存退出menuconfig。kernel目录中的.config和原始.config比较,轻而易举的可以知道修改配置的选项,在mediatek/config/${project name}/autoconfig/kconfig/project上做相应的修改即可!


第二:在配置rt2800驱动时,没有发现配置选项

在menuconfig菜单下,可以通过敲入"/"搜索选项内容。搜索RT2X00


位置应该在 Location:                                                                                                                                                      
    -> Device Drivers                                                                                                                                                 
       -> Network device support (NETDEVICES [=y])                                                                                                                      
         -> Wireless LAN (WLAN [=y])       

            -> Ralink driver support 选项

但在Wireless选项没有发现Ralink driver support选项,如下图所示:

         

花了较长时间才发现,RT2X00依赖模块没有完全包含,如下图所示:


选择MAC80211模块后,再次进入Wireless LAN选项如下:


选择展开后,可以到达RT2x00的选项!

定制化后根据修改的config选项修改工程的project配置选项,但是会出现错误,如下图所示:


最终直接将新定制化生成的.config覆盖工程的project文件,居然编译通过!!!!不知道mtk折腾个啥??!!


0 0
原创粉丝点击