xWorks启动过程(A)
来源:互联网 发布:unity3d ugui对话框 编辑:程序博客网 时间:2024/06/04 20:14
下面是具体的流程图:
其 中第一阶段的执行流程使用的是上图的左边的源文件中的那些函数(romInit->romStart->usrInit-> sysHwinit->usrKernelinit->usrRoot);第二阶段执行流程使用的是上图中右边源文件中的那些函数 (sysInit-> usrInit->sysHwinit->usrKernelinit->usrRoot->usrAppInit)。下面具体 解释:
第一阶段:
- romInit.s:romInit()
• 系统上电之后,首先调用的函数就是romInit()
• 禁止中断
• 把启动类型(冷启动/热启动)放在堆栈上
• 清除cache
• 初始化CPU基本寄存器,调用SDRAM初始化函数初始化UPM
• 直接跳转到bootInit.c:romStart()
- bootInit.c:romStart()
• 把代码段和数据段从bootrom复制到RAM当中
• 完成程序映象的解压缩(如果映象是压缩版本的)
• 跳转到bootConfig.c:usrInit()
• bootConfig.c:usrInit()
• VxWorks 中第一个C语言完成的代码。执行操作系统内核所必须的初始化程序。
• Cache程序库的初始化
• 清零系统的BSS段
• 初始化中断向量表
• 使硬件工作在一个“安静”的状态,尽量不产生各种中断或者异常
• 控制权移交给KernelInit(),产生usrRoot根任务
• 在usrRoot根任务中解析Bootline,产生bootCmdLoop任务,用于启动、加载VxWorks映像
此时,调试超级终端会有如下打印信息:
VxWorks System Boot
Copyright 1984-1998 Wind River Systems, Inc.
CPU: MPC860
Version: 5.4
BSP version: 1.2/0
Creation date: Aug 2 2002, 09:19:47
Press any key to stop auto-boot...
3
此时按任意键可停止自动启动,修改启动行参数
[VxWorks Boot]: p
boot device : cpm
unit number : 0
processor number : 0
host name : Michel
file name : c:/ftpRoot/vxWorks
inet on ethernet (e) : 168.2.7.27:ffffff00
host inet (h) : 168.2.7.10
user (u) : target
Passwd(pw) : target
flags (f) : 0x0
―――――――――――――――――――――――――――
[VxWorks Boot]: @
boot device : cpm
unit number : 0
processor number : 0
host name : Michel
file name : c:/ftpRoot/vxWorks
inet on ethernet (e) : 168.2.7.27:ffffff00
host inet (h) : 168.2.7.10
user (u) : target
Passwd(pw) : target
flags (f) : 0x0
Attached TCP/IP interface to cpm0.
Attaching network interface lo0... done.
第二阶段:
- bootConfig.c: bootLoad( )
加载VxWorks映像,并转向它的加载地址,从sysInit入口开始执行VxWorks映像
- sysALib.s : sysInit( )
与romInit.s : romInit()的初始化过程类似,但不再初始化SDRAM
- usrConfig.c : usrInit( )
设置cache的工作模式,板级硬件初始化,初始化Wind内核,启动usrRoot( )根任务
- usrConfig.c : usrRoot( )
初始化内存,系统时钟,I/O系统,标准输入输出错,异常处理,添加用户应用程序
此时调试超级终端打印如下信息,Boot引导完成
/*VXWORKS Image Getting Loaded*/
Loading... 881680
Starting at 0x10000…
Attached TCP/IP interface to cpm unit 0
Attaching network interface lo0... done.
VxWorks
Copyright 1984-1998 Wind River Systems, Inc.
CPU : MPC860
vxWorks : 5.4
BSP version: 1.2/0
Creation date: Aug 2 2000
WDB : Ready
2. ROM-based Images(压缩/没有压缩):和上面那种启动方式相比,这种启动方式省去了一些步骤,执行完romStart()之后就已经加载VxWorks 到RAM中了,因此,下一步就是把控制权交给VxWorks,有VxWorks从sysInit()开始执行即可。下面是具体的流程:
- romInit.s:romInit()
• 系统上电之后,首先调用的函数就是romInit()
• 禁止中断
• 把启动类型(冷启动/热启动)放在堆栈上
• 清除cache
• 初始化CPU基本寄存器,调用SDRAM初始化函数初始化UPM
• 直接跳转到bootInit.c:romStart()
- bootInit.c:romStart()
• 把代码段(如果是VxWorks_romResident映像,则不拷贝代码段)和数据段从bootrom复制到RAM当中
• 完成程序映象的解压缩(如果映象是压缩版本的)
• 跳转到sysALib.s:sysInit()
- sysALib.s:sysInit()
• 重新进行CPU内核(主要是cache)的初始化。这些工作在romInit()里面曾经进行过,由于系统刚刚进入RAM中执行,需要再次初始化。
• 无论使用何种系统(包括仿真器)引导,RAM版本的VxWorks都是从这里开始执行的。
• 控制权移交给 usrInit()
- usrConfig.c:usrInit()
• VxWorks 中第一个C语言完成的代码。执行操作系统内核所必须的初始化程序。
• Cache程序库的初始化
• 清零系统的BSS段
• 初始化中断向量表
• 使硬件工作在一个“安静”的状态,尽量不产生各种中断或者异常
• 控制权移交给KernelInit(),产生usrRoot根任务
此时,调试超级终端会有如下打印信息:
/*VXWORKS Image Getting Loaded*/
Loading... 881680
Starting at 0x10000…
Attached TCP/IP interface to cpm unit 0
Attaching network interface lo0... done.
VxWorks
Copyright 1984-1998 Wind River Systems, Inc.
CPU : MPC860
vxWorks : 5.4
BSP version: 1.2/0
Creation date: Aug 2 2000
WDB : Ready
3. ROM-Resident Images:这种启动方式的流程和上面那种基本相同,只是不需要加载text段到RAM中而已,故在此不作介绍了。
VxWorks借鉴了传统PC操作系统的引导原理,其将整个引导过程分为两个阶段:1. BOOTROM启动,2. 通过BOOTROM加载VxWorks内核。- xWorks启动过程(A)
- xWorks下的硬盘启动方法
- Is Xworks similar to Spring ?
- Activity A启动Activity B的回调过程
- 嵌入式xworks系统初始化(PowerPC汇编)
- 启动过程
- 启动过程
- 启动过程
- Activity练习 一 关于Activity A的启动Activity B的过程
- 操作系统启动过程----启动部分
- Service启动过程过程详解
- CDlinux启动过程分析
- NT启动过程是什么
- linux启动过程
- aix启动过程
- Linux启动过程综述
- Linux启动过程概述
- Eclipse启动过程
- Hello World之Hibernate版
- oracle安装方法
- 【转】【深入Java虚拟机】之一:Java内存区域与内存溢出
- 【转】【深入Java虚拟机】之二:Class类文件结构
- Android 类似PC下拉框Spinner
- xWorks启动过程(A)
- 【转】【深入Java虚拟机】之三:类初始化
- acm水题(sort+大数据处理)
- JAVA的哈希表运用
- libvirt/qemu特性之cpu hotplug
- 用OpenSceneGraph实现的NeHe OpenGL教程 - 第五课
- 怎样激励程序员?
- 10810 - Ultra-QuickSort(归并排序求逆序数)
- 【转】【深入Java虚拟机】之四:类加载机制