
linux启动代码分析
BoArmy
这个作者很懒,什么都没留下…
展开
-
linux内核启动第二阶段之setup_arch()函数分析-2.6.36
执行setup_arch()函数回到start_kernel当中,569行,调用setup_arch函数,传给他的参数是那个未被初始化的内部变量command_line。这个setup_arch()函数是start_kernel阶段最重要的一个函数,每个体系都有自己的setup_arch()函数,是体系结构相关的,具体编译哪个体系的setup_arch()函数,由顶层Makefile中的ARC原创 2013-03-08 21:36:51 · 3887 阅读 · 0 评论 -
几个地址参数及uboot加载启动内核过程的理解
关于uBoot和Linux内核中几个地址参数及uboot加载启动内核过程的理解 uboot一般使用mkimage工具先制作一个启动映象文件来引导识别内核的,uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样u原创 2013-03-08 21:36:35 · 3358 阅读 · 1 评论 -
linux内核启动解压过程分析
http://chxxxyg.blog.163.com/blog/static/150281193201072603030285/文件arch/arm/boot/compressed/head.S是linux内核启动过程执行的第一个文件。 119 .align 120 .arm转载 2013-03-08 21:36:39 · 1487 阅读 · 0 评论 -
linux内核启动第二阶段分析
linux内核启动第二阶段分析456 asmlinkage void __init start_kernel(void)457 {458 char * command_line;459 extern const struct kernel_param __start___param[], __stop___param[];这两个外部变量,是内核编原创 2013-03-08 21:36:42 · 1917 阅读 · 0 评论 -
linux内核启动第一阶段分析-2.6.36
linux内核启动第一阶段分析http://blog.youkuaiyun.com/aaronychen/article/details/2838341本文的很多内容是参考了网上某位大侠的文章写的>,有些东西是直接从他那copy过来的。本文从kernel的第一条指令开始分析,一直分析到进入start_kernel()函数,也就是kernel启动的汇编部分,我们把它称之为第一部分,以后有时间原创 2013-03-08 21:36:47 · 1318 阅读 · 0 评论 -
linux内核启动第一阶段分析
linux内核启动第一阶段分析http://blog.youkuaiyun.com/aaronychen/article/details/2838341本文的很多内容是参考了网上某位大侠的文章写的>,有些东西是直接从他那copy过来的。本文从kernel的第一条指令开始分析,一直分析到进入start_kernel()函数,也就是kernel启动的汇编部分,我们把它称之为第一部分,以后有时间原创 2013-03-08 21:36:37 · 1805 阅读 · 0 评论 -
linux内核启动第二阶段分析-2.6.36
内核源码下载地址:http://www.cn.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2536 asmlinkage void __init start_kernel(void)537 {538 char * command_line;539 extern const struc原创 2013-03-08 21:36:49 · 1446 阅读 · 0 评论 -
setup_arch之paging_init函数
setup_arch之paging_init函数对于arm处理器paging_init函数在arch/arm/mm/nommu.c与arch/arm/mm/mmu.c中分别有定义,在nommu是是不支持mmu存储管理的,它定义很简单如下:void __init paging_init(struct machine_desc *mdesc){ bootmem_init();}原创 2013-03-09 07:27:41 · 2230 阅读 · 0 评论 -
setup_arch()函数分析4--cpu_init
arch/arm/kernel/setup.cstruct stack { u32 irq[3]; u32 abt[3]; u32 und[3];} ____cacheline_aligned;/* * cpu_init - initialise one CPU. * * cpu_init sets up the per-CPU stack原创 2013-03-09 07:28:04 · 2371 阅读 · 0 评论 -
setup_arch()函数分析5--early_trap_init
void __init early_trap_init(void){ unsigned long vectors = CONFIG_VECTORS_BASE; //CONFIG_VECTORS_BASE在autoconf.h中定义(该文件自动成生),值为0xffff0000, extern char __stubs_start[], __stubs_end[];原创 2013-03-09 07:28:06 · 1502 阅读 · 0 评论 -
Linux下的lds链接脚本基础
http://blog.chinaunix.net/space.php?uid=361890&do=blog&id=16284140. Contents1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令6. 对符号的赋值7. SECTIONS命令8. MEMORY命令9. PHDRS命令10. VERSION命令11. 脚转载 2013-03-09 08:36:09 · 944 阅读 · 0 评论 -
linux内核启动第二阶段分析-setup_arch()函数
执行setup_arch()函数回到start_kernel当中,488行,调用setup_arch函数,传给他的参数是那个未被初始化的内部变量command_line。这个setup_arch()函数是start_kernel阶段最重要的一个函数,每个体系都有自己的setup_arch()函数,是体系结构相关的,具体编译哪个体系的setup_arch()函数,由顶层Makefile中的ARC原创 2013-03-08 21:36:44 · 3065 阅读 · 0 评论 -
setup_arch()函数分析3-request_standard_resources
文章来源:http://gliethttp.cublog.cn在分析request_standard_resources前先来看linux对挂接在4G总线空间上的设备实体的管理方式-resource结构体 一个独立的挂接在cpu总线上的设备单元,一般都需要一段线性的地址空间来描述设备自身,linux是怎么管理所有的这些外部"物理地址范围段",进而给用户和linux自身一个比较好的观察4G原创 2013-03-09 07:27:52 · 1879 阅读 · 0 评论 -
linux内核启动内核解压过程分析-全
内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zImage的过程,相信大家都很容易理解。但对于zImage是如何解压的过程,就不是那么好理解了。本文将结合部分关键代码,讲解zImage的解压过程。 先看看zImage的组成吧。在内核编译完成后会在arch/arm/boot/下生成zImage在arch/ar原创 2013-03-09 08:36:18 · 1408 阅读 · 0 评论