设为首页 加入收藏

TOP

基于PowerPC的Linux内核之旅:early_init
2014-11-24 13:02:37 来源: 作者: 【 】 浏览:0
Tags:基于 PowerPC Linux 内核 之旅 early_init

很早之前就有写基于PowerPC架构的Linux源代码分析的文章的想法,但无奈于Linux源码量太大,逻辑也很复杂,再加上本身对PowerPC汇编了解不多,闲暇时间也没有太多,一直都没有什么机会。上个月,工作上的事情因为硬件的耽误稍微少了些,再加上自己之前分析U-Boot的源码时学了不少PowerPC汇编的知识,又移植了Linux中的SPI和Nand Flash的驱动源码到vxWorks,感觉时机比较成熟了,踉踉跄跄的开始了尝试性的分析,一点点的来,还望不足之处高手能指出。本次的文章将只致力于PowerPC平台,在加上本人对CPU内部机制比较感兴趣,所以大部分内容都是在与具体的CPU初始化相关的.S文件中,之后会根据我的经历选择性的分析内部中断机制和外设的驱动等内容。另外,由于在对启动代码的分析阶段中,大多数源代码都在Arch/Powerpc/Kernel文件夹下,如果不是我会给出相对路径的。


相关阅读:


PowerPC体系下的Linux启动步骤和其他大多数架构都是类似的,系统引导将从arch/powerpc/kernel/head_32.s开始执行,再转到init/main.c中的start_kernel函数初始化内核。首先来看下入口点文件head_32.S,其中的r1~r5这五个寄存器的内容及含义还不是很清楚,但可以确定r5的初始值为0,进而在start函数中跳转执行Setup_32.c中的early_init函数,查看该函数的定义,代码如下,很简单:


在early_init中,首先需要注意的是在此阶段,内核运行时所在的地址可能与其连接地址有所不同,所以在访问静态数据时都要使用reloc和ptrreloc函数,这两个函数的定义在misc.s文件中,具体代码如下:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇基于PowerPC的Linux内核之旅:__s.. 下一篇基于PowerPC的Linux内核之旅:__s..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)
·到底应该用MySQL还是 (2025-12-24 15:18:11)
·进入Linux世界大门的 (2025-12-24 14:51:47)
·Download Linux | Li (2025-12-24 14:51:44)