开发者社区> 毛毛虫的爹> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

vxWorks/BootROM Imageq启动顺序详解

简介: <div class="Blog_wz1" style="word-wrap:break-word"> <div>vxWorks/BootROM Imageq启动顺序详解</div> <div><br></div> <div>VxWorks image</div> <div>    分为在ROM中运行和在RAM中运行两种,两者启动顺序的区别在于sysInit()函数的调用,该函数在
+关注继续查看
vxWorks/BootROM Imageq启动顺序详解

VxWorks image
    分为在ROM中运行和在RAM中运行两种,两者启动顺序的区别在于sysInit()函数的调用,该函数在RAM运行的VxWorks中初始化RAM。
 
1.ROM中运行的VxWorks :
    VxWorks在ROM中运行,即写入ROM中的VxWorks是非压缩的,不需要解压,系统直接跳到ROM的首地址运行VxWorks。注意:ROM运行的VxWorks并不支持所有的主扳,应以主板手册为准。
1.1执行顺序
romInit.s中的romInit()-->
bootInit.c中的romStart()-->
usrConfig.c中的usrInit()-->sysHwInit()-->usrKernelInit()-->KernelInit(usrRoot,...)
1.2优点
   VxWorks在ROM中运行主要是为了节省RAM空间,以便应用程序有更大的空间运行。只把VxWorks image的data段复制到RAM的LOCAL_LOW_ADRS,text部分留在ROM并在ROM中执行。
1.3缺点
ROM中运行的VxWorks缺点是运行速度慢。
 
2. RAM中运行的VxWorks
    VxWorks在RAM中运行,即写入ROM中的Boot或VxWorks Image是压缩的,需要先解压copy所有的text和data到RAM的LOCAL_LOW_ADRS中。下面sysInit()主要是初始化RAM用的,系统直接跳到RAM的首地址运行VxWorks。usrInit()前面不压缩,即romInit()、romStart()不能压缩。
2.1程序执行顺序
romInit.s中的romInit()-->
bootInit.c中的romStart()-->
sysaLib.s中的sysInit()-->
usrConfig.c中的usrInit()-->sysHwInit()-->usrKernelInit()-->KernelInit(usrRoot,...)

BootROM image
    BootROM image 最少的系统初始化,主要用于启动装载VxWorks image。一般有压缩和不压缩两种形式,如bootrom和boot_uncmp。与VxWorks image的区别在于一个Bootrom调用bootConfig.c,而VxWorks调用usrConfig.c。
 
1.1程序执行顺序
romInit.s中的romInit()-->
bootInit.c中的romStart()-->
bootConfig.c中的usrInit()-->sysHwInit()-->usrKernelInit()-->KernelInit(usrRoot,...)
 
其中/target/config/all/bootConfig.c是Boot ROM设置模块,用于通过网络加载VxWorks image。
usrRoot()-->bootCmdLoop(void)命令行选择,或autobooting-->bootLoad(pLine, &entry)加载模块到内存(网络,TFFS,TSFS...)-->netifAttach()-->go(entry)-->(entry)()从入口开始执行,不返回.
 
1.2各个函数的主要作用
romInit()---
    power up,disable interrupt,put boot type on the stack,clears caches.
romStart()---
    load Image Segments into RAM.
usrInit()---
    Interrupt lock out,save imformation about boot type,handle all the Initialization before the kernel is actually started,then starts the kernel execution to create an initial task usrRoot(),This task completes the start up.
sysHwInit()---
    Interrupt locked,Initializes hardware,registers,activation kernel
KernelInit(usrRoot,...)---
    Initializes and starts the kernel.
    Defines system memory partition.
    Activates a task tUsrRoot to complete initalization.
    Unlocks inierrupts.
    Uses usrInit()stack.
usrRoot()---
    初始化内存分区表(memory partition library)
    初始化系统系统时钟(system clock)
    初始化输入输出系统(I/O system)----可选
    Create devices----可选
    设置网络(Configure network)--------可选
    激活WDB目标通信(Activate WDB agent)---------可选
    调用程序(Activate application)

Boot或VxWorks image的text段或data段会从ROM复制到RAM,在RAM中运行。其中usrRoot()是VxWorks启动的第一个任务,由它来初始化 driver、network等描述。romInit.s first execute in flash,minal initiliz,then jump to romStart。romStart() 开始装载和解压image到RAM,sysaLib.s是在RAM中执行的第一个函数。
  
VxWorks 在ROM中的情况
ROM 低地址位为没有压缩的romInit.s和romStart()在ROM的起始位置,系统power up后,从这个起始位开始执行,即执行romInit(),起始位置由硬件定义,一般为0x00000000。ROM 高地址位为压缩的VxWorks Imgage
其中 RAM_LOW_ADRS, RAM_HIGH_ADRS 等一些地址在makefile 和BSP config.h中定义。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MaxCompute+DataWorks最佳实践(二)|学习笔记
快速学习 MaxCompute+DataWorks最佳实践
21 0
MaxCompute+DataWorks 最佳实践(一)|学习笔记
快速学习 MaxCompute+DataWorks 最佳实践
36 0
阿里云 DataWorks v2.0 常见问题与难点解析整理
阿里云 DataWorks v2.0 常见问题与难点解析整理
163 0
【数据湖开发治理篇】——数据湖开发治理平台DataWorks
元数据管理、数据集成、数据开发是数据湖需要解决的三大问题,阿里云的DataWorks作为一个通用的大数据平台,除了很好的解决了数仓场景的各类问题,也同样解决了数据湖场景中的核心痛点。
21922 0
【全新系列】DataWorks百问百答
通过本系列,您可以了解各种DataWorks产品使用的最佳实践/黑科技/产品必知必会/常见使用问题等等
1144 0
使用dataworks投递日志服务数据到MaxComputer
1. 为什么使用dataworks投递数据 日志服务提供了多种投递数据的方式,如: 在控制台直接配置投递任务,通过消费组获取数据然后再投递,以及使用dataworks配置投递任务等方式。控制台直接投递配置方式与dataworks类似,不过配置项更少,更容易操作。
3851 0
如何使用DataWorks--HoloStudio联合查询实时(Blink)、离线(MaxCompute)数据。
交互式分析与大数据生态无缝打通,不仅能实时查询离线数据以及实时数据,还能对离线数据、实时数据做联合查询,用一套SQL语言,在一套系统里面就能根据业务需求完成开发,无数据的冗余存储业务导入导出操作,在降低成本和运维的同时,也为开发降低难度。
1458 0
基于MaxCompute/Dataworks实现数据仓库管理与全链路数据体系
前言   就这样,大数据领域蓬勃发展了好几年,有很多伙伴执迷于技术,成为了分布式计算与存储的领域专家。也有很多伙伴执迷于数据,成为了行业的数据研发专家。当然还有很多小伙伴,热衷于工具系统开发,成为了数据技术专家。
2260 0
VxWorks启动过程详解(上)
<p>vxworks有三种映像: </p> <p><span style="font-size:12px">VxWorks Image的文件类型有三种</span></p> <ol> <li><span style="font-size:12px"> Loadable Images:由Boot-ROM引导通过网口或串口下载到RAM</span></li> <li><span style
1662 0
+关注
毛毛虫的爹
好好学习,天天向上
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载