- 博客(8)
- 资源 (1)
- 收藏
- 关注
转载 arm-linux源码分析之解压内核映像
<br />linux-2.6.20.6/arch/arm/boot/compressed/head.S <br /> <br /> 开头有一段宏定义,我们只看其中一段,分析一下gnu arm汇编的宏定义 <br /> <br /> #elif defined(CONFIG_ARCH_S3C2410) <br /> .macro loadsp, rb <br /> mov /rb, #0x50000000 <br />
2011-01-06 14:20:00 885
转载 arm-linux head.S 源代码分析
<br />arm-linux head.S 源代码分析<br />这是ARM-Linux运行的第一个文件,这些代码是一个比较独立的代码包裹器。其作用就是解压Linux内核,并将PC指针跳到内核(vmlinux)的第一条指令。<br />Bootloader中传入到Linux中的参数总共有三个,Linux中用到的是第二个和第三个。第二个参数是architecture id,第三个是taglist的地址。Architecture id的arm芯片在Linux中一定要唯一。Taglist是bootloa
2011-01-06 14:00:00 22435
转载 kernel 启动过程之四,start_kernel中的rest_init函数到init进程
<br /> tart_kernel ,是用来启动内核的主函数,我想大家都知道这个函数啦,而在该函数的最后将调用一个函数叫 rest_init() ,它执行完,内核就起来了,<br /><br /> asmlinkage void __init start_kernel(void)<br /><br /> {<br /><br /> ......<br /><br /> /* Do the rest non-__init'ed, we're now a
2011-01-06 13:53:00 864
转载 kernel 启动过程之五, initcall 的来由, console 的初始化
<br />参见include/linux/init.h和vmlinux.lds<br /> 1)<br /> 所有标识为__init的函数在链接的时候都放在.init.text这个区段内,<br /> 在这个区段中,函数的摆放顺序是和链接的顺序有关的,是不确定的。<br /> 2)<br /> 所有的__init函数在区段.initcall.init中还保存了一份函数指针,<br /> 在初始化时内核会通过这些函数指针调用这些__init函数指针,<br /> 并在整个初始化完成后,释放整个
2011-01-06 13:53:00 635
转载 kernel 启动过程之三, start_kernel()函数 概叙!init/main.c
<br />核心数据结构初始化--内核引导第一部分<br /> start_kernel()中调用了一系列初始化函数,以完成kernel本身的设置。 这些动作有的是公共的,有的则是需要配置的才会执行的。在start_kernel()函数中,输出Linux版本信息(printk(linux_banner))设置与体系结构相关的环境(setup_arch())页表结构初始化(paging_init()) 使用"arch/alpha/kernel/entry.S"中的入口点设置系统自陷入口(trap_ini
2011-01-06 13:52:00 465
转载 kernel 启动过程之三, start_kernel()函数 概叙!init/main.c
<br />核心数据结构初始化--内核引导第一部分<br /> start_kernel()中调用了一系列初始化函数,以完成kernel本身的设置。 这些动作有的是公共的,有的则是需要配置的才会执行的。在start_kernel()函数中,输出Linux版本信息(printk(linux_banner))设置与体系结构相关的环境(setup_arch())页表结构初始化(paging_init()) 使用"arch/alpha/kernel/entry.S"中的入口点设置系统自陷入口(trap_ini
2011-01-06 13:52:00 691
转载 kernel 启动过程之二, arch/arm/kernel/head.S
<br />从zImage头跳转进来,此时的状态MMU为off D-cache为off I-cache为dont care,on或off没有关系 r0为0 r1为machine ID r2为atags指针 <br />内核 代码入口在linux -2.6.24-moko-linuxbj/arch/arm /kernel/head.S文件的83行。首先进入SVC32模式,并查询CPU ID,检查合法性 msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC
2011-01-06 13:51:00 877
转载 kernel 启动过程之一, uimge, zimage,arch/arm/boot/compressed/head.S
<br />这几天因为工作原因,升级 2.6.22.7 的kernel 到 Mavell 的arm 板子上去,遇到一些头疼的问题,<br /> 不得不分析启动代码, 郁闷阿。<br />zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文 件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。另外,
2011-01-06 13:50:00 1172
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人