VxworksBSP开发1.板卡支持包的介绍2。 VxWorks映像和启动顺序3。 VxWorks内核前初始化4。 BSP配置5。 BSP的开发6。 VxWorks下的设备驱动程序概述板级支持软件包的简介板级支持软件包的简要说明在VxWorks系统中,BSP的简单描述是:基础硬件环境和VxWorks之间的软件接口。它的主要功能是在系统开机后,初始化目标机器硬件,初始化操作系统,并提供一些硬件驱动程序。具体功能包括:初始化。所谓初始化是指系统在一段时间内从系统加电复位到VxWorks开始初始化用户应用程序(即系统执行usrAppInit函数)所执行的过程。该过程主要包括三部分工作:CPU初始化。初始化CPU的内部寄存器。目标机器已初始化。初始化控制芯片的寄存器和I / O设备的寄存器,以为整个软件系统的底层硬件环境提供支持。系统资源初始化。为了准备操作系统和系统的正常运行,请执行资源初始化,例如空间分配。使VxWorks能够访问硬件驱动程序。这主要意味着VxWorks包含必要的设备驱动程序和相关设备的初始化。在VxWorks系统中,集成了与硬件相关的软件和与硬件无关的软件的一部分。
板级支持包和VxWorks从上图可以看出,BSP不是设备驱动程序,因为该设备驱动程序可以访问硬件设备。同时,可以从一个环境中移植相同的设备驱动程序,而无需进行修改。转到另一个环境,并且BSP只能在特定的环境中运行。简而言之,BSP开发人员必须完成两个方面的工作:完全支持BSP管理设备BSP组成BSP包含的程序是提供VxWorks访问目标机器硬件环境的主界面。 BSP主要包括以下类型的文件。 1.源文件主要是由用C语言编写的代码组成的文件,其中一小部分是用汇编语言编写的。 2.头文件包含用于CPU板的硬件定义和内存位置定义的文件。 3.制作文件文件以控制所有类型的图像文件的构建。4。派生文件从其他文件派生的文件。 BSP组件文件主要包含在以下四个目录中:.. \ target \ config \ all目录中的文件此目录中的文件作为VxWorks体系结构产品的一部分提供给用户。如果没有特殊需要,则无需修改这些文件。简而言之,config \ all下的文件不是特定BSP的一部分,而是所有BSP的公共部分。该目录主要包含以下文件:bootConfig.c是引导ROM映像的主要初始化和控制文件。 bootInit.CbootInit.c包含启动ROM映像第二阶段的代码。
此文件定义romStart()函数。在romInit.s中执行romInit()函数后,它将跳至romStart()函数。此功能执行必要的代码压缩和ROM型映像的重定位。 dataSegPad.c确保代码段和数据段不会共享MMU。 usrCongif.c包含VxWorks映像的主要初始化代码。与bootInit.c文件不同,它非常完整。 version.c提供诸如VxWorks的版本号,构建映像的日期和时间等信息。 configAll.h设置所有VxWorks映像的默认设置。此文件中定义的变量是常规设置。如果所需的VxWorks映像与默认设置不同,请使用config \ bspname目录中config.h文件中定义的宏替换此处定义的默认宏。 .. \ target \ config \ bspname目录中的文件此子目录包含与系统或硬件相关的BSP文件,主要由以下文件组成。自述文件自述文件包含此BSP的发行记录。它记录了每个发行版,修订版和新版本上所做的工作。 Makefile和Depend.bspname文件Makefile文件控制使用命令行方法构造图像。
从VxWorks 5. 2开始,标准的制作工具是GNUmake。 BSP make系统包含位于target \ h \ make目录中的make子文件。如果不存在依赖项文件,make将自动生成一个dependent.bspname文件,该文件可用于跟踪所有模块的依赖项。 Config.h文件Config.h文件包含所有头文件和与CPU板相关的特殊定义。标准config.h包含以下内容:BSP版本号和修订号。包含configAll.h文件。包含bspname.h文件。 romInit.s文件。该文件包含启动ROM和基于启动ROM的VxWorks映像的条目初始化汇编代码。入口点是romInit()函数,它是系统开机后执行的第一个代码。同时,它还会设置开始参数类型,并将参数传递给常规romStart()函数。如果硬件需要立即进行内存映射或设置特殊寄存器,则在此处进行处理。一个常见的错误是BSP开发人员尝试在romInit.s文件中执行过多的初始化操作。实际上,大多数其他初始化操作都被推迟到sysHwInit()函数中。此外,romInit.s文件中的代码不应由其他函数或模块调用。
文件sysALib.s包含目标机器系统确定的与系统相关的汇编语言程序。所有BSP程序都应使用C语言编写,但是当编译和其他原因需要用汇编语言程序编写时,可以将所有用汇编语言编写的程序代码放在sysALib.s sysALib.s文件中。 sysInit()函数是VxWorks图像的入口点。系统启动后,请首先执行此代码。 sysLib.c文件包含由目标计算机的体系结构确定的与系统相关的C程序。这些程序提供了板卡接口。基于这些板接口,VxWorks和应用程序的结构独立于系统。 sysLib.c文件包含驱动程序的安装和初始化。这些任务是在某些子文件中具体实现的,例如sysSerial.c,sysScsi.c和sysNet.c。使用子文件的目的是防止设备驱动程序的安装和初始化随结构的变化而变化。 sysSerial.c SIO设备串行I / O设备驱动程序的安装和初始化sysScsi.c包含SCSI-2设备驱动程序的安装和初始化sysNet.c网络接口程序的安装和初始化(1 0) bspname.h和目标特殊信息的定义与开发板相关的文件(1 1) target.nr该文件包含运行VxWorks所需的目标开发板的特殊信息(1 2) configNet.h网络配置头文件。
它主要包含END网络设备驱动程序的配置。 .. \ target \ config \ comps \ vxWorks目录中的文件是VxWorks实时内核基本模块描述文件。 .. \ target \ config \ comps \ src目录中的文件是VxWorks实时内核基本模块配置文件。 BSP开发是针对BSP的。BSP的开发应在上面作为一个宏进行描述:BSP的开发步骤应逐步提高应用程序开发效率,以改进BSP的调试方法ICE调试BDM调试方法黑色调试方法用电灯,示波器等手段。 Tornado目录结构Tornado开发系统由三个高度集成的部分组成:在主机和目标计算机上运行的强大的交叉开发工具和实用程序高性能,可定制的实时操作系统VxWorks并行端口线/目标板映像主机数据线数据线并行端口线/目标板BDM端口BDM适配器主机连接主机和目标计算机,例如以太网,串行电缆,ICE,ROM等。Tornado下的主要目录如下:主机目录树目标目录树VxWorks映像和启动序列的最小初始化过程由一部分代码和可能的表(中断描述表,全局描述表)组成,这些表位于目标计算机内存中的特殊位置。
重置目标计算机或打开电源后,处理器将始终跳至该位置。这部分代码将计算机初始化为指定状态,初始化内存和内存地址,关闭中断,然后将控制权转移到其他引导代码。 VxWorks图像类型系统将VxWorks图像的类型分为三种类型,每种类型的影响都包含不同的子类型。 1.可加载映像类型要执行可加载映像,必须先通过启动代码将其加载到目标计算机的RAM中,然后再开始执行。引导代码分为两部分:引导代码在ROM或FLASH中固化。引导代码是一个独立的VxWorks应用程序。引导代码通常是VxWorks映像,有时也称为引导映像。它旨在将包含应用程序的另一个VxWorks映像加载到RAM中。引导映像在运行时可以在ROM / FLASH或RAM中执行。 2.基于ROM(基于ROM)的映像类型在执行之前,基于ROM的映像首先从ROM或FLASH加载到RAM。此类映像通常在启动阶段较慢,但在执行阶段较快。 3. ROM驻留(ROM驻留)映像类型启动时,ROM驻留映像将数据段复制到目标计算机的RAM中。这种类型的图像通常在启动时更快。当目标计算机的RAM空间相对较小时,通常会使用这种类型的映像。

