VxWorksBSP基础剖析
VxWorks及BSP启动流程与顺序
目录1vxworks映像类型 (1)1.1 可加载的映像类型(vxwoks) (1)2vxworks映像启动顺序 (1)2.1 可加载型vxworks映像启动顺序 (2)2.2 基于ROM的vxworks映像启动顺序 (2)2.3 基于ROM驻留型vxworks映像启动顺序 (3)3BSP基础知识 (4)3.1 BSP的定义 (4)3.2 BSP的功能 (4)3.3 BSP的组成 (4)4BSP的启动 (5)4.1 BSP的启动流程 (5)4.2.1 romInit.s:romInit()函数 (6)4.2.2 bootInit.c:romStart()函数 (14)4.2.3 bootConfig.c分析 (24)4.2.4 sysLib.s:sysInit()函数 (27)4.2.5 usrconfig.c:usrInit()函数 (28)4.2.6 usrconfig.c:usrRoot()函数 (29)5总结 (32)VxWorks及BSP启动流程与顺序———李守轩摘要:本文首先介绍vxworks映像的类型及各类型vxworks映像的启动顺序;然后介绍BSP的启动流程与初始化顺序。
关键词:vxworks映像;BSP启动;代码分析1vxworks映像类型对于vxworks映像的启动情况,从根本上看,在初始化和装载vxworks映像的过程中,处理器所执行的步骤在逻辑上是一样的。
对于有些处理器可能需要增加一些额外的步骤,而另一些处理器可能会省略掉某些步骤。
当构造vxworks映像时,根据需要可以构造不同类型的映像,系统把这些映像划分成以下三种类型。
1.1可加载的映像类型(vxwoks)可加载型映像的执行需要通过引导代码把它装载到目标机RAM中,然后才开始执行。
而引导代码分为两种:(1)引导代码固化在ROM或FLASH中;(2)引导代码是一个独立的vxworks应用;引导代码通常也是一种vxworks映像,也被称为引导映像。
VxWorks操作系统基础(适合初学者阅读)2024新版
系统库(System Library)
提供一系列操作系统服务,如文件操作、网络协议栈等。
驱动程序(Device Drivers)
与硬件设备交互,实现对硬件设备的控制和管理。
内核组成及作用
内核组成及作用
01
内核的主要作用包括
02 管理系统资源,如CPU、内存、I/O设备等 。
06
VxWorks文件系统操作指南
文件系统类型及特点介绍
RAM-based File System
基于RAM的文件系统,读写速度快,但数据在 关机后丢失。
TrueFFS
Wind River特有的闪存文件系统,提供磨损均 衡和掉电保护功能。
ABCD
DOS File System (dosFs)
兼容MS-DOS的文件系统,支持FAT12、FAT16 和FAT32格式。
01
VxWorks操作系统概述
VxWorks操作系统定义
VxWorks是一款由美国风河公司( Wind River)开发的嵌入式实时操 作系统(RTOS),专为需要实时响 应和高可靠性的应用而设计。
VxWorks提供了丰富的中间件和开发 工具,支持多种处理器架构和硬件平 台,广泛应用于航空、航天、通信、 医疗、工业自动化等领域。
在ISR中处理完中断事件后, 需要及时清除中断标志,避 免重复处理。
中断优先级设置和嵌套处理
01
VxWorks支持多级中断优先级,高优先级的中断可以打断低优先 级的中断处理。
02
中断优先级可以通过配置文件或动态调整进行设置,以满 足不同应用场景的需求。
03
在处理中断时,如果发生更高优先级的中断请求, VxWorks会自动保存当前中断的上下文信息,并跳转到更 高优先级的中断处理程序中。处理完成后,再恢复之前中 断的上下文信息并继续执行。这种机制称为中断嵌套处理 。
VxWorks BSP主要配置文件注解
VxWorks BSP 主要配置文件 config.h 和 Makefile 注解 config.h /* This file contains the configuration parameters for the CPU evaluation board. */ #ifndef INCconfigh #define INCconfigh /* BSP version/revision identification, before configAll.h */ #define BSP_VER_1_2 1 #define BSP_VER_1_1 1 #define BSP_VERSION "1.2" /* A Tornado 2.0 BSP */ #define BSP_REV "/3" /* 0 for first revision */ #include "configAll.h" /* 这个文件定义了 VxWorks 所有的缺省设置 */
*/ #define DEFAULT_BOOT_LINE \ "Emac(0,0)405GP:vxWorks h=172.16.1.159 e=172.16.254.52 \ u=xxx pw=xxx tn=vxTarget" /* * 内存设置. * 如果定义了 LOCAL_MEM_AUTOSIZE 则 SDRAM 的大小会在 Boot 时指定 */ #undef LOCAL_MEM_AUTOSIZE /* 运行时内存大小 */ #define LOCAL_MEM_SIZE 0x02000000 /* 32MB 内存缺省 */ #define LOCAL_MEM_LOCAL_ADRS 0x00000000 /* 内存基地址为 0 */ #define USER_RESERVED_MEM 0 /* ቤተ መጻሕፍቲ ባይዱee sysMemTop() */ /* * Define SDRAM_ECC_ENABLE to enable ECC if an ECC SDRAM DIMM is detected * during SDRAM auto-configuration. If not defined, ECC will not be enabled * if an ECC SDRAM DIMM is detected, and the DIMM will be used as a normal DIMM. */ #undef SDRAM_ECC_ENABLE /* 解释: 这里主要设置系统的内存分配定义,若分配不当,则系统不能正常加载和运行. ROM_TEXT_ADRS, ROM_SIZE, RAM_HIGH_ADRS, 和 RAM_LOW_ADRS 在 config.h 和 Makefile 文件中 都要定义,且必须要保持一致,这些地址的定义一定要参照 VxWorks 加载执行过程,硬件手册,MMU 和 VxWorks 的大小进行.主要原则是保证 VxWorks image 在 ROM 和 RAM 中都要有一定的运行空间且高效运 行,可参见 VxWorks BSP 和启动过程. */ #define ROM_BASE_ADRS 0xfff80000 /* ROM 的基地址 */ #define ROM_TEXT_ADRS (ROM_BASE_ADRS + 0x100) /* 程序指针和堆栈指针 */ #define ROM_WARM_ADRS (ROM_TEXT_ADRS+0x0004) /* 热启动入口地址 */ #define ROM_SIZE 0x0007f000 /* ROM 大小 512KB */ #define RAM_LOW_ADRS 0x00010000 /* RAM 低地址运行 vxWorks */ #define RAM_HIGH_ADRS 0x00C00000 /* RAM 高地址存储 bootrom */ #define USER_RESERVED_MEM 0 /* 用户保留地址 */
vxworks系统的bsp概念及启动过程
VxWorks 系统的BSP 概念及启动过程乔从连(船舶重工集团公司723所,扬州225001)摘要:VxWorks 作为一个高性能的嵌入式实时操作系统,已经得到了广泛的应用。
介绍了实时操作系统VxWorks 的BSP 的概念及组成,详细分析了VxWorks 系统的初始化流程和启动过程。
关键词:板级支持包;初始化;启动过程中图分类号:TP316.89 文献标识码:B 文章编号:CN3221413(2005)0120061204Concept and Starting Procedure of VxWorks System BSPQ IAO Cong 2lian(The 723Institute of CSIC ,Yangzhou 225001,China )Abstract :As a high 2performance embedded real 2time operating system ,VxWorks has been already applied widely.This paper introduces t he concept and component of VxWorks BSP ,analyses t he initialization flow and starting p rocedure of VxWorks system in detail.K eyw ords :board support package ;initialization ;starting p rocedure0 引 言板级支持包(board support package ,BSP )是介于硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好地运行于硬件。
在使用嵌入式系统VxWorks 时,有时需要根据硬件平台移植BSP 或者对某一配件的驱动进行开发修改。
BSP基础
BSP基础知识学习总结1. 板级支持包(BSP)1.1. BSP概述所谓BSP通常是指针对具体的硬件平台,用户所编写的启动代码和部分设备驱动程序的集合。
它所实现的功能包括初始化、驱动部分设备。
最基本的BSP仅需要支持处理器复位、初始化驱动串口和必要的时钟处理。
在VxWorks系统中,BSP的简单描述为介于底层硬件环境和VxWorks之间的一个软件接口,也可以说是VxWorks的一部分,或者是最简单的VxWorks。
BSP主要的功能是系统的上电初始化硬件处理器、初始化操作系统以及提供部分硬件的驱动程序。
所以在VxWorks系统中的BSP是和该操作系统密切相关的,以下所说的均是VxWorks的BSP。
●初始化包括:CPU初始化,CPU内部寄存器;相关硬件初始化,如控制芯片寄存器等,为整个软件系统建立硬件环境;系统资源初始化,为操作系统运行做准备。
●硬件驱动程序,BSP提供必要的设备驱动程序和相关设备的初始化操作。
●初始化操作系统,在VxWorks系统中,BSP集成了与硬件相关的软件和部分硬件无关的软件。
BSP不单单是一个硬件设备的驱动程序,它是一个运行在特定硬件环境当中的软、硬件接口程序。
其1.2. BSP职责BSP管理了目标板从上电到VxWorks内核加载之间目标板的运行方式,其职责概括起来主要有以下几个要点:1.2.1. 目标硬件环境初始化BSP是在存储器里的特殊地址处提供一段代码,当目标硬件复位或上电时处理器立即执行这段代码。
设置处理器的具体状态,存储器编址,关闭中断,将控制权转交给引导代码,加载需要的VxWorks段到内存中,初始化VxWorks内核前,使目标硬件处于一个静止状态。
1.2.2. 硬件驱动程序集成BSP必须包含设备的驱动程序以及相关支持和配置管理等功能,支持目标硬件环境的驱动程序集成,完成使用设备的全部功能,将产品的开发和设备的配置分开。
最简单的BSP必须具备Flash、内存,串口的配置(WDB和Console,WDB也可选择网口),其他的设备驱动可以放在以后VxWorks 中支持。
VxWorks操作系统BSP和BootLoader介绍
之前要对板卡上所用的处理器、外围电路和设备一 我们可以通过仿真器 清二楚。在 BSP 调试的前期, 来调试。由于这个时期我们没有更多的手段获取处 理器执行 BSP 代码的情况 ( 包括控制指令执行, 获
另外, 在初始化时, 数据缓存和指令缓存应当被 禁止, 中断应当被禁止。
图1 内核后调试环境
!-1
"#$%&’( 启动过程
首先在上电时在处理器跳转的固定位置( ROM
!
"#$%&’( )*+ 实例
本 章 对 一 个 具 体 的 VxWorks BSP 进 行 讨 论 ,
或 Flash中)固化的代码完成处理器的初始化状态 设置, 初始化内存, 下载 VxWorks 镜像所需驱动程 跳转到 VxWorks 序的初始化, 下载 VxWorks 镜像, 镜像所在入口地址继续执行初始化内核( 见表 2 ) 。
%&!&’
内核前调试环境
下载手段有:
1)目标板上的 ROM 编程; 调试只读存储器) ; 2)目标板的 DEBUG ROM ( 3)ROM 仿真; 。 4)集成调试环境( ICE )
调试工具有:
%
"#$ 的开发方法和过程
由于 BSP 的开发同硬件密切相关, 所以在开发
1)标板 DEBUG ROM ; 2)ICE ; 3)逻辑分析仪; 如发光二极管( 。 4)目标板上设备, LED ) %&!&! 内核后调试环境
嵌入式实时操作系统VxWorks下BSP分析及VxWorks裁减
第15卷 第2期2005年6月天 津 工 程 师 范 学 院 学 报JO URNAL O F T I ANJ I N UN I VERS I TY O F TECHNOLO GY AND ED UCAT I O N Vol .15 No .2Jun .2005嵌入式实时操作系统Vx W orks 下BSP 分析及Vx W orks 裁减3褚 哲,孟小锁(西安微电子技术研究所,陕西西安710075)摘 要:以Vx Works 操作系统为例,阐述了BSP 的概念、原理和系统启动流程,并在此基础上以某目标机为原型,着重叙述了Vx Works 的裁减方法。
关键词:Vx Works;板级支持包;映像中图分类号:TP316.2 文献标识码:A 文章编号:167321018(2005)022*******BSP ana lysis under em bedded rea l 2ti m e opera ti n gsystem Vx W orks and Vx W orks ′t a ilorCHU Zhe,ME NG Xiao 2suo(Xi ′an M icr oelectr onics Technol ogy I nstitute,Xi ′an 710054,China )Abstract :This article takes the Vx Works operating system as an examp le to illustrate the concep t,the p rincirle and the start 2up p r ocedure of BSP .Under this foundation it uses certain target machine as original for m to ex 2p lain the tail or method of Vx Works .Key words :Vx Works;board suppot package;i mage Vx Works 操作系统是美国W indR iver 公司推出的一种嵌入式强实时操作系统,自20世纪80年代问世以来,以其不断推出的升级版本、高性能内核以及友好的用户开发环境,在嵌入式实时操作系统领域逐渐占据一席之地,尤其以成功应用于火星探测车和爱国者导弹等高科技产品而声名鹊起,拥有较多的用户。
基于VxWorks的BSP技术分析
基于VxWorks的BSP技术分析隋霞, 许录平(西安电子科技大学电子工程学院,陕西 西安 710071 )摘要:结合嵌入式操作系统设计的主要特点,针对486目标机上VxWorks的定制,运用其BSP技术解决了移植过程中底层硬件与上层软件无关性的问题。
描述了BSP的概念和启动流程,介绍了BSP设计过程,并结合实际工程给出了486目标机下VxWorks的定制及应用程序加载方法。
关键词:嵌入式操作系统; VxWorks; Tornado; 板级支持包; 映像中文图分类号:TP316.9文献标识码: AThe Analysis of BSP Based on VxWorksSUI Xia , XU Lu-ping(School of Electronic Engineering, Xidian University, Xi-an 710071,China)Abstract:Combining with the features of the embedded operating system design and aiming at 486 target board, the independence between the software and the hardware is accomplished by its BSP during the transplanting of VxWorks OS. This paper describes the conception and the start-up flow of the BSP, and introduces its design process. Combining with the practical project, the implement of VxWorks grounded on 486 and the method of how to add applications are given..Key words:embedded operating system; VxWorks; Tornado; BSP; imageVxWorks是由美国Wind River 公司推出的一种强嵌入式实时操作系统(RTOS)。
基于VxWorks的BSP概念与开发
vxworksbsp:. 基于VxWorks的BSP概念与开发疯狂代码 / ĵ:http://NetworkProgramming/Article33345.html基于VxWorksBSP概念与开发2002年3月B版摘 要:本文以VxWorks操作系统为例阐述了BSP概念和系统启动流程并描述了BSP开发过程关键词:BSP;VxWorks;镜像;boot Rom概述VxWorks操作系统是美国WindRiver公司于1983年设计开发种嵌入式实时操作系统(RTOS)它采用微内核结构具有支持多种处理器丰富网络协议良好兼容性和裁减性等特点同时具有动态链接和下载功能图1 BSP在VxWorks系统中地位图2 压缩可引导镜像启动过程BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间底层软件开发包它主要功能为屏蔽硬件提供操作系统驱动及硬件驱动具体功能包括:·单板硬件化主要是CPU化为整个软件系统提供底层硬件支持;·为操作系统提供设备驱动和系统中断服务;·定制操作系统功能为软件系统提供个实时多任务运行环境;·化操作系统为操作系统正常运行做好准备;BSP在VxWorks系统中地位见图1BSP文件在vxworks/target/config/all和vxworks/target/config/bspname文件夹里其中all文件夹里文件是所有BSP通用文件bspname文件夹文件是用户自己定制BSP文件经过编译、链接并在makefile和depend. bspname等文件控制下原最后将生成镜像VxWorks镜像可分为两类:可下载镜像和可引导镜像·可下载镜像(Loadable Image):实际包括两部分是vxWorks二是boot ROM两部分是独立创建其中boot ROM包括被压缩boot ROM镜像(bootrom)、非压缩boot ROM镜像(bootrom_uncmp)和驻留ROMboot ROM镜像(bootrom_res)三种类型;·可引导镜像(Bootable Image):是将引导和vxWorks融为体镜像它常常是最终产品包括不驻留ROM镜像和驻留ROM镜像两种类型VxWorks系统启动流程般来说所有处理器VxWorks系统启动流程都是相似但有些处理器会有些特殊步骤而另些处理器会跳过几个步骤 下面以CPU为ARM7TDMI为例具体描述(见表1)对于可引导镜像在usrConfig.c文件里执行对于可下载镜像在bootConfig.c文件里执行图2为压缩可引导镜像启动过程图示其中所用到地址说明见表2BSP开发过程建立开发环境主要是以目标板CPUBSP文件为模板在 ornado argetconfig目录下创建用户BSP目录bspname把 ornado argetconfigall下文件和BSP模板文件拷贝到该目录下根据具体情况选择合适VxWorks镜像类型修改模板MakefileMakefile文件控制镜像创建在Makefile文件里使用了将近135个宏最简单Makefile文件要包含以下宏: ·CPU:目标板CPU类型;·TOOL:主机make工具为GNU;·TGT_DIR:target路径默认为$(WIND_BASE)/target;·TARGET_DIR:BSP目录名;·VENDER:目标板生产商名;·BOARD:目标板名;·ROM_TEXT_ADRS:boot ROM入口地址(以16进制表示并且与config.h文件定义相同);·ROM_SIZE:ROM大小;·RAM_LOW_ADRS:加载vxWorks目标地址;·RAM_HIGH_ADRS:boot ROM拷贝到RAM目标地址;·HEX_FLAGS:特殊结构标记用于产生S-记录文件;·MACH_EXTRA:扩展文件用户可以加入自己目标模块;·除此以外Makefile文件还需要包括以下文件:·$(TGT_DIR)/h/make/defs.bsp:Vxworks系统运行标准变量定义;·$(TGT_DIR)/h/make/make.$(CPU)$(TOOL):提供了特别目标机结构和套编译工具如make.ARM7TDMI_Tgnu;·$(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE):提供了与主机系统有关定义;·rules.bsp:在创建目标文件时所需要规则;·rules. $(WIND_HOST_TYPE):指出创建目标文件时所需从属文件表;·如果没有用all目录下文件而是拷贝到bspname下修改并使用需要定义与这些文件有关宏如BOOTINIT=bootInit.c这样在创建镜像时就不会用all目录下文件而使用bspname目录下相应文件了;·在Makefile文件里凡是16进制数前面都无需加“0x”;bspname.h根据具体目标板设置串行接口、时钟以及I/O设备等在该文件中必须包含以下内容:·中断向量/级别·I/O设备地址·设备寄存器位含义·系统和附加时钟参数(最大和最小速率)config.h根据目标板具体情况配置宏定义注意ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS要与Makefile文件里定义致LOCAL_MEM_LOCAL_ADRS和LOCAL_MEM_SIZE要正确 romInit.s这是系统上电后运行第个根据具体目标板对寄存器和CPU进行设置;以CPU为ARM7TDMI为例romInit.s 需要进行工作有:·保存启动方式:对于冷启动如果CPU配置是HIGH VECTORS就设置入口地址为0xFFFF0000否则设置入口地址为0x00000000;·屏蔽中断:通过设置cpsrI_BIT和F_BIT都为1来实现还要设置中断寄存器为关模式同时设定运行模式为SVC32模式;·化堆栈指针pc和sp:堆栈指针sp指向STACK_ADRS这个宏定义为当镜像为驻留ROM时该宏值为_sdata当镜像为非驻留ROM时该宏值为_romInit这两个地址经过地址映射后都指向被拷贝镜像在RAM目标地址;·化cache屏蔽cache;·根据具体目标板需要化其他寄存器;·指针跳转到romStart并执行;bootConfig.c般不需要用户修改也可以根据具体情况做适当修改;sysALib.s与romInit.s文件实现功能相似但如果在romInit.s文件里对DRAM和内存控制器进行了化在这里不再进行这项工作;创建VxWorks镜像根据具体需要在命令行环境下利用Makefile创建各种镜像也可以在Tornado集成环境下Build菜单中选择Build Boot ROM来创建各种类型Boot ROM;除此以外如果系统硬件包括串口还要根据具体情况修改sysSerial.c文件;如果包含网络部分要修改configNet.h;如果包含NVRAM要修改bootnv.h文件总之BSP开发要根据具体目标板硬件进行结语我们已经利用基于VxWorksBSP开发包成功进行了线缆调制解调器底层软件开发在开发过程中深感BSP在整个系统软件中重要性——没有正确BSP软件整个系统启动和运行也不会正确另外需要强调是:BSP概念只是针对嵌入式操作系统而言而像DOS、WINDOWS、UNIX等BIOS操作系统是无BSP可言对同目标板而言不同操作系统BSP在本质上是样但是不同操作系统将提供不同支持库另外在BSP结构上也可能会有所不同在做BSP移植时候应该注意■参考文献1. Tornado BSP Developer誷 Kit for VxWorks User誷 GuideTornado2.0Edition 119992. Tornado BSP Developer誷 Kit for VxWorks User誷 GuideTornado 1.0.1Edition 119973. VxWorks Programmer誷 GuidesEdition 11999基于VxWorksBSP概念与开发2002年3月B版摘 要:本文以VxWorks操作系统为例阐述了BSP概念和系统启动流程并描述了BSP开发过程关键词:BSP;VxWorks;镜像;boot Rom概述VxWorks操作系统是美国WindRiver公司于1983年设计开发种嵌入式实时操作系统(RTOS)它采用微内核结构具有支持多种处理器丰富网络协议良好兼容性和裁减性等特点同时具有动态链接和下载功能图1 BSP在VxWorks系统中地位图2 压缩可引导镜像启动过程BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间底层软件开发包它主要功能为屏蔽硬件提供操作系统驱动及硬件驱动具体功能包括:·单板硬件化主要是CPU化为整个软件系统提供底层硬件支持;·为操作系统提供设备驱动和系统中断服务;·定制操作系统功能为软件系统提供个实时多任务运行环境;·化操作系统为操作系统正常运行做好准备;BSP在VxWorks系统中地位见图1BSP文件在vxworks/target/config/all和vxworks/target/config/bspname文件夹里其中all文件夹里文件是所有BSP通用文件bspname文件夹文件是用户自己定制BSP文件经过编译、链接并在makefile和depend. bspname等文件控制下原最后将生成镜像VxWorks镜像可分为两类:可下载镜像和可引导镜像·可下载镜像(Loadable Image):实际包括两部分是vxWorks二是boot ROM两部分是独立创建其中boot ROM包括被压缩boot ROM镜像(bootrom)、非压缩boot ROM镜像(bootrom_uncmp)和驻留ROMboot ROM镜像(bootrom_res)三种类型;·可引导镜像(Bootable Image):是将引导和vxWorks融为体镜像它常常是最终产品包括不驻留ROM镜像和驻留ROM镜像两种类型VxWorks系统启动流程般来说所有处理器VxWorks系统启动流程都是相似但有些处理器会有些特殊步骤而另些处理器会跳过几个步骤 下面以CPU为ARM7TDMI为例具体描述(见表1)对于可引导镜像在usrConfig.c文件里执行对于可下载镜像在bootConfig.c文件里执行图2为压缩可引导镜像启动过程图示其中所用到地址说明见表2BSP开发过程建立开发环境主要是以目标板CPUBSP文件为模板在 ornado argetconfig目录下创建用户BSP目录bspname把 ornado argetconfigall下文件和BSP模板文件拷贝到该目录下根据具体情况选择合适VxWorks镜像类型修改模板MakefileMakefile文件控制镜像创建在Makefile文件里使用了将近135个宏最简单Makefile文件要包含以下宏: ·CPU:目标板CPU类型;·TOOL:主机make工具为GNU;·TGT_DIR:target路径默认为$(WIND_BASE)/target;·TARGET_DIR:BSP目录名;·VENDER:目标板生产商名;·BOARD:目标板名;·ROM_TEXT_ADRS:boot ROM入口地址(以16进制表示并且与config.h文件定义相同);·ROM_SIZE:ROM大小;·RAM_LOW_ADRS:加载vxWorks目标地址;·RAM_HIGH_ADRS:boot ROM拷贝到RAM目标地址;·HEX_FLAGS:特殊结构标记用于产生S-记录文件;·MACH_EXTRA:扩展文件用户可以加入自己目标模块;·除此以外Makefile文件还需要包括以下文件:·$(TGT_DIR)/h/make/defs.bsp:Vxworks系统运行标准变量定义;·$(TGT_DIR)/h/make/make.$(CPU)$(TOOL):提供了特别目标机结构和套编译工具如make.ARM7TDMI_Tgnu;·$(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE):提供了与主机系统有关定义;·rules.bsp:在创建目标文件时所需要规则;·rules. $(WIND_HOST_TYPE):指出创建目标文件时所需从属文件表;·如果没有用all目录下文件而是拷贝到bspname下修改并使用需要定义与这些文件有关宏如BOOTINIT=bootInit.c这样在创建镜像时就不会用all目录下文件而使用bspname目录下相应文件了;·在Makefile文件里凡是16进制数前面都无需加“0x”;bspname.h根据具体目标板设置串行接口、时钟以及I/O设备等在该文件中必须包含以下内容:·中断向量/级别·I/O设备地址·设备寄存器位含义·系统和附加时钟参数(最大和最小速率)config.h根据目标板具体情况配置宏定义注意ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS要与Makefile文件里定义致LOCAL_MEM_LOCAL_ADRS和LOCAL_MEM_SIZE要正确 romInit.s这是系统上电后运行第个根据具体目标板对寄存器和CPU进行设置;以CPU为ARM7TDMI为例romInit.s 需要进行工作有:·保存启动方式:对于冷启动如果CPU配置是HIGH VECTORS就设置入口地址为0xFFFF0000否则设置入口地址为0x00000000;·屏蔽中断:通过设置cpsrI_BIT和F_BIT都为1来实现还要设置中断寄存器为关模式同时设定运行模式为SVC32模式;·化堆栈指针pc和sp:堆栈指针sp指向STACK_ADRS这个宏定义为当镜像为驻留ROM时该宏值为_sdata当镜像为非驻留ROM时该宏值为_romInit这两个地址经过地址映射后都指向被拷贝镜像在RAM目标地址;·化cache屏蔽cache;·根据具体目标板需要化其他寄存器;·指针跳转到romStart并执行;bootConfig.c般不需要用户修改也可以根据具体情况做适当修改;sysALib.s与romInit.s文件实现功能相似但如果在romInit.s文件里对DRAM和内存控制器进行了化在这里不再进行这项工作;创建VxWorks镜像根据具体需要在命令行环境下利用Makefile创建各种镜像也可以在Tornado集成环境下Build菜单中选择Build Boot ROM来创建各种类型Boot ROM;除此以外如果系统硬件包括串口还要根据具体情况修改sysSerial.c文件;如果包含网络部分要修改configNet.h;如果包含NVRAM要修改bootnv.h文件总之BSP开发要根据具体目标板硬件进行结语我们已经利用基于VxWorksBSP开发包成功进行了线缆调制解调器底层软件开发在开发过程中深感BSP在整个系统软件中重要性——没有正确BSP软件整个系统启动和运行也不会正确另外需要强调是:BSP概念只是针对嵌入式操作系统而言而像DOS、WINDOWS、UNIX等BIOS操作系统是无BSP可言对同目标板而言不同操作系统BSP在本质上是样但是不同操作系统将提供不同支持库另外在BSP结构上也可能会有所不同在做BSP移植时候应该注意■参考文献1. Tornado BSP Developer誷 Kit for VxWorks User誷 GuideTornado2.0Edition 119992. Tornado BSP Developer誷 Kit for VxWorks User誷 GuideTornado 1.0.1Edition 119973. VxWorks Programmer誷 GuidesEdition 119992008-12-12 15:53:11疯狂代码 /。
VxWorks BSP基础PPT课件
6
BSP概念 BSP功能 BSP构成 BSP启动序列 BSP开发 BSP部分代码
© 2000 Wind River Systems, Inc.
7
BSP功能
BSP功能简介 BSP与VxWorks的关系
© 2000 Wind River Systems, Inc.
8
BSP功能简介
1 系统加电后的硬件初始化
© 2000 Wind River Systems, Inc.
16
文件介绍
Config\bspname:
makefile:Image的编译规则,其中定义了一些 宏,如:RAM_LOW_ADRS,RAM_HIGH_ADRS。
config.h:包含所有的头文件和与CPU相关的宏定 义,如:对Cache和MMU的配置,RAM和ROM 的定位以及大小配置,外部总线地址映射,PCI 地址宏。
© 2000 Wind River Systems, Inc.
14
文件介绍
Config\all:
bootConfig.c:所有 bootrom的主要初始化与控 制文件。bootConfig.c是usrConfig.c的一个子 集。只提供完整Image中的部分功能。在集成环 境下修改工程相关的配置信息不会影响Boot Image,只有直接修改config.h, configAll.h,bootConfig.c和bootInit.c文件才会 影响到Boot Image;
VxWorks BSP Basics
© 2000 Wind River Systems, Inc.
1
第一部分
整体概述
THE FIRST PART OF THE OVERALL OVERVIEW, PLEASE SUMMARIZE THE CONTENT
基于vxWorks的BSP启动过程实例分析
一.引言BSP是系统用来管理外设的部分,由两部分组成:初始化、驱动程序。
所谓初始化是指从系统上电复位开始直到wind kernel和usrRoot根任务启动的这段时间,系统的执行过程。
驱动程序就是一些包含I/O操作的子函数。
初始化包括:CPU Init、Board Init、System Init。
CPU Init初始化CPU的内部寄存器。
Board Init初始化智能I/O的寄存器,将device打通。
System Init为系统的运行准备数据结构,进行数据初始化。
驱动程序的特点是不能自动执行,只能被动调用。
调用可以有三种方式:任务直接调用、任务调用System Call、任务调用服务。
所以驱动程序可以抽象为三个层次:常规操作、与VxWorks的接口、与Component的接口。
常规操作是设备的固有操作逻辑,有两层含义:I/O编址微观上表现为CPU操作device的寄存器、宏观上表现为具体操作的含义。
驱动程序与VxWorks的接口、驱动程序与Component的接口有三层含义:I/O管理、操作类型规整及参数规整。
二、MPC8260 ADS Board BSP 工作流程系统在上电之后,第一个执行的为romInit模块代码,该段代码单独存为一个文件:romInit.s。
romInit.s是一个汇编级的程序,主要完成系统最基本的硬件初始化工作。
RomInit模块分析:这个模块为VxWorks Boot Rom的入口代码,程序的入口点romInit处是上电后首先执行的代码,他设置BOOT_COLD参数,该参数将被传送到romStart( )程序。
当程序sysToMonitor()运行时,它会跳到romInit处后8字节的地方开始执行,来实现一次“热启动”。
下面为冷启动与热启动的具体实现:_romInit:romInit:bl cold /* jump to the cold boot initialization */nop /* 到这条指令结束,两条指令共占用了8个字节*/bl start /* jump to the warm boot initialization */cold:……start:……下面我们来看一看在cold段里,程序作了那些工作:……bl start /* jump to the warm boot initialization */cold:li r3, BOOT_COLD /* set cold boot as start type *//*根据前面的注释,BOOT_COLD将会被传送到romStart( )程序中去*/addis r4,0,0x0F01 /* R4 holds the IMMR base address */addis r5,0,0x0000 /* Clear out all mask bits */ori r5,r5,0x0836stw r5,0x0104(r4) /* option register for bank 0 */isync /* synchronize *//* 这段代码的目的是初始化寄存器Option register bank 0,将0x0836写入该寄存器*/ /** initialize the IMMR register before any non-core registers* modification. The default IMMR base address was 0x0F000000,* as originally programmed in the Hard Reset Configuration Word.*/lis r4, HIADJ (INTERNAL_MEM_MAP_ADDR)addi r4, r4, LO (INTERNAL_MEM_MAP_ADDR)addis r8,0,0x0F01 /* IMMR was at 0x0f000000 */stw r4,0x01a8 (r8) /* IMMR now at 0x04700000 */isync/*这段代码的目的是修改寄存器IMMR的值,重新设定内部内存的基址,有了这段代码,我们在修改该基址的时候,就可以直接通过修改INTERNAL_MEM_MAP_ADDR的值就可以完成,无需修改这段代码。
VxWorks内核、设备驱动与BSP开发详解(附光盘)
VxWorks内核、设备驱动与 BSP开发详解张杨于银涛编著人民邮电出版社北京内容提要在嵌入式行业飞速发展的今天,嵌入式操作系统的应用越来越广泛,VxWorks具有良好的实时性,被大量应用于航空、通信、国防、工业控制、网络设备、医疗设备、消费电子等嵌入式实时应用领域。
本书共24章,按照初学者学习的一般步骤,详细介绍了VxWorks的开发环境、内核分析和应用程序开发、驱动程序开发与原理和板级支持包流程与移植,每章均配以实例进行讲解。
本书语言通俗、实例丰富、代码分析详尽,有较强的实用性和参考价值,适合大专院校嵌入式相关专业学生学习参考,也可供嵌入式开发人员和系统设计人员参考使用。
VxWorks内核、设备驱动与BSP开发详解♦编著张杨于银涛责任编辑黄焱审校华清远见嵌入式培训中心♦人民邮电出版社出版发行北京市崇文区夕照寺街14号邮编 100061 电子函件 315@网址 三河市海波印务有限公司印刷♦开本:800×1000 1/16印张:24.75字数:520千字2009年10月第1版印数:1 – 3 000册2009年10月北京第1次印刷ISBN 978-7-115-21292-4定价:49.00元(附光盘)读者服务热线:(010)67132692 印装质量热线:(010)67129223前 言行业背景嵌入式系统应用已经深入到我们生活中的各个领域,手机、机顶盒、MP4、交换机、路由器等都可以归结为嵌入式设备。
在这些嵌入式设备中,有一部分设备需要功能强大、实时性强的操作系统,VxWorks正是这类操作系统中的佼佼者。
从VxWorks 5.4 进入中国以来,已经过去了十多年,VxWorks在国内的应用不但没有减少,反而呈现了面向架构多、应用范围广、民用化的特性,越来越多的嵌入式设备转而采用VxWorks实现。
关于本书随着VxWorks应用逐渐广泛,相关书籍却不多。
本书结合作者在VxWorks的多年工作经验,仔细描述了实际开发过程中可能遇到的一些问题,并深入分析VxWorks系统的工作机制,旨在希望能够给刚接触VxWorks的初学者及对VxWorks有一定了解的朋友提供一些帮助,为熟悉VxWorks的朋友提供分析问题、设计软件的途径和思路。
VxWorks基础知识
嵌入式操作系统VxWorks
BSP在单板软件中的地位:
OSS driver
vxWorks等操作系统 BSP 硬件
最小BSP的定义
广义上讲,单板中所有控制CPU系统硬件的程序, 都属于单板的BSP,但为了调试方便和软件的模 块化,通常将与单板最小系统相关的程序简称 为BSP,而将其他程序称为驱动程序。 对于嵌入式系统来说,所谓最小系统就是一个 包含CPU, Bootrom, RAM,系统时钟,网口,串 口的计算机运行环境。其中之所以包含串口和 网口,主要是因为系统调试的需要,通常网口 用于软件调试,而串口用于通过计算机的超级 终端来显示单板程序运行结果信息。系统时钟 是一个多任务OS所必须的资源。因此最小系统 BSP就包含了CPU系统的初始化程序以及网口, 串口,系统时钟等设备的驱动程序。
嵌入式操作系统VxWorks
实用库:VxWorks 提供了一个实用例程的扩展集,包括中断处理、 看门狗定时器、消息登录、 内存分配、字符扫描、线缓冲和环缓 冲管理、链表管理和 ANSI C 标准。
虚拟内存 :VxVMI 为带有 MMU 的目标板提供了虚拟内存机制。 VxMP(Share-Memory Object) 提供了共享信号量,消息队列和在
Local_MEM_Local_ADRS RAM_LOW_ADRS
FREE_RAM_ADRS
VxWorks Data+BSS
映象从文件的组织形式上可分为: Text段:存放的是可执行的代码。 Data段:存放的是已经初始化的全 局变量或静态变量;
BSS段:存放的是未初始化的全局变 量或静态变量
嵌入式操作系统VxWorks 一个BSP最小系统需要知道的知识: 1. CPU所采用的endian模式 2.时钟配置 3.串口 4.网口部分
第8章(327)
第8章 VxWorks BSP基础及其开发过程
(6) 装载需要的VxWorks段到RAM中,例如把数据段从 ROM拷贝到RAM中。
(7) 在初始化VxWorks内核前,使目标机硬件处于一个静 止状态。
2. 硬件驱动程序的集成 访问硬件设备驱动程序,BSP必须包含设备驱动程序的相 关支持、设备的配置管理等。这主要是指下面几个方面: (1) BSP里提供了一些驱动程序支持。在BSP里包含了一 些驱动程序的支持,其中包括驱动程序的中断服务程序、驱 动程序相关的结构以及宏定义等。 ① 除BSP包含与中断向量表关联的中断服务程序外,还 包含驱动程序定义的中断服务程序。
第8章 VxWorks BSP基础及其开发过程
第8章 VxWorkshop BSP 基础及其开发过程
8.1 BSP基础理论知识 8.2 BSP的基本配置和VxWorks的初始化 8.3 BSP的开发要求及开发过程 8.4 BSP中设备驱动程序的开发 8.5 本章小结
第8章 VxWorks BSP基础及其开发过程
要接口。因此,了解BSP的文件组成和结构是十分必要也是十 分重要的。在这之前,由于VxWorks系统是运行于Tornado开 发环境下的,因此我们首先介绍在开发环境Tornado软件包安 装后的模块组成和目录结构。
1. Tornado 的模块组成 Tornado开发系统包含三个高度集成的部分: (1) 运行在宿主机和目标机上功能强大的交叉开发工具和 实用程序。 (2) 运行在目标机上的高性能、可剪裁(用户可根据自己的 需要配置系统)的实时操作系统VxWorks。
第8章 VxWorks BSP基础及其开发过程
以上是从BSP的功能去理解BSP,但是到目前为止还没有 对BSP得出明确的定义。在VxWorks系统中,对BSP的简单描 述为介于底层硬件环境和VxWorks之间的一个软件接口。BSP 的主要特点是硬件相关性和操作系统相关性。因此BSP与操作 系统是相对应的,不同的操作系统就应该对应于不同定义形 式的BSP。例如,VxWorks的BSP和Linux的BSP相对于某一 CPU来说尽管实现的功能一样,可是写法和接口定义是完全 不同的,所以写BSP一定要按照该操作系统BSP的定义形式来 写(BSP的编程过程大多数是在某一个成型的BSP模板上进行 修改)。这样才能与上层OS保持正确的接口,良好地支持上层 OS。