高通平台lk的启动流程

原创 2018年04月17日 13:55:33

1.lk/ arch/ arm/ crt0.S                    

bl      kmain

2.lk/ kernel/ main.c                           

/* called from crt0.S */

void kmain(void) __NO_RETURN __EXTERNALLY_VISIBLE;

void kmain(void)

{

    // get us into some sort of thread context
    thread_init_early();

    // early arch stuff
    arch_early_init();

    // do any super early platform initialization
    platform_early_init();

    // do any super early target initialization
    target_early_init();

    dprintf(INFO, "welcome to lk\n\n");

    // create a thread to complete system initialization
    dprintf(SPEW, "creating bootstrap completion thread\n");
    thr = thread_create("bootstrap2", &bootstrap2, NULL, DEFAULT_PRIORITY, DEFAULT_STACK_SIZE);

}

static int bootstrap2(void *arg)
{
    // initialize the rest of the platform
    dprintf(SPEW, "initializing platform\n");
    platform_init();

    // initialize the target
    dprintf(SPEW, "initializing target\n");
    target_init();

    dprintf(SPEW, "calling apps_init()\n");
    apps_init();

    return 0;
}

3.lk/ app/ app.c

void apps_init(void)

---------------------------------------------------------------------------------------------------------------------

4.lk/app/aboot/aboot.c

void aboot_init(const struct app_descriptor *app)

{target_display_init(device.display_panel);}

5.lk/target/msm8937_64_a8001/target_display.c

void target_display_init(const char *panel_name)

6.lk/dev/gcdb/display/gcdb_display.c

int gcdb_display_init(const char *panel_name, uint32_t rev, void *base)

{

pan_type = oem_panel_select(panel_name, &panelstruct, &(panel.panel_info),

             &dsi_video_mode_phy_db);

target/msm8937_64_a8001/oem_panel.c  lcd读取ID

int oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
            struct msm_panel_info *pinfo,
            struct mdss_dsi_phy_ctrl *phy_db)

panel.power_func = mdss_dsi_panel_power;   //初始化电源函数

panel.bl_func = mdss_dsi_bl_enable;     //初始化背光函数

ret = msm_display_init(&panel);     //调用电源函数和背光函数

}

7.lk/platform/msm_shared/display.c

int msm_display_init(struct msm_fb_panel_data *pdata)

{

ret = msm_display_config();

}

int msm_display_config()

{

ret = mdss_dsi_config(panel);

}

8.lk/platform/msm_shared/mipi_dsi.c

int mdss_dsi_config(struct msm_fb_panel_data *panel)

{

ret = mdss_dsi_panel_initialize(mipi, mipi->broadcast);

}

int mdss_dsi_panel_initialize(struct mipi_panel_info *mipi, uint32_t broadcast)

{

status = mdss_dsi_read_panel_signature(mipi);

}

static uint32_t mdss_dsi_read_panel_signature(struct mipi_panel_info *mipi)    //读取屏ID函数


---------------------------------------------------------------------------------------------------------------------------------

lk传参到kernel

1.lk/dev/gcdb/display/gcdb_display_param.c


bool gcdb_display_cmdline_arg(char *pbuf, uint16_t buf_size)

{

char *display_cmd_line = pbuf;

rc = mdss_dsi_set_panel_node(oem_data.panel, &dsi_id, &panel_node,&slave_panel_node, &panel_mode);

dprintf(INFO, "display kernel cmdline:%s\n",display_cmd_line);

}

[1640] display kernel cmdline: mdss_mdp.panel=1:dsi:0:qcom,mdss_dsi_ota7291a_wxga_video:1:none:cfg:single_dsi


kernel获取LK保存的pbuf

2.kernel/msm-3.18/init/main.c

asmlinkage __visible void __init start_kernel(void)

{

setup_arch(&command_line);

setup_command_line(command_line);

pr_notice("Kernel command line: %s\n", boot_command_line);

}

【0.000000】 Kernel command line: sched_enable_hmp=1 sched_enable_power_aware=1 console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom msm_rtb.filter=0x237 ehci-hcd.park=3

解析出所用的LCD并初始化

3.kernel/msm-3.18/drivers/video/msm/mdss/mdss_dsi.c

static struct device_node *mdss_dsi_config_panel(struct platform_device *pdev,int ndx)

