摘要 S3C44BOX固定的中断管理模式与VxWorks的异常处理机制存在着冲突。本文分析VxWorks的异常处理机制后,提出一种解决方案,实现VxWorks在S3C44BOX上的BSP定制。该方案保留VxWorks原有的中断处理机制,从而保证VxWorks移植后的稳定性和可靠性。

关键词 VxWorks S3C44BoX BSP 中断处理机制

引 言

VxWorks是现在所有独立于处理器的实时系统中最具特色的操作系统之一。它支持的CPU包括:PowerPC、x86、MIPS、ARM等,其微内核Wind具有任务问切换时间短、中断延迟小、网络流量大等特点,是一个具有较高性能的标准嵌入式实时操作系统。此外,VxWorks操作系统还具有较好的可裁减性和易于移植等特点。

S3C44BOX是韩国Samsung公司出品的一款ARM(Advanced RISC Machines)微控制器,CPU核心为ARM7TDMI。S3C44BOX具有非常丰富的外围资源,集成LCD控制器、12C总线控制器、I2S总线控制器、2个串口控制器、2个通用DMA(Direct Memory Access)控制器、8个10位ADC(Analog to Digital Converter)通道、71个通用I/O引脚等,大大减少了系统成本,是各种学习板和开发板的首选ARM芯片。

1 BSP概念

BSP(Board Support Packet,板级支持包)是介于底层硬件和上层软件之间的底层软件开发包,它的主要功能为屏蔽硬件,提供操作系统的驱动及硬件的驱动,具体功能包括:

  • 目标机硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持;
  • 为操作系统提供设备驱动程序和系统中断服务程序;
  • 定制操作系统的功能,为软件系统提供一个实时多任务的运行环境。

2 VxWorks启动流程

VxWorks的启动涉及到两个映像文件:Bootrom映像和VxWorks映像,其中每一类又可以再细分为压缩、非压缩、驻留ROM和非驻留ROM类型的映像。不同的映像对应的启动流程也有所不同,但它们的基本流程是相同的,如表1所列。

引 言

  随着以太网的稳定性、抗干扰性和带宽问题的逐步改善,以太网正在大规模进入工业控制领域。用于工业过程控制、通信、航天器和导航系统中的网络对可靠性及其响应故障的快速性要求极高。当前,冗余设计作为一种提高设备可靠性的有效方法,已经得到了广泛的应用。对于网络系统中的单个节点,常常需要对网卡进行双冗余备份,即每个节点都采用2块网卡(或2个网口),中间用集线器或交换机互连,当正常通信的网卡或线路出现故障时,该节点能自动地切换到备份网卡进行通信。图1为冗余网络的一种典型联接形式。

  具有双冗余网卡的节点虽然有2块网卡,2条通道,但对于高层应用系统来说,仍呈现单网卡的特征。具体来讲,2块网卡共有1个物理地址,1个IP地址。根据TCP/IP参考模型,TCP/IP协议族可以分为应用层、传输层、网络层和链路层4层,冗余网卡技术可以在其中各个层面中实现。

VxWorks、MUX与网卡驱动程序

  嵌入式实时操作系统VxWorks的网络协议栈与网络设备驱动的接口有2种:一种是标准的BSD4.4Driver,它将Driver和协议紧密关联在一起,不利于多协议的支持;另一种标准是VxWorks特有的,它将Driver和协议栈隔离开,使二者通过一个称为MUX的薄层相连,使得网络服务免受特定的网络接口驱动程序的影响,达到Driver独立于具体协议的目的,从而实现多协议的支持,三者间的关系如图2所示。

  目前版本的MUX支持2种网络驱动程序接口模式:增强型网络驱动程序接口( END)和网络协议工具包(NPT)驱动程序接口。现以END型网卡驱动为例介绍如何在VxWorks5.4下的NE2000兼容网卡驱动程序中实现双网卡冗余设计。正常情况下,协议驱动程序通过MUX层提供的NIC的句柄来提交请求,这个句柄是调用EndLoaD()获得的;然后MUX层调用网卡驱动程序中的接口函数,实现高层协议驱动程序的请求。

