1,本文大部分来自:http://blog.csdn.net/vanbreaker/article/details/76115852,在start_kernel()-->paging_init()-->zone_sizes_init()-->free_area_init_nodes()-->free...
分类:
系统相关 时间:
2015-01-26 20:49:32
阅读次数:
292
create_page_table完成了3种地址映射的页表空间填写:
(1)turn_mmu_on所在1M空间的平映射
(2)kernel image的线性映射
(2)bootparams所在1M空间的线性映射...
分类:
系统相关 时间:
2014-11-24 19:21:27
阅读次数:
441
如果想运行和链接地址不一致,我能想到的办法,只能是汇编中尽量不去涉及一些绝对地址,使用PIC位置无关代码。
联想之前分析的uboot relocation原理,uboot在relocation之后,kernel在开启MMU之前,都实现了链接地址和运行地址不一致,看看它们用的什么方法?
(1)uboot在relocation时修改rel.dyn段(存储所有变量地址),实现将所有变量地址重定位到新运行地址
(2)kernel在开启MMU之前,计算运行地址(物理地址)与链接地址(虚拟地址)的偏移,对变量寻址时都进...
分类:
系统相关 时间:
2014-11-21 10:43:07
阅读次数:
367
本文介绍arm linux启动的第二部分,C语言编写,主要讲述start_kernel到1号进程的创建.
分类:
系统相关 时间:
2014-09-30 00:53:31
阅读次数:
311
描述arm linux启动的概要过程,以S5PV210(Cortex A8)为例,本文描述第一个阶段。
分类:
系统相关 时间:
2014-09-29 15:06:31
阅读次数:
206
asmlinkage void __init start_kernel(void)
{
char * command_line;
extern const struct kernel_param __start___param[], __stop___param[];
/*这两个变量为地址指针,指向内核启动参数处理相关结构体段在内存中的位置(虚拟地址)。
...
分类:
其他好文 时间:
2014-09-12 15:07:03
阅读次数:
541
一、X86的流程可以参考http://www.kerneltravel.net/kernel-book/第十三章%20启动系统/13.5.htm二、arm的流程,在http://www.cnblogs.com/gangsaleisi/archive/2013/01/09/2851734.html基础...
分类:
系统相关 时间:
2014-08-21 13:17:14
阅读次数:
342
head-common.S---具体做了哪些动作---跳转到init/main.c ---b start_kernel//关于start_kernel的强文深入理解linux内核,第八章main.casmlinkage void __init start_kernel(void){char * co...
分类:
其他好文 时间:
2014-08-18 18:20:42
阅读次数:
316
linux kernel从入口到start_kernel的代码分析本文的很多内容是参考了网上某位大侠的文章写的>,有些东西是直接从他那copy过来的。最近分析了一下u-boot的源码,并写了分文档, 为了能够衔接那篇文章,这次又把arm linux的启动代码大致分析了一下,特此写下了这篇文档。一来是...
分类:
系统相关 时间:
2014-08-18 18:16:32
阅读次数:
431
1、X86架构下的从开机到Start_kernel启动的总体过程
这个过程简要概述为:
开机——>BIOS——>GRUB/LILO——>Linux Kernel
其运行的流程图和重要函数如下图所示:
2、加载Linux内核(基于X86)的内存布局图
| |
0A0000 +--------------------------+
| Reserve...
分类:
系统相关 时间:
2014-08-07 15:43:23
阅读次数:
318