Android培训班(88)内核解压过程1
由上面的编译过程可知,内核一般是压缩后保存,并由引导程序加载到内存,然后CPU跳到相应的位置运行的,因为压缩后的代码是不能直接运行,所以必须存在一个解码的过程,而这个解码过程是怎么样执行呢?又是怎么样实现的呢?下面带着这两个问题来学习解压的过程。
从上面分析编译过程,就可以知道需要从目录/Android-2.0/kernel/arch/arm/boot入手,在这个目录里主有piggy.S、head.S、misc.c、vmlinux.lds文件,在连接时是把head.S连接到内核的最开始位置,以便最先运行,这是由vmlinux.lds里决定。因此,就是从head.S来开始分析。
/*
* linux/arch/arm/boot/compressed/head.S
*
* Copyright (C) 1996-2002Russell King
* Copyright (C) 2004 Hyok S.Choi (MPU support)
*
* This program is free software;you can redistribute it and/or modify
* it under the terms of the GNUGeneral Public License version 2 as
* published by the Free SoftwareFoundation.
*/
#include<linux/linkage.h>
在head.S的第一段代码,主要描述了本文件名称和位置,以及作者、版权、编写和修改时间。接着包括linux/linkage.h头文件。在内核文件里,都遵守这样的编码规范,添加上开发人员,方便大家跟开发人员交流,并提出建议。添加上修改时间,方便验证文件是否最新的,并且做了那些修改,作为备忘录的作用。
包含linkage.h文件,主要是声明一些宏定义,比如ALIGN、ENTRY(name)、WEAK(name)、KPROBE_ENTRY(name)、KPROBE_END(name)、END(name)、ENDPROC(name)等宏。使用这些宏,可以在多个汇编文件里使用,方便代码维护,比如只需要修改头里的宏定义,就可以把所有使用到这些宏定义的文件进行修改了。
相关文章
- android scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)…[通俗易懂]
- android签名命令行,Android系统签名位置及命令
- android bindservice方法,Android bindservice方法返回false
- android 的hook技术,Android Native Hook技术(一)
- Android SDK下载安装及环境配置[通俗易懂]
- delphixe5 android,Delphi XE5 Android手机端转换Ansi字符串
- android activity singletask,Android Activity启动模式之singleTask实例详解
- android sdk manager安装,Android SDK Manager安装过程
- android sdk安装过程,图文详解Android 3.0 SDK安装教程
- android toast 自定义时间,Android 自定义 Toast 显示时间「建议收藏」
- androidmanifest.xml作用_android读取xml数据
- android scaleanimation动画,Android 动画之ScaleAnimation应用详解「建议收藏」
- Android注册表_手机注册表文件在哪里
- android跳转到相册需要权限,Android打开相册获取图片路径[通俗易懂]
- Android中Calendar类的用法总结[通俗易懂]
- android进程间通信的方式_Android进程注入
- Android tint颜色渲染
- android 动态设置控件宽度,比例等
- 【Android 多媒体开发】 MediaPlayer 网络视频播放器
- 【Android 安全】DEX 加密 ( Proguard 简介 | 默认 ProGuard 分析 )
- 【错误记录】Android Studio 编译报错 ( Could not find com.android.tools.build:gradle:4.2.1. )
- 【Binder 机制】分析 Android 内核源码中的 Binder 驱动源码 binder.c ( googlesource 中的 Android 内核源码 | 内核源码下载 )
- 【Android 插件化】静态分析应用 APK 安装包是否使用了插件化引擎 ( 虚拟化引擎运行特点 | 恶意软件特点 )
- 【错误记录】未安装该应用 ( 在 Android 12 之后 组件设置 android:exported=“false“ 属性 )
- [android] 天气app布局练习(二)详解手机开发
- Connecting Android to Oracle: The Ultimate Guide for Seamless Integration.(android连接oracle)
- Android系统基于Linux内核,实现移动设备突破极限。(android linux内核)
- android版本检测Android程序的版本检测与更新实现介绍
- android图片压缩的3种方法实例