五.Tornado目录结构
Tornado开发系统包含三个高度集成的部分:
·运行在宿主机和目标机上功能强大的交叉开发工具和实用程序 ·运行在目标机上的高性能、可裁剪的实时操作系统VxWorks
·连接宿主机和目标机的连接方式,如以太网、串口线、ICE、ROM仿真器等
Tornado下的主要目录如下:
Host目录树
Target目录树
VxWorks映象及启动顺序
最小的初始化处理是由防在目标机内存特殊位置的一部分代码和可能的一些表(中断描述表、全局描述表)组成。当目标机复位或者加电以后,处理器总是跳转到这个位置。这部分代码初始化机器到某一个指定的状态上、初始化内存和内存地址、关中断,然后把控制权交给附加引导代码。
一.VxWorks映象类型
系统把VxWorks映象的类型分成三种,各类型的影响内部又包含不同的子类型。 1. 可加载(Loadable)的映象类型
可加载型映象的执行需要通过引导代码把它装载到目标机RAM中,然后才开始执行。而引导代码分为两中:
·引导代码固化在ROM或FLASH中 ·引导代码是一个独立的VxWorks应用 引导代码通常也是一种VxWorks映象,有时候称之为引导映象。它的设计目的就是把另一个包含应用的VxWorks映象装入到RAM中。引导映象在运行时,可能在ROM/FLASH中执行,也可能在RAM中执行。
2. 基于ROM(ROM-based)的映象类型
基于ROM型映象在执行前首先把自己从ROM或者FLASH中装载到RAM中。这种类型的映象通常在启动阶段会比较慢,但是执行阶段比较快。 3. ROM驻留(ROM-Resident)的映象类型
ROM驻留型映象在启动的时候,把数据段拷贝到目标机RAM中。这种类型的映象通常在启动的时候会比较快,当目标机的RAM空间比较小的时候,通常使用这种映象。在嵌入式应用中通常使用这种类型的映象,然而它在目标机上的执行速度要比其它类型的映象要慢。 二.VxWorks映象启动顺序
在目标机加电启动时发生的顺序启动事件是一个典型VxWorks映象需要执行的功能。所有类型的VxWorks映象在初始化阶段启动顺序是一样的,处理器通过”Jump”跳转指令跳转到ROM或者Flash中引导代码的入口处,这段引导代码通常包含如下的操作: ·关中断
·初始化目标机内存
·装载适当的VxWorks映象段
·跳转到设置目标机为静止状态的代码处 1. 可加载型VxWorks映象引导顺序
可加载型VxWorks映象引导的详细过程如下:
(1) 数据段和代码段的装入。系统加电后执行引导带代码,首先把引导代码的代码
段和数据段从ROM或者FLASH里装到RAM中。此时,需要考虑下面的情况: ·压缩型引导代码。这种类型的引导代码在拷贝的时候,要对其进行解压操作。 ·非压缩型引导代码。这种类型的引导代码直接进行拷贝操作就可以了。 ·驻留型引导代码。这种类型的引导代码只拷贝它的数据段就可以了。
(2) VxWorks映象的装入。引导代码执行后,把VxWorks映象装入到RAM中,然后
跳转到VxWorks映象装入点。
(3) 系统初始化。这步操作由静态链接在VxWorks映象里的系统初始化代码来完成,
最终完成系统的初始化操作。
2. 基于ROM的VxWorks映象启动顺序
引导带程序 VxWorks映象 基于ROM的VxWorks映象 基于ROM的VxWorks映象启动详细过程如下: (1) VxWorks映象的装入。系统加电后引导代码的执行,首先将VxWorks映象从ROM
或者FLASH里装入到RAM中。
(2) 控制权转移。VxWorks映象被装入之后,系统控制权交给VxWorks映象中的系
统初始化代码部分
(3) 系统初始化。静态链接在VxWorks中的系统初始化代码在RAM里执行,完成系
统初始化操作
3. ROM驻留型VxWorks映象启动顺序
基于ROM驻留型的VxWorks映象启动详细过程如下:
(1) VxWorks映象的装入。系统加电后引导代码的执行,首先将VxWorks映象的数
据段从ROM或者FLASH里装入到RAM中。
(2) 控制权转移。VxWorks映象被装入RAM之后,系统控制权交给ROM/Flahs里的
VxWorks映象中的系统初始化代码部分
(3) 系统初始化。静态链接在VxWorks中的系统初始化代码执行,完成系统初始化
操作
引导带程序
VxWorks代码段
VxWorks数据段
三.典型的VxWorks映象
1. VxWorks 2. VxWorks.st 3. VxWorks_rom 4. VxWorks.st_rom 5. VxWorks.res_rom
6. VxWorks.res_rom_nosym 7. Bootrom
8. Bootrom_uncmp 9. Bootrom_res
VxWorks数据段 VxWorks预内核初始化
预内核初始化主要是指CPU的初始化、向量表的安装、全局描述表的安装、目标机上硬件设备的初始化、操作系统初始化等操作。 一. 预内核初始化概述
(1) 下载型VxWorks映象预内核的初始化顺序 目标机系统加电后,首先执行VxWorks引导程序,由引导程序把VxWorks映象装载到目标机RAM中。当把VxWorks映象装入到RAM之后,处理器跳转到映象装入地址处。接下来首先执行sysInit()函数,然后执行usrInit函数,由usrInit()函数彻底完成整个预内核的初始化。
(2) ROM型VxWorks映象预内核的初始化顺序
目标系统加电后,首先执行romInit()函数,其功能是对CPU进行初始化,然后执行romStart()函数进行映象段的拷贝和解压缩工作,然后执行usrInit函数,由usrInit()函数彻底完成整个预内核的初始化。