VxWorks启动过程详解(上)
vxworks有三种映像:
VxWorks Image的文件类型有三种
- Loadable Images:由Boot-ROM引导通过网口或串口下载到RAM
- ROM-based Images(压缩/没有压缩):即将Image直接烧入ROM,运行时将Image拷入RAM中运行。
- ROM-Resident Images:Image的指令部分驻留在ROM中运行,仅将数据段部分拷入RAM。
注意这里说的三种映像都是包含真正操作系统VxWorks的映像,其中后两种可以直接启动并运行起来,但是第一种不行,它必须借助另一个叫做Boot Image的映像(可以在Tornado 中的build->build boot rom中生成)才能运行起来,也就是利用Boot Image引导起来然后通过网口或串口下载真正包含VxWorks的Loadable Image,然后才能运行起来。也就是说Boot Image是和Loadable Image 结合使用的。
现在看来一共有四种映像文件,让我们看看它们的组成吧:
- Boot Image:包含一段叫做BootStrap Programs的程序+一段ROM BOOT Program程序。
- Loadable Images:有操作系统VxWorks和应用组成的映像。
- ROM-based Images(压缩/没有压缩):包含一段叫做BootStrap Programs的程序+ Loadable Images(即有操作系统VxWorks和应用组成的映像)
- ROM-Resident Images:同上
通过上面我们可以看出,ROM-based Images,ROM-Resident Images,Boot Image
三种映像都包含一段叫做BootStrap Programs的程序,它具有启动功能,可以把ROM中的代码段和数据段拷贝到RAM中;下面让我们看看三种VxWorks的启动过程:
- Boot Image + Loadable Images:
我们说过Loadable Images是依靠Boot Image加载启动的,首先有Boot Image中的程序BootStrap Programs把Boot Program程序加载到RAM中的RAM_HIGH_ADRS处,然后控制权交给Boot Program,由Boot Program负责一系列简单的硬件初始化(网口,串口等),开始下载Loadable Images(即包含应用的VxWorks操作系统)到RAM_LOW_ADRS,然后控制权交给VxWorks操作系统开始执行。
下面的图一是一个简单的流程图,后面的图二是更为详细的流程图。
图一
图二(1)
图二(2)
- ROM-based Images(压缩/没有压缩):
这种映像因为其本身就包含BootStrap Programs程序,因此可以直接启动,所以这种映像中也就不需要Boot Programme了,首先BootStrap Programs启动,把映像中的VxWorks加载到内存的RAM_LOW_ADRS处并开始运行。图三是一个简图,图四是更为详尽的流程图。
图三
图四
- ROM-Resident Images:
这种映像的加载和上一种是基本相同的,只不过是加载的只有data段和bss段而已。
VxWorks启动过程详解(上)的更多相关文章
- VxWorks启动过程详解(下)
上一节主要是从映像的分类和各种映像的大致加载流程上看VxWorks的启动过程,这一节让我们从函数级看一下VxWorks的启动过程: 1. Boot Image + Loadable Images: 下 ...
- fabric网络环境启动过程详解
这篇文章对fabric的网络环境启动过程进行讲解,也就是我们上节讲到的启动测试fabric网络环境时运行network_setup.sh这个文件的执行流程 fabric网络环境启动过程详解 上一节我们 ...
- Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...
- Linux启动过程详解
Linux启动过程详解 附上两张图,加深记忆 图1: 图2: 第一张图比较简洁明了,下面对第一张图的步骤进行详解: 加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...
- Android 核心分析 之八Android 启动过程详解
Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...
- 【STM32H7教程】第13章 STM32H7启动过程详解
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第13章 STM32H7启动过程详解 本章教 ...
- (转)Linux 开机引导和启动过程详解
Linux 开机引导和启动过程详解 编译自:https://opensource.com/article/17/2/linux-boot-and-startup作者: David Both 原创:LC ...
- linux 开机启动过程详解
Linux开机执行内核后会启动init进程,该进程根据runlevel(如x)执行/etc/rcx.d/下的程序,其下的程序是符号链接,真正的程序放在/etc/init.d/下.开机启动的程序(服务等 ...
- 转-Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
http://blog.chinaunix.net/space.php?uid=10167808&do=blog&id=26042 1)BIOS自检2)启动Grub/Lilo3)加 ...
随机推荐
- Golang时间格式化
PHP中格式化时间很方便,只需要一个函数就搞定: date("Y-m-d H:i:s") 而在Golang中,用的是"2006-01-02 15:04:05"这 ...
- [Cpp] 面向对象程序设计 C++
初始化列表(包括成员对象初始化) 初始化列表 ( 推荐 ) : 可以初始化任何类型的数据, 不管是不是普通类型还是对象,都建议用. 不再需要在构造器中赋值了, 而且初始化列表比构造函数要早执行. ...
- 济南清北学堂游记 Day 2.
在大佬云集的地方被直线碾压是什么样的体验? 大概就是210和1030的差别. 大概就是高质量机械键盘和空气的区别. 回来的路上,我一直在想,我到底是不是一个高三的? 大概也是能找到以前在家和学校训练时 ...
- CodeChef Cards, bags and coins [DP 泛型背包]
https://www.codechef.com/problems/ANUCBC n个数字,选出其一个子集.求有多少子集满足其中数字之和是m的倍数.n $\le$ 100000,m $\le$ 100 ...
- HDU 2141 Can you find it? [二分]
Can you find it? Give you three sequences of numbers A, B, C, then we give you a number X. Now you n ...
- BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]
2822: [AHOI2012]树屋阶梯 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 779 Solved: 453[Submit][Status] ...
- HDU 4333 [SAM WRONG!!!]
题意:给一个数字,每一次把它的最后一位拿到最前面,一直那样下去,分别求形成的数字小于,等于和大于原来数的个数. SAM上就是走n步 相等好好做啊,但是大于小于不好做啊,用类似弦论的思想也不能处理出怎样 ...
- uboot之位置无关代码解析
在之前的话 新年过去了,那么久没有好好学习,感觉好颓废,现在就uboot的一些基础问题做一些笔记,顺便分享给大家,不过由于见识有限,如果有不足之处请多多指教. 位置无关?什么意思?我们先了解一些基础知 ...
- php get_called_class()函数与get_class()函数的区别
get_class (): 获取当前调用方法的类名: get_called_class():获取静态绑定后的类名: class Foo{ public function test(){ var_dum ...
- Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型
1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...