1 BSP概述
BSP即Board Support Package,板级支持包。它来源于嵌入式操作系统与硬件无关的设计思想,操作系统被设计为运行在虚拟的硬件平台上。对于具体的硬件平台,与硬件相关的代码都被封装在BSP中,由BSP向上提供虚拟的硬件平台,BSP与操作系统通过定义好的接口进行交互。BSP是所有与硬件相关的代码体的集合。
一个成熟的商用操作系统,其被广泛应用的必要条件之一就是能够支持众多的硬件平台,并实现应用程序的硬件无关性。一般来说,这种无关性都是由操作系统实现的。 但对于嵌入式系统来说,它没有像PC机那样具有广泛使用的各种工业标准、统一的硬件结构。各种嵌入式系统各不同的应用需求就决定了它一般都选用各自定制的硬件环境,每种嵌入式系统从核心的处理器到外部芯片在硬件结构上都有很大的不同。这种诸多变化的硬件环境就决定了无法完全由操作系统来实现上层软件与底层硬件之间的无关性。
因此各种商用实时操作系统,都采用了分层设计的方法,它将系统中与硬件直接相关的一层软件独立出来,称之为Board Support Package,简称为BSP。顾名思义,BSP是针对某个特定的单板而设计的。如果没有单板支持软件包,则操作系统就不能在单板上运行。并且它对于用户(指开发者)也是开放的,用户可以根据不同的硬件需求对其作改动或二次开发。 BSP在嵌入式系统中的角色,很相似于在PC系统中的BIOS和驱动程序的地位。 BSP的具体结构和组成根据不同的嵌入式操作系统而不同。BSP的开发要求设计人员具备软硬件方面的综合知识。
BSP软件与其他软件的最大区别在于BSP软件有一整套模板和格式,开发人员必须严格遵守,不允许任意发挥。在BSP软件中,绝大部分文件的文件名和所要完成的功能都是固定的。所以,BSP软件的开发一般来说都是在一个基本成型的BSP软件上进行修改,以适应不同单板的需求。 针对某类CPU的硬件单板,嵌入式操作系统(如vxWorks)通常提供有其DEMO板的BSP, 这些程序位于指定的目录之下。也就是我们所说的最小系统BSP。一般来说,我们在硬件系统设计好之后,都会先找到一个与自己系统相近的DEMO板BSP(最起码是使用相同的CPU)。并以此为基础,开发自己单板的BSP。
?定义
BSP就是为软件操作系统正常运行提供最基本、最原始的硬件操作的软件模块,它和操作系统息息相关,但又不属于操作系统的一部分。BSP可以分为三大部分:
1:系统上电时的硬件初始化。
2:为操作系统访问硬件驱动程序提供支持。
3:集成的硬件相关和硬件无关的操作系统所需的软件模块。
?BSP的表现形式
BSP主要以两种形式来表现: 1:源代码(C代码、汇编代码)、系统编译连接依靠文件。 2:二进制的目标代码和目标代码库。
?BSP在软件系统中的位置
BSP在软件系统中的位置可以用下图来表示,BSP为操作系统和硬件设备的互操作建了一个桥梁,操作系统通过BSP来完成对指定硬件的配置和管理。
I/O系统 和硬件无关的系统软件模块 TCP/IP 操作系统库 文件系统 MUX 硬件相关的系统软件模块 操作系统内核 Flash/SCSI Driver BSP Lan Driver 硬件 Flash/SCSI Controller SCC Timer Lan 控制器 BSP向上层提供的接口有
? 与操作系统内核的接口(如报告DRAM大小、修改中断屏蔽级别等) ? 与操作系统的I/O系统的接口 ? 与应用程序的接口
?CPU最小系统BSP的定义
广义上讲,单板中所有需要CPU控制的硬件的程序,都属于单板BSP,但是,为了调试方便和软件的模块化,我们通常就将与此单板最小系统相关的程序简称为BSP,而将其他程序称为驱动程序。
对于嵌入式系统来说,所谓最小系统就是一个包含:CPU, Bootrom, RAM,系统时钟,网口,串口的计算机运行环境。
这样,最小系统BSP就包含了CPU系统的初始化程序以及网口,串口,系统时钟等设备
的驱动程序。
?BSP的主要功能
BSP的主要功能在于配置系统硬件使其工作于正常的状态,完成硬件与软件之间的数
据交互,为OS及上层应用程序提供一个与硬件无关的软件平台。因此从执行角度来说,其可以分为两大部分:
1)目标板启动时的硬件初始化及多任务环境的初始化
2)目标板上控制各个硬件设备正常运行的设备驱动程序,由它来完成硬件与软件之间的信息交互
通常我们认为BSP是为OS服务的, 但实际上, BSP软件包中的部分程序对OS也并不是必须的,从这个角度,又可以将BSP划分为两部分: 1)最小系统BSP,即我们通常所称的BSP 2) 设备驱动程序
?开发BSP需要的条件
? 目标硬件:硬件调测完毕,经过必要的软件测试
? 必要的硬件设计文档:如地址空间的分布,CPU和其他芯片的工作模式等。 ? 操作系统
? 交叉开发工具:编译器、汇编器、链接器等 ? 下载机制:bootrom或仿真器等
2 BSP实际开发的主要过程
1. 2. 3. 4. 5.
掌握开发中使用的操作系统,和在这种操作系统下开发BSP的要求。 研读所选CPU的资料。 研读硬件设计文挡。
研读电路板中器件的资料。
找一个BSP模板,熟悉它并在此基础上开发自己的BSP。从头研制BSP工作量极大,也没有必要。
6. 利用仿真器进行调试,开发最小BSP系统。
7. 在最小BSP的基础上,利用Tornado集成开发环境,进一步调试外围设备,配置、完善
系统。
8. 调试单板上的设备驱动程序。
3 BSP的调试方法(最小系统的调试和设备驱动程序的调试)
3.1 仿真器调试方式:
在串口和网口初始化及发挥功能以前,用仿真器调试是一种相对来讲很方便的手段。
BSP软件的调试通常需要利用仿真器来进行。目前市场上的大多数仿真器都能支持JTAG接口。典型的仿真器调试环境如下图所示:
RS232调试计算机RS232仿真器JTAG目标板
调试计算机通过RS232接口与仿真器相连,完成对仿真器的初始化配置工作,通常这项工作只在第一次使用仿真器时进行,配置结果一般会被仿真器存储起来。仿真器通过以太网口与调试计算机相连,通过JTAG接口与目标板相连,利用这条通路,仿真器就可将计算机上的程序下载到目标板上进行调试。
目标板上的串口和以太网口为被调试的对象,和调试计算机相连,主要是可以通过调试计算机检验目标板上的接口是否工作正常。
在仿真器环境下,既可以调试vxWorks映象,也可以调试bootrom映象。当调试BootRom映象时,需要修改CONFIG.H和MAKEFILE文件将这段代码定位到RAM中,然后通过仿真器下载到目标板上的RAM中进行调试。
目前常用的有两类仿真器,一是JTAG仿真器,二是全功能在线仿真器。前者是利用处理器中的调试模块的功能,通过其JTAG边界扫描口来与仿真器连接。这种方式的仿真器比较便宜,连接比较方便。但由于仅通过十几条线来调试,因而功能有局限。对于全功能在线仿真器来说,由于其仿真头完全取代目标板上的CPU,因而功能非常强大。这类仿真器为了能够全速仿真时钟速度高于100MHz的处理器,通常必须采用极其复杂的设计和工艺,因而其价格比较昂贵。
ENET3.2 “黑”调
在没有仿真器的情况下一般使用“黑”调,具体的方法是加“指示灯”、用示波器测量硬件信号等,目的是打通串口,达到宿主机与目标机的通信。这种调试方法无法跟踪软件的运行这种调试方法要求所使用的BSP模板与自己的单板基本一致。
“黑”调的工程步骤:
烧 ROM Build 最简 IMAGE 最小系统OK? NO ye s Modify BSP START “黑”调 Build BSPlib download Bsp 其他部分 ok NO Build ram 类型 image YES 增加 bsp 其他部分 Build image 验证其他部分 BSP完成