Little Kernel启动过程
Posted 四季帆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Little Kernel启动过程相关的知识,希望对你有一定的参考价值。
1. LK 代码结构
app/ 应用相关
arch/ arm 体系
dev/ 设备相关
include/ 头文件
kernel/ lk系统相关
platform/ 相关驱动
projiect/ makefile文件
scripts/ Jtag 脚本
target/ 具体板子相关
2. LK流程分析
lk/arch/arm/ssystem-onesegment.ld 连接文件中 ENTRY(_start)指定 LK 从_start 函数开始,_start 在 lk/arch/start.S 。
start.S主要做一些基本的CPU的初始化再通过 bl lk_main ;跳转到 C代码中。
lk/top/main.c中有lk_main()函数的定义
lk_main() //lk/top/main.c
apps_init(); //lk/app/app.c
app->init(app); //会调用到lk/app/atc_boot/boot_kernel.c中的boot_kernel_init
start_app(app); //会调用到lk/app/atc_boot/boot_kernel.c中的boot_linux_from_emmc
theKernel (FDT_LOAD_ADDR_PHYS, 0, 0); //启动kernel
3. 细节
apps_start和apps_end都是在lk/app/app.ld文件中指定的,表示".apps"段
代码中通过APP_START宏向".apps"段添加代码
4. APP_START宏定义如下
#define APP_START(appname) const struct app_descriptor _app_##appname __ALIGNED(sizeof(void *)) __SECTION(".apps") = { .name = #appname,
#define APP_END };
示例:(lk/app/atc_boot/boot_kernel.c)
APP_START(atc_boot)
.init = boot_kernel_init,
.entry = boot_linux_from_emmc,
APP_END
以上是关于Little Kernel启动过程的主要内容,如果未能解决你的问题,请参考以下文章
GT-s5660显示LK(LITTLE KERNEL)VER SEP 14 2011是啥意思,不能开机怎么办
为啥手机出来的是一行英文LK(little kernel)ver sep 9 2011 为啥是这样啊???求大神啊