- 博客(4)
- 资源 (12)
- 收藏
- 关注
原创 ARM架构内核启动分析-head.S(1.4、stext分析之打开MMU并跳到start kernel)
1.2.5、打开MMU:接下来,调用__enable_mmu来打开MMU,在该函数的最后会使用这里保存在R13中的__switch_data函数地址并调用它,函数__switch_data定义在head-common.S中,它的函数指针__mmap_switched最终会调用第一个C函数start_kernel!ldr r13, __switch_data @ ad
2013-07-22 20:36:56 2722
原创 ARM架构内核启动分析-head.S(1.3、stext分析之内存临时页表建立)
1.2.4、创建临时页表:对于创建临时页表,使用的是arm的L1主页表,L1主页表也称为段页表(section page table,说白了就是采用段式管理而不是页式管理),它将4GB的地址空间分成若干个1MB的段(section),因此L1页表包含4096个页表项(section entry);每个页表项是32 bits(4 bytes), 所以L1页表占用 4096*4 = 16k的内存空
2013-07-22 20:32:59 1989
原创 ARM架构内核启动分析-head.S(1.2、stext分析之准备阶段)
1.1、 stext分析:1.2.1、运行环境参数:1、首先注意一下,内核代码在进入C代码之前的几个重要文件:arch/arm/kernel/head.S:贯穿汇编执行阶段的始末,并且定义了最根本的参数;arch/arm/kernel/head-common.S:包括一些重要汇编子程序;arch/arm/mm/proc-XXX.S:汇编执行阶段关于内存(临时)页表、CPU
2013-07-22 20:31:05 2407
原创 ARM架构内核启动分析-head.S(1.1、vmlinux.lds 链接脚本分析)
ARM架构内核启动分析一、start kernel之前首先需要明确的是,内核镜像在被解压之后执行,是执行哪段代码,这是个重要的问题,平时在编译生成应用程序或内核模块时,我们无需考虑链接的具体细节,如代码和数据放在哪里、代码执行入口在哪等等,但在编译生成内核镜像时就不能不考虑这些了,对于arm架构,下面是它的编译内核时的arm交叉链接器命令:arm-linux-ld -EL -p --n
2013-07-22 20:25:42 5265
linux arm的高端内存映射详解
2013-08-22
slab完全详解
2013-08-21
linux内存页表创建
2013-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人