VxWorks系统的BSP设计探讨

2022-09-13 版权声明 我要投稿

VxWorks是业内首个实时操作系统, 由风河公司所开发, 由于其在实时性、可靠性方面比较突出与优异, 因而在许多高精尖技术以及在实时性方面有较高要求的领域中得到广泛应用, 比如航空航天、通信、军事、军事演习、飞机导航、弹道指导等, 除此之外, 该系统还在嵌入式领域同样发挥着重要作用。现阶段, 针对VxWorks来讲, 其对当前市场当中的所有常用CPU平台都比较适用, 究其原因, 多因为其刚开始进行设计时, 便根据实际需要, 选用了当前比较先进的嵌入式操作系统与硬件没有关联的设计理念, 并把所设计的操作系统, 以一种更加合理、高效的方式, 运用在各种虚拟硬件平台上, 另外, 还需要指出的是, 针对那些与相关硬件间存在着紧密关联性的各种代码来讲, 都被封装或设置在特定的BSP当中, 而且还以此为基础, 提供各种实用且先进的虚拟硬件平台。还需要指出的是, 若在开发BSP方面最终没有取得成功, 那么上层便无应用程序可言。本文就VxWorks系统的BSP设计流程作一探讨。

一、BSP的主要功能

所谓BSP, 从根本上来讲, 即为用户将以各种比较实用的硬件平台当作服务对象, 根据与实际需要, 对各种实用的启动代码进行编写。针对这些启动代码来分析, 从基础层面来分析, 就是从基于系统平台, 进行电复位处理, 成为出发点, 直至VxWorks处于初始化阶段, 用户对此时间段内当中的各种系统予以应用, 并保持其执行的一种代码。从基础层面来分析, BSP负责正确启动VxWorks系统内核, 并包括两大部分, 即串口驱动程序与时钟。

二、BSP组成文件

(一) 实现文件

针对此些文件来讲, 其与硬件平台之间, 往往存在着十分密切的关系, 其中, 针对所囊括的各种函数来讲, 均需要根据现实需要, 并以相关硬件平台为基础, 来进行系统化编写, 所以, 在实际开发BSP时, 便需要基于此些函数的相关编写, 来实现整个系统的高效运行。针对BSP实现文件来分析, 其主要包括: (1) Makefile。其中对部分宏进行了定义, 这些宏需要和config.h中的定义相一致。 (2) config.h。包括与CPU有关联的宏定义; (3) IntrInit.c。包括中断控制器的初始函数IntrInit () ; (4) systemClk.c。包括系统时钟的处理函数, 如sysClkEnable () 、sysClkConnect () 等。 (5) sysSerial.c。主要包含中断挂载函数sysSerialHwInit2 () 与初始化函数sysSerilHwInit () ; (6) sysLib.c。包括以硬件平台为基础的全部外部器件, 初次之外, 还有中断挂载函数sysHwInit2 () 。

(二) BSP相关文件

此些文件是全部BSP所共享的, 文件当中的函数无关于具体硬件, 且无需修改。这些文件位于Install Pathtargetconfigall目录, 包括: (1) usrConfig.c。主要是VxWorks系统执行的usrRoot () 函数与usrInit () 函数, 这些函数的功能多于bootConfig.c文件当中的函数; (2) bootConfig.c。包括引导代码执行的usrRoot () 与usrInit () 函数; (3) configAll.h。包括全部VxWorks参数。 (4) boot Init.c。包括内存搬移函数romStart () 。

(三) BSP的执行过程

上述指出了BSP的相关函数与组成文件, 针对此些函数来分析, 就是围绕硬件平台, 进行相应加载, 直至VxWorks启动的函数。在本文中, 以VxWorks镜像作为实例, 深入、全面剖析其BSP函数的基本执行过程。

需要指出的是, 如果系统处于加电启动状态, 首先, 处于被执行状态的便是已经在FLASH当中得以固化的romInit () 函数, 而对于其功能来讲, 主要是配置SDRAM控制器、设置初始栈指针及禁止CPU中断, 然后, 围绕系统当中的romStart () 函数, 使其处于执行状态, 并基于FLASH, 对其中的VxWorks镜像进行相应复制, 使其储存在特定的储存器当中, 然后来执行。基于整个内存而言, 首先需要被执行的为usrInit () 函数, 其除了能调用usrKernelInit () 函数初始化内核, 而且还能调用sysHwInit () 函数初始化外部设备, 并且还能对usrRoot () 函数进行调用, 并就I/O系统进行初始化操作, 完成启动。另外, 在启动时, 像usrRoot () 、romInit () 等与平台有关的函数, 根据实际需要, 调用系统时钟函数。其中, 针对sysHwInit () 函数来讲, 其主要有时钟速率设置函数sysClkRateSet () 、串口初始化函数sysSerialHwInit () 及时钟使能函数sysClkEnable () 等。

三、结语

综上所述, 在整个系统开发中, BSP开发起到至关重要的作用。针对BSP来分析, 其与硬件之间往往有着比较深层次的关联性, 因此, 需要对此有一深入、全面的了解。硬件平台不同, BSP代码可能会有比较大的差异, 这便会造成那些首次接触BSP的开发人员不知怎样入手, 但BSP无论是在开发思路上, 还是在内部架构上, 均比较相似, 而且在功能与基本原理上, 均是相同, 并且有内在规律可以遵循的。

摘要:本文以VxWorks系统为对象, 首先简要分析了BSP的基本功能, 探讨了其组成文件与相关文件, 最后指出了BSP执行过程, 望能为此领域设计实践有所借鉴。

关键词:VxWorks系统,BSP,设计

参考文献

[1] 王军.基于Pentium处理器VxWorks实时操作系统BSP的设计研究[J].数码世界, 2017 (7) :89-90.

[2] 邹玉龙, 刘彬, 田小莉, 等.基于龙芯1E1F航天应用平台与VxWorks系统的VxBus型驱动设计[J].计算机测量与控制, 2018, v.26;No.236 (05) :108-112+117.

[3] 杨旭光.基于P2020与VxWorks的嵌入式系统PCIE网口设计[J].电子世界, 2017 (10) :105-106.

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:iwenmi@163.com。举报文章