VxWorks启动过程描述及主要宏开关含义
更新时间:2023-10-20 17:39:01 阅读量: 综合文库 文档下载
- vxworks启动流程推荐度:
- 相关推荐
1 三种不同的VxWorks映象比较
VxWorks是一种灵活的、可裁剪的嵌入式实时操作系统。用户可以根据需要创建自己的VxWorks映象,由它来引导目标系统,而后下载并运行应用程序。
根据应用场合的不同,VxWorks映象可分为三类:可加载的VxWorks映象、基于ROM的VxWorks映象和驻留ROM的VxWorks映象。 1.1 可加载的VxWorks映象
这是一种运行于RAM的VxWorks映象。它不包含搬移程序,需要借助于一些外部的程序如bootRom才能加载到RAM的低端RAM_LOW_ADRS地址处。这是缺省的开发映象。
图1、可加载的VxWorks映象
在开发的初期阶段,用户可以根据需要添加或删除一些VxWorks组件,生成自己的可加载的VxWorks映象,存放在开发主机的某个目录下。目标板上电后,由烧结在BOOT中的起始引导程序(BootStrap Programs)将BOOT中的ROM引导程序(ROM Boot Programs)拷贝到RAM的高端地址RAM_HIGH_ADRS处,并跳转至该地址执行ROM引导程序,配置好所选的加载方式(缺省为网络方式),将指定的主机目录下的可加载的VxWorks映象下载到目标板的RAM地址RAM_LOW_ADRS处,并跳转到此处执行。如图1所示。
这种映象的优点是生成的VxWorks映象可以存放在开发主机PC机上,不用烧到BOOT中,节省了BOOT容量,也便于随时修改不同的VxWorks映象,适用于调试的初期阶段。不足之处是需要在主机上维护一个正确的VxWorks映象,对于调试硬件无关的上层应用程序显得不是很方便。
在Tornado工作台的Build窗口中,选择Rules属性页中的VxWorks即可生成可加载的VxWorks映象。
1.2 基于ROM的VxWorks映象
图2 基于ROM的VxWorks映象
这是一种运行于RAM中,但起初存放于ROM中的VxWorks映象。即该映象需要和搬移程序一起固化在BOOT中。目标板上电后,首先运行BOOT中的引导搬移程序,将整个VxWorks映象拷贝到RAM地址RAM_LOW_ADRS处,并跳转到此处执行。如图2所示。
该映象根据是否被压缩又可分为:
1.基于ROM的未压缩的VxWorks映象,可直接从ROM拷贝到RAM中
2.基于ROM的压缩的VxWorks映象,这种映象主要是为了节约BOOT空间,在从ROM拷贝到RAM的过程中需要解压缩,因此与上述未压缩的映象相比,它的引导过程相对较慢,但两者在RAM中的运行速度是一样的。 1.3 驻留ROM的VxWorks映象
这种映象起初也和搬移程序一起固化在BOOT中。目标板上电后,首先运行BOOT中的引导搬移程序,但仅将VxWorks映象的数据段和BSS段拷贝到RAM地址RAM_LOW_ADRS处,映象的代码段仍旧留在ROM中,从ROM中开始执行。如图3所示。
图3 驻留ROM的VxWorks映象
这种映象的优点是具有最快的引导速度,占用最少的RAM空间,适用于RAM空间有限的目标板。但是由于该映象在ROM中运行,运行速度在三种映象中是最慢的。 2 几种不同的BOOTROM的比较
针对上述三种不同的VxWorks映象,可以生成以下几种不同的BOOTROM,主要体现在执行搬移程序romStart( )( 位于bootInit.c文件中)时不同: 2.1 用于可加载VxWorks映象的BOOTROM
由图1所示可知,用于可加载VxWorks映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和ROM引导程序(ROM Boot Programs)。 起始引导程序驻留在ROM中,主要包含:
1.汇编级的硬件初始化程序romInit.s,用于系统的基本初始化,设置一些重要寄存器的初始值,进行存储器的映射
2.搬移程序bootInit.c,将ROM引导程序拷贝至RAM的高端地址RAM_HIGH_ADRS,然后跳转到此处执行ROM引导程序。
ROM引导程序起初存放在ROM中,初始化时被拷贝到RAM中,主要用于系统的进一步初始化,并配置加载方式,将VxWorks映象加载至RAM。可分为三种不同的类型: 1.压缩的ROM引导程序,在拷贝的过程中需要解压缩,在RAM中执行 2.未压缩的ROM引导程序,可直接拷贝,在RAM中执行
3.驻留ROM的ROM引导程序,仅拷贝ROM引导程序的数据段,代码段仍旧在ROM中执行 在Tornado开发环境中,通过在主窗口点击Build|Build Boot ROM?可以选择生成以上三种BOOTROM,分别为:bootrom_uncmp.hex(未压缩的BOOTROM),bootrom.hex(压缩的BOOTROM),bootrom_res.hex(驻留的BOOTROM)。
静态连接到可加载的VxWorks映象的系统初始化代码执行并完成整个初始化过程。 引导过程成功以后,RAM中ROM引导程序占用的空间(从RAM_HIGH_ADRS开始)可以重新被系统利用。
图1中所示的各地址含义为:
1.LOCAL_MEM_LOCAL_ADRS 是RAM的起始地址
2.RAM_LOW_ADRS 是VxWorks的加载点,也是VxWorks代码段的起始位置 3.FREE_RAM_ADRS 是VxWorks映象的结束点。通常也是系统内存池和目标服务器内存池的起始地址
4.RAM_HIGH_ADRS 是ROM引导程序的加载点。它也是ROM引导程序(除驻留ROM引导程序之外)的代码段的起始位置,或驻留ROM引导程序数据段的起始位置。 2.2 用于基于ROM的VxWorks映象的BOOTROM
由图2所示可知,用于该映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和基于ROM的VxWorks映象。搬移程序bootInit.c负责将VxWorks映象的文本段
和数据段搬移到用户定义的低端内存地址RAM_LOW_ADRS,如果需要进行必要的解压缩,然后直接启动VxWorks映像。
因此BOOTROM的容量相对于2.1中描述的BOOTROM要大一些,但无需在主机目录下维护一个可用的VxWorks映象。
基于ROM的VxWorks BOOTROM有压缩和未压缩之分。在Tornado工作台的Build窗口中,选择VxWorks映象Rules属性页中的VxWorks_rom即可生成基于ROM的未压缩的VxWorks BOOTROM,选中VxWorks_romCompress即可生成基于ROM的压缩的VxWorks BOOTROM。 2.3 用于驻留ROM的VxWorks映象的BOOTROM
由图3所示可知,用于该映象的BOOTROM包含两部分:起始引导程序(BootStrap Programs)和驻留ROM的VxWorks映象,VxWorks系统文本段驻留在ROM,搬移程序bootInit.c负责将数据段和bss段搬移到用户定义的低端内存地址RAM_LOW_ADRS,直接启动VxWorks映像(含符号表)。此时,RAM_LOW_ADRS是VxWorks映象的加载点,它也是VxWorks数据段的起始点。
在Tornado工作台的Build窗口中,选择VxWorks映象Rules属性页中的VxWorks_romResident即可生成驻留ROM的VxWorks BOOTROM。
3 VxWorks的启动过程
根据上述所采用的BOOTROM的不同,VxWorks的启动过程会有所不同。 3.1 使用可加载VxWorks映象的启动过程
此时,从目标板上电复位到启动用户定义的任务的整个流程如下:
sysALib.s : sysInit( ) 锁住中断,关闭cache(如果使用了话),初始化处理器的寄存器(包括C堆栈指针)至缺省值 开始在RAM中运行VxWorks usrConfig.c : usrInit( ) 设置cache的工作模式,板级硬件初始化,初始化Win内核,启动usrRoot( ) usrConfig.c : usrRoot( ) 初始化内存,系统时钟,I/O系统,标准输入输出错,异常处理,添加用户应用程序 romInit.s : romInit 设置机器状态字及其它硬件相关寄存器,关闭中断,禁止程序和数据CACHE,初始化内存,并设置堆栈指针 bootInit.c : romStart( ) 将ROM中的程序搬移至RAM中 bootConfig.c : usrInit( ) 设置cache的工作模式,板级硬件初始化,调用sysHwInit( ),usrKernelInit( ),KernelInit( ),初始化Win内核,产生根任务usrRoot( ) bootConfig.c : usrRoot( ) 初始化内存,系统时钟,I/O系统,标准输入输出错,异常处理,产生任务bootCmdLoop bootConfig.c : bootCmdLoop( ) 调用自动引导程序autoboot( ),此函数若成功则不返回 bootConfig.c: autoboot( ) 延时7s,以默认参数启动 用户按键中断 bootConfig.c :bootCmdLoop( ) 启动命令行用于配置VxWorks启动参数 bootConfig.c: bootLoad( ) 加载VxWorks映象,并转向它进行重启 等待超时
正在阅读:
有关情绪的英文表达01-29
新入职员工安全考试试题07-06
食品化学与分析习题08-30
《物理化学(上)》期末试卷B答案10-05
第一章1.3-1.3.1柱体、锥体、台体的表面积与体积03-19
(新)人教版《道德与法治》七年级上册第四单元《生命的思考》单元测试题(含答案)09-20
2019医生个人年终工作总结五篇合集03-11
家长会初中生学生代表发言稿多篇范文整理07-30
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 含义
- 开关
- 描述
- 过程
- VxWorks
- 主要
- 启动
- 生化技术实验指导书(20学时)
- 《国际结算(刘卫红)》章后习题答案
- 国球
- 汉语言文学、对外汉语专业 现代汉语(2)试题(A)
- 自动化安全监测的发展现状
- 2018年部编人教版小学语文二年级上册期末复习教案 - 图文
- 长沙市城市规划标准与准则 - 条文说明第四篇公共配套与市政公用设施规划
- -2018学年高中物理必修一配套课时作业与单元检测:第二章 第3节 含答案
- 2014年云南红河州大学生志愿服务西部计划招募公告
- 精选-建队节国旗下讲话稿
- 英语绕口令集锦(带翻译)
- 英语国家国情试题库-英国与爱尔兰
- 设置foobar2000 音效的技巧
- 逻辑学复习资料
- c15002答案90分
- 2012年最新国地税企业所得税知识题库及答案
- IUU教学反思
- 最新2017年部编版小学二年级语文上册《树之歌》教学设计(表格版,共2课时)公开优质课教案
- 低压断路器的选择和使用
- 中共安徽省委组织部、安徽省人事厅文件