VxWorks 引导程序

简介: <div class="Blog_wz1" style="word-wrap:break-word"> <div> <div><span style="font-size:12px">前言:vxworks 的一些文件,如 usrconfig.c 在 config,comp目录中均有出现,因编译方式而选择某一个文件,命令行方式采用 config 目录文件,tornado 图形界面配置选择
前言:vxworks 的一些文件,如 usrconfig.c 在 config,comp目录中均有出现,因编译方式而选择某一个文件,命令行方式采用 config 目录文件,tornado 图形界面配置选择comp 目录文件。此处采用命令行方式编译。
Bootrom 完成 vxworks 启动前的基本引导工作,如最简初始化硬件,下载映像文件并解压到RAM中等操作。值得一提的是某些型号处理器对 cache 等部件初始化有特殊要求,可能需在 bootrom 中进行特殊处理。
一、vxworks映像类型
Bootrom、vxworks两种映像。
Bootrom 用于引导 vxworks,功能如上所述。该映像直接烧在FLASH中,也可用UBoot代替。
Vxworks 多任务的系统映像文件。
二、Bootrom 启动策略
共三种:bootrom、bootrom_uncmp、bootrom_res。
1、bootrom 压缩型,占用 flash 空间小,其中大部分被压缩过,完成将自身从FLASH中解压并搬运到RAM中的操作,该步骤完成后将跳到RAM中继续执行 bootrom 程序(听起来神奇,看起来挺美)。优点:占用flash小,程序段代码段均在RAM中执行,速度快。
2、bootrom_uncmp 非压缩型,较 bootrom 型占用 flash 大些,完成将自身从flash到ram的搬运过程,无需解压,其后与 bootrom 方式一致。个人认为速度会较 bootrom 方式忙些,因读取 flash 的速度较慢,未压缩,多读取flash时间可能超过 bootrom 方式的解压时间。
3、bootrom_res 驻留flash型,因未经压缩,占用flash空间和 bootrom_uncmp 大小几乎一致。运行时代码段一致在flash中执行,导致速度较上两种慢;数据段将被搬到RAM中。优点:占用RAM小;缺点:较1占用较多flash空间,较1、2的执行速度慢。
注:bootrom 与 vxworks 关系易混淆。vxworks 是真正系统运行时映像,因支持多种启动策略,故由其他模块(bootrom、uboot)完成加载。bootrom 在完成加载使命后将不再被执行。
三、bootrom 启动流程
这里描述的bootrom均由命令行方式编译产生。
1、上电后执行顺序
romInit() (romInit.s)
-->
romStart() (bootInit.c)
-->
usrInit() (bootConfig.c)
     -->
     excVecInit() (target\lib\arm\ARMARCH4\common\libarch.a)
     -->
     sysHwInit() (bootConfig.c)
     -->
     usrKernelInit() (target\src\config\usrKernel.c)
                     (included by bootConfig.c)
     -->
     kernelInit() (target\lib\arm\ARMARCH4\common\libwind.a)
         -->
         usrRoot() (bootConfig.c)
2、romInit() (romInit.s)
初始化中断、时钟、系统总线、内存。非 bootrom_res 型 bootrom,还将 bootrom 的 romInit 函数段从 flash 搬运到 ram 中,地址映射,之后该函数的执行将在 ram 中进行。对于 bootrom_res 型 bootrom 将一直在 flash 中执行。因 vxworks 系统启动后,需对所有硬件重新初始化,该函数仅做必不可少的初始化部分。
注:该函数在 ld 的时候被映射到 RAM_HIGH_ADRS。如下:
ldarm -X -EL -N   -e romInit \
    -Ttext 0C500000   -o bootrom_uncmp romInit.o bootInit_uncmp.o version.o \
     bootConfig.o sysALib.o sysLib.o ne2000End.o   --start-group   -LC:\Tornado2.2_
