[kernel 启动流程] (第一章)概述

建议先参考《[kernel 启动流程] 前篇——vmlinux.lds分析》等文章。

[kernel 启动流程]系列

建议参考文档

================================================

一、kernel启动之前的准备动作

在kernel启动之前的准备都是由bootloader来完成。所以不管是什么bootloader,例如uboot、LK、superboot等等,都需要实现以下准备动作。这里指说明概念,不涉及代码。
我们在project X项目中使用的bootloader是uboot,具体代码参考第四节“kernel准备动作在uboot中的实现”

1、kernel镜像加载到ddr的相应位置

kernel镜像一般会存在于存储设备上,比如FLASH\EMMC\SDCARD.
因此,需要先将kernel镜像加载到RAM的位置上,CPU才可以去访问到kernel。
具体实现方法由bootloader决定,可以是自动复制,也可以是根据bootloader cmdline模式下输入的命令来是否复制。
但是注意,加载的位置是有要求的,一般是加载到物理RAM偏移0x8000的位置,也就是要在前面预留出32K的RAM。kernel会从加载的位置上开始解压,而kernel前面的32K空闲RAM中,16K作为boot params,16K作为临时页表
这些在后续kernel启动流程的文章中会说明。
例如,s5pv210的物理RAM的起始地址是0x20000000,那么kernel的加载地址就应该是0x20008000。

2、硬件要求

根据arch/arm/kernel/head.S的stext(kernel的入口函数)的注释头

/*
 * Kernel startup entry point.
 * ---------------------------
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值