基于嵌入式linux的bsp概念与开发
- 格式:docx
- 大小:14.91 KB
- 文档页数:1
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是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(板级支持软件)部分的设计、实现与维护。
具体职责如下: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,例如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)[转载]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及开发一、概述1.BSP的概念实行BSP研究的前提是,在企业内有改善计算机信息系统的要求,并且有为建设这一系统而建立总的战略的需要。
因而,BSP的基本概念与组织内的信息系统的长期目标有关。
(1)一个信息系统必须支持企业的战略目标(2)一个信息系统的战略应当表达出企业的各个管理层次的需求(3)一个信息系统应该向整个企业提供一致的信息(4)一个信息系统应该适应组织机构和管理体制的改变(5)一个信息系统的战略规划,应当由总体信息系统结构中的子系统开始实现2.BSP的目标BSP的主要目标是提供一个信息系统规划,用以支持企业短期的和长期的信息需要。
其具体目标可归纳如下:(1)为管理者提供一种形式化的、客观的方法,明确建立信息系统的优先顺序,而不考虑部门的狭隘利益,并避免主观性。
(2)为具有较长生命周期系统的建设,保护系统的投资做准备。
由于系统是基于业务活动过程的,所以不因机构变化而失效。
(3)为了以最高效率支持企业目标,BSP提供数据处理和资源的管理。
(4)增加负责人的信心,坚信收效高的主要的信息系统能够实施。
(5)提供响应用户需求优先的系统,以改善信息系统管理部门和用户之间的关系。
将数据作为一种企业资源加以确定。
为使每个用户更有效地使用这些数据,要对这些数据进行统一规划、管理和控制。
二、概述BSP方法的研究步骤1.研究项目的确立BSP的经验说明,除非得到了最高领导者和某些最高管理部门参与研究的承诺,不要贸然开始BSP的研究,因为研究必须反映最高领导者关于企业的观点,研究的成果取决于管理部门能否向研究组提供企业的现状,它们对于企业的理解和对信息的需求。
因此,在一开始时就要对研究的范围和目标、应交付的成果取得一致意见,避免事后的分歧,这是至关重要的。
2.研究的准备工作在取得领导赞同以后,最重要的是选择研究组组长,要有一位企业领导用全部时间参加研究工作并指导研究组的活动。
要确认参与研究的其他层次领导是否合适,并正确地解释由他们所在部门得到的材料。
基于实时嵌入式系统的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], 王琳;向际钢
因版权原因,仅展示原文概要,查看原文内容请购买。
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软件开发是一项非常工程化的工作,需要开发者具备扎实的硬件知识、扎实的底层编程技能与优秀的团队合作能力。
引言
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开发任务。
最后对本文研究工作进行了总结,并对下一步工作进行了展望。