基于嵌入式linux的bsp概念与开发
嵌入式系统中BSP的作用及其相关联环节的分析
设 计 开发
嵌入式系统中 B S P的作用及其相关联环节的分析
朱本春 丁笑迎 赵 云
( 山东正晨科技股份有 限公 司 山东济南 2 5 0 1 0 1 )
摘 要: 随 着我 国科 学技术 的不断发展, 实时多任 务的嵌入 式操 作 系统( RT O S ) 逐渐 融入 了各种 包含 计算机 芯片 的产 品 当中, 为各个领域 的技 术应 用 提 供 了强有 力的科技 手段及 工具 。 而在嵌入 式 Y r .  ̄( R T OS ) 的设计 中舨 级 支持 软件 包B S P ( b o a r d s u p p o r t p a c k a g e )  ̄q - 关键 环节, 根据计 算机 系统 中软 硬 件环境 的不 同, 其 结构与所产 生 的功能也会发 生改 变。 本文就嵌入 式操作 系统 e e B S P 的作用 以及其相 关联 的环 节进 行 了详细的分析, 从 而为其 总结
出相 关 的合 理 化操 作 。 关键 词: 嵌入 式 系统 B S P 计 算机应 用 中 图分类 号: T P 2 0 2 文献 标识码 : A
文章 编号 : 1 0 0 7 . 9 4 l 6 ( 2 0 1 4 ) 0 7 . 0 1 6 5 — 0 1
近年来 , 随着我 国软件 操作 系统和集成电路制造技术 的不断发 s u p p o r t p a c k a g e ) 会出现包含B o o t l o a d e r 成型 的硬 件环境 , 以便 于 展, 使得在 电子通讯 、 国防军事、 工业 自动化生产等领域 由嵌入 式处 系统的第二次开发、 不包含B o o t l o a d e r , 但用系统处理器进行运行 的 理器 、 应用与控制软件( B s P 、 中间软件) 、 外围硬件设备 以及开 发调试 第一次开发 以及S OC ( S y s t e mO n C h i p ) 系统三种情形 。 从以上分类 平台等部分 组成 的实时多任务的嵌入式操作系统( R TO S ) 得到 了广 角度可 以看 出 , 板级支 持软件包B S P ( b o a r d s u p p o r t p a c k a g e ) 的 泛应用 。 而由于应用环境的复杂和硬件设备的差异使得实时多任务 构成结构和 内容在 面对系统所 出现不同情形时会出现很大差异 , 尤
ARM开发教程之ARM体系的嵌入式系统BSP的程序设计
ARM开发教程之ARM体系的嵌入式系统BSP的程序设计简介:ARM公司在32位RISC的CPU开发领域不断取得突破,其结构已经从V3发展到V6。
BSP(Board Support Package)板级支持包介于主板硬件和操作系统之间,其功能与PC 机上的BIOS相类似,主要完成硬件初始化并切换到相应的操作系统。
BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说,尽管实现的功能一样,可是写法和接口定义是完全不同的。
另外,仔细研究所用的芯片资料也十分重要,例如尽管ARM在内核上兼容,但每家芯片都有自己的特色。
所以这就要求BSP程序员对硬件、软件和操作系统都要有一定的了解。
本文介绍基于ARM体系的嵌入式应用系统初始化部分BSP的程序设计。
本文引用的源码全部是基于HMS320C7202芯片设计,并已成功运行。
1 ARM开发教程之初始化过程尽管各种嵌入式应用系统的结构及功能差别很大,但其系统初始化部分完成的操作有很大一部分是相似的。
嵌入式系统的启动流程如图1所示。
1.1 设置入口指针启动程序首先必须定义指针,而且整个应用程序只有一个入口指针。
一般地,程序在编译链接时将异常中断向量表链接在0地址处,并且作为整个程序入口点。
入口点代码如下:ENTRY(_start);开始1.2 ARM开发教程之设置异常中断向量表ARM要求中断向量表必须放置在从0开始、连续8×4字节的空间内。
各异常中断向量地址以及中断的算是优先级如表1:表1 各异常中断的中断向量地址以及中断的处理优先级中断向量地址异常中断类型异常中断模式优先级(6最低)0x0 复位特权模式(SVC)10x4 未定义中断未定义指令中止模式(Undef) 60x8 软件中断(SWI)特权模式(SVC)60x0c 指令预取中止中止模式50x10 数据访问中止中止模式20x14 保留未使用未使用0x18 外部中断请求(IRQ)外部中断(IRQ)模式40x1c 快速中断请求(FIQ)快速中断(FIQ)模式 3每当一个中断发生后,ARM处理器便强制把程序计数器(PC)指针置为向量表中对应中断类型的地址值。
BSP包经典论述
BSP包的概念BSP是Board Support Package的缩写,该术语通常用于嵌入式领域,主要指在开发嵌入式应用时系统开发商提供的各种驱动支持库。
不过该术语即使在嵌入式领域人们对它的理解也有一些不同,有的认为它就是驱动程序,有的认为它是OS的驱动程序,也有认为它就是HAL (HardWare Abstract Layer )。
实际上这几种理解都只是侧重于某个部分,再由于每个嵌入式系统提供商都根据自己的系统而提出对BSP的不同理解,因此在涉及到BSP的具体涵义时人们往往有一种似是而非的感觉。
嵌入式系统提供商的龙头老大:WindRiver公司对BSP 的理解偏向于是OS的驱动程序(注:从其BSP的文档中可以看出)因为嵌入式系统中的各种设备的确名目繁多,因此将BSP定位于OS的驱动的确有一定的道理。
对于认为BSP就是驱动程序的人来讲,估计他们通常是接触的嵌入式系统提供商提供的某种应用解决方案的应用系统(Total Solution)。
在这种开发系统中BSP完全有理由被认为是所有驱动程序,因为开发人员没有必要自己去开发驱动程序,而只是验证驱动程序在自己的系统中是否正确了事。
对于开发嵌入式OS的人来讲,似乎将BSP看成是对硬件平台的抽象层(HAL)和CPU的驱动程序更恰当。
因此各种理解都有一定的道理,但由于出发点不同,对BSP的理解都有失全面甚至有错误的地方.所有的人肯定对搭积木都有一定的了解,可以用各种简单的图形积木搭建成各种物体。
在程序设计的世界中人们一直希望能够利用一些可重复使用的基本程序单元来构建自己的程序或者系统。
在这方面已经有了一些比较成功的案例:各种标准共享库、标准程序组件等的广泛使用。
但是这些成功的案例都有一个共同的特点:都是不基于任何硬件平台的程序。
当开发某个平台的、与硬件相关的程序时,往往不得不从设置某个寄存器的某个位开始编程。
在嵌入式领域,这种情况更为明显。
在嵌入式领域中,几乎所有的设备控制和各种协议控制都在同一个嵌入式CPU当中,非常有利于对CPU Core和设备进行抽象。
嵌入式软件工程师(BSP)职位描述与岗位职责
嵌入式软件工程师(BSP)职位描述与岗位职责嵌入式软件工程师(BSP)是一种专业技术人员,主要负责嵌入式系统开发中BSP(板级支持软件)部分的设计、实现与维护。
具体职责如下:1. 负责嵌入式系统中BSP的设计、开发与调试。
根据客户需求及整体设计方案,编写BSP部分的驱动程序、底层操作系统、硬件抽象层等,并独立完成整个开发流程。
2. 针对开发中出现的各种问题进行分析和解决。
分析BSP部分的代码实现,处理由于驱动不兼容、系统故障、硬件问题等产生的质量问题,并进行优化改进。
3. 编写BSP部分的技术文档。
详细记录BSP部分的架构设计、接口定义、代码实现过程、出现问题及解决方案等技术文档,并保证文档及时更新。
4. 与硬件工程师、系统工程师等协同开发。
深入了解硬件平台上的特点,并与硬件工程师、系统工程师等密切协作,沟通合作,使嵌入式系统的整体开发过程高效地完成。
5. 研究新技术、新硬件等的应用。
了解新技术、新硬件的性能、优势、适用范围等,研究如何将其应用到嵌入式系统中,并提供技术支持和解决方案。
任职资格:1. 计算机、电子等相关专业的本科及以上学历。
2. 熟练掌握C、C++等编程语言,有C语言编程能力。
3. 熟悉Linux、RTOS等操作系统、熟练驾驭ARM、PowerPC、MIPS等嵌入式芯片的架构。
4. 熟悉底层驱动程序开发,具备掌握中断、DMA、定时器等硬件资源管理的基本技能。
5. 具备扎实的数据结构与算法基础,熟悉常用工具链、调试器、仿真器等开发工具。
6. 具备团队合作精神、良好的沟通协调能力,能够承受工作压力,能独立思考和解决问题,具备较强的自我学习和技术研究能力。
以上是嵌入式软件工程师(BSP)的职位描述和岗位职责。
这项工作的主要任务是负责嵌入式系统中BSP的设计、实现和维护,需要具备扎实的编程基础、操作系统知识和团队协作能力。
bsp是什么
bsp是什么一、BSP是什么板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。
在嵌入式系统软件的组成中,就有BSP。
BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP 的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改)。
这样才能与上层OS保持正确的接口,良好的支持上层OS。
纯粹的BSP所包含的内容一般说来是和系统有关的驱动和程序,如网络驱动和系统中网络协议有关,串口驱动和系统下载调试有关等等。
离开这些驱动系统就不能正常工作。
二、BSP的主要功能BSP主要功能为屏蔽硬件,提供操作系统及硬件驱动,具体功能包括:1. 单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持2. 为操作系统提供设备驱动程序和系统中断服务程序3. 定制操作系统的功能,为软件系统提供一个实时多任务的运行环境4. 初始化操作系统,为操作系统的正常运行做好准备。
三、BSP的作用建立让操作系统运行的基本环境1、初始化CPU内部寄存器2、设定RAM工作时序3、时钟驱动及中断控制器驱动4、串口驱动完善操作系统运行的环境1、完善高速缓存和内存管理单元的驱动2、指定程序起始运行位置3、完善中断管理4、完善系统总线驱动四、BSP在应用中的的区别BSP在嵌入式系统和Windows系统中的不同其实运行与PC机上的windows或linux系统也是有BSP的。
只是PC机均采用统一的X86体系架构,这样一定操作系统(windows,linux.。
)的BSP相对x86架构是单一确定的,不需要做任何修改就可以很容易支持OS在x86上正常运行,所以在PC机上谈论BSP这个概念也没什么意义了。
板级支持包(BSP)[转载]
板级⽀持包(BSP)[转载]板级⽀持包(BSP)[转载]2008-09-03 20:45BSP是板级⽀持包(Board Support Package)的缩写,是通常⽤在嵌⼊⾏业中的⼀个术语,⽤来代表在⼀个特殊硬件平台上快速构建⼀个嵌⼊操作系统所需的原始资料或者⼆进制软件包。
BSP的作⽤是⽀持操作系统,使之能够更好的运⾏于硬件平台。
BSP是相对于操作系统⽽⾔的,不同的操作系统对应于不同定义形式的BSP,包括Windows CE、Linux、Vxworks 等。
SoC/CPU⼚商应向其芯⽚的⽤户提供⼀个基本的BSP包,以⽀持主板⼚商或整机制造⼚商在此基础上定制和开发各种商⽤终端产品。
在嵌⼊式系统学习过程中设计到了Bootloader,下⾯讲述了Bootloader的基本作⽤,在后续的⽂章中我将对如何编写⾃⼰的Bootloader进⾏介绍。
1. Bootloader的基本概念:简单地说,bootloader就是在操作系统内核运⾏前运⾏地⼀段⼩程序。
通过这段⼩程序,可以对硬件设备,如CPU、SDRAM、Flash、串⼝等进⾏初始化,也可以下载⽂件到系统板、对Flash进⾏擦除和编程,真正起到引导和加载内核镜像的作⽤,但是随着嵌⼊式系统的发展,bootloader已经逐渐在基本功能的基础上,进⾏了扩展,bootloader可以更多地增加对具体系统的板级⽀持,即增加⼀些硬件模块功能上的使⽤⽀持,以⽅便开发⼈员进⾏开发和调试。
从这个层⾯上看,功能扩展后bootloader可以虚拟地看成是⼀个微⼩的系统级的代码包。
bootloader是依赖于硬件⽽实现的,特别是在嵌⼊式系统中。
不同的体系结构需求的bootloader是不同的;除了体系结构,bootloader还依赖于具体的嵌⼊式板级设备的配置。
也就是说,对于两块不同的嵌⼊式板⽽⾔,即使它们基于相同的CPU构建,运⾏在其中⼀块电路板上的bootloader,未必能够运⾏在另⼀块电路开发板上。
BSP及开发
BSP及开发一、概述1.BSP的概念实行BSP研究的前提是,在企业内有改善计算机信息系统的要求,并且有为建设这一系统而建立总的战略的需要。
因而,BSP的基本概念与组织内的信息系统的长期目标有关。
(1)一个信息系统必须支持企业的战略目标(2)一个信息系统的战略应当表达出企业的各个管理层次的需求(3)一个信息系统应该向整个企业提供一致的信息(4)一个信息系统应该适应组织机构和管理体制的改变(5)一个信息系统的战略规划,应当由总体信息系统结构中的子系统开始实现2.BSP的目标BSP的主要目标是提供一个信息系统规划,用以支持企业短期的和长期的信息需要。
其具体目标可归纳如下:(1)为管理者提供一种形式化的、客观的方法,明确建立信息系统的优先顺序,而不考虑部门的狭隘利益,并避免主观性。
(2)为具有较长生命周期系统的建设,保护系统的投资做准备。
由于系统是基于业务活动过程的,所以不因机构变化而失效。
(3)为了以最高效率支持企业目标,BSP提供数据处理和资源的管理。
(4)增加负责人的信心,坚信收效高的主要的信息系统能够实施。
(5)提供响应用户需求优先的系统,以改善信息系统管理部门和用户之间的关系。
将数据作为一种企业资源加以确定。
为使每个用户更有效地使用这些数据,要对这些数据进行统一规划、管理和控制。
二、概述BSP方法的研究步骤1.研究项目的确立BSP的经验说明,除非得到了最高领导者和某些最高管理部门参与研究的承诺,不要贸然开始BSP的研究,因为研究必须反映最高领导者关于企业的观点,研究的成果取决于管理部门能否向研究组提供企业的现状,它们对于企业的理解和对信息的需求。
因此,在一开始时就要对研究的范围和目标、应交付的成果取得一致意见,避免事后的分歧,这是至关重要的。
2.研究的准备工作在取得领导赞同以后,最重要的是选择研究组组长,要有一位企业领导用全部时间参加研究工作并指导研究组的活动。
要确认参与研究的其他层次领导是否合适,并正确地解释由他们所在部门得到的材料。
基于实时嵌入式系统的BSP构建技术
基于实时嵌入式系统的BSP构建技术
岳晓东;蔡本华;贺占庄
【期刊名称】《微电子学与计算机》
【年(卷),期】2006(23)5
【摘要】文章主要介绍嵌入式系统BSP的文件体系结构及相关的BSP开发方法。
【总页数】4页(P105-108)
【关键词】嵌入式系统;BSP;VxWorks
【作者】岳晓东;蔡本华;贺占庄
【作者单位】西安微电子技术研究所
【正文语种】中文
【中图分类】TP368.2
【相关文献】
1.基于嵌入式系统和GPRS技术的实时远程抄表监控系统 [J], 王磊;王仲东
2.基于实时嵌入式系统的串口设备驱动技术研究 [J], 王蒙;张强成;宋炜斌
3.基于嵌入式系统的以太网实时通信技术研究 [J], 谈发明
4.基于Espruino实时操作系统在高职物联网应用技术专业嵌入式系统课程改革的探索 [J], 袁小洁
5.基于区块链技术的实时审计框架构建 [J], 王琳;向际钢
因版权原因,仅展示原文概要,查看原文内容请购买。
基于嵌入式Linux的BSP概念与开发
件之间的底层软件开发包, 其主要功能为屏蔽硬件, 提供操作系统的
图 1 典型的非易失存储设备空间分配结构图
驱动及硬件驱动。BSP 由初始化和驱动程序两部分组成。所谓初始化, 是 指 从 系 统 上 电 复 位 开 始 直 到 wind kernel 和 usrRoot 根 任 务 启 动 的 这 段 时 间 系 统 的 执 行 过 程 。 驱 动 程 序 就 是 一 些 包 含 I/O 操 作 的 子 函 数。
BSP 的 移 植 主 要 体 现 在 对 Boot Loader 代 码 和 Linux 内 核 的 硬 件 相关代码的修改上。
1.嵌入式系统中的 BS P 目 前 市 场 上 多 种 结 构 的 嵌 入 式 CPU(RISC)并 存(PPC, ARM, MIPS …), 为了性能的需要, 外围设备也会有不同的选择和定义。一个嵌入 式操作系统针对不同的 CPU, 会有不同的 BSP, 即使同一种 BSP, 由于 外 设 的 一 点 差 别(如 外 部 扩 展 DRAM 的 大 小 , 类 型 改 变), BSP 相 应 的 部分也不一样。所以根据硬件设计编写和修改 BSP, 保证系统正常的
BSP软件开发岗位职责
BSP软件开发岗位职责BSP软件开发是指在嵌入式系统中开发底层驱动软件及相关接口,包括IO、中断、时钟、GPIO等操作。
BSP软件开发需要开发者熟悉硬件系统结构,并具有一定的嵌入式系统开发经验。
BSP软件开发岗位职责主要包括以下几个方面:1. 硬件抽象层(HAL)设计开发BSP软件开发需要掌握嵌入式系统硬件的工作原理,包括CPU、内存、外设等各个方面,并依据硬件架构编写Driver代码。
这也就是HAL层的设计和实现。
HAL层的目的是尽量将底层硬件和上层应用逻辑分离,使得上层应用可以更方便的使用底层硬件资源。
2. 系统启动(Startup)代码开发系统启动代码是嵌入式系统的关键部分,需要从底层开始逐步初始化各个硬件模块,并将其暴露给操作系统、应用程序和其他中间件。
这需要开发者具备扎实的底层编程技能,熟悉处理器的原理、汇编语言,以及各种操作系统的启动过程。
3. 设备驱动开发BSP软件开发还需要编写各种设备驱动程序,包括输入输出设备驱动、网络设备驱动等。
这需要开发者熟悉硬件系统的数据传输方式和通信协议,例如USB、SPI、I2C等,并能够进行相应的代码编写与调试。
4. 调试与优化BSP软件开发需要具备良好的调试与优化能力,能够在底层系统开发时通过调试工具如JTAG、ICE等诊断系统问题,定位性能问题,并使用编译优化技术、内存管理技术等手段进行性能优化。
5. 与硬件工程师合作BSP软件开发者需要与硬件工程师紧密合作,进行Hardware-Software Co-design,例如在设计阶段就需要针对性能、功耗等角度评估硬件设计的优劣。
此外,还需要确保各个开发阶段的代码配合,以确保系统的稳定性与可靠性。
总之,BSP软件开发是一项非常工程化的工作,需要开发者具备扎实的硬件知识、扎实的底层编程技能与优秀的团队合作能力。
嵌入式板级开发知识——BSP开发
片级初始化把CPU从上电时的缺省状态逐步设置成为系统所要求的工作状态 这是一个纯硬件的初始化过程
BSP初始化过程——板级初始化 9
完成CPU以外的其他硬件设备的初始化 同时还要设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件
在Windows CE中,BSP是驱动程序、OEM适应层(OEM Adaptation Layers,OAL)、 硬件抽象层(HAL)以及启动设备和使外设正常工作所需BIOS文件的集合。
不同系统中的BSP 4
一个嵌入式操作系统针对不同的CPU,会有不同的BSP 即使同一种CPU,由于外设的一点差别BSP相应的部分也不一样
嵌入式板级开发知识 ——BSP开发
嵌入式板级开发知识——BSP开发 2
BSP的概念 BSP的特点与功能 BSP的设计与实现 BSP初始化过程
BSP的概念 3
BSP全称“板级支持包”(Board Support Packages),说的简单一点,就是一段启动代 码,和计算机主板的BIOS差不多,但提供的功能区别就相差很大
和软件环境 这是一个同时包含软硬件两部分在内的初始化过程
BSP初始化过程——系统级初始化 10
这是一个以软件初始化为主的过程,主要进行操作系统初始化 BSP将控制转交给操作系统,由操作系统进行余下的初始化操作:
➢ 加载和初始化与硬件无关的设备驱动程序 ➢ 建立系统内存区 ➢ 加载并初始化其他系统软件模块(如网络系统、文件系统等) ➢ 最后,操作系统创建应用程序环境并将控制转交给应用程序的入口
BSP的特点与功能 5
硬件相关性 因为嵌入式实时系统的硬件环境具有应用相关性,所以,作为高层软件与硬件之间的接口,
实时操作系统BSP的分析与实现
实时操作系统BSP的分析与实现引言近年来,实时操作系统在网络通信、在线事务处理、生产过程控制、交通控制等各个领域得到广泛的应用,并越来越引起人们的重视. 目前,国内使用的RTOS主要有VxWorks和PSOS,还有Nuclear、QNX、WinCE、嵌入式Linux等.为了方便用户在自己定义的用户板上进行开发,RTOS提供了板级支持包(BSP) ,提供了支持标准硬件板和用户硬件板的机制. 每个BSP提供了一种软件模板,其中既包括设备驱动程序的抽象结构代码(Abstracter Architecture code) 也包括为具体硬件设备所需的底层系统功能代码,不同外设的设备驱动程序代码只与该设备有关,而与该设备所在的硬件板无关.RTOS以源代码形式提供了许多板级支持包以及通用模板、板级支持包是进行开发设计的关键环节,开发人员应当对它有一个清晰的认识和理解.1、实时多任务操作系统(RTOS)实时系统的实现多为微内核体系结构,如图1 所示 .这使得核心小巧而可靠,易于使用ROM固化,并方便的进行模块化扩展.微内核结构系统中,OS服务模块在独立的地址空间运行,所以,不同模块的内存错误便被隔离开来 . 但它也有弱点,进程间通信和上下文切换的开销大大增加.图1 微内核结构通过硬件抽象层,操作系统可以很容易地移植到其它硬件结构体系.当然用户需要根据自己的硬件结构写自己的硬件抽象层代码,这也就是指一般意义上BSP,这也是开发用户个人系统的关键环节.实时多任务操作系统RTOS具有下面特点:RTOS 支持多任务,并能够根据各个任务的轻重缓急设置优先级,合理地在它们之间分配CPU和各种资源的占用时间. 实时性,系统的监测、控制、通信等工作都要求实时性,一旦出现有关情况,CPU能够及时响应,因此,一个实用的RTOS 都应具有完善的中断响应机制,保证中断响应潜伏时间足够短,在规定的时间内完成需要进行的工作.2、WindRiver VxWorks操作系统RTOS VxWorks是美国的Wind river 公司开发的一种高性能的嵌入式实时操作系统. 它是目前在世界上用户数量最大的实时操作系统,具有优越的技术性能、广泛的应用软件支持和可靠的系统稳定性.VxWorks的主要性能特点有:高度可裁剪的微内核结构(microkernel),VxWorks 所需要的存储器空间大约为8KB-488KB(ROM) ,(RAM),具有极好的伸缩性.高效的多任务调度.VxWorks 支持中断驱动的优先级抢占式(preemptive scheduling)调度和时间片轮转调度(roud-robin scheduling) ,具有确定的、快速的上下文切换的能力,具有256个优先级. 快速灵活的任务间通信(intertask communication) 手段. 支持信号灯(semaphores)、消息队列(messagequeues) 、管道(pipe) 、信号(signal)和套接字(socket)等进程间通信和互斥手段. 支持诸如环形缓冲(ring buffer)和链表(link list) 等共享内存技术. VxWorks是第一个集成标准TCP/IP网络功能的实时操作系统.到目前为止,VxWorks 的TCP/IP 协议支持最新的Berkeley网络协议,IP,IGMP,GIDR,TCP,UDP,ARP;BOOTP,DNS,DHCP,TFTP;FTP,Rlogin,Telnet,Rsh. 兼容VxWorks,支持规范以及规范的基本系统调用.包括:进程原语,文件目录,I/O原语,语言服务以及目录管理.另外VxWorks 还遵循实时扩展标准,包括:异步I/O,计数信号量,消息队列,信号,内存管理(页面锁定) ,以及调度控制. 极其丰富的板级支持包,支持多种处理器板(PowerPC,MIPS,ARM,StrongARM,i960,80x86,CodeFile等). 支持MS-DOS,RT-11和RAW等文件系统和网络文件系统NFS. 灵活的启动方法,支持从ROM、本地磁盘以及网络启动.3、RTOS 板级支持包BSP 和PC 的BIOSBSP 通常用于嵌入式领域,主要指在开发嵌入式应用时系统开发商提供的各种驱动支持库. 在嵌入式领域人们对BSP 有各种不同的理解:1) 操作系统的驱动程序. 嵌入式系统提供商的权威,Wind River 公司对BSP 的理解偏向于是OS 的驱动程序(从其BSP的文档中可以看出) ,因为嵌入式系统中的各种设备的确名目繁多,因此将BSP 定位于OS 的驱动的确有一定的道理.2) 驱动程序 . 对于认为BSP 就是驱动程序的人来讲,通常接触的是嵌入式系统提供商提供的某种应用解决方案的应用系统(Total Solutio).在这种开发系统中BSP 完全有理由被认为是所有驱动程序,因为开发人员没有必要自己去开发驱动程序,而只是验证驱动程序在自己的系统中是否正确了事.3) HAL(Hardware Abstract Layer) 对于开发嵌入式OS 的人来讲,倾向于将BSP 看成是对硬件平台的抽象层(HAL)和处理器的驱动程序更恰当.实际上各种理解都只是侧重于某个方面,由于每个嵌入式系统提供商都根据自己的操作系统而提出对BSP 的不同理解,因此在涉及到BSP 的具体涵义时人们往往有一种似是而非的感觉.实际是各种理解都有其道理,但由于出发点不同,对BSP的理解都有失全面甚至有错误的地方,这也是初学者容易混淆的原因.对于进行硬件和软件开发的人员,第三种理解比较合适,后面的分析也是建立在这个基础之上的.这里通过BSP(board support package)和BIOS(basic imput and output system)的对比来说明板级支持包的功能. BSP 说的简单一点,就是一段启动代码,和计算机主板的BIOS 差不多,提供的功能却有较大差别,在通用51 等系列单片机开发的过程中,要有小段程序设置栈指针,软复位,中断屏蔽等等,可以把这段程序称为它的BSP.实时操作系统的BSP 相对复杂一点,但通常也是设置堆栈指针、建立中断向量表、初始化寄存器(控制外围器件如DRAM,EDORAM 条,控制I/O口的寄存器,片选信号等) ,配置地址空间以及系统启动方式.从图2可以看出实时操作系统的BSP 就相当于PC的BIOS. 一般来说,对不同的微处理器板以及不同的RTOS时就应该配置相应的BSP,BSP 可以是已经做好了的,不需要开发人员去关心寄存器设置的细节. 当然根据实际的要求也可以改写BSP 来加入自己的特定功能. BSP 可针对不同的硬件做不同的调整,相应于PC的BIOS,它完成对硬件的初始化工作,执行完后再将执行权交给RTOS.在BSP 中,只需要对与硬件相关的寄存器( 主要是DRAM,SDRAM,片选)及与中断相关的寄存器进行正确配置即可.BSP 程序越简单越好,能放在主程序中初始化的功能尽量不要放在其中,BSP 配置程序只要能够保证系统正常启动即可.大部分RTOS带有针对不同微处理器的BSP 程序,用户只要稍做修改即可移植到自己的开发应用中.4、板级支持包(BSP)和驱动程序(Drivers)设备驱动程序指用于处理、管理硬件控制器(Controller)的代码.设备驱动程序是建立在具体的操作系统之上,如图2,而不是某种类型的处理器(CPU)类型,这点很重要.实际运用中,人们可能选择不同的目标硬件(CPU),如PowerPC,ARM、x86,并且配置不同的操作系统.即使对于同一种类型的目标硬件,不同的操作系统也要编写不同的BSP,对于驱动程序实际上是在操作系统的层次上对不同的设备控制器所写的代码.实时操作系统的驱动程序和PC的相类似,RTOS通常在BSP 定义了一套自己的驱动程序接口,根据这些接口写相应的驱动程序.当然RTOS和硬件较紧密,灵活性较大,开发人员完全可以抛开它提供的接口自己写,这同直接在C代码中调用BIOS提供的底层功能(如BIOS中断)写程序类似.BSP 通常可以认为是基于硬件平台的 .当开发某个平台的、与硬件相关的程序时,往往不得不从设置某个寄存器的某个位开始编程.在嵌入式领域,这种情况更为明显,几乎所有的设备控制和各种协议控制都在同一个嵌入式CPU Core, 中,非常有利于对CPU Core 和设备进行抽象.如果能对CPU Core和设备的各种控制进行抽象,人们在移植OS或者开发驱动程序时就没有必要对CPU进行非常深入的了解,不必要了解某个寄存器的某个位是控制什么的,也没有必要了解怎样初始化某个控制寄存器等等.因此,BSP 是一种能为程序开发人员提供对硬件进行描述性操作的开发支撑库.描述性操作是指在控制硬件时只需知道要完成什么,而不需要知道如何去完成,每个操作都是一些单一的动作.例如:对于设置一个串口的波特率,只需要知道是哪个串口,波特率是多少,而不需要知道要写哪一个寄存器以及如何写等.在利用BSP 编写Driver时,编程人员只需要了解该Driver的初始化顺序以及初始化的内容而不需要了解初始化的具体细节就能完成驱动程序. 可以大大的提高工作效率,并且对于硬件的具体细节设置是在驱动程序中最容易出错的地方,而采用BSP 支撑库则可以大大的减少出错的可能性. 在BSP 支撑库中除了对硬件的描述性操作部分的代码外,还包含了对目标板的初始化部分、中断管理部分以及一些简单的驱动程序程序单元 .这样的BSP可以不用依赖于任何的操作系统和驱动程序,但是可以作为操作系统和驱动程序的开发支撑库,可以非常方便的移植或者开发操作系统与驱动程序.在最好的情况下,操作系统与驱动程序的移植只需要更换相应平台下的BSP 支撑库就完成了移植.5、A RM’s BSP(Vxwork for Arm)Vxwork 的BSP主要功能:系统上电硬件初始化,提供VxWorks访问硬件驱动程序的支持,综合硬件无关和硬件相关的VxWorks软件.BSP不是硬件驱动,对目标环境(target enviroment) 是特定的 .组成部分:源文件(Source file);头文件(include file) 和编译生成文件(make file) ;继承文件(derived file)和二进制驱动模块(binary).开发步骤:1)确定要使用的模板,(Template)bsp 类型,针对目标硬件板进行选择,如Pid7,Pid_t,snds100.2)选择合适的开发仿真工具,目前使用较广泛的有EST的VisionICE和VisionProbe,都支持Jtag标准,可以在线flash Programming.3)确定要开发的生成镜像(image)的类型,rom image还是loadable image,rom image根据功能分为boot image 和VxWorks;根据加载过程为rom image:把代码(code)和数据(data) 拷贝到ram区,然后执行:rom-resdent image; 仅把数据拷贝到ram区,代码在rom执行;根据是否压缩分为压缩型和非压缩型.4)根据目标硬件配置确定系统的配置参数宏(macro), 在,makefile,文件中,这些文件在自己的bsp目录下,通常的情况下开发人员只需要对其中的宏参数进行配置并保持一致性,其他的通用参数由系统缺省完成.5)内核初始化之前的启动过程, 如图3图3 内核初始化之前的启动过程Boot,rom image从rominit romstar() 开始执行,是系统的入口,进行系统最小初始化工作,中断屏蔽,存储器初始化和设置系统堆栈指标.保存启动类型跳到romstar(), 把vxworks image 从rom 拷贝到ram,跳到usrinit()完成操作系统初始化.Loadable image则是有系统的引导程序加载VxWorks image到ram跳到sysinit()执行rominit()的工作,但是不进行出去器初始化工作.romInit()为适合不同的image类型,应当使用PIC(position independent code) 即PC(program counter)相关代码.如#define ROM-OFFSET(x)((x)-_rlmInit ROM_TEXT_ADRS) 地址计算.系统的需要开发人员自定义的宏:LOCAL_MEM_LOCAL_ADRS_RAM 开始地址;LOCAL_MEM_SIZE_RAM 大小;USER_RESERVED_MEM -在ram顶部保留的字节数,冷启动不清零;RAM_HIGH_ADRS - 非驻留rom(non -ROM resident)VxWorks boot images 加载地址;RAM_LOW_ADRS - 非驻留ram VxWorks aplication image 加载地址;ROM_TEXT_ADRS - Boot ROM 入口地址;ROM_BASE_ADRS - ROM 基地址;Usrinit() 完成激活内核所需的最小初始化工作.SysHwinit()把系统硬件一个静态的环境,由kernelinit()来激活VxWorks.6) 配置存储器(memory),中断(interrupt) ,时钟(timer) 对自己的bsp 进行调试、修改、发布.值得注意的是,在一般的情况下,开发人员不需要修改$(windriver)/target/confige/all和comps目录下的文件,只需要修改自己的bspname/目录下的文件,有改变连接规则,可以修改makefile 文件,控制系统的启动过程.结语本文讨论实时操作系统中板级支持包BSP的概念,强调指出BSP是基于不同的处理器类型,各种实时操作系统对不同的处理器提供了不同的板级支持包. 通过BSP,BIOS和Driver对比,分析说明了板级支持包具体的功能作用,即要提供给操作系统一个无关的设备接口,让程序开发人员可以在不熟悉具体硬件的条件下,对硬件的寄存器进行正确的操作和配置.最后结合Arm处理器,给出了编写Vxworks的BSP的要点以及开发流程.。
嵌入式系统中BSP的作用及其相关联环节的分析
嵌入式系统中BSP的作用及其相关联环节的分析嵌入式系统的基本构成包括硬件和软件两部分,其中硬件为实现设备外围控制,软件为运行该设备的程序。
而板级支持包(BSP)则是将硬件与软件两部分结合起来,并完成嵌入式系统的集成。
本文将从BSP的作用和相关联环节两个方面进行分析。
BSP的作用主要有以下三点:第一,提供硬件驱动程序。
BSP对内核的调用和切换通常需要硬件支持。
例如,初始化器件、寄存器等等,这些硬件驱动程序是与硬件相对应的,而BSP需要将它们打包成一个库,以便于系统调用。
此外,BSP还需要将硬件驱动程序集成到内核中,使之成为内核的一部分,以实现在内核中对硬件的控制。
第二,协调硬件资源。
嵌入式系统的硬件资源较为有限,而不同的硬件组件之间会相互干扰,所以需要有一个BSP控制其使用,避免冲突,让各个硬件模块之间能够协同工作。
第三,提供开发环境的支持。
BSP天然具备了针对嵌入式系统的外围控制和进程切换等能力,然而,对于开发人员而言,还需要对编译器、调试器、操作系统等相关工具提供支持。
这是嵌入式开发人员必不可少的开发环境。
除了上述功能之外,BSP还与内核、设备驱动程序、引导程序、红外线等外部服务交互,互相影响,构成了复杂的生态环境。
在嵌入式系统的板级支持栈中,BSP一般是由内核与设备驱动程序构成的,在系统启动阶段,BSP的基础硬件驱动程序会被加载到内存中,使它们能够访问到需要的硬件资源。
同时,BSP还要调整与优化硬件资源的配置。
在后续各个模块启动时,BSP还需负责引导程序执行的控制和设备驱动程序的加载。
BSP在嵌入式系统中具有重要的作用,其能够提供合适的硬件驱动程序、协调硬件资源、支持开发环境等,使系统能够有效运行。
同时,BSP与内核、设备驱动程序、引导程序、外部服务等相互交互,形成一个复杂的生态系统,从而实现了整个嵌入式系统。
关于嵌入式Linux系统中的BSP浅析
关于嵌入式Linux系统中的BSP浅析
嵌入式系统由硬件环境、嵌入式操作系统和应用程序组成,硬件环境是操作系统和应用程序运行的硬件平台,它随应用的不同而有不同的要求。
硬件平台的多样性是嵌入式系统的主要特点,如何使嵌入式操作系统在不同的硬件平台上有效地运行,是嵌入式系统开发中需要解决的关键问题。
解决的方法是在硬件平台和操作系统之间提供硬件相关层来屏蔽这些硬件的差异,给操作系统提供统一的运行环境,这种硬件相关层就是嵌入式系统中的板级支持包BSP(Board Support Package,简称BSP)。
BSP是嵌入式系统中介于硬件平台和操作系统之间的中间层软件,主要目的是为了屏蔽底层硬件的多样性,根据操作系统的要求完成对硬件的直接操作,向操作系统提供底层硬件信息并最终启动操作系统。
BSP具有硬件相关性和操作系统相关性的特点,其主要作用包括:
(1)初始化底层硬件,为操作系统提供底层硬件信息;
(2)初始化相关硬件设备,主要是存储设备、通信设备;
(3)检测系统硬件是否正常;
(4)加载操作系统并启动系统运行。
BSP是相对于操作系统而言的,不同的操作系统有不同定义形式的BSP,要求BSP所实现的功能也有所不同。
在嵌入式Linux系统中,主要是初始化底层硬件并引导操作系统;同时,BSP又是和硬件相关的,还要考虑对硬件的初始化操作。
这些初始化操作主要是对CPU、内存、中断等相关的寄存器及协处理器进行正确的配置。
在不同的开发阶段,因为核心和文件系统所处的位置不同,BSP所要完成的工作也有所不同:在开发调试阶段,BSP 要能够与主机通信并从主机下载核心;在目标产品中,BSP要能够从非易失存储设备中加载核心。
bsp是什么
bsp是什么
一、BSP是什么板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。
在嵌入式系统软件的组成中,就有BSP。
BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP 的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改)。
这样才能与上层OS保持正确的接口,良好的支持上层OS。
纯粹的BSP所包含的内容一般说来是和系统有关的驱动和程序,如网络驱动和系统中网络协议有关,串口驱动和系统下载调试有关等等。
离开这些驱动系统就不能正常工作。
二、BSP的主要功能BSP主要功能为屏蔽硬件,提供操作系统及硬件驱动,具体功能包括:
1. 单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持
2. 为操作系统提供设备驱动程序和系统中断服务程序
3. 定制操作系统的功能,为软件系统提供一个实时多任务的运行环境
4. 初始化操作系统,为操作系统的正常运行做好准备。
三、BSP的作用建立让操作系统运行的基本环境
1、初始化CPU内部寄存器
2、设定RAM工作时序
3、时钟驱动及中断控制器驱动
4、串口驱动
完善操作系统运行的环境
1、完善高速缓存和内存管理单元的驱动
2、指定程序起始运行位置。
嵌入式系统BSP基础知识
获取基本的BSP模板 针对不同的CPU类型,确定基本BSP中所有的 寄存器配置是否适合当前的硬件(包括 SDRAM)。如果不适合则做相应的改动。这主 要是指rominit.s, config.h中的修改。 其次如果有网络设备,则需要配置confignet.h。 如果有串口,则需要修改sysSerial.c。 修改sysLib.c中的硬件相关的部分。
嵌入式系统BSP基础知识
成都研究所操作系统团队
©2007 ZTE Corporation
目录
• BSP简介 • BSP开发 • Linux和VxWorks的BSP开发比较分析
BSP的定义
BSP(Board Support Packet——板级支持包) 是介于底层硬件和上层软件之间的底层软件开 发包,它主要功能为屏蔽硬件,提供操作系统 的驱动及硬件驱动。 是嵌入式操作系统的一个特有概念。相当PC 机中的BIOS+驱动。
分离,使得两者之间的设备驱动程序不能够通用, 但是,与硬件相关的配置代码是可以互相借鉴的。 VxWorks的BOOTROM和运行版本的设备驱动是相 同的,因为,它的运行版本和BOOTROM的结构是 一致的,使用同一操作系统内核。
嵌入式系统设计-BSP编程
10
U-Boot
U-Boot提供两种操作模式:启动加载(Boot loading)模式和下载(Downloading) 模式,并具有大型Boot Loader的全部功能。主要特性为: SCC/FEC以太网支持 BOOTP/TFTP引导 IP,MAC预置功能 在线读写FLASH,DOC, IDE,IIC,EEROM,RTC 支持串行口kermit,S-record下载代码 识别二进制、ELF32、pImage格式的Image,对Linux引导有特别的支持 监控(minitor)命令集:读写I/O,内存,寄存器、内存、外设测试功能等 脚本语言支持(类似BASH脚本) 支持WatchDog,LCD logo,状态指示功能等 U-Boot的功能是如此之强大,涵盖了绝大部分处理器构架,提供大量外设驱动, 支持多个文件系统,附带调试、脚本、引导等工具,特别支持Linux,为板级移植 做了大量的工作。U-Boot1.1.1版本特别包含了对SA1100和44B0芯片的移植, 所以44B0移植主要是针对Board 的移植,包括FLASH、内存配置以及串口波 特率等等。U-Boot的完整功能性和后续不断的支持,使系统的升级维护变得十 分方便。
5
几种Bootloader简介
Redboot Redboot是Redhat公司随eCos发布的一个 BOOT方案,是一个开源项目。 当前Redboot的最新版本是Redboot-2.0.1, Redhat公司将会继续支持该项目,其官方发 布网址为: /redboot/。
6
Redboot
Redboot支持的处理器构架有ARM,MIPS,MN10300,PowerPC, Renesas SHx, v850,x86等,是一个完善的嵌入式系统Boot Loader。 Redboot是在ECOS的基础上剥离出来的,继承了ECOS的简洁、轻巧、可灵活配置、 稳定可靠等品质优点。它可以使用X-modem或Y-modem协议经由串口下载,也可 以经由以太网口通过BOOTP/DHCP服务获得IP参数,使用TFTP方式下载程序映像文 件,常用于调试支持和系统初始化(Flash下载更新和网络启动)。Redboot可以通 过串口和以太网口与GDB进行通信,调试应用程序,甚至能中断被GDB运行的应用 程序。Redboot为管理FLASH映像,映像下载,Redboot配置以及其他如串口、以 太网口提供了一个交互式命令行接口,自动启动后,REDBOOT用来从TFTP服务器 或者从Flash下载映像文件加载系统的引导脚本文件保存在Flash上。当前支持单板机 的移植版特性有: 支持ECOS,Linux操作系统引导 在线读写Flash 支持串行口kermit,S-record下载代码 监控(minitor)命令集:读写I/O,内存,寄存器、 内存、外设测试功能等 Redboot是标准的嵌入式调试和引导解决方案,支持几乎所有的处理器构架以及大量 的外围硬件接口,并且还在不断地完善过程中。
BSP的定义及实施的主要步骤
BSP的定义及实施的主要步骤定义BSP (Board Support Package) 是指针对特定硬件平台定制的软件包,它包含了一系列驱动程序、配置文件和操作系统的适配层。
BSP的主要目的是提供对特定硬件平台的支持,使其能够运行操作系统和应用程序。
一个典型的BSP包括硬件抽象层、启动代码、驱动程序、库、配置文件等组件。
它们共同协作,使硬件平台能够正确地启动、运行和与操作系统交互。
实施的主要步骤实施一个BSP需要经过以下几个主要步骤:1.硬件平台分析:首先,需要对硬件平台进行全面的分析。
这包括了硬件组件的型号、规格和功能特性等。
根据硬件平台的特点,确定需要支持的功能和驱动程序。
2.环境搭建:在开始实施BSP之前,需要搭建相应的开发环境。
这包括选择合适的开发工具链、硬件调试工具和开发板等。
确保所选工具和设备能够完美支持硬件平台。
3.创建硬件抽象层:硬件抽象层是BSP的核心组成部分。
它提供了对硬件平台的抽象接口,使操作系统和应用程序能够方便地与硬件进行交互。
创建硬件抽象层时,需要根据硬件平台的特性定义相应的API接口,并实现对应的驱动程序。
4.编写启动代码:启动代码是BSP的关键部分。
它负责初始化硬件平台并执行操作系统的加载和启动。
在编写启动代码时,需要根据硬件平台的特点配置相应的引导参数,并确保操作系统能够正确地加载和启动。
5.开发驱动程序:根据硬件平台的需求,开发相应的驱动程序。
这些驱动程序负责控制和管理硬件设备,使其能够正确地与操作系统和应用程序进行交互。
驱动程序的开发需要根据硬件平台的接口规范和特性进行,确保其能够正确地与硬件设备进行通讯。
6.集成和测试:完成硬件抽象层的开发和驱动程序的编写后,需要进行集成和测试。
将开发的组件集成到BSP中,并进行全面的功能和性能测试。
确保BSP能够稳定运行,并与硬件平台和操作系统兼容。
7.文档编写:最后,还需要编写相关的文档。
文档应包括BSP的设计原理、接口说明、使用方法和常见问题解答等内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
引言
Linux诞生于1991年,芬兰学生LinuSTorvaldS是Linux操作系统的缔造者,与传统的操作系统不同,Linux操作系统的开发一开始就在FSF(自由软件基金会组织)的GPL(GNU Public License)的版本控制之下,Linux内核的所有源代码都采取了开放源代码的方式。
Linux具有相当多的优点。
BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间的底层软件开发包,其主要功能为屏蔽硬件,提供操作系统的引导及硬件驱动。
Linux操作系统目前已发展为主流操作系统之一,并且还在不断的壮大和发展。
最新的2.6版内核增加了很多新特性为嵌入式应用提供广泛的支持,使得它不仅可以应用于大型系统,还可以应用于像PDA这类超小型系统中。
随着Linux系统在嵌入式领域的广泛应用,对它的研究也在逐渐成为热点并且走向成熟。
在嵌入式系统开发过程中,板级支持包(BSP,BoardSuport Package)的开发已成为非常重要的环节。
本文以Linux系统上的BSP技术为研究内容,讨论了BSP的基本概念和设计思想,特别针对Linux系统上BSP的层次结构、各功能模块的实现技术做了详细分析。
通过分析PC机的BIOS技术阐述了嵌入式系统中板级初始化流程和技术重点,并从源代码分析入手详细分析了PC机GURB引导程序设计技术,提出了嵌入式系统上BootLoader的程序结构和设计思想。
嵌入式操作系统对设备驱动程序的管理技术是BSP设计的重要组成部分。
本文对比了Linux2.4和Linux2.6的设备驱动程序框架,同时结合大量源代码的研读,对Linux2.6内核的统一设备模型进行了深入的研究,剖析了内核对象机制的主要数据结构及驱动程序设计框架,理解了该模型对设备类的抽象机制,并在实际的项目实践中,结合所作的研究工作,圆满完成了基于ARM+Linux开发平台的BSP开发任务。
最后对本文研究工作进行了总结,并对下一步工作进行了展望。