ARM\target/lib/arm/ARMARCH4/gnu -LC:\Tornado2.2_ARM\target/lib/arm/ARMARCH4/comm
on \
         -lcplus   -lgnucplus   -lvxcom   -larch   -lcommoncc   -ldcc   -ldrv   -lgcc   -
lnet   -los   -lrpc   -ltffs   -lvxfusion   -lvxvmi   -lwdb   -lwind   -lwindview C:\Tor
nado2.2_ARM\target/lib/libARMARCH4gnuvx.a --end-group   -T C:\Tornado2.2_ARM\targ
et/h/tool/gnu/ldscripts/link.RAM
3、romStart() (bootInit.c)
bootrom 型:将 code 段、data 段从 flash 中拷贝到 ram中,清内存,之后对code段进行解压缩。
bootrom_uncmp 型:将 code 段、data 段从 flash 中拷贝到 ram中,清内存。
bootrom_res 型:将 data 段从 flash 中拷贝到 ram。
相关文章
|
分布式计算 DataWorks BI
MaxCompute数据问题之运行报错如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
449 1
|
监控 安全 测试技术
强化您的应用安全,从app加固开始
作为iOS技术博主,您对应用程序安全性的重要性应该有深刻的认识。随着移动应用市场的不断扩大,应用程序面临的安全威胁也日益增多。因此,采取有效的措施来加固应用程序,保护用户数据和知识产权变得至关重要。在本文中,我们将深入探讨如何通过app加固来提升应用程序的安全性,以及如何应对潜在的安全威胁。
|
大数据 关系型数据库 数据库
python 批量处理大数据写入数据库
python 批量处理大数据写入数据库
603 0
|
分布式计算 Cloud Native 安全
Rancher:容器编排平台的领军者
Rancher是一款容器编排平台,可以帮助企业快速构建、部署和管理容器化应用。本文将详细介绍Rancher的概念和实践,包括其核心特性、优势以及在实际应用中的使用案例。
300 5
|
运维 监控 NoSQL
【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊
Redis 的哨兵模式(Sentinel)是一种用于实现高可用性的机制。它通过监控主节点和从节点,并在主节点故障时自动进行切换,确保集群持续提供服务。哨兵模式包括主节点、从节点和哨兵实例,具备监控、通知、自动故障转移等功能,能显著提高系统的稳定性和可靠性。本文详细介绍了哨兵模式的组成、功能、工作机制以及其优势和局限性,并提供了单实例的安装和配置步骤,包括系统优化、安装、配置、启停管理和性能监控等。此外,还介绍了如何配置主从复制和哨兵,确保在故障时能够自动切换并恢复服务。
|
数据采集 搜索推荐 安全
智慧城市的交通管理大数据模型
智慧城市交通管理系统借助大数据模型,通过全面收集交通数据(如监控、GPS、公共交通信息等),进行数据清洗和预处理,利用Python的Pandas进行数据管理。通过ARIMA等模型分析,预测交通流量、识别交通模式,支持智能信号控制、预测性维护和事件响应。这种集成分析与决策支持系统提升城市交通效率,确保出行安全,预示着未来交通管理的智能化和个性化趋势。【6月更文挑战第23天】
1346 10
|
弹性计算
阿里云服务器IP地址查询_公网IP和私有IP查看
阿里云服务器IP地址查询_公网IP和私有IP查看
746 0
|
域名解析 缓存 网络协议
【计算机网络】计算机网络(第八版)谢希仁著 ----你要的答案都在这里(三)
【计算机网络】计算机网络(第八版)谢希仁著 ----你要的答案都在这里
643 1
|
机器学习/深度学习 人工智能 数据挖掘
使用Python的Web框架构建现代化应用程序
现代化的应用程序开发已经成为了软件工程领域的热门话题。随着互联网和移动技术的迅速发展,构建高性能、可扩展和易于维护的应用程序变得越来越重要。而Python作为一种强大而灵活的编程语言,在现代Web开发中扮演了重要的角色。
332 0

热门文章

最新文章