Android FTM Porting笔记

Android不同启动模式都是靠在lk(uboot)里做识别的。

(1)bootable\bootloader\lk\app\mt_boot\mt_boot.c这个文件实现了不同启动模式的加载不同的bootimg。

(2)mediatek\platform\mt6582\lk\boot_mode.c这个文件实现对不同模式的判别(或检测)。

(3)mediatek\platform\mt6582\lk下factory.c和recovery.c实现各自模式的检测(组合键,Cable)

(4)mediatek\platform\mt6582\lk\platform.c实现不同启动模式屏幕显示(显示不同文字提示)

(5)system\core\init\init.c实现kernel启动之后根据不同启动模式使用不同的init.rc文件从而进入不同的模式

 

(6)\mediatek\platform\mt6582\kernel\drivers\rtc\mtk_rtc_hal.c实现对重启至不同模式寄存器设置

 

(7)mediatek\kernel\kernel\system.c实现对重启至不同模式寄存器设置

 

【1】移植FTM过程中一直卡在开机第一屏(屏幕显示 公司定制_FTM_MODE)一开始怀疑是kernel有问题,经过解压ftm_boot.img与boot.img发现kernel 是相同的。

【2】在mt_boot.c里将原MTK的FTM加载boot.img替换为ftm_boot.img能够正常进入MTK的FTM。

【3】怀疑kernel里对公司定制_ftm不识别导致卡屏,查看patch未发现kernel内有对启动模式的判断。将system\core\init\init.c将公司定制_FTM启动模式判别加入到MTK_FTM里,重编sys和factory,可以进入公司定制_FTM并且能够正常测试。证明进不去公司定制_ftm可能是init.Rc的问题

【4】删除factory/root/init.rc 将factory_init.rc重命名为init.rc打包后Download,可以进入公司定制的FTM,进一步证明很可能是init.rc问题。

 

在修改init.rc做验证时遇到一个问题,无论怎么修改都无法进入公司定制的FTM(即使已将上一步factory_init.rc的内容全部复制到init.rc)最后终于找到原因。因为修改init.rc是在windows下修改导致init.rc的文件属性(读写权限、所属用户组)发生了变化,导致init.rc权限不对。

这与在ROM包移植过程中遇到的问题相同,所以必须保证文件属性不变修改才有意义!

 

通过对比正常进公司定制 FTM与不能进的LOG对比,发现不能进公司定制 FTM的log中有很对服务没有启动成功,原因是bin或sbin下很对文件找不到。尝试修改不挂载ftm_system分区,按照MTK的方式挂载Android分区就可以成功进入公司定制的FTM。

 

根据log提示很多命令找不到或执行失败,根据ftm脚本来看ftm_system下的文件直接拷自system下,理论上不会有缺失。所以解压ftm_system查看是否真的缺少文件。发现所需命令都存在,log提示有的命令是执行失败或没权限,想到可能文件权限不对,查看bin下文件和sbin下文件权限,没有可执行权限。更改权限为755后打包下载,可以进入。

 

解压能正常进FTM的ftm_system,发现bin及sbin下文件权限正常,所以问题应该出在ftm文件拷贝上而不是init.rc上。查看factory编译log,将bin和sbin等文件夹拷至mediatek\factory\公司定制\project\rootdir\ftm_MT6582下,进入该路径下查看文件权限,文件权限是正常的,但是打包后为什么不正常了?

查看mediatek\factory\公司定制\project\rootdir\文件夹除了有ftm_MT6582还有一个ftm_MT6572(直接从其他工程搬移过来的)因为是在windows下考的,会不会是打包时 打包的是ftm_MT6572而不是ftm_MT6582呢?进入ftm_MT6572查看文件权限,发现权限不正确。

 

修改ftmgen.pl my$COLUMN_MT6582为正确值,重编ftm仍不能进入FTM。考虑到windows拷贝问题,特在Ubuntu下拷贝ftm_system.img解压,查看权限,仍有问题,进一步确定是ftm_system的问题。使用rom_tool下的打包工具打包mediatek\factory\公司定制\project\rootdir\ftm_MT6582下载后可以进入FTM。说明问题出在打包脚本上对比其他工程打包指令$(MAKE_EXT4FS)-s -l 58720256 -a system$(PRODUCT_OUT)/ftm_system.img$(factory_system)/ftm_$(MTK_PLATFORM)注意到挂载点为system,而本工程为$(MAKE_EXT4FS)-s-l 58720256 -a ftm_system $(PRODUCT_OUT)/ftm_system.img$(factory_system)/ftm_$(MTK_PLATFORM)挂载点为ftm_system,修改之能正常进入。

 

【注】KK版本与JB版本有些差异,KK版本modules文件夹下没有.Ko文件,所以在init.rc文件需要将insmod .ko的地方注释掉。

 

至此问题解决。饶了好大一个弯才找到问题。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Free飝Fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值