转载:

***************************************************************************************************************************
作者:EasyWave                                                                                 时间:2012.02.18

类别:linux驱动开发                                                                           声明:转载,请保留链接

***************************************************************************************************************************

一: Linux kernel内存存布局

在ARM平台中zImage.bin是一个压缩镜像,它用于将被压缩的kernel解压缩到KERNEL_RAM_PADDR开始的一段内存中,接
着跳进真正的kernel去执行。该kernel的执行起点是stext函数,定义于arch/arm/kernel/head.S。在分析
ENTRY(stext)前,先介绍此时内存的布局如下图所示:

aaarticlea/png;base64,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" alt="" />

图一:内存布局[此处借用下网络上已有的图片,自己不想弄图片了]

在我的YL-E2410的平台上,SDRAM的开始内存地址是0x30000000,大小为64M,即
0x20000000。 Linux2.6.38.8 ARM
kernel将SDRAM的开始地址定义为PHYS_OFFSET。经bootloader加载kernel并由自解压部分代码运行后,最终kernel
被放置到KERNEL_RAM_PADDR(=PHYS_OFFSET +
TEXT_OFFSET,即0x30008000)地址上的一段内存,经此放置后,kernel代码以后均不会被移动。在arch\arm\mach-
s3c2410\Makefile.boot文件,其内容如下:

zreladdr-y  := 0x30008000
 params_phys-y := 0x30000100

这也验证了为什么内核会被放置在0x30008000的地方了,这个地址必须由Makefile.boot指定。而params_phys-y则是
linux
Kernel的taglist等参数的起始地址。在进入kernel代码前,即自解压缩阶段,ARM未开启MMU功能。因此启动代码一个重要功能是设置好
相应的页表,并开启MMU功能。为了支持MMU功能,kernel镜像中的所有符号,包括代码段和数据段的符号,在链接时都生成了它在开启MMU时,所在
物理内存地址映射到的虚拟内存地址。Kernel第一个符号stext为例,在编译链接,它生成的虚拟地址是0xc0008000,而放置它的物理地址为
0x30008000。实际上这个变换可以利用简单的公式进行表示:va
= pa – PHYS_OFFSET + PAGE_OFFSET。Arm
linux最终的kernel空间的页表,就是按照这个关系来建立。之所提及linux的内存映射,原因是在进入kernel代码,里面所有符号地址值为
0xCxxxxxxx地址,而此时ARM未开启MMU功能,故在执行stext函数第一条执行时,它的PC值就是stext所在的内存地址(即物理地
址,0x30008000)。

二:stext函数详解

stext函数定义在arch/arm/kernel/head.S,它的功能是获取处理器类型和机器类型信息,并创建临时的页表,然后开启MMU
功能,并跳进第一个C语言函数start_kernel。stext函数的在前置条件是:MMU, D-cache, 关闭; r0 = 0, r1 =
machine nr, r2 = atags prointer.

