arm-linux内核start_kernel之前启动分析(1)-接过bootloader的衣钵

前段时间移植uboot仔细研究过uboot启动过程,最近耐不住寂寞,想对kernel下手。

Uboot启动过程分析博文连接如下:


http://blog.csdn.net/skyflying2012/article/details/25804209


移植内核时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 
  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值