bootloader_sbl1_3
2017-01-13 15:29:36 0 举报
bootloader_sbl1_3是一个引导加载程序,用于在系统启动时加载和运行操作系统内核。它通常存储在非易失性存储器中,如闪存或EEPROM。当系统上电或重置时,bootloader_sbl1_3会被执行,然后它会检查系统的硬件配置并加载适当的内核映像。此外,它还负责初始化其他系统组件,如内存、串行端口和网络接口等。总之,bootloader_sbl1_3是嵌入式系统中不可或缺的重要组成部分,它为整个系统提供了一个稳定可靠的启动点。
作者其他创作
大纲/内容
二.下载模式
高通目前主要支持两种下载模式:紧急下载模式和普通下载模式。其代码我就不去详细分析了,只来看一下几个关键函数,主要源码路径: boot_images\\core\\boot\\secboot3\\src\\boot_dload.cboot_images\\core\\boot\\secboot3\\hw\\msm8916\\sbl1\\sbl1_target.cboot_images\\core\\boot\\secboot3\\hw\\msm8916\\sbl1\\sbl1_mc.c
前两篇博文分析了启动流程、代码流程、cdt,接下来就分析另外几个需要格外关注的部分。log系统sbl1中的log系统也是sbl1部分调试会经常接触得部分高通平台在sbl中做的log系统并不是很强大, 但是对于我们调试已经远远足够了。sbl1_boot_logger_initsbl1_boot_logger_init是log系统的初始化函数,被sbl1_main_ctl函数调用(详细参考:高通平台Android源码bootloader分析之sbl1(一)),其源码如下:
(boot_images\\core\\boot\\secboot3\\src\\Boot_logger.c)void boot_log_init(boot_log_init_data *init_data){ /*we must first set meta info becasue boot_log_init_ram and * boot_log_init_timer will use the meta info structure*/ boot_log_set_meta_info(init_data-meta_info_start); boot_log_init_ram(init_data); // 初始化ram log boot_init_timer(init_data); // 初始化时钟 boot_log_init_uart(); // 初始化串口 /* Write image version values out to the log. */ boot_log_image_version(); /* Write the Boot Config register out to the log. */ boot_log_boot_config_register();}
紧急下载模式紧急下载模式进入又分为两种情况:自动进入:裸片或者sbl1异常,系统自动进入紧急下载模式;手动进入:硬件下拉某一GPIO,PBL阶段检测到此GPIO则进入紧急下载模式。软件设置magic numbers,热重启,PBL检测到magic numbers后进入紧急下载模式。boot_dload_transition_pbl_forced_dloadboot_dload_transition_pbl_forced_dload函数由上boot_dload_check函数调用,其设置magic numbers,然后重启,当PBL检测到设置的magic numbers则会强制进入下载模式。源码如下:
一.log
0 条评论
下一页