***************************************************************************************************************************
作者:EasyWave 时间:2012.02. 类别:linux驱动开发 声明:转载,请保留链接 *************************************************************************************************************************** 一: Linux kernel内存存布局 在ARM平台中zImage.bin是一个压缩镜像,它用于将被压缩的kernel解压缩到KERNEL_RAM_PADDR开始的一段内存中,接着跳进真正的kernel去执行。该kernel的执行起点是stext函数,定义于arch/arm/kernel/head.S。在分析ENTRY(stext)前,先介绍此时内存的布局如下图所示: 图一:内存布局[此处借用下网络上已有的图片,自己不想弄图片了] 在我的YL-E2410的平台上,SDRAM的开始内存地址是0x30000000,大小为64M,即0x20000000。 Linux2.6.38. ARM kernel将SDRAM的开始地址定义为PHYS_OFFSET。经bootloader加载kernel并由自解压部分代码运行后,最终kernel被放置到KERNEL_RAM_PADDR(=PHYS_OFFSET + TEXT_OFFSET,即0x30008000)地址上的一段内存,经此放置后,kernel代码以后均不会被移动。在arch\arm\mach-s3c2410\Makefile.boot文件,其内容如下: zreladdr-y := 0x30008000
params_phys-y := 0x30000100 这也验证了为什么内核会被放置在0x30008000的地方了,这个地址必须由Makefile.boot指定。而params_phys-y则是linux Kernel的taglist等参数的起始地址。在进入kernel代码前,即自解压缩阶段,ARM未开启MMU功能。因此启动代码一个重要功能是设置好相应的页表,并开启MMU功能。为了支持MMU功能,kernel镜像中的所有符号,包括代码段和数据段的符号,在链接时都生成了它在开启MMU时,所在物理内存地址映射到的虚拟内存地址。Kernel第一个符号stext为例,在编译链接,它生成的虚拟地址是0xc0008000,而放置它的物理地址为0x30008000。实际上这个变换可以利用简单的公式进行表示:va = pa – PHYS_OFFSET + PAGE_OFFSET。Arm linux最终的kernel空间的页表,就是按照这个关系来建立。之所提及linux的内存映射,原因是在进入kernel代码,里面所有符号地址值为0xCxxxxxxx地址,而此时ARM未开启MMU功能,故在执行stext函数第一条执行时,它的PC值就是stext所在的内存地址(即物理地址,0x30008000)。 二:stext函数详解 stext函数定义在arch/arm/kernel/head.S,它的功能是获取处理器类型和机器类型信息,并创建临时的页表,然后开启MMU功能,并跳进第一个C语言函数start_kernel。stext函数的在前置条件是:MMU, D-cache, 关闭; r0 = , r1 = machine nr, r2 = atags prointer.

三:__lookup_processor_type函数
 __lookup_processor_type函数是一个非常讲究技巧的函数,Kernel代码将所有CPU信息的定义都放
到.proc.info.init段中,因此可以认为.proc.info.init段就是一个数组,每个元素都定义了一个或一种CPU的信息。目前
__lookup_processor_type使用该元素的前两个字段cpuid和mask来匹配当前CPUID,如果满足CPUID &
mask == cpuid,则找到当前cpu的定义并返回。

/*
* Read processor ID register (CP#15, CR0), and look up in the linker-built
* supported processor list. Note that we can't use the absolute addresses
* for the __proc_info lists since we aren't running with the MMU on
* (and therefore, we are not in the correct address space). We have to
* calculate the offset.
*
* r9 = cpuid
* Returns:
* r3, r4, r6 corrupted
* r5 = proc_info pointer in physical address space
* r9 = cpuid (preserved)
*/
__CPUINIT
__lookup_processor_type:
/* adr 是相对寻址,它的寻计算结果是将当前PC值加上__lookup_processor_type_data符号与PC的偏移量,
* 而PC是物理地址,因此r3的结果也是__lookup_processor_type_data符号的物理地址 */
adr r3, __lookup_processor_type_data
ldmia r3, {r4 - r6}
sub r3, r3, r4 @ get offset between virt&phys
add r5, r5, r3 @ convert virt addresses to
add r6, r6, r3 @ physical address space
: ldmia r5, {r3, r4} @ value, mask
/* 将当前CPUID和mask相与,并与数组元素中的CPUID比较是否相同
* 若相同,则找到当前CPU的__proc_info定义,r5指向访元素并返回。
*/
and r4, r4, r9 @ mask wanted bits
teq r3, r4
beq 2f
/* r5指向下一个__proc_info元素 */
add r5, r5, #PROC_INFO_SZ @ sizeof(proc_info_list)
/* 是否遍历完所有__proc_info元素 */
cmp r5, r6
blo 1b
/* 找不到则返回NULL */
mov r5, # @ unknown processor
: mov pc, lr
ENDPROC(__lookup_processor_type)

四:__lookup_machine_type 函数
__lookup_machine_type
和__lookup_processor_type像对孪生兄弟,它们的行为都是很类似的:__lookup_machine_type根据r1寄存器的
机器编号到.arch.info.init段的数组中依次查找机器编号与r1相同的记录。它使了与它孪生兄弟同样的手法进行虚拟地址到物理地址的转换计
算。

