您好,欢迎访问三七文档
BSP概述1BSP定义BSP即BoardSupportPackage,板级支持包。BSP(boardsupportpackage),是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行与硬件主板。在嵌入式体统软件的组成中,就有BSP。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改)。这样才能与上层OS保持正确的接口,良好的支持上层OS。BSP是针对某个特定的单板而设计的。如果没有单板支持软件包,则操作系统就不能在单板上运行。并且它对于用户(指开发者)也是开放的,用户可以根据不同的硬件需求对其作改动或二次开发。BSP在嵌入式系统中的角色,很相似于在PC系统中的BIOS和驱动程序的地位。但对于嵌入式系统来说,它没有像PC机那样具有广泛使用的各种工业标准、统一的硬件结构。各种嵌入式系统各不同的应用需求就决定了它一般都选用各自定制的硬件环境,每种嵌入式系统从核心的处理器到外部芯片在硬件结构上都有很大的不同。这种诸多变化的硬件环境就决定了无法完全由操作系统来实现上层软件与底层硬件之间的无关性。BSP软件与其他软件的最大区别在于BSP软件有一整套模板和格式,开发人员必须严格遵守,不允许任意发挥。在BSP软件中,绝大部分文件的文件名和所要完成的功能都是固定的。所以,BSP软件的开发一般来说都是在一个基本成型的BSP软件上进行修改,以适应不同单板的需求。针对某类CPU的硬件单板,嵌入式操作系统(如vxWorks)通常提供有其DEMO板的BSP,这些程序位于指定的目录之下。也就是我们所说的最小系统BSP。一般来说,我们在硬件系统设计好之后,都会先找到一个与自己系统相近的DEMO板BSP(最起码是使用相同的CPU)。并以此为基础,开发自己单板的BSP。BSP在软件系统中的位置可以用下图来表示,BSP为操作系统和硬件设备的互操作建了一个桥梁,操作系统通过BSP来完成对指定硬件的配置和管理。和硬件无关的系统软件模块I/O系统文件系统TCP/IPMUX操作系统库硬件相关的系统软件模块Flash/SCSIDriver操作系统内核LanDriverBSP硬件SCCTimerLan控制器Flash/SCSIControllerBSP向上层提供的接口有与操作系统内核的接口(如报告DRAM大小、修改中断屏蔽级别等)与操作系统的I/O系统的接口与应用程序的接口BSP的主要功能BSP的主要功能在于配置系统硬件使其工作于正常的状态,完成硬件与软件之间的数据交互,为OS及上层应用程序提供一个与硬件无关的软件平台。因此从执行角度来说,其可以分为两大部分:1)目标板启动时的硬件初始化及多任务环境的初始化2)目标板上控制各个硬件设备正常运行的设备驱动程序,由它来完成硬件与软件之间的信息交互通常我们认为BSP是为OS服务的,但实际上,BSP软件包中的部分程序对OS也并不是必须的,从这个角度,又可以将BSP划分为两部分:1)最小系统BSP,即我们通常所称的BSP2)设备驱动程序2BSP实际开发的主要过程1.掌握开发中使用的操作系统,和在这种操作系统下开发BSP的要求。2.研读所选CPU的资料。3.研读硬件设计文挡。4.研读电路板中器件的资料。5.找一个BSP模板,熟悉它并在此基础上开发自己的BSP。从头研制BSP工作量极大,也没有必要。6.利用仿真器进行调试,开发最小BSP系统。7.在最小BSP的基础上,利用Tornado集成开发环境,进一步调试外围设备,配置、完善系统。8.调试单板上的设备驱动程序。3BSP的调试方法(最小系统的调试和设备驱动程序的调试)3.1仿真器调试方式:在串口和网口初始化及发挥功能以前,用仿真器调试是一种相对来讲很方便的手段。BSP软件的调试通常需要利用仿真器来进行。目前市场上的大多数仿真器都能支持JTAG接口。典型的仿真器调试环境如下图所示:调试计算机仿真器目标板RS232RS232ENETJTAG调试计算机通过RS232接口与仿真器相连,完成对仿真器的初始化配置工作,通常这项工作只在第一次使用仿真器时进行,配置结果一般会被仿真器存储起来。仿真器通过以太网口与调试计算机相连,通过JTAG接口与目标板相连,利用这条通路,仿真器就可将计算机上的程序下载到目标板上进行调试。目前常用的有两类仿真器,一是JTAG仿真器,二是全功能在线仿真器。前者是利用处理器中的调试模块的功能,通过其JTAG边界扫描口来与仿真器连接。这种方式的仿真器比较便宜,连接比较方便。但由于仅通过十几条线来调试,因而功能有局限。对于全功能在线仿真器来说,由于其仿真头完全取代目标板上的CPU,因而功能非常强大。这类仿真器为了能够全速仿真时钟速度高于100MHz的处理器,通常必须采用极其复杂的设计和工艺,因而其价格比较昂贵。3.2“黑”调在没有仿真器的情况下一般使用“黑”调,具体的方法是加“指示灯”、用示波器测量硬件信号等,目的是打通串口,达到宿主机与目标机的通信。这种调试方法无法跟踪软件的运行这种调试方法要求所使用的BSP模板与自己的单板基本一致。“黑”调的工程步骤:BSP完成烧ROMBuild最简IMAGEBuildBSPlibModifyBSP最小系统OK?Bsp其他部分okdownloadBuildram类型imageBuildimage验证其他部分增加bsp其他部分STARTNO“黑”调YESyesNO3.3使用集成开发环境在进行VxWorks下BSP开发时,如果最小系统的BSP已经能够正常运行,则可以使用VxWorks的集成开发环境Tornado。TornadoII工具提供一个高度可视化和自动化的开发环境,加快了基于VxWorks的应用开发。这样,不论对于初次使用还是有经验的开发者,使用TornadoII开发其应用是快速而方便的。4中断处理4.1采用中断处理方式的原因:保证处理的实时性、减少CPU的消耗。4.2中断的处理流程中断处理程序首先切换到中断堆栈,保存程序计数器和寄存器等中断现场状态,然后对中断进行处理,中断处理过程中必须要及时清除中断源,最后要恢复中断前的程序计数器和寄存器等现场状态,由中断处理程序返回。InterruptServiceCode实时系统中的中断处理非常重要,系统通常通过中断获取外部事件。为了尽可能块的响应中断,VxWorks中的ISRs运行在特定的上下文(非任务上下文),中断处理无需任务的上下文切换。我们可以使用除了VxWorks系统使用的之外的系统硬件中断,VxWorks提供了例程intConnect()用于将C程序与任何中断相连接。VxWorks的ISRs运行在特定的上下文(x86中断使用当前被中断掉的任务的堆栈,PPC有单独的全局中断堆栈)因而中断处理没有任务的上下文切换。4.3中断的堆栈大部分系统规定(如PowerPC):所有的中断使用同一个专用堆栈,这个堆栈在系统启动时根据特定的配置参数由系统来分配和初始化。要求堆栈足够大来处理最坏的中断嵌套。然而有一些系统不允许有单独的中断堆栈(如x86),在这种情况下,中断使用当前被中断掉的任务的堆栈。如果使用这种结构,必须给每个任务开足够大的任务堆栈来处理最坏的中断嵌套和调用嵌套。可以在开发中使用checkStack()来查看在栈空间中任务和中断的堆栈是如何分布的。4.4ISR的一些限制1、ISR要尽量的短,能在任务中完成的工作就不要放在ISR中。2、ISR不能调用将会导致阻塞的子程序。3、ISR不能take信号量,但是ISR可以give信号量。4、由于子程序malloc()、free()使用了信号量,ISR不能调用它们。5、ISR不能通过VxWorks的驱动执行I/O。6、ISR不能调用使用了浮点协处理器的子程序。4.5中断服务程序与任务的通信由于中断事件通常涉及到任务级代码,因此必须提供中断服务程序和一般任务的通信机制。VxWorks提供的中断服务程序和一般任务的通讯机制有:共享存储区和环形缓冲信号量:中断服务程序能够释放信号量(不包括互斥信号量和VxMP共享信号量),任务能够等待该信号量。消息队列,中断服务程序能够向消息队列发送消息,任务能够从消息队列里接收消息。管道:中断服务程序可以向管道写数据,任务可以从管道读取数据。信号灯:中断服务程序能够通过发信号通知任务,触发相应的信号处理程序的异步调度。5常用总线协议:HDLC、UART、Ethernet/IEEE802.3ATM、PCI、I2C、SPI6单板的硬件组成BSP与单板密切相关,要开发BSP就要了解单板的硬件组成,单板一般由CPU最小系统和一些外围硬件设备构成。CPU最小系统:CPU、内存、内存控制器、调试串口、调试网口、系统时钟、桥片、外围芯片(包括)、实时时钟、定时器、FPGA、部分嵌入式系统也包括软硬盘控制器、显卡、键盘。不同单板使用不同的专用设备芯片:DMA控制器、E1传输芯片、光接口芯片、时隙交换、FLASH、host/pci桥片pci/pci桥片、以太网口芯片(如intel的82559、realtek的8139)、以太网口交换芯片(BCM5616)、CSM5000、CSM5500、看门狗、专用FPGA逻辑等等。典型的单板组成示意图:IS95/1X中的SVICM单板组成示意图3G系统中的CPU最小系统结构示意HOST/PCIPCI接口PMCP11/P12Á¬½ÓÆ÷33MHz-32bitPCI总线PCI½Ó¿Ú----ETHERNET接口转换芯片RJ45COREµçÔ´µ÷ÊÔ½Ó¿ÚRS232OSCOSCUART控制器BOOTLASH512KBSDRAMFLASHEPLD监控LED/CS_UART/CS_BOOT/RCS0、LOCALADDRESSCPUPMCP14连接器3G系统中的CCM单板结构示意7处理器:我们目前经常使用的处理器:POWERPC、ARM、MIPS、x86等系列处理器POWERPC:Mpc860、Mpc8260、Mpc850、Mpc8250、Mpc755、Mpc8245、Mpc7450、IBM750ARM:IXP1200、IXC1100X86:(PIII处理器)各处理器的特点(见硬件相关文档):嵌入式系统使用的CPU一般具有低功耗、体积小、集成度高等特点,而且一般内部集成了内存控制器、串口控制器、以太网口控制器等芯片。例如:MPC8260POWERQUICCⅡ是一个功能强大的嵌入式通讯处理器,它集成了一个64-bit高性能的PowerPC系列的RISC微处理器和一个32-bit的RISC通讯处理器。同MPC860一样,MPC8260由三个主要功能块组成,但它具有更强大的功能:一个64-bit的内核,是PowerPCMPC603e微处理器的变种。它的处理速度可达100~200MHz,并支持L2cache。一个系统接口单元(SIU)。它具有一个更加灵活的存储器控制器,可以与几乎所有类型的存储器接口。并支持JTAG控制器IEEE1149.1测试端口(TAP)。一个通信处理模块。它不仅包含了MPC860上的所用通信外围控制器,还增加了三个高性能通信通道(FCC)支持新的高速协议,两个多通道控制器(MCC)可支持128个串行全双工通道。8BSP提供的vxWorks下的设备驱动BSP的另一项主要任务是为操作系统访问硬件设备驱动程序提供支持。所谓设备是指独立于处理器内核之外的,能够接收CPU的输入数据和/或向CPU提供数据输出的硬件单元。8.1网口、串口的设备驱动对于一些通用的设备,如网口、串口,由于包含在BSP最小系统内,vxWorks都会提供基本的驱动程序。常用的串口设备驱动程序参见目录\tornado\tar
本文标题:BSP知识概述
链接地址:https://www.777doc.com/doc-6840681 .html