MSM8937平台bootloader调试之一
来源:互联网 发布:乐知英语的公司在哪 编辑:程序博客网 时间:2024/04/20 10:26
MSM8937平台的AP是八核A53的处理器,分成两个cluster,最高主频支持1.4GHZ,PMIC有两种组合:PM8937+PMI8937和PM8937+PMI8952。
高通平台启动是从PBL开始的,也就是内部ROM里开始运行,PBL加载SBL1和RPM部分后,SBL1开始运行,SBL1加载RPM部分,TZ,APPSBL(aboot)。加载完毕后应该启动lk,但是SBL1并不会直接启动lk,而是由TZ来启动的,TZ分为两个部分:QSEE,QHEE。SBL1的运行环境税32bit,而TZ是64bit。因此,在SBL1最后跳转到QSEE时候需要切换到aarch64,然后trigger一个warm reset,这样就会启动到QSEE的64bit运行环境中交由QSEE运行。QSEE会通知RPM开始运行,然后QHEE开始运行,最后由QHEE启动lk。
SBL1里一般要修改的几个地方有:1)CDT,这里改平台信息,比如是MTP还是QRD等等,还有就是DDR的参数;2)UART口,如果要看SBL1里打印信息的话就必须要配置UART口,当然如果默认的UART口刚好跟硬件连线一致的话这个也不用改。如果不一致的话需要修改uart_sbl_8937.xml如下所示的地方:
根据硬件修改UART_PHY_DEVICE_X,X可以为1,2,3,4. 串口波特率为115200。
调试的时候遇到一个很奇怪的问题就是中SBL1最后跳转到QSEE时trigger warm reset的时候系统重启了,由于TZ里面没有UART打印,搞不清楚是在切换到TZ的时候出了问题还是中运行TZ的时候出了问题还是在启动lk的时候出了问题。后来做了很多尝试发现可能跟UART口的控制有关。硬件连的UART口是UART1,而版本里默认的配置的是UART2,这个值SBL1中以及修改过了,但是TZ中还要进行配置,TZ中会对BLSP的各个QUP以及UART的访问权限接口控制。而UART1默认的访问权限是TZ,也就是只能由TZ访问,但是中lk的初始化中也需要对UART口进行初始化以便进行打印输出,这样就会造成冲突导致系统重启。需要修改的是TZ的一个xml文件。改了之后重新编译devcfg.mbn,这样系统就可以看到lk运行的log了。
- MSM8937平台bootloader调试之一
- S3C2450 Bootloader调试总结之一
- Bootloader 原理篇之一
- bootloader调试技术
- S3C2450 Bootloader调试总结
- S3C2450 Bootloader调试总结
- S3C2450 Bootloader调试总结
- 使用ADS调试bootloader
- ADS调试BOOTLOADER
- Uboot之一:BootLoader的概念
- Uboot之一:BootLoader的概念
- Uboot之一:BootLoader的概念
- 基于步进电机在LINUX平台下的调试(之一)
- 用J-Link调试bootloader
- 用J-Link调试bootloader
- 嵌入式linux系统开发概述之一----Bootloader
- xv6的bootloader之一bootasm.s
- 嵌入式bootloader开发之一(Tiny 6410)
- 最长不下降子序列 (nlgn)做法
- STM32库内程序一些好的编程思路、方法及好的程序
- maven项目中引入外部数据库链接文件db.properties中的一个bug
- composer 基本使用方法
- POJ 1759(数学递推+二分)
- MSM8937平台bootloader调试之一
- Python 【Day2】
- Majority Element
- poj1742(多重背包dp)
- inent的用法
- 【U3D日记-2016年9月2日】设计模式解决工作问题的一个实例
- c++中定制输入输出操作
- TIJ读书笔记02-控制执行流程
- Input_poj1262_计算几何