MSM LK启动流程初探

LK是什么
LK 是 Little Kernel 它是 appsbl (Applications ARM Boot Loader)little kernel 是小内核小操作系统。
Lk代码目录如下:
这里写图片描述

lk\arch\arm\crt0.S
在bootable/bootloader/lk/arch/arm/crt0.S文件中有下面代码,汇编代码跳转到kmain函数

这里写图片描述

\lk\kernel\main.c

这里写图片描述

这里写图片描述

thread_init_early:Initialize threading system
arch_early_init:arch初始化,关闭cache,mmu初始化等。
platform_early_init:平台早期初始化,clock、timer以及board初始化。
上面的thread_resume函数,新建线程入口函数 bootstrap2 用于后面boot 的工作,后续内核引导和启动都是在这个线程完成的。
接下来重点看这个线程的代码:

这里写图片描述

这里写图片描述

arch_init:
platform_init:
target_init:
apps_init:
在这个函数的最后调用apps_init函数最终启动aboot,主要是应用功能初始化,主要调用boot_init,启动kernel,加载boot/recovery镜像等。

这里写图片描述

这里写图片描述
下面重点看aboot_init函数,在这里引导内核启动。

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

boot_linux_from_mmc和boot_linux_from_flash启动内核,如果启动失败再进入fastboot模式
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值