高通平台避免误入FFBM模式和退出FFBM

您所在的位置:网站首页 下载中国普法 高通平台避免误入FFBM模式和退出FFBM

高通平台避免误入FFBM模式和退出FFBM

2023-09-07 13:01| 来源: 网络整理| 查看: 265

1、高通平台如何避免误入FFBM模式 修改init直接过滤掉该模式,无论misc分区被修改成什么样,都直接启动到Android系统,而不进入FFBM。修改的代码很少,如下。 在这里插入图片描述 修改代码后,执行命令make systemimage -j8编译生成system.img,通过fastboot将新生成的system.img烧录到处于FFBM模式下的故障机器里,并重启。奇迹出现了,果然正常进入了Android系统 在这里插入图片描述 可以看到,Kernel是老的,Android是新的。再查看misc分区的内容及dmesg,如下图所示: 在这里插入图片描述 通过dd命令查看misc分区,内容为ffbm-00,Kernel command line有androidboot.mode=ffbm-00的配置,在init中直接忽略了androidboot.mode的配置,Android系统正常启动,相关log如下。

msm8998:/ # dd if=/dev/block/bootdevice/by-name/misc count=1 bs=128 ffbm-00 boot-factory 1+0 records in 1+0 records out 128 bytes transferred in 0.004 secs (32000 bytes/sec) msm8998:/ # dmesg | grep -iE "ffbm|androidboot" [ 0.000000] Kernel command line: rcupdate.rcu_expedited=1 console=ttyMSM0,115200,n8 androidboot.console=ttyMSM0 earlycon=msm_serial_dm,0xc1b0000 androidboot.hardware=qcom androidboot.veritymode=enforcing androidboot.verifiedbootstate=orange androidboot.keymaster=1 androidboot.bootdevice=1da4000.ufshc androidboot.serialno=25f47d23 androidboot.mode=ffbm-00 quite dvt androidboot.baseband=apq skip_initramfs rootwait ro init=/init root=/dev/sda6 [ 1.172876] init: Ignore androidboot.mode!

改动之前的log如下,init会根据Kernel command line的配置进入ffbm模式,fs_mgr不挂载userdatafs_mgr,并且不启动Android:

[ 0.000000] Kernel command line: rcupdate.rcu_expedited=1 console=ttyMSM0,115200,n8 androidboot.console=ttyMSM0 earlycon=msm_serial_dm,0xc1b0000 androidboot.hardware=qcom androidboot.veritymode=enforcing androidboot.verifiedbootstate=orange androidboot.keymaster=1 androidboot.bootdevice=1da4000.ufshc androidboot.serialno=25f47d23 androidboot.mode=ffbm-00 quite dvt androidboot.baseband=apq skip_initramfs rootwait ro init=/init root=/dev/sda6 [ 1.355482] init: Booting into ffbm mode [ 1.849985] fs_mgr: ffbm mode,skip mount userdatafs_mgr: __mount(source=/dev/block/bootdevice/by-name/modem_a,target=/firmware,type=vfat)=0 [ 1.869366] init: ffbm mode, not start class main

2、高通平台如何退出FFBM 2.1 使用fast命令擦除misc分区 Fast Factory Boot Mode(FFBM)是一种半开机的模式,它的主要目的是方便工厂测试,提高生产效率。正常情况下终端用户是不会碰到的。但售后的同学最近连续收到几台客户退回的VR一体机,都进入了该模式。具体表现为屏幕显示既不是开机动画也不是VR界面,通过USB线连接上电脑后adb可以正常识别并可输入命令,但安卓投屏助手(ARDC)一直显示等待系统启动完成。查看内核启动命令行,如下: sched_enable_hmp=1 sched_enable_power_aware=1 console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x237 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 cma=32M@0-0xffffffff androidboot.bootdevice=624000.ufshc androidboot.verifiedbootstate=orange androidboot.veritymode=enforcing androidboot.keymaster=1 androidboot.serialno=7e9ca27c androidboot.mode=ffbm-00 quiet androidboot.baseband=apq 可以看到androidboot.mode=ffbm-00,同时[ro.bootmode]为[ffbm-00],以此可确认VR一体机确实进入了Fast Factory Boot Mode。 进入该模式后,即使强制重启机器也无法恢复。手机如果进入该模式,可点击触屏操作,选择重启进入Android即可恢复。而VR一体机没有触屏,只能通过PC操作。由于FFBM是一种半开机的模式,此时安卓投屏助手或Vysor等远程投屏工具都无法正常使用,只能通过fastboot命令擦除misc分区来恢复,具体步骤如下图所示。 在这里插入图片描述 其中涉及的命令如下: adb reboot bootloader fastboot erase misc fastboot reboot 为了方便后续debug,趁手在安卓投屏助手(ARDC)中增加了FFBM模式的判断,当处于该模式时直接显示Fast Factory Boot Mode,而不是Waiting boot completely,以便快速判断VR一体机所处的状态。 2.2 使用FQIL工具擦除分区 QFIL是高通提供的刷机工具。首先让VR一体机进入紧急下载模式(EDL),方法有两种。如adb可用,可输入adb reboot edl,进入紧急下载模式。如adb不可用,则先关机,然后同时按住BACK和OK键(某些设备可能是音量+和音量-的组合),再按Power键开机,即可进入紧急下载模式。进入EDL模式后,设备管理器中会有一个设备端口,Forge HS-USB QDloader 9008。如果没有,则需要先安装一下驱动程序,Qualcomm_Drivers_QDLoader.zip 在这里插入图片描述 接着,按照如下步骤操作即可退出FFBM模式。 Select Build Type选择Flat Build, Select Programmer选择prog_ufs_firehose_8998_ddr.elf文件,// 该文件与硬件相关,对应的CPU为8998,flash为ufs 在Tools菜单中选择Partition Manager, 在弹出的Confirm对话框中,点击OK按钮, 在弹出的Partition Manager中,左键点击misc分区,然后点击右键, 在右键弹出的菜单中,点击Manage Partition Data, 在弹出的Raw Data Manager中,点击Load Image按钮, 选择zero.bin文件并发送,Status框中显示Finish Send Image说明已经OK了。 详细流程: 在这里插入图片描述 文中提到的zero.bin及prog_ufs_firehose_8998_ddr.elf的下载地址:https://files.cnblogs.com/files/we-hjb/FFBM.7z

参考博客:https://www.cnblogs.com/we-hjb/p/9769467.html https://www.cnblogs.com/we-hjb/p/9769467.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3