linux kernel 自解压过程
来源:互联网 发布:mysql 语句优化 编辑:程序博客网 时间:2024/06/05 14:18
linux 解压后会跳转到,kernel执行地址: head.S中入口执行。解压之前的操作流程呢?
1. linux kernel 被uboot load到内存后的入口函数
arch/arm/boot/compressed/vmlinux.lds.in中定义了linux 入口:
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
....
这里的start定义在 arch/arm/boot/compressed/head.s中
start:
.type start,#function
.rept 7
mov r0, r0
.endr
ARM( mov r0, r0 )
ARM( b 1f )
THUMB( adr r12, BSYM(1f) )
THUMB( bx r12 )
.word 0x016f2818 @ Magic numbers to help the loader
.word start @ absolute load/run zImage address
.word _edata @ zImage end address
THUMB( .thumb )
1: mov r7, r1 @ save architecture ID
mov r8, r2 @ save atags pointer
......
*
* The C runtime environment should now be setup sufficiently.
* Set up some pointers, and start decompressing.
* r4 = kernel execution address
* r7 = architecture ID
* r8 = atags pointer
*/
mov r0, r4
mov r1, sp @ malloc space above stack
add r2, sp, #0x10000 @ 64k max
mov r3, r7
bl decompress_kernel
bl cache_clean_flush
bl cache_off
mov r0, #0 @ must be zero
mov r1, r7 @ restore architecture number
mov r2, r8 @ restore atags pointer
mov pc, r4 @ call kernel
decompress_kernel实现在misc.c中,可以看到,misc中同样定义了
unsigned int __machine_arch_type; 这个在kernel的setup.c中已经有定义了?unsigned int __machine_arch_type __read_mostly;
因此, 可以看到arch\arm\boot\compressed中代码编译是独立于kernel image的
- linux kernel 自解压过程
- linux kernel 自解压部分的一点解释
- linux内核启动过程——zImage自解压
- Linux 内核启动过程分析----zImage自解压
- Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
- Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
- Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
- Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
- Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
- Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
- linux自解压安装脚本
- 学习笔记 --- LINUX内核启动第二阶段分析(不考虑自解压过程)
- arm-linux解压内核过程
- Linux Kernel启动过程浅析
- Linux Kernel suspend/resume 过程
- Linux kernel版本开发过程
- linux kernel panic 调用过程
- linux kernel的启动过程
- Ubuntu下使用SVN
- 推荐免费下载华软源码430套大型企业管理源码
- linux下socket通信,server和client简单例子(二)
- 小球自由下落(OJ平台)
- myeclipse安装svn插件的多种方式
- linux kernel 自解压过程
- Tracking-Learning-Detection TLD解析二 - 跟踪器及检测器设计
- ASP.NET实现匿名访问控制
- Android系统性能调优工具介绍
- Hadoop平台搭建使用系列教程(1)-资源目录
- Android语言设置默认打开myanmar 缅甸
- MyEclipse中SVN的使用方法
- 菜鸟容易犯的低级错误二
- 键集游标