(计算机应用技术专业论文)嵌入式板级支持包研究与实现.pdf_第1页
(计算机应用技术专业论文)嵌入式板级支持包研究与实现.pdf_第2页
(计算机应用技术专业论文)嵌入式板级支持包研究与实现.pdf_第3页
(计算机应用技术专业论文)嵌入式板级支持包研究与实现.pdf_第4页
(计算机应用技术专业论文)嵌入式板级支持包研究与实现.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

(计算机应用技术专业论文)嵌入式板级支持包研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4 摘 要 目前,基于arm体系结构的嵌入式系统应用日趋广泛,建立嵌入式系统软件是 应用开发的关键环节,嵌入式系统软件架构一般由板级支持包、嵌入式操作系统和 应用软件三部分组成。其中板级支持包(board support package,简称bsp),是嵌入 式系统中介于硬件平台和操作系统之间的中间层软件,主要目的是屏蔽底层硬件的 多样性,向操作系统提供底层硬件信息并最终启动系统。 通过对嵌入式bsp功能特点和启动过程的分析,归纳出bsp的共性,设计一种基 于arm体系结构的bsp解决方案, 该方案从功能上将bsp分为必需和可选两部分, 集 成微内核操作系统ucosii,支持良好的可扩展性和移植性。 bsp的必需功能主要完成一系列初始化工作(包括片级初始化、软件环境初始化 和板级初始化) ,将系统带到一个合适的状态,最终加载并启动嵌入式操作系统。其 中片级初始化包括cpu主频的设置等;软件环境初始化涉及堆栈、应用程序执行环 境、地址重映射、内存管理和异常处理等;板级初始化涉及定时器、内存控制器、 通用输入输出端口和串口等。 bsp的可选功能主要包括:相关设备驱动介绍,如:usb、flash和lcd等;设 计简单的通讯协议,在ucosii的通信机制和多任务支持下,利用环形缓冲区技术和状 态机原理,完成目标板和宿主机高效、稳定的通讯,实现系统的固化、集成测试与 调试。 关键词: 板级支持包,嵌入式系统,移植 5 abstract at present, the application of embedded system based on arm architecture is being widely used. the setup of embedded system software is the key part of application development. embedded system software architecture is consisted of board support package, which is short for bsp, embedded operating system and application software. as a hardware platform of operating system and application, bsp masks the diversity of the hardware, and provides the basic hardware information for the embedded operating system, and boots the kernel finally. this article concludes the commonness of bsp s function while running by analyzing the characteristic and boot process of embedded bsp and design a solution of bsp based on arm architecture, which is divided into needed and optional parts and integrates operating system ucosii. the bsp supports better expandability and portability. the needed part of bsp finishes the initialization of the hardware, and brings the system to a moderate state and finally boot the embedded system kernel, which includes the initialization of chip, software environment and board. the chip initialization includes the set of frequency of cpu etc. the software environment initialization involves heap and stack, application running environment, address remap, memory management, and exception handling etc. the board initialization involves timer, memory controller, gpio and serial port etc. the optional part of bsp mainly includes two aspects. one is the related device driver, such as usb, flash, and lcd etc. another is about communication, which designs a simple communication protocol and finishes stable and efficient communication between host and target and implements the system romability, integrated test and debug. key words: board support package, embedded system, portable 3 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在 文中以明确方式标明。本人完全意识到,本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。 本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密,在_年解密后适用本授权书。 不保密。 (请在以上方框内打“”) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 本论文属于 1 1 绪论 1.1 课题背景 随着信息化进程的推进,嵌入式系统以其软硬件的可剪裁性、体积的小型性、 技术的集成性等特点被广泛应用在信息终端、工业控制和信息家电等领域1,2。凭借 高性能和低功耗的优势,采用 arm 微处理器3的嵌入式系统遍及各类产品市场。几 乎世界上所有半导体厂商都生产基于 arm 体系结构的芯片,如 motorola,intel4, philips,samsung 等。目前,arm 处理器已广泛应用于无线产品、手持终端、导航 定位系统和智能卡等,围绕着它的一些应用已成为研究的热门方向5。 在嵌入式产品中,微处理器性能的提升和软件上操作系统的支持,使得整个嵌 入式系统拥有了完整的架构。从软件的角度看,一个典型嵌入式系统的软件架构6 通常可以分为板级支持包(board support package,简称bsp)7、嵌入式操作系统 和应用软件。其中bsp是嵌入式系统中介于硬件平台和操作系统之间的中间层软件, 一方面屏蔽底层硬件,完成一系列的初始化工作,最终启动嵌入式操作系统;另一 方面为操作系统提供底层硬件驱动信息,实现对设备的良好管理。考虑到开发成本 和生产效率的问题,大部分bsp都采用引导装载程序(bootloader)8,9,10,11 这一特殊 形式去实现。 然而,在系统研发和调试阶段,需要通过目标板与宿主机进行通讯,完成操作 系统映像、文件系统和应用软件的固化与升级;需要对大部分硬件设备进行检测; 需要接收用户的调试命令完成诸如硬件控制、内存查看等操作;需要在不同的硬件 平台上进行移植,平台移植就要考虑各种处理器以及其外围硬件设备的特性12,13,14。 所有这些都离不开一款功能强大的 bsp 的支持。 鉴于 arm 应用的广泛性、系统研发调试阶段的复杂功能需求和对移植性的考 虑, 设计一款基于 arm 体系结构的支持良好移植性和可扩展性的 bsp, 可为后续开 发搭建起舒适的调试环境,将大大缩短整个系统的研发周期。本文将针对 arm 体系 结构,设计一款功能强大、界面友好、支持良好移植性和可扩展性的 bsp。 2 1.2 国内外概况 1.2.1 嵌入式系统概况 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用 于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它 一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等几 个部分组成,用于实现对其他设备的控制、监视或管理等功能。与传统的通用计算 机、数字产品相比,嵌入式系统产品有其自身的特点15,16 : 1 由于嵌入式系统采用的是微处理器,独立的操作系统,实现相对单一的功能, 所以往往不需要大量的外围器件,因而在体积上,功耗上有其自身的优势。 2嵌入式系统由于空间和各种资源相对不足,硬件和软件都必须高效率设计, 力争在同样的硅片面积上实现更高的性能。 3嵌入式系统为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固 化在非易失性存储器芯片或单片机本身中,而不是存贮于磁盘载体中。 4为适应嵌入式分布处理结构和应用上网需求,嵌入式系统要求配备一种或多 种标准的网络通信接口。 以信息家电为代表的互联网时代的嵌入式产品,不仅为嵌入式市场展现了美好 前景,注入了新的生命,同时也对嵌入式系统技术,特别是软件技术提出新的挑战。 主要包括:支持日趋增长的功能密度、灵活的网络连接、轻便的移动应用和多媒体 信息处理,此外,还需对付更加激烈的市场竞争。在市场和技术进步的双重推动下, 嵌入式系统技术未来的发展,将呈现出以下几点趋势: 1功能复杂度日益增大, 随着客户需求的不断改进,嵌入式电子设备的功能不 再单一,电气结构也更为复杂。为了满足应用功能的升级,一方面采用更强大的嵌 入式处理器如 32 位、64 位 risc 芯片17,18或数字信号处理器 dsp19增强处理能力; 同时还采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用 程序设计、保障软件质量和缩短开发周期。 2网络连接成为必然趋势,为适应嵌入式分布处理结构和应用上网需求,嵌入 式系统要求配备标准的一种或多种网络通信接口。针对 internet 联网要求,嵌入 设备必须配有通信接口,并提供 tcp/ip 协议栈支持;由于家用电器相互关联(如防 盗报警、灯光能源控制、影视设备和信息终端交换信息)及实验现场仪器的协调工 3 作等要求,新一代嵌入式设备还需具备 ieee1394、usb、can、bluetooth 或 irda 通信接口,同时也需要提供相应的通信组网协议和物理层驱动软件。 3小尺寸、微功耗和低成本,越来越多的嵌入式产品在外观尺寸、电能消耗及 生产制造成本上提出了苛刻的要求20。为满足这种特性,要求嵌入式产品设计者相 应降低处理器的功耗,限制内存容量和复用芯片接口。这就相应提高了对嵌入式软 件设计的技术要求,要求设计者选用最佳的编程模型、不断改进算法和优化编译器 的性能。 4系统开发需要强大的开发工具和操作系统的支持,嵌入式开发是一项系统工 程,因此要求嵌入式系统厂商不仅提供嵌入式软硬件系统本身,同时还应提供强大 的硬件开发环境和软件开发包支持。目前很多厂商已经充分考虑到这一点,在主推 芯片的同时,将开发环境也作为重点推广。比如三星在推广 arm7、arm9 芯片的 同时还提供开发板和 bsp, 而 windows ce 也支持 embedded vc+作为开发工具21, 还有 vxworks 的 tornado 开发环境22等。 1.2.2 板级支持包 bsp 是相对于操作系统而言的,不同的操作系统对应于不同定义形式的 bsp, 包括 windows ce、linux、vxworks 等。cpu 厂商应向其芯片用户提供一个基本的 bsp 包,以支持主板厂商或整机制造厂商在此基础上定制或开发各种商用终端产品。 下面选取比较有代表性的几个公司提供的 bsp 进行介绍: 1. samsung 公司提供的 bsp vivi23,24是由 mizi 公司为 samsung 公司基于 arm 处理器系列量身定制的一 款 bsp,它的运行分 stage1 和 stage2 两个阶段,主要功能分别如下: stage1 功能: 1)复位,进行 cpu 芯片初始化,串口初始化(供调试) ; 2)提供唤醒功能; 3)复制 vivi映象自身,设置堆栈,并跳转到 stage2。 stage2 功能: 4)板级初始化、内存映射初始化、内存管理初始化、堆初始化、mtd 设备 初始化; 5)设置启动参数和内置命令; 4 6)把内核(kernel)从 flash 复制到 ram,启动内核 ; 7)下载程序并写入 flash(一般通过串口或者网口); 8)检测目标板。 该 bsp 实现了系统的初始化和配置工作, 使开发板的硬件在操作系统运行前 处于正确的状态,并内置各种命令接口。 2. wind river 公司提供的 bsp 在众多的商用嵌入式实时操作系统中,vxworks 是使用极为广泛的一种操作系 统,它实时性强,占用空间小,提供丰富的网络协议,有众多的调试手段。其 bsp 是为 vxworks 服务的,对各种板子的硬件功能提供了统一的软件接口,包括硬件初 始化、中断的产生和处理、硬件时钟和计时器管理、总线内存地址映射、内存分配 等。 wind river 公司的 bsp25,26按功能分为两大部份:目标系统的系统引导部分和 设备驱动部分: 1) 目标系统的系统引导部分: 主要是目标系统启动时的硬件初始化, 在目标系 统上电后开始执行,主要是配置处理器的工作状态,初始化系统的内存等,这部分 的程序一般只在系统引导时执行,为操作系统运行提供硬件环境。 2) 目标系统的设备驱动程序: 主要是驱动目标系统配置的各种设备, 包括字符 型设备、块存储设备、网络设备等,这些设备驱动程序完成对硬件的配置,操作系 统通过设备驱动程序来访问硬件,从而完成读取数据和外界的交互等。 该 bsp 可以作为操作系统和驱动程序的开发支持库,除了对硬件的描述性操作 和初始化外,还包含了中断管理部分以及一些简单的驱动程序单元,这样,当底层 硬件变动或更新时,只须对 bsp 中的设备驱动程序库做简单的改动即可。 3. microsoft 提供的 bsp wince bsp27的基本结构如图 1.1 5 板级支持包 硬件平台 oem适配层 设备驱动 配置文件bootloader 图 1.1 wince bsp 的基本结构 microsoft 提供的 bsp 是为其嵌入式操作系统 windows ce 服务,该 bsp 通常由 bootloader,oem 适配层,设备驱动和配置文件构成。 1) bootloader 主要完成初始化硬件,加载操作系统映象到内存,然后跳转到操 作系统代码去执行。 wince 提供通过以太网从工作站下载操作系统映象到目标板, 然 后把映象放到内存执行,该 bootloader 称为 eboot(ethernet boot) 。 2) oem 适配层简称 oal,负责 windows ce 操作系统与硬件之间的通信,它在 wince 启动后,负责硬件平台初始化、中断服务例程,实时钟,计时器、内核调试、 开关中断和内核性能监测等。 3) 设备驱动提供了一套对于开发板上外设的访问和测试接口,保证了 wince 操 作系统发挥其最大效能。 4) 配置文件,主要是包含一些配置信息文本文件,通常与操作系统映象和原代码 有关,如 bib、db、reg 和 dat 四类平台初始化文件和 sources、dirs 及 cec 文 件。 从以上三个 bsp 的介绍可以看出,bsp 是介于操作系统和硬件之间的一层软件 系统。 1. 与特定的嵌入式操作系统有关。因为不同的嵌入式操作系统与硬件的接口对 象是不同的。如 vxworks 与 wince 的 bsp,而 vivi 就无此要求。因为大多数操作系 统都提供一套硬件驱动接口的实现机制,而开发一个通用的针对多个嵌入式操作系 统的驱动接口较难实现。 2. 与开发板硬件设备相关。由于硬件设备的差异性,大多数 cpu 厂商都无法提 6 供一个通用的、功能齐全的 bsp 来支持芯片用户的后续开发。他们提供的 bsp 仅在 自己提供的标准板上运行良好,想要在其它采用相同类型 cpu 的目标板上运行都比 较困难,对目标板硬件的操作和系统的调试都需要借助于额外的仿真器或调试器来 实现,可移植性和可扩展性都太差。 1.3 课题主要研究工作 综上所述,从功能上讲,一方面嵌入式系统中的 bsp28必须要完成系统上电后 的一系列软硬件初始化工作,加载并启动嵌入式操作系统29,30,31。另一方面,bsp 往往需要完成系统的固化,并提供一些简单的调试命令和硬件测试接口。 本课题将针对不同系列的 arm 体系结构,设计一种通用的 bsp 解决方案,主 要研究工作如下: 1. 分析bsp的功能特点和启动过程,归纳出bsp的共性,设计一种基于arm体 系结构的bsp解决方案, 通过集成微内核操作系统ucosii、 设计清晰的代码架构32等, 支持良好的可扩展性和移植性。 2根据不同的目标板,完成一系列初始化工作(包括片级初始化、软件环境初 始化和板级初始化) , 将系统带到一个合适的状态, 最终加载并启动嵌入式操作系统。 其中将涉及到一些关键技术,如:ucosii 的移植35,36、arm 异常处理机制的实现和 可移植性支持等。 3设计简单的通讯协议,在ucosii的通信机制和多任务支持下,完成目标板和 宿主机高效、稳定的通讯,完成嵌入式操作系统核心映像、文件系统和应用软件的 固化与升级,并支持一些简单的调试命令和界面友好的集成测试接口。 7 2 bsp 开发技术研究 bsp 使通用的嵌入式操作系统及高层的嵌入式应用能够有效地运行于特定的、 与 具体应用相关的硬件环境之上;在 bsp 开发调试阶段,能够控制和测试具体的硬件 设备,完成特定的功能。因此,在绝大多数的嵌入式系统中,bsp 是一个必不可少 的层次。 2.1 bsp 特点分析 下面从三个方面对 bsp 特点进行详细的分析。 1. 功能分析 一个完整的 bsp 在功能上包含两部分:系统初始化以引导操作系统及设备管理。 系统初始化流程如图 2.1 所示: 上电复位 片级初始化 系统级初始化 板级初始化 操作系统与bsp的接口 应用程序接口 应用程序 创建并启动任务 设置内存控制器, 中断控制器等 设置cpu工作模式 和控制寄存器 图 2.1 系统初始化流程 嵌入式系统的初始化过程是一个同时包括硬件初始化和软件 (主要是操作系统及 系统软件模块)初始化的过程;而操作系统启动以前的初始化操作是 bsp 的主要功 能之一。由于嵌入式系统不仅具有硬件环境的多样性,同时具有软件的可配置性, 8 因此,不同的嵌入式系统初始化所涉及的内容各不相同,复杂程度也不尽相同。但 是初始化过程总是可以抽象为三个主要层次,按照自底向上、从硬件到软件的次序 依次为:片级初始化、板级初始化和系统级初始化。 片级初始化:主要完成 cpu 的初始化,包括设置 cpu 的核心寄存器和控制寄存 器,cpu 核心工作模式以及 cpu 的局部总线模式等。片级初始化把 cpu 从上电时 的缺省状态逐步设置成为系统所要求的工作状态。这是一个纯硬件的初始化过程。 板级初始化:完成 cpu 以外的其他硬件设备的初始化。除此之外,还要设置某 些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软 件环境。 系统级初始化:这是一个以软件初始化为主的过程,主要进行操作系统初始化。 bsp 将控制转交给操作系统,由操作系统进行余下的初始化操作。包括加载和初始 化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块, 比如网络系统、文件系统等;最后,操作系统创建应用程序环境并将控制转交给应 用程序的入口。 需要指出:系统级初始化不是 bsp 的工作。但是,系统级初始化成功与否的关 键在于 bsp 的前两个初始化过程中所进行的软件和硬件的正确设置,而且系统级初 始化也是由 bsp 发起的。因此,设计 bsp 中初始化功能的重点主要集中在前两个环 节。 bsp 另一个主要功能就是提供标准的设备驱动接口,实现设备管理的功能,更 好的支持开发调试阶段的测试与调试。但是,因为操作系统内核都具有自己的一套 设备驱动实现机制, 像 linux、 wince 等, 考虑到硬件设备的差异性, 本文提出的 bsp 解决方案中的设备驱动层主要完成设备初始化,方便硬件设备的测试和开发调试阶 段的通讯需求;设计并提供驱动程序的标准接口,仅仅在 bsp 中使用,并不与操作 系统内核的标准驱动接口关联。 2. 结构分析 一般嵌入式软件开发的典型层次结构如图 2.2 所示: 应用程序 嵌入式操作系统 bsp 硬件平台 图 2.2 嵌入式系统层次 9 1)硬件平台:是整个嵌入式操作系统应用程序运行的硬件平台;不同的应用通 常有不同的硬件环境;硬件平台的多样性是嵌入式系统的一个主要特点。 2)嵌入式操作系统:完成嵌入式应用的任务调度和控制等核心功能,具有内核 精简、可配置、与高层应用紧密关联等特点。嵌入式操作系统具有相对不变性。 3)嵌入式应用程序:运行于操作系统之上,利用操作系统提供的机制完成特定 功能的嵌入式应用。 bsp 的启动初始化功能为操作系统的启动和运行提供了必要的软硬件环境。 启动 和初始化过程中,对硬件平台的直接访问包括对 cpu 内核寄存器的初始化设置,以 及端口寄存器的设置。通过启动初始化过程,为整个嵌入式操作系统内核的运行提 供了必要的运行环境与基础,隔离了不同硬件平台上嵌入式微处理器总线结构、存 储系统结构的差异。 因此,bsp 在整个嵌入式开发中所处的地位十分重要。 3. 可移植性分析 bsp 是用于初始化目标板硬件,给嵌入式操作系统提供板上硬件资源信息,并进 一步装载、引导嵌入式操作系统运行的固件。在嵌入式系统开发过程中,很多情况 都会涉及 bsp 的移植问题,即使在有些已有 bsp 的标准开发板上也存在这种可能。 概括来说,如下情况会考虑进行 bsp 的移植工作。 1) 在自主设计的目标板上,用于引导嵌入式操作系统及其应用。 2) 在厂家未提供 bsp 源码的标准板上,遇有如下情形之一:a在实际应用中需 要添加或修改一些功能;b为给自行设计目标板,移植 bsp 提供参考,先在标准板 上进行移植以积累经验。 另外,从嵌入式系统实际开发角度讲,嵌入式操作系统的引导、配置甚至应用程 序的运行状况都和 bsp 有一定的关联,可以说,掌握 bsp 移植是顺利进行嵌入式系 统开发的重要利器。bsp 与底层硬件关系紧密,因此每个不同配置的目标板基本都 有不同的 bsp。虽然,自行编写 bsp 未尝不可,但从资源利用和实际项目开发考虑, 通过移植已有的 bsp 源码来解决这一问题更符合软件工程的设计思想和实际项目的 开发需求。 因此,设计一套具有良好移植性的 bsp 尤为重要。 2.2 bsp 启动过程分析 1. 引导介质 10 针对具体目标板的不同, 使用的引导介质也有所差异, 一般 bsp 会从 flash 启动。 而 flash 多采用 nand flash 或者 nor flash。 nor flash 支持就地执行 (xip: execute in place) , 但运行速度 (相对于内存 sdram) 相对较慢, 而 nand flash 不支持 xip, 必须将映象搬移到 sdram 中运行。实际开发中,考虑到成本的需求,使用 nand flash 是个不错的选择。 所以为了提高运行效率,被固化在 flash 中的 bsp 映象,最终都会在 sdram 中 运行。那么一开始运行的代码我们称作启动代码(boot code) ,后来运行在 sdram 中的代码我们称为主代码(main code) 。当使用 nor flash 引导时,启动代码首先在 flash 中执行,当运行到某一时刻(即后面介绍的“搬移”完成后) ,跳转到 sdram 中运行主代码;而当使用 nand flash 引导时,例如:samsung 的 s3c 系列处理器 在上电复位后会自动将 flash 中的前 4k 代码拷贝到一个被称为“steppingstone” 的 sram 中,steppingstone 被映射到地址 0,所以 bsp 映象的启动代码部分运行一开 始就在 ram 中运行, 较使用 nor flash 启动速度有所提升, 同样当运行到某一时刻, 再跳转到 sdram 中运行主代码。 2. 运行阶段 bsp 的运行阶段一般分两个阶段,最终运行在第二阶段。其中阶段 1 它主要进行 与 cpu 核以及存储设备密切相关的处理工作,进行一些必要的初始化工作,是一些 依赖于 cpu 体系结构的代码;阶段 2 主要完成板级资源初始化,引导操作系统内核 或初始化命令控制台、图形化菜单等待交互,方便目标板与宿主机通讯。 基于编程语言的角度考虑:阶段 1 可成为汇编阶段,阶段 2 可成为 c 语言阶段; 因为涉及到协处理器的设置、中断使能及堆栈地址的设定,为了提高运行效率(如: nand flash 的快速读写操作)等,阶段 1 只能用汇编编写,但考虑到移植性,又尽 量少用汇编实现;由于和底层硬件关系紧密的初始化已经完成,考虑到 c 语言的灵 活性、易读性与高效性,阶段 2 一般使用 c 语言实现,在高级语言中,c 目标代码 的执行效率很高,非常适合在嵌入式产品开发中使用。 另外,考虑到移植性的问题,若对于相同的 cpu 以及存储设备,要增加外设支 持,阶段 1 的代码可以维护不变,只对阶段 2 的代码进行修改即可;若要支持不同 的 cpu,板级设备基本不变的情况下,则基础代码只需在阶段 1 中修改即可。这样 可大大加快研发进度,在一定程度上提高了整个产品线的生产效率。 3. 运行模式 对于最终用户来说,只需要 bsp 的引导模式,即正常引导操作系统运行,但研 11 发人员则需要使用下载模式,因为无论在开发调试阶段还是后期维护阶段,他们都 随时都有可能进行一些镜像的更新工作,硬件的检测和调试等。为了在两者之间做 到兼顾,一般的 bsp 既支持引导模式,也支持下载模式。 具体实现方法示例:在 bsp 做完一些硬件初始化工作后,而在加载内核镜像之 前,先在一定的时间内等待用户有没有键盘输入,如果没有,则为引导模式,直接 加载内核镜像,引导操作系统内核运行;如果有,则进入字符菜单或图形菜单界面, 这时研发人员就可以根据自己的需要以及 bsp 的支持情况,做一些其他的工作。模 式的转换设计工作主要在阶段 2 中实现。 4. 内存地址规划 操作系统内核对内存的使用有严格的限制、精细的规划,各个模块使用的内存 相对较少。而 bsp 则无此限制,它可以访问 sdram 的全部地址空间。通过内存地 址规划来实现内存的简单保护和共享访问,避免发生内存泄漏、越界等无法预知的 异常。 一般将 bsp 映象放置在可使用 sdram 的顶端,向下依次为: mmu_table: 此段存放 mmu 的一级映射表, 此基地址要以 16k 为边界对齐。 stack:此段是栈空间的分配。它完成 arm 下各个模式栈空间的分配和 ads 库函数等栈空间的分配。其中 ads_stack 在初始化时以参数的形式指定。 heap:堆空间的分配,即动态内存的分配。此段空间的分配主要是为 ads 库 函数等堆空间和操作系统中动态内存分配函数的使用而分配。其中操作系统堆主要 用来分配缓冲区和指针的准确无误的使用。ads_heap 在初始化时以参数的形式指 定。 其中 ads 是 arm 系列嵌入式开发常用的集成开发环境,它提供一系列库函数。 frame_buffer:一般用来存放 bsp 的登录画面(logo),因为正常启动时加载 内核需要几秒钟的时间,此处使用 logo 可以给用户一种美好的体验。 boot_param:存放一些启动参数,主要是内核启动所需。 download:此处是下载更新 bsp 和嵌入式操作系统内核等使用的缓冲区,大 小一般为 1m。 另外,划分出可配置部分供不同的板级设备资源移植时选用。需要特别注意的 是,当内核加载完成,启动时一定要对内存重新进行初始化。 图 2.3 为运行时 bsp 的内存规划示意图,图中的内存地址自顶向下递减。其中 包括 stack 和 heap 的布局示意图。 12 bsp映象(256k) mmu_table(16k) stack(64k) heap(1m) frame_buffer boot_param (可配置) download (可配置) int_vector ads_lib_stack fiq_stack irq_stack abort_stack undef_stack swi_stack svc_stack ads_heap os_heap 内存地址递减 图2.3 bsp内存规划 2.3 bsp 共性总结 通过以上两小节对 bsp 特点和启动过程的分析,下面归纳出 bsp 运行环境及功 能上的一些共性,按照必需和可选区分。 必需功能如下: 1完成软硬件初始化; 2引导操作系统内核。 可选功能如下: 3支持嵌入式操作系统映像、文件系统和应用软件的固化与升级; 4提供简单调试接口,如:调试命令; 5提供标准设备驱动接口,如:flash 操作命令; 6提供良好的测试接口,以简单图形菜单或者字符菜单的形式呈现给测试人员。 下面对必需功能中的软硬件初始化工作进行详细归纳:如表 2.4 所示: 13 表 2.4 软硬件初始化工作 功能 选项(可选或必需) 设置入口指针 必需 关中断 必需 时钟初始化 必需 内存控制器初始化 必需 串口初始化 必需 堆栈初始化 必需 映像搬移,地址重映射 必需 中断向量表的拷贝 必需 通用输入输出端口初始化 必需 mmu 初始化 可选 中断初始化 可选 定时器初始化 可选 通信设备初始化(usb、网卡) 可选 创建内核参数列表 可选 设置入口指针:启动程序首先必须定义指针,而且整个应用程序只有一个入口指 针。一般地,程序在编译链接时将异常中断向量表链接在 0 地址处,并且作为整个 程序的入口点。 时钟初始化:除了 cpu 时钟之外,根据实际需要进行不同设备时钟的初始化。 串口初始化:应该要初始化以及使能至少一个串口,通过它与控制台进行一些调 试工作,例如:与宿主机应用软件通讯。 堆栈初始化:bsp 跳转到 c 部分之前,为了函数的正确调用和 ads 库的正常使 用,一定要初始化堆栈。 映像搬移,地址重映射:因为在 flash 中执行代码,效率太低,所以要进行搬移; 搬移之后要进行适当的调整,进行地址重映射,不能打断程序的执行。 中断向量表的拷贝:因为产生中断时,arm 处理器默认到 flash 的 0 地址去执 行,所以要将中断向量表拷贝到 0 地址,flash 的启动部分也要映射到 0 地址。 mmu 初始化:arm9 以后支持 mmu,可以进行地址的重映射。其中因为内核 映像数据必须真实写回 sdram 中,所以数据 cache 必须关闭。 中断初始化:正常引导一开始就要关中断,当需要进入下载模式操作时,打开相 应的中断,进行必要的通信设备初始化等等。 14 2.4 本章小结 本章通过对嵌入式 bsp 功能特点和启动过程的分析,归纳出 bsp 在运行环境和 功能上的共性, 从功能上将 bsp 分为必需和可选部分,为 bsp 的总体设计提供了充分 可靠的依据。 15 3 基于 arm 的 bsp 总体设计 目前,采用 risc 架构的 arm 微处理器大量涌现,就实际嵌入式系统开发而 言,设计一款功能强大、移植性和扩展性良好的 bsp 非常重要,本章将主要阐述基 于 arm 体系结构的 bsp 总体设计思想,然后详细介绍系统结构设计。 3.1 arm 及 ucosii 简介 3.1.1 arm 体系结构 嵌入式系统的核心部件是各种类型的嵌入式处理器。目前,据不完全统计,全 世界嵌入式处理器的品种总量已超过 1000 多种,流行体系结构有 30 多个系列。嵌 入式微处理器目前主要有 am186/88、386ex、sc- 400、powerpc、mips、arm 系 列等。其中 arm 微处理器36,37应用特别广泛。 arm 处理器共有 37 个寄存器,被分为若干个组,其中包括 31 个通用寄存器 和 6 个状态寄存器,用以标识 cpu 的工作状态及程序的运行状态,均为 32 位, 目前只使用了其中的一部分。同时,arm 处理器又有 7 种不同的处理器模式,分 别是:特权模式、用户模式、外部中断模式、快速中断模式、取指令中止模式、数 据中止模式和未定义模式。在每一种处理器模式下均有一组相应的寄存器与之对应。 即在任意一种处理器模式下,可访问的寄存器包括 15 个通用寄存器(r0r14) 、 一至二个状态寄存器和程序计数器。在所有的寄存器中,有些是在 7 种处理器模式 下共用的同一个物理寄存器,而有些寄存器则是在不同的处理器模式下有不同的物 理寄存器。 arm 微处理器在较新的体系结构中支持两种指令集38: arm 指令集和 thumb 指令集。其中,arm 指令为 32 位长度,thumb 指令为 16 位长度。thumb 指令 集为 arm 指令集的功能子集,但与等价的 arm 代码相比较,可节省 30%40% 以上的存储空间,同时具备 32 位代码的所有优点。 因此,采用 risc 架构39的 arm 微处理器一般具有如下特点: 1、体积小、低功耗、低成本、高性能; 2、支持 thumb/arm 双指令集,能很好的兼容 8 位/16 位器件; 3、大量使用寄存器,指令执行速度更快; 4、大多数数据操作都在寄存器中完成; 16 5、寻址方式灵活简单,执行效率高; 6、指令长度固定。 目前,arm 处理器共有 5 个产品系列:arm7、arm9、arm9e、 arm10e 和 securcore。其中,arm7、arm9、arm9e 和 arm10 为 4 个通用处理器系列, 每一个系列提供一套相对独特的性能来满足不同应用领域的需求。 securcore 系列专 门为安全要求较高的应用而设计40。另外,arm 公司将其技术授权给世界范围的半 导体和系统公司, 由这些厂商实现的基于arm核的嵌入式系统芯片有: intel的xscale 系列和 strongarm 系列、 atmel 的 at91 系列、 cirrus logic 的 ep7 系列和 ep9 系列、 netsilicon 的 net 系列、samsung 的 s3c 系列、triscend 的 a7 可配置片上系统 (configurable system- on- chip,简称 csoc)等。 可见,作为微控制器或片上系统,各种基于 arm 核的芯片大量涌现,并已广泛 应用于嵌入式系统。 3.1.2 ucosii 操作系统 在嵌入式系统应用中,微内核操作系统 ucosii 凭借其良好的移植性、可裁减性、 提供任务栈、系统服务以及中断管理等功能,被广泛应用。下面对其特点分别作简 要介绍: 1. 可移植性 大部分 ucosii 的源码是用移植性很强的 ansi c 写的。 和微处理器硬件相关的那 部分是用汇编语言写的。汇编语言写的部分已经压到最低限度,使得 ucosii 便于移 植到其他微处理器上。条件是:该微处理器有堆栈指针,由 cpu 内部寄存器入栈、 出栈指令;使用的 c 编译器必须支持内嵌汇编或者该 c 语言可扩展、可连接汇编模 块,使得关中断、开中断能在 c 语言程序中实现。ucosii 可以在绝大多数 8 位、16 位、32 位以至 64 位微处理器、微控制器、数字信号处理器上运行。 2.可固化 ucosii 是为嵌入式应用而设计的,这就意味着,只要读者有固化手段(c 编译、 连接、下载和固化) ,ucosii 可以嵌入到读者的产品中成为产品的一部分。 3.可裁剪 可以只使用 ucosii 中应用程序需要的那些系统服务。也就是说某产品可以只使 用很少几个 ucosii 调用,而另一个产品则使用了几乎所有 ucosii 的功能。这样可以 减少产品中 ucosii 所需的存储空间,这种可裁剪性是靠条件编译实现的。只要在用 17 户的应用程序中(用#define constants 语句)定义哪些 ucosii 中的功能是应用程序需 要的就可以了。程序和数据两部分的存储用量已被最大努力的压低。 4.占先式 ucosii 完全是占先式的实时内核。 这意味着 ucosii 总是运行就绪条件下优先级最 高的任务。大多数商业内核也是占先式的,ucosii 在性能上和它们类似。 5.多任务 ucosii 可以管理 64 个任务,然而,目前这一版本保留 8 个给系统。应用程序最 多可以有 56 个任务。赋予每个任务的优先级必须是不同的,这意味着 ucosii 不支持 时间片轮转调度法(round- robin scheduling) 。该调度法适用于调度优先级平等的任 务。 6.可确定性 全部ucosii的函数调用与服务的执行时间具有其可确定性。 也就是说, 全部ucosii 的函数调用与服务的执行时间是可知的。进而言之,ucosii 系统服务的执行时间不依 赖于应用程序任务的多少。 7.任务栈 每个任务有自己单独的栈,ucosii 允许每个任务有不同的栈空间。以便压低应用 程序对 ram 的需求。使用 ucosii 的栈空间校验函数,可以确定每个任务到底需要多 少栈空间。 8.系统服务 ucosii 提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存的 申请与释放、时间相关函数等。 9.中断管理 中断可以使正在执行的任务暂时挂起。如果优先级更高的任务被该中断唤醒, 则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达 255 层。 3.2 设计思想 考虑到 arm 系列处理器的多样性,硬件平台的差异性,对于 bsp 的总体设计, 主要基于以下几点: 1 通用性 从通用性的角度考虑,bsp 一定要功能全面、结构合理。bsp 功能全面,支持不 同系列的 arm 处理器,才能满足不同嵌入式应用的需求。因此,该 bsp 不仅要实 18 现软硬件的初始化,嵌入式操作系统引导,而且要支持嵌入式操作系统映像等的固 化与升级、提供硬件测试接口和板级调试命令等。结构合理,体现出清晰的层次感, 将底层的硬件平台屏蔽,尤其是和处理器相关的部分,设计标准的设备驱动接口, 这样在实际的实现过程中才能模块化,加速开发进度,降低后期维护费用。 2 可扩展性与可移植性 由于 arm 系列处理器种类繁多,对于不同的嵌入式应用往往采用性能不同的处 理器,即使对应于同一处理器,板级资源的差异也使得 bsp 严重依赖于硬件设备。 因此可扩展性和可移植性至关重要。 通过对 bsp 功能特点和启动过程的分析,将 bsp 分为必需与可选两部分,在实 际的嵌入式开发中,根据实际需要在可选部分增加或减少功能,实现功能的可配置。 除此之外,要设计一种可读性强、易于移植的代码架构,在代码书写过程中,尽 量模块化,尽量使用 c 语言,在和处理器相关的汇编语言部分采用宏,从而提高开 发或移植的效率,节省开发成本。而且可以提供特定处理器相关的基本代码,增强 可移植性。 3 集成微内核操作系统 考虑到功能上的扩展性, 采用多任务的概念, 例如: 将中断处理放到任务中执行, 可以减少中断响应时间,释放宝贵的 cpu 资源;将硬件测试或板级调试独立为一个 单独的任务。多个任务可以同时运行,那么多任务之间的通信必须在一定的系统服 务支持下才能进行,因此,在 bsp 中集成微内核操作系统,能实现对多任务的合理 调度,保证通信的质量。而且可以将 arm 的异常处理机制接管过来,方便设计一套 规范的中断管理方式,方便了设备注册中断、申请中断和进行中断处理等操作以及 使用中断方式工作的新设备的添加,同时大大增强了 bsp 的可扩展性和移植性。 在嵌入式系统应用中,微内核操作系统 ucosii 开放源代码、移植性良好、可裁减 性和微内核设计,而且在集成后不会使 bsp 体积明显增大;另外 ucosii 提供任务栈、 系统服务以及中断管理功能,可以保证开发板和宿主机通讯的可靠性和稳定性。同 时又增强了移植性,比如网络通讯协议:lwip 或 tftp 的移植等。集成 ucosii 可以 满足系统的需求。 19 3.3 系统结构设计 3.3.1 总体结构设计 按照各部分功能需求的不同,整个 bsp 系统结构如图 3.1 所示: 映像固化和升级调试硬件测试 通信机制多任务管理中断管理 设备驱动接口(如:open(), write(), read()等 ) 片级初始化板级初始化软件环境初始化引导层 设备驱动层 微内核操作系统层 通讯层 启动模式选择引导操作系统 引导 模式 下载 模式 图 3.1 bsp 系统结构 系统各层的功能描述如下: 1. 引导层 引导层主要完成目标板软硬件环境初始化工作,进入启动模式选择。其中初始 化工作通过完成片级初始化、板级初始化、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论