{

/* find panel device node */

dsi_pan_node = mdss_dsi_find_panel_of_node(pdev, panel_cfg);

 rc = mdss_dsi_panel_init(dsi_pan_node, ctrl_pdata, ndx);

}

[    4.538709] mdss_dsi_find_panel_of_node: cmdline:0:qcom,mdss_dsi_ota7291a_wxga_video:1:none:cfg:single_dsi panel_name:qcom,mdss_dsi_ota7291a_wxga_video

[    4.551592] mdss_dsi_panel_init: Panel Name = ota7291a wxga video mode dsi panel





高通Qualcomm平台lk(light kernel)启动流程1——aboot_init()之前

0lk 启动总体流程 1lk启动流程代码 lkarcharmcrt0S lkkernelmainc lkappappc 0、lk 启动总体流程1、lk启动流程代码lk/arch/arm/crt0.Sl...
  • u014134180
  • u014134180
  • 2017-09-29 15:02:41
  • 1743

高通msm8996启动流程

摘自”80-nv396-1_c_msm8996_boot_and_corebsp_architecture_overview.pdf” 系统上电并且把Kryo应用处理器退出reset状态 i...
  • daoshuti
  • daoshuti
  • 2018-03-17 17:39:15
  • 124

Android启动流程分析之一:Bootloader(基于高通芯片) 【mtk lk阶段有类似】

http://blog.csdn.net/ly890700/article/details/54586448 注:很多内容和MTK  LK阶段相同,可以借鉴学习。aboot.c内容差异很大。 ...
  • ffmxnjm
  • ffmxnjm
  • 2017-04-24 15:27:22
  • 2510

高通平台BootLoader的流程

原文链接:http://www.codingblog.cn/blog/44451.html 注:很多内容和MTK  LK阶段相同,可以借鉴学习。aboot.c内容差异很大。 ...
  • makeyourprogress
  • makeyourprogress
  • 2017-06-29 16:59:48
  • 515

高通平台lk下调屏小结

    在lk下调试屏幕,可先了解下lk的代码流程,方便接下来的调试。这里以msm8996平台为例,描述lk的代码结构。bootable/bootloader/lk/kernel/maic.c/* c...
  • mike8825
  • mike8825
  • 2016-12-31 01:08:58
  • 1628

高通Qualcomm平台lk(light kernel)启动流程3——到高通lcm屏点亮

0lk 启动总体流程 1lk启动流程代码 lk app aboot abootc lk target msm8953 target_displayc lk dev gcdb display gcdb_...
  • u014134180
  • u014134180
  • 2017-10-08 20:11:37
  • 1712

高通msm8994启动流程简介

处理器信息 8994包含如下子系统: 子系统 处理器 含义 APSS 4*Cortex-A53 应用子系统 APSS 4*Cortex-A57 应用子系统 LPA...
  • finewind
  • finewind
  • 2015-06-12 11:30:44
  • 19013

linux驱动由浅入深系列:PBL-SBL1-(bootloader)LK-Android启动过程详解之一(高通MSM8953启动实例)

对于嵌入式工程师了解芯片启动过程是十分有必要的,在分析、调试各种问题的时候都有可能涉及到这方面的知识。同时这部分知识也是比较复杂的,因为其中涉及到芯片内部架构,启动各个阶段软件代码执行顺序,启动模式等...
  • RadianceBlau
  • RadianceBlau
  • 2017-06-14 14:59:47
  • 4045

高通平台开机LOGO修改LK(bootloader)下实现

网络上已经有许多在kernel中修改开机Logo的文章,本文就LK下实现开机logo进行简述 需要用到ffmpeg工具,没有安装ffmpeg请参考这里: http://blog.csdn.net/re...
  • LEAD_SOLO
  • LEAD_SOLO
  • 2016-01-22 14:04:44
  • 4650

漫谈android系统(2)androidLK启动过程1

andoid的启动过程1通过audio口所吐出的log,我们可以发现android的启动还是非常之有趣的,因而在此对它的启动做相应的分析。在此分析LK的启动过程,LK就是bootloader。现在只截...
  • u013983194
  • u013983194
  • 2016-04-28 10:07:59
  • 1629
收藏助手
不良信息举报
您举报文章:高通平台lk的启动流程
举报原因:
原因补充:

(最多只允许输入30个字)