此类图像通常用于嵌入式应用程序中,但是在目标计算机上的执行速度比其他类型的图像要慢。 VxWorks映像启动顺序启动目标计算机时发生的启动事件顺序是典型的VxWorks映像需要执行的功能。在初始化阶段,所有类型的VxWorks映像都具有相同的启动顺序。处理器通过“跳转”跳转指令跳转到ROM或Flash中的引导代码条目。该启动代码通常包含以下操作:关闭中断初始化将适当的VxWorks映像段加载到目标计算机的内存中,以跳转到将目标计算机设置为静态状态的代码。1.可加载的VxWorks映像启动顺序详细过程可加载VxWorks映像启动的过程如下:加载数据和代码段。系统加电后,将执行引导代码。首先,引导代码的代码段和数据段从ROM或FLASH加载到RAM。这时,需要考虑以下条件:压缩启动代码。复制此类型的引导代码时,必须将其解压缩。未压缩的启动代码。可以直接复制这种类型的引导代码。居民引导代码。这种类型的引导代码仅复制其数据段。加载VxWorks图像。执行启动代码后,将VxWorks映像加载到RAM中,然后跳转到VxWorks映像加载点。
系统初始化。通过静态链接到VxWorks映像中的系统初始化代码来完成此步骤,并最终完成系统初始化操作。 2.基于ROM的VxWorks映像的启动顺序如下:加载VxWorks映像。要在系统开机后执行引导代码,请首先将ROM或FLASH中的VxWorks映像加载到RAM中。控制权转移。加载VxWorks映像后,系统控制将转移到VxWorks映像的系统初始化代码部分。系统初始化。在RAM中执行在VxWorks中静态链接的系统初始化代码,以完成系统初始化操作。3。 ROM驻留VxWorks映像启动顺序启动ROM驻留VxWorks映像的详细过程如下:加载VxWorks映像。要在系统开机后执行引导代码,请先将VxWorks映像的数据段从ROM或FLASH加载到RAM中。控制权转移。将VxWorks映像加载到RAM中后,系统控制将转移到ROM / Flahs中VxWorks映像的系统初始化代码部分。 VxWorks映像基于ROM系统初始化。执行VxWorks中的静态链接的系统初始化代码以完成系统初始化操作。典型的VxWorks映像1. VxWorks 2. VxWorks.st 3. VxWorks_rom 4. VxWorks.st_rom 5. VxWorks.res_rom 6. VxWorks.res_rom_nosym 7. Bootrom 8. Bootrom_uncmp 9. Bootrom_res VxWorks内核预初始化内核预初始化主要是指CPU的初始化,向量表的安装,全局描述表的安装,目标计算机上的硬件设备的初始化以及操作系统的初始化。
一个。内核前初始化概述(1)下载类型VxWorks图像内核前初始化序列引导程序)VxWorks数据段VxWorks数据段VxWorks代码段接通目标计算机系统的电源后,首先执行VxWorks引导程序和引导程序将VxWorks加载映射到目标计算机的RAM中。将VxWorks映像加载到RAM中时,处理器跳转到映像加载地址,然后,首先执行sysInit()函数,然后执行usrInit函数。 )函数完全完成整个预内核的初始化。(2) ROM型VxWorks图像预内核的初始化顺序。在目标系统上电后,首先执行romInit()函数,该函数用于初始化CPU,然后执行romStart()函数进行映射复制并解压缩图像段,然后执行usrInit函数,而usrInit()函数完全完成e的初始化整个内核。 2.预内核的特殊初始化函数VxWorks映像中的特殊函数如下:romInit()函数romStart()函数sysInit()函数romInit()函数和romStart函数是必须对所有函数执行的函数VxWorks映像(ROM类型的VxWorks映像)在ROM / Flash中固化,而sysInit()函数只是所有加载的VxWorks映像执行的函数。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-355997-1.html
中国海军对日最大的优势在固定翼战机
这不正好给了中国军事建设南海岛礁的口实么