在Bootloader将 Linux 内核映像拷贝到 RAM 以后,可以通过下例代码启动 Linux 内核:call_linux(0, machine_type, kernel_params_base)。其中,machine_tpye 是Bootloader检测出来的处理器类型, kernel_pa...
分类:
系统相关 时间:
2015-03-30 22:29:44
阅读次数:
193
1、作用嵌入式系统的引导加载程序,系统上电后运行的第一段程序。在完成对系统的初始化任务后,它会将非易失性存储器(通常是FLASH)中的Linux内核拷贝到RAM中,然后跳转到内核的第一条指令处继续执行,从而启动Linux内核。2、功能实际应用中的Bootloader根据所需功能的不同可以设计的很复杂...
分类:
其他好文 时间:
2015-03-30 20:32:35
阅读次数:
127
在前面的文章分析完init.rc的解析以后,我们知道现在action按照init.c的main函数中的秩序,维护了一条qlist的链表,listnode为action_qlist
service也维护了一条链表,listnode为service_list。
那么,在android的启动过程中,action和service是如何被启动的呢?
我们接下来再回到我们一直分析的init.c的main函数中来看一下。...
分类:
移动开发 时间:
2015-03-30 18:41:41
阅读次数:
270
对于Android操作系统的启动过程,相对比较复杂,这里只是了解一下原理。
做过硬件开发都知道当我们设备接通电源后会有一个称作“引导加载程序”进行初始化,我们叫它bootloader,那
Android设备接通电源后,也会去加载这段程序,至于加载bootloader有用处?主要是检查硬件特性并将操作系统的
第一部分加载到设备的存储器中,当然不同设备的引导加载程序是不一...
分类:
移动开发 时间:
2015-03-29 18:05:00
阅读次数:
130
上一章讲述了android启动过程中,加载init.rc之后需要对其进行解析。
而解析又根据三个不同的SECTION来执行不同的初始化的文件,分别是parse_action,parse_service,parse_import.
那么,这一节,我们就从parse_action来讲一下是如何解析init.rc下面,on的关键字及其对应的action与command的。
按照惯例,先来看一下这个函数实现:...
分类:
移动开发 时间:
2015-03-29 16:34:52
阅读次数:
183
Init.rc的解析过程是笔者认为在android启动过程中,最复杂,最难理解的部分。
虽然它的内容很少,但是却包含了非常多的处理,接下来我们来慢慢的分析。
经过前面的分析,我们知道了read完init.rc的文件后,保存到了data的数组,传递到了parse_config的函数里。...
分类:
移动开发 时间:
2015-03-29 15:13:36
阅读次数:
191
#############################################
本文为极度寒冰原创,转载请注明出处
#############################################
Android的启动流程绝大部分人都知道,但是大多数人都是这样描述的:
Android启动,首先是启动Bootloader,然后挂载kernel,挂载完ke...
分类:
移动开发 时间:
2015-03-29 10:56:28
阅读次数:
145
源码版本:Android-4.4.4_r2
提示:大部分分析直接注释在代码内。
接着上一篇【分析】dalvik虚拟机启动过程(一)
JNI_CreateJavaVM函数调用dvmCreateJNIEnv创建JNIEnv后,接着又调用了dvmStartup函数初始化VM:
/*
* VM 初始化。
* VM initialization. Pass in any...
分类:
其他好文 时间:
2015-03-29 00:37:57
阅读次数:
228
源码版本:Android-4.4.4_r2
在AndroidRuntime::start中调用AndroidRuntime::startVm函数启动了虚拟机,然后又调用了AndroidRuntime::startReg函数注册Android函数:
/*
* 向 VM 注册Android本地函数。
* Register android native functions with...
分类:
其他好文 时间:
2015-03-29 00:37:25
阅读次数:
209
源码版本:Android-4.4.4_r2
提示:大部分分析直接注释在代码内。
主要函数的调用层次:
|AndroidRuntime::start
|AndroidRuntime::startVm
|JNI_CreateJavaVM
|dvmCreateJNIEnv
|dvmStartup
...
分类:
其他好文 时间:
2015-03-29 00:37:22
阅读次数:
178