目录

  • 1. 前言
  • 2. sbl1总体流程
  • 3.sbl1_main_ctl(pbl_shared)流程
  • 4. boot_config_process_bl
    • 4.1 Execute pre_procs
      • 4.1.1 load_pmic_pre_procs
      • 4.1.2 load_qsee_devcfg_image_pre_procs
  • 5. 总结

1. 前言

本文档主要对MSM8996的启动流程进行一个简要的分析,目的在于展现启动流程的概貌,不会对每个细节做很详细的表述,但会对启动流程的关键节点进行重点说明。前面介绍8996的整体启动流程,本文主要介绍XBL #REG1也就是sbl1的启动流程。

sbl1位于boot_images/QcomPkg/Msm8996Pkg/Library/XBLLoaderLib/sbl1.s
Sbl1即为XBL REG1

2. sbl1总体流程

  1. sbl1_entry首先主要完成了ARMV8体系结构相关的操作,主要设置了各个模式下所使用到的栈空间;
  2. 返回到SVC模式;
  3. 调用了主函数sbl1_main_ctl

3.sbl1_main_ctl(pbl_shared)流程

sbl1_main_ctl
为sbl1的主函数,主要做一些重要外设的初始化,如RAM的初始化,为下一步程序的运行做准备

boot_config_process_bl
它会循环将各个协处理器的镜像加载到内存的相应位置

4. boot_config_process_bl

每个协处理器都会根据自己的情况来初始化自己的结构体变量,保存了前处理、镜像加载、镜像认证、后处理、镜像执行等回调函数,boot_config_process_bl会循环对各个协处理器的的这些回调按照pre, load, auth, exec,post的顺序执行,通过各个协处理器回调的定义可以看到,只有QSEE实现了jump_func函数,因此最终会跳转到qsee_jump_func执行,qsee内部执行的代码是不开源的,但是最终它会跳转到lk继续执行

4.1 Execute pre_procs

4.1.1 load_pmic_pre_procs


API called twice, this first time passes default compiled CDT contents to DDR driver, in case CDT only contains Platform CDB. Second call will update DDR driver with Flashed CDT DDR CDB contents, if DDR CDB was found in flashed CDT

  • boot_falsh_init
    对存储设备的初始化

  • sbl1_ddr_set_default_params
    读取默认的CDT数据拷贝到SHARED_IMEM_BOOT_CDT_BASE,这个默认的CDT数据是与XBL镜像打包在一起的,除非CDT分区有存放CDT,否则将使用默认的CDT

4.1.2 load_qsee_devcfg_image_pre_procs

最关键的是完成DDR的初始化

5. 总结

SBL1主要完成的工作如下:

  1. 设置ARMV8各个模式下所使用到的栈空间,并返回到SVC模式;
  2. 外设的初始化,如RAM的初始化;
  3. 将各个协处理器的镜像加载到内存的相应位置;
  4. 跳转到qsee,并由qsee最终跳转到lk

高通8996启动流程-3. sbl1启动流程相关推荐

  1. 高通8996启动流程-1.概述

    1.前言 本文档主要对MSM8996的启动流程进行一个简要的分析,目的在于展现启动流程的概貌,不会对每个细节做很详细的表述,但会对启动流程的关键节点进行重点说明. 2.关键术语 Hexagon Dig ...

  2. 高通8996启动流程-2.总体启动流程

    1.前言 本文档主要对MSM8996的启动流程进行一个简要的分析,目的在于展现启动流程的概貌,不会对每个细节做很详细的表述,但会对启动流程的关键节点进行重点说明.本文主要通过框图的方式展现bootlo ...

  3. 高通平台TP和LCD 驱动Porting流程

    ELAN 6730 高通820 8996平台Porting手册 1.Touch porting 创建Touch驱动文件夹 cd android/kernel/msm-3.18/drivers/inpu ...

  4. 高通8996启动流程-4. lk启动之boot_linux_from_mmc

    1.前言 本文档主要对MSM8996的启动流程进行一个简要的分析,目的在于展现启动流程的概貌,不会对每个细节做很详细的表述,但会对启动流程的关键节点进行重点说明.在lk正常启动时会进入boot_lin ...

  5. 高通8996启动流程-4. lk启动之mkbootimg工具

    1.前言 Android在编译过程中会调用mkbootimg命令,mkbootimg是生成boo.img的命令,boot.img中包含了kernel, dtb, ramdisk等. 2. mkboot ...

  6. 《高通QCS8250》Debug XBL开机启动、进入fastboot花屏问题

    简介: 由于涉及到公司机密,具体内容不会输出.做一个有职业操守的打工人!!! 问题描述: 1.问题简介 在系统开机启动,QCS8250平台在bootloader过程中和进入fastboot模式会出现花 ...

  7. 高通camx configure_streams 初始化 和 usecase 创建流程 详解(五)

    有参考: https://www.jianshu.com/p/cfb1da9d4217 思考:camera.provider中如何实现到camera hal层的跳跃 ? 之后上层是如何配置每个 str ...

  8. 高通MSM8953 Android7.1蓝牙接电话流程(App到Adsp)(十六)

    android audio 生产者与消费者 简介 全面接触生产者/消费者问题是在操作系统原理中,并发性原理讨论的问题 生产者/消费者问题.最近的工作偏向音频,接着上一篇文章,用生产者,消费者模型来理解 ...

  9. 高通msm8994启动流程简介

    处理器信息 8994包含如下子系统: 子系统 处理器 含义 APSS 4*Cortex-A53 应用子系统 APSS 4*Cortex-A57 应用子系统 LPASS QDSP6 v5.5A(Hexa ...

最新文章

  1. Linux Shell简介
  2. 编程语言趋势最新报告:开发者最青睐DevOps,Kotlin增长最快
  3. ORACAL去除表中null转化为0
  4. OpenCV 图像平移
  5. 百年理工计算机专业课程,这两所国内的百年理工院校,实力强劲,都是国内顶尖实力...
  6. Linux Sqlite3 基础知识
  7. 2.1 ListView 源码
  8. ERP软件管理持续升级 抢占产业先机
  9. 给服务器端DropDownList控件添加客户端onchange事件
  10. Rust : codewars的up AND down 算法
  11. 「2020总结文章」一起回顾 2020,展望 2021(JesksonUI-UniApp)
  12. wireshark抓包使用教程
  13. JavaScript实现节点的增加修改删除查找
  14. 真Unity3d_分享一个攻击连招的简单实现
  15. 启动kafka过一会进程自动挂掉问题原因
  16. 如何去掉图片上的水印 图片水印怎么去掉
  17. WeakHashMap相关
  18. 法大大登榜《胡润中国瞪羚企业》
  19. 第一天来到新公司的volg (ETL开发工程师)
  20. 零基础——java学习路线(下)

热门文章

  1. 免费discuz 白色简洁论坛类源码下载
  2. 代理沙特SASO贸促会认证
  3. command_execution
  4. VLAN的概念及配置
  5. 自定义鼠标滑过标签的title属性的样式
  6. c语言中文拼音排序,为sqlite增加汉字拼音排序功能
  7. 习题:输入abc的值求一元二次方程的解
  8. 值得收藏的北京移动短信代码
  9. AAAI 2021-TextGAIL:Generative Adversarial Imitation Learning for Text Generation
  10. 故障:Office 重复提示激活