高通下载模式9008

本文详细阐述了进入9008下载模式的不同途径,包括SBL的内存限制、如何开启强制EDL模式、通过LK的组合键进入以及kernel阶段的操作。同时介绍了编译过程中可能遇到的问题及解决方案。重点涉及SBL1.MBN、MDM9607L2、aboot和firehose的调试与优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、进入下载模式

目前进入下载模式的方法有如下:
(1) 擦除sbl1.mbn, PBL没有检测到sbl,会直接进入下载模式 ;
(2) D+ 接地,即短接USB线进入下载模式,在sbl阶段实现 ;
(3) aboot阶段,通过组合键进入,在lk实现:组合键进入EDL的接口:

bootable/bootloader/lk/app/aboot/aboot.c 
reboot_device(EMERGENCY_DLOAD)

(4) 启动到kernel阶段,adb reboot edl或者通过diag命令(QFIL工具)。

1.1 sbl 进 9008

      SBL 是存储在即CPU的二级缓存 L2 cache (256K)中运行的,具体划分的话可以参考 /boot_images/build/ms/targlaatanaza.h (具体看编译的时候时候使用哪个文件),在我们之前的测试中最大能够使用190KB,USB dload 是 在 SBL 运行中检测到 USB D±—GND,然后设备自己切换到 EDL(9008),再运行的 firehose。
      功能代码位置:

boot_images\core\boot\secboot3\src\boot_dload.c
boot_usb_al_check_for_pbl_dload(0)

在这里插入图片描述

1.1.1 打开功能

      因为 MDM9607 L2只有256KB默认是无法放下这个功能 ,这个功能可能是关闭的。开启方法:boot_images/build/ms/custlaatanaza.hboot_images/build/ms/9x07.target.builds文件中取消FEATURE_FORCED_EDL_MODE_DISABLE定义, 使qhsusb_dci_check_for_pbl_dload() 函数走else紧急下载判断部分。
      文件路径:

\BOOT.BF.3.3.2\boot_images\core\wiredconnectivity\qhsusb\src\dci\qhsusb_dci_8909.c
qhsusb_dci_check_for_pbl_dload()boot_usb_al_check_for_pbl_dload(0)

调用
在这里插入图片描述
在这里插入图片描述

1.1.2 编译问题

编译的时候,可能会code 段超界,可以尝试增大 SCL_SBL1_CODE_SIZE 示例如下,
(1)+++ b/boot_images/build/ms/9x07.target.builds

@@ -63,6 +63,7 @@ define 144KB 0x0024000 
define 164KB 0x0029000 
define 168KB 0x002A000 
define 180KB 0x002D000 
+define 190KB 0x002F800 
define 192KB 0x0030000 
define 200KB 0x0032000 
define 216KB 0x0036000 
@@ -127,7 +128,7 @@ define SCL_SBL1_TOTAL_SIZE 234KB 
#SBL1 Code base 
define SCL_SBL1_IMAGE_BASE 0x08005800 
#define SCL_DEVICEPROGRAMMER_IMAGE_BASE 0x08006000 
-define SCL_SBL1_CODE_SIZE 180KB 
+define SCL_SBL1_CODE_SIZE 190KB 

(2)+++ b/boot_images/build/ms/targlaatanaza.h

@@ -28,7 +28,7 @@ Copyright (c) 2001-2019 by QUALCOMM Incorporated. All Rights Reserved. 
#define MPSS_EFS_PATH "/mpss.txt" 
#define SCL_SBL1_TOTAL_SIZE 0x003A800 
#define SCL_SBL1_IMAGE_BASE 0x08005800 
-#define SCL_SBL1_CODE_SIZE 0x002D000 
+#define SCL_SBL1_CODE_SIZE 0x002F800 
#define SCL_SBL1_VECTOR_BASE SCL_SBL1_CODE_BASE 
#define SCL_SBL1_VECTOR_SIZE 0x00000020 
#define SCL_SBL1_STACKS_BASE (SCL_BOOT_L2_LOCK_BASE + SCL_SBL1_STACKS_SIZE) 

1.2 lk 进入9008

aboot阶段,通过组合键进入,在lk实现:组合键进入EDL的接口。

bootable/bootloader/lk/app/aboot/aboot.c 
reboot_device(EMERGENCY_DLOAD)

在这里插入图片描述

1.3 kennel阶段

(1)adb reboot edl
在这里插入图片描述

2 firehose

      Firehose阶段是在下载过程跑的一段代码。
      我们做的自动化工具测试发现,当切到9008下载模式下载完版本后,发现概率性自动重启失败,然后手动断电上电可以正常开机。我想在firehose 阶段加log ,看是否有收到工具下发的重启指令,该如何加?
(1)Please add debug log in below path:

\boot_images\core\storage\tools\deviceprogrammer\src\firehose\deviceprogrammer_firehose.c 
static firehose_error_t handlePower() 
{ 
   ...
} 

(2)You can search the ‘power’ command in port trace log.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值