本文主要是介绍arm-linux内核start_kernel之前启动分析(1)-接过bootloader的衣钵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前段时间移植uboot仔细研究过uboot启动过程,最近耐不住寂寞,想对kernel下手。Uboot启动过程分析博文连接如下:
移植内核时kernel启动过程需要我们修改的地方比较少,研究这个对于编写driver也没有多大帮助,但对了解整个linux架构,各种机制还是非常有用。
只有知道kernel如何启动,我们才能真正的去理解kernel
作为一个嵌入式工作者,我想不能仅仅局限于某个module driver,而应深入到kernel的汪洋大海中去傲游!
学习启动过程,我本着打破沙锅问到底的原则,希望能研究的明明白白,但也鉴于水平有限,还是有很多纰漏之处
共享博文,希望大家多多交流指正,辛苦整理,如需转载,还请注明出处。
对于arm linux,start_kernel之前都是汇编代码,区区上百行汇编,但是却蕴含着很多精髓。
这部分代码分3篇来分析,另外两篇链接地址如下:
http://blog.csdn.net/skyflying2012/article/details/41447843
http://blog.csdn.net/skyflying2012/article/details/48054417
今天先来学习前几十行!
Kernel版本号:3.4.55
在arch/arm/kernel/head.S中,如下:
.arm__HEAD
ENTRY(stext)THUMB( adr r9, BSYM(1f) ) @ Kernel is always entered in ARM.THUMB( bx r9 ) @ If this is a Thumb-2 kernel,THUMB( .thumb ) @ switch to Thumb now.THUMB(1: )//处理器进入svc模式,关闭中断setmode PSR_F_BIT | PSR_I_BIT | SVC_MODE, r9 @ ensure svc mode@ and
这篇关于arm-linux内核start_kernel之前启动分析(1)-接过bootloader的衣钵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!