/*
* Lookup machine architecture in the linker-build list of architectures.
* Note that we can't use the absolute addresses for the __arch_info
* lists since we aren't running with the MMU on (and therefore, we are
* not in the correct address space). We have to calculate the offset.
*
* r1 = machine architecture number
* Returns:
* r3, r4, r6 corrupted
* r5 = mach_info pointer in physical address space
*/
__lookup_machine_type:
adr r3, __lookup_machine_type_data
ldmia r3, {r4, r5, r6}
sub r3, r3, r4 @ get offset between virt&phys
add r5, r5, r3 @ convert virt addresses to
add r6, r6, r3 @ physical address space
: ldr r3, [r5, #MACHINFO_TYPE] @ get machine type
teq r3, r1 @ matches loader number?
beq 2f @ found
add r5, r5, #SIZEOF_MACHINE_DESC @ next machine_desc
cmp r5, r6
blo 1b
mov r5, # @ unknown machine
: mov pc, lr
ENDPROC(__lookup_machine_type)

具体的请看我的另一篇文章:MACHINE_START and MACHINE_END Macro define

五:为kernel建立临时页表
前面提及到,kernel里面的所有符号在链接时,都使用了虚拟地址值。在完成基本的初始化后,kernel代码将跳到第一个C语言函数
start_kernl来执行,在哪个时候,这些虚拟地址必须能够对它所存放在真正内存位置,否则运行将为出错。为此,CPU必须开启MMU,但在开启
MMU前,必须为虚拟地址到物理地址的映射建立相应的面表。在开启MMU后,kernel指并不马上将PC值指向start_kernl,而是要做一些C
语言运行期的设置,如堆栈,重定义等工作后才跳到start_kernel去执行。在此过程中,PC值还是物理地址,因此还需要为这段内存空间建立va
= pa的内存映射关系。当然,本函数建立的所有页表都会在将来paging_init销毁再重建,这是临时过度性的映射关系和页表。
在介绍__create_table_pages前,先认识一个macro pgtbl,它将KERNL_RAM_PADDR –
0x4000的值赋给rd寄存器,从下面的使用中可以看它,该值是页表在物理内存的基础,也即页表放在kernel开始地址下的16K的地方。

 .macro pgtbl, rd
 ldr \rd, =(KERNEL_RAM_PADDR - 0x4000)
 .endm

/*
* Setup the initial page tables. We only setup the barest
* amount which are required to get the kernel running, which
* generally means mapping in the kernel code.
*
* r8 = machinfo
* r9 = cpuid
* r10 = procinfo
*
* Returns:
* r0, r3, r5-r7 corrupted
* r4 = physical page table address
*/
__create_page_tables:
pgtbl r4 @ page table address /*
* Clear the 16K level 1 swapper page table
*/
mov r0, r4
mov r3, #
add r6, r0, #0x4000
: str r3, [r0], #
str r3, [r0], #
str r3, [r0], #
str r3, [r0], #
teq r0, r6
bne 1b ldr r7, [r10, #PROCINFO_MM_MMUFLAGS] @ mm_mmuflags /*
* Create identity mapping to cater for __enable_mmu.
* This identity mapping will be removed by paging_init().
*/
adr r0, __enable_mmu_loc
ldmia r0, {r3, r5, r6}
sub r0, r0, r3 @ virt->phys offset
add r5, r5, r0 @ phys __enable_mmu
add r6, r6, r0 @ phys __enable_mmu_end
mov r5, r5, lsr #
mov r6, r6, lsr # : orr r3, r7, r5, lsl # @ flags + kernel base
str r3, [r4, r5, lsl #] @ identity mapping
teq r5, r6
addne r5, r5, # @ next section
bne 1b /*
* Now setup the pagetables for our kernel direct
* mapped region.
*/
mov r3, pc
mov r3, r3, lsr #
orr r3, r7, r3, lsl #
add r0, r4, #(KERNEL_START & 0xff000000) >>
str r3, [r0, #(KERNEL_START & 0x00f00000) >> ]!
ldr r6, =(KERNEL_END - )
add r0, r0, #
add r6, r4, r6, lsr #
: cmp r0, r6
add r3, r3, # <<
strls r3, [r0], #
bls 1b #ifdef CONFIG_XIP_KERNEL
/*
* Map some ram to cover our .data and .bss areas.
*/
orr r3, r7, #(KERNEL_RAM_PADDR & 0xff000000)
.if (KERNEL_RAM_PADDR & 0x00f00000)
orr r3, r3, #(KERNEL_RAM_PADDR & 0x00f00000)
.endif
add r0, r4, #(KERNEL_RAM_VADDR & 0xff000000) >>
str r3, [r0, #(KERNEL_RAM_VADDR & 0x00f00000) >> ]!
ldr r6, =(_end - )
add r0, r0, #
add r6, r4, r6, lsr #
: cmp r0, r6
add r3, r3, # <<
strls r3, [r0], #
bls 1b
#endif /*
* Then map first 1MB of ram in case it contains our boot params.
*/
add r0, r4, #PAGE_OFFSET >>
orr r6, r7, #(PHYS_OFFSET & 0xff000000)
.if (PHYS_OFFSET & 0x00f00000)
orr r6, r6, #(PHYS_OFFSET & 0x00f00000)
.endif
str r6, [r0] #ifdef CONFIG_DEBUG_LL
#ifndef CONFIG_DEBUG_ICEDCC
/*
* Map in IO space for serial debugging.
* This allows debug messages to be output
* via a serial console before paging_init.
*/
addruart r7, r3 mov r3, r3, lsr #
mov r3, r3, lsl # add r0, r4, r3
rsb r3, r3, #0x4000 @ PTRS_PER_PGD*sizeof(long)
cmp r3, #0x0800 @ limit to 512MB
movhi r3, #0x0800
add r6, r0, r3
mov r3, r7, lsr #
ldr r7, [r10, #PROCINFO_IO_MMUFLAGS] @ io_mmuflags
orr r3, r7, r3, lsl #
: str r3, [r0], #
add r3, r3, # <<
teq r0, r6
bne 1b #else /* CONFIG_DEBUG_ICEDCC */
/* we don't need any serial debugging mappings for ICEDCC */
ldr r7, [r10, #PROCINFO_IO_MMUFLAGS] @ io_mmuflags
#endif /* !CONFIG_DEBUG_ICEDCC */ #if defined(CONFIG_ARCH_NETWINDER) || defined(CONFIG_ARCH_CATS)
/*
* If we're using the NetWinder or CATS, we also need to map
* in the 16550-type serial port for the debug messages
*/
add r0, r4, #0xff000000 >>
orr r3, r7, #0x7c000000
str r3, [r0]
#endif
#ifdef CONFIG_ARCH_RPC
/*
* Map in screen at 0x02000000 & SCREEN2_BASE
* Similar reasons here - for debug. This is
* only for Acorn RiscPC architectures.
*/
add r0, r4, #0x02000000 >>
orr r3, r7, #0x02000000
str r3, [r0]
add r0, r4, #0xd8000000 >>
str r3, [r0]
#endif
#endif
mov pc, lr
ENDPROC(__create_page_tables)

里面涉及的代码主要就是建立虚拟地址与物理地址的转换,尤其是右移20位和18位两个地方与页表目录项的地址关系比较复杂。执行完该函数后,虚拟内存和物理内存的映射关系如下图所示:

aaarticlea/png;base64,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" alt="" />

基于linux2.6.38.8内核启动过程完全解析[一]的更多相关文章

  1. 基于linux2.6.38.8内核zImage文件的自解压详解

    转载:http://blog.csdn.net/wavemcu/article/details/7270439 ******************************************** ...

  2. Linux内核启动过程概述

    版权声明:本文原创,转载需声明作者ID和原文链接地址. Hi!大家好,我是CrazyCatJack.今天给大家带来的是Linux内核启动过程概述.希望能够帮助大家更好的理解Linux内核的启动,并且创 ...

  3. Linux移植之内核启动过程start_kernel函数简析

    在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容 ...

  4. Linux移植之内核启动过程引导阶段分析

    在Linux移植之make uImage编译过程分析中已经提到了uImage是一个压缩的包并且内含压缩程序,可以进行自解压.自解压完成之后内核代码从物理地址为0x30008000处开始运行.下面分析在 ...

  5. 跟踪内核启动过程CONFIG_DEBUG_LL【转自】

    转自:http://bbs.chinaunix.net/thread-3642079-1-1.html 最近在调试Linux内核,跟踪启动过程.发现在没有turn on mmu之前,可以使用物理地址, ...

  6. Android程序启动过程深入解析

    当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样的? 什么是Linux内核? 桌面系统linux内核与Android系统linux内核有什么区别? 什么是引导装载程序 ...

  7. Android启动过程深入解析

    本文由 伯乐在线 - 云海之巅 翻译.未经许可,禁止转载!英文出处:kpbird.欢迎加入翻译小组. 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样的? 什么是Li ...

  8. Android启动过程深入解析【转】

    转自:http://www.open-open.com/lib/view/open1403250347934.html 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么 ...

  9. 1.移植3.4内核-分析内核启动过程,重新分区,烧写jffs2文件系统

    1.在上章-移植uboot里.我们来分析下uboot是如何进入到内核的 首先,uboot启动内核是通过bootcmd命令行实现的,在我们之前移植的bootcmd命令行如下所示: bootcmd=nan ...

随机推荐

  1. poj 1581 A Contesting Decision

    题目大意:有四个题目,有某些队做题,写一个判断程序如:Stars 2 20 5 0 4 190 3 220Stars是队名,2是提交的次数,20是花费的时间,花费时间为0则说明题目提交错误,错误的忽略 ...

  2. 第二百三十三天 how can I 坚持

    刚才看了场球,亚冠恒大和迪拜阿尔阿赫利,1:0,刚打开电脑就看到了进球,还是很幸运的. 在家待了一天,阴天,预报明天又中到大雪 啊,下吧.好希望下场大雪啊. 最近一直感觉好累,写代码不容易啊 ,还是因 ...

  3. 转】Maven学习总结(九)——使用Nexus搭建Maven私服

    原博文出自于:http://www.cnblogs.com/xdp-gacl/p/4068967.html 感谢! 一.搭建nexus私服的目的 为什么要搭建nexus私服,原因很简单,有些公司都不提 ...

  4. 使用bat快速创建cocos2d-x模板

    在上一篇文章中我们学习了如何使用python创建cocos2d-x 2.2工程,但是每次我们都输入一大串的命令,好烦好烦啊.参考别人的文章这里写了一个bat,如下 @echo off echo --- ...

  5. C# Common Keyword

    [C# Common Keyword] 1.abstract Use the abstract modifier in a class declaration to indicate that a c ...

  6. Spring中的BeanUtils与apache commons中的BeanUtils用法[1]

    1. 前言 在开发过程中,经常遇到把要给一个bean的属性赋给另外一个bean.最笨的方法是每个属性都单独写一个,聪明的方法是应用反射写一个工具方法.考虑到这个需求基本每个程序员都会遇到,那么一定已经 ...

  7. 关于Unity

    14年左右的时候开始学习了Unity,一直没有时间总结一些东西,框架机制啥的都不用说了,网上到处都有,虽然Unity是脚本机制,但是熟悉编程的人只要理解透了拿面向对象的思维编码也完全没有问题,这里重新 ...

  8. thinkphp 防止sql注入

    防止SQL注入 对于WEB应用来说,SQL注入攻击无疑是首要防范的安全问题,系统底层对于数据安全方面本身进行了很多的处理和相应的防范机制,例如: $User = M("User") ...

  9. Jquery 获取文件内容

    $('.ke-edit-iframe').contents().find('body').text() <iframe class="ke-edit-iframe" hide ...

  10. JS:中文GB2312编码

    今天开发遇到了个问题,有点纳闷.... 在ajax的时候要传递一个中文值,不管我在js中是否使用了encodeURI.encodeURIComponent编码,但是在后台request获取的值是始终是 ...