在应用层实现双冗余网卡技术的分析

  在系统中对网卡进行双冗余备份,即1块网卡在正常工作时使用,另1块网卡作为备份。备份用的网卡处于激活状态。在正常通信的网卡出现故障或系统需要时,备份用的网卡能实时地、自动地切换到继续工作。显然,这就要求2块网卡只能使用同1个物理地址和同1个IP地址。从应用程序的角度看,只会看见1块网卡在工作,不关心是哪块网卡在工作及如何切换。

  理论上讲,冗余网卡技术可以在OSI各层中实现,而且越在底层实现,检测和切换的速度越快,效果应该越好。其他利用应用层实现双冗余网卡的主要方法是在程序中发起任务,以查询的方式不断对当前工作网卡的工作状态进行判断,当判断出当前使用的网卡处于非正常状态的时候,将删除当前网卡的路由,在主机列表中删除当前主机名,并解除网卡与协议的绑定;然后进行备份网卡的配置:为备份网卡绑定协议,设置子网掩码和IP地址。用此种方法实际测试,测试中使装有双网卡的主机不断向外发送广播报文,同时用网络分析软件接收。测得2个网口的切换时间平均为120ms,在切换期间有很多广播报文丢失。可见在应用层实现双网卡冗余备份技术,网卡切换速度慢,不利于网络的可靠性和实时性。

摘要:VxWorks是美国WindRiver公司设计开发的一种嵌入式实时操作系统,可移植性是对嵌入式操作系统的一个重要要求,VxWorks BSP(板极支持包)正是实现可移植性的中间层软件,使操作系统的应用代码独立于具体硬件.本文介绍了VxWorks BSP的开发,分析了VxWorks的启动过程,给出了基于三星S3C2410处理器开发板的BSP设计以及VxWorks的映像编译下载,其中重点介绍了BSP中几个重要文件和函数的设计,最后提出了开发调试过程中的几个注意点。

1 引言

VxWorks是美国WindRiver公司设计开发的一款嵌入式实时操作系统。能支持多种微处理器:PowerPC,x86,MIPS,ARM,SPARC等。它采用微内核结构,具有高可靠性、实时性、丰富的网络协议、良好的兼容性以及可裁减性等特点,同时具有友好的用户开发环境。其中VxWorks很好的移植性通过BSP来实现,BSP使操作系统能够独立于具体硬件,对上层屏蔽具体的硬件,为系统组件以及应用程序提供统一的接口。

本文主要研究如何将VxWorks操作系统移植到基于三星S3C2410处理器硬件平台上,即BSP的设计。主要内容包括下面两点:熟悉并掌握VxWorks映像种类,系统的启动顺序和过程,以及BSP软件包中各文件的组成和作用以及相应的设置文件的修改;二是熟悉系统底层驱动,也就是要对开发板的硬件环境有一个初步了解,这样才可以结合具体硬件开发板设计出相应的底层驱动程序。

2 BSP组成

2.1 BSP概念

对于嵌入式系统而言,并没有像PC那样的标准,存在着各种不同的嵌入式硬件平台,这就使得无法完全由操作系统来实现上层软件与底层硬件的无关性。BSP正是采用当今嵌入式分层设计的介于操作系统和底层硬件的中间层。BSP通常是指针对具体的硬件平台,用户所编写的启动代码和部分设备驱动程序的集合。它所实现的功能包括初始化,驱动部分设备.最基本的BSP仅需要支持处理机复位,初始化,驱动串口和必要的时钟处理。BSP的概念只是针对嵌入式操作系统而言的,而像DOS,Windows,UNIX等BIOS操作系统是无BSP可言的。不过到目前为止,嵌入式系统中也没有对BSP有明确统一的定义,不同的嵌入式系统BSP实现的功能有所差别。在VxWorks系统中,对BSP描述为介于底层硬件环境和VxWorks之间的软件接口,它的主要功能是系统加电后初始化目标机硬件,初始化操作系统及提供部分硬件的驱动程序。

2.2 BSP组成

其主要的两部分组成为:初始化代码,硬件驱动程序.

BSP的初始化部分是指从上电复位开始直到WIND内核和usrRoot()函数启动的这段时间内系统的执行过程.具体包括:CPU初始化,设备初始化以及系统初始化.CPU初始化CPU内部寄存器,设备初始化智能I/O的寄存器,将板上设备打通;系统初始化为系统的运行准备数据结构,进行数据初始化.其初始化过程如图1所示:

一、Nand/Nor Flash简介

NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,提供更高的性能,并且像磁盘一样可以通过接口轻松升级。其容量可达1GB以上,并且写入和擦除速度很快,更适合于数据存储。

NOR Flash的存储单元位块(block),一般每个块64K~128K,块也是擦除的单位。

NAND Flash的存储单元为页(page)和块(block),块仍然是擦除单位,页作为坏扇的管理单位。每个块内包含若干个页,通常是32页,每个页又分为主数据区和附加数据区(extra),如果主数据区出现EDC/ECC校验错误,可以把错误记录在附加数据区。主数据区和附加数据区使用不同的命令字读/写,所以,从外界看来,主数据区和附加数据区具有相同的起始地址。常见的页的大小有两种,一种页的大小为512字节(简称“小页”),物理上依次分为2个256字节的主数据区,最后是16字节的备用空间(spare),“小页”模式多用于小于128M的芯片;而128MB以上的芯片大多使用大小为2K的页(即“大页”),附加数据区也不再是16字节,而是2048字节。

性能比较

flash闪存是非易失存储器,可以对存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NOR器件的擦除单位比较大,一般是以64~128KB的块进行,执行一个擦除操作的时间为秒级,一般在1~3秒; NAND器件的擦除单位相对NOR要小,一般是以8~32KB的块进行,执行相同的操作最多只需要4ms。NOR的读速度比NAND快的多。对NOR器件的读不需要做地址的特殊映射,可以把NOR Flash当作内存直接读取。NAND的写入速度比NOR快的多。NAND的4ms擦除速度远比NOR快。

接口差别

NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。NAND器件使用复杂的I/O口来串行的存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。

由于需要I/O接口,NAND要复杂得多。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。

容量和成本

NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。

NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额比较大。

1、Introduction

本章主要介绍与VxBus和VxBus驱动程序相关的一些概念,主要包括VxBus, Instances(实例)等。

2、About VxBus

VxBus对很多朋友来说是一个全新的概念,也包括我,下面介绍一下VxBus。

术语VxBus通常情况下指的是VxWorks中对支持设备驱动程序的一些具体的基础设施,它包括:

  1. 允许设备驱动程序自动与设备匹配
  2. 为其他软件环境(设备驱动程序之外)访问设备功能提供机制
  3. 为VxWorks系统中的设备驱动程序的多样性提供一些必须的支持
  4. 另外VxBus有时候也指VxWorks系统的的组件集合,包括WorkBench开发平台vxprj命令行工具,VxWorks镜像项目等

VxBus最核心的功能是组件功能,它把每个设备驱动程序和VxBus支持的模块都抽象成一个组件,所有的这些组件都可以单独在Workbench中进行配置(添加和删除)。在VxWorks6.2以前,设备驱动程序并没有集成vxWorks项目配置中,程序员为了添加和删除对特定设备的支持必须具备足够的BSP、驱动程序开发知识,当设备驱动程序被添加或者删除时,它同样也要求额外的功夫去管理VxWorks工程。作为组件的集合,VxBus通过允许在workBench中选择非常多的驱动程序和支持模块来减少上面提到的大部分工作量,而且它并不要求程序员具备良好的BSP和驱动程序知识,也不要求增删设备驱动时对工程的附加管理等。

VxBus在大多数发行版的BSP中是必须的组件,如果你在去掉Vxbus组件的BSP基础上建立工程,工程一般都不会编译通过。

3、VxBus Device Driver

对于很好的理解VxBus 设备驱动程序,有三个概念非常重要:设备,驱动程序,实例。设备概念大家都很清楚,一般就是指硬件;驱动程序是指使硬件设备能够被操作系统访问的可执行代码和必须的配置信息;每一个驱动程序可以和0或者多个设备相关联,术语实例指的是这种关联的其中一个。这和蓝牙设备配对过程是一样的,驱动程序也要和设备进行配对,系统可以同时存在多个这样的实例。以下是VxBus实例的示意图: