什么是BSP工程师?

文章转自

https://luomuxiaoxiao.com/?p=170

一、嵌入式系统

要明白什么是嵌入式软件工程师,我们先从嵌入式系统(嵌入式设备)说起。维基百科上对嵌入式系统的定义如下:

嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。

通俗的讲,嵌入式系统就是一种具有专一功能的计算机系统。我们身边就有好多嵌入式设备,常见的比如智能手机,数码相机等消费类的电子设备,再比如最近几年兴起的诸如智能音箱、智能电视、扫地机器人智能家居设备。当然还包括汽车防抱死系统、各种医疗成像系统等设备。总之各行各业我们都有可能接触到它,尤其随着智能化时代的到来,很多非智能的设备也将逐步由嵌入式设备所替代,典型的如智能门锁。

二、嵌入式工程师

随着嵌入式设备应用越来越广泛,相关人才的需求也越来越大。那么相关的人才都有哪些呢?其中最主要的就是嵌入式工程师。嵌入式工程师分为两种:嵌入式硬件工程师和嵌入式软件工程师。

  • 嵌入式硬件工程师主要职责是负责设计嵌入式系统的硬件原理图,使用相应的工具画出PCB图,后期配合嵌入式软件工程师调试系统。

  • 嵌入式软件工程师从系统软件上又可以分为两种:BSP工程师和嵌入式应用软件工程师。嵌入式应用软件工程师主要是负责编写基于嵌入式系统的应用软件。类似于基于windows上的QQ, word。由于我本人是做BSP的,因此这里我们着重讨论BSP工程师。

47d12ec5b32cbde2198ed78ad35f8911.png

三、BSP工程师

BSP,全称Board Support Package,汉语意思即板级支持包。BSP工程师,顾名思义就是负责板级支持包的开发、调试和维护工作。那么什么是板级支持包呢?前面我们讲过,嵌入式硬件工程师负责设计硬件,画出PCB图,工厂会根据PCB图生产出对应的电路板。一个嵌入式系统光有电路板是不够的,还要有对应的软件支持,软件开发的前提是首先使板子正常稳定的工作,然后再在其上编写对应的应用软件以实现其特有的功能。其中使板子正常稳定的工作的代码就属于板级支持包。
那么BSP工程师的具体工作有哪些呢?

我们首先从嵌入式设备谈起,前面我们谈到了很多的嵌入式设备,从系统角度来讲这些设备有些是跑操作系统的,有些没有跑。对于不跑操作系统的设备来讲,其功能相对简单一点,使用的主控芯片一般也比较简单,比如风靡一时的51系列单片机、stm系列的单片机。对于这些简单系统来讲,它对软件开发人员要求相对比较低,当然也就没有我前面所说的分工那么详细,有时候甚至从画板、点亮、开发都是由一个人来完成的。对于跑操作系统来讲的设备,就不一样了。一般来讲,跑操作系统的设备其软件开发分三个阶段:

1. 点亮板子

第一批板子出厂时是不包含任何软件的。BSP工程师需要结合硬件原理图修改从芯片厂商拿到的参考代码,调试板子,使板子上的操作系统能够正常稳定工作,从而提供一个稳定的开发调试环境,这个过程叫做点亮板子,行话叫做Bringup。这属于BSP工程师最具有价值含量的工作之一,因为它对BSP工程师所掌握的知识的广度和深度都有一定要求。其中会涉及到计算机原理、操作系统,处理器架构等,还包括硬件方面的一些知识。综合起来其最核心的工作就是对内核的移植、裁剪。

2. 使能板子上所有设备

上个阶段中,板子的CPU和基本的器件已经能正常工作,这个阶段中将使能所有的外设,并为后面要开发的应用程序提供对应的软件控制接口。这个过程的实质是对应的操作系统下驱动开发的过程,需要掌握硬件工作的原理,操作系统的相关知识。

3. 为板子开发应用程序

如前文所述,嵌入式系统是一个具有专一功能的系统,其上所有的硬件,软件都应该为这一功能服务。第二个阶段结束的时候,板子上所有的设备都已经可以正常使用了。这个阶段的任务就是开发应用程序来实现某种特定的功能,应用程序中会使用第二阶段提供的软件接口控制板子上的设备来完成这一功能。

四、BSP工程师应具备的能力

上述前两个阶段属于BSP开发的内容,第三个阶段属于嵌入式应用软件开发的过程。综上所述,BSP工程师主要应该具备的能力主要有:

  • 掌握计算机原理方面的知识;

  • 掌握操作系统的相关知识,深入研究某种操作系统,目前来讲,研究linux操作系统应该是大部分人的选择;

  • 基本的linux(开发环境)操作

  • 精湛的C语言功底和一定的C++/汇编的知识。

  • 掌握一定的硬件和电路原理方面的知识;

  • 熟悉常见的接口协议,如I2C, SPI, UART, USB等。

当然作为一个软件开发人员也必须掌握一些通用的软件,比如:

  • 代码管理软件,常见的如git等;

  • 代码阅读软件,这个就因个人喜好而不同了,比如:opengrok,source insight,vim下ctags/cscope插件组合等。

c280fc451766bcbc75f7589919f6525e.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《STL源码剖析》相关面试题总结

一、STL简介 STL提供六大组件,彼此可以组合套用: 容器 容器就是各种数据结构,我就不多说,看看下面这张图回忆一下就好了,从实现角度看,STL容器是一种class template。 算法 各种常见算法,如sor…

VB.NET 中的ref 和C#中的ref 格式区别

今天把一个VB.NET的程序翻成C#的,在ref这堵了半天。函数定义是这样的:PublicSharedFunctionGetUsers(ByValportalId AsInteger, ByValisHydrated AsBoolean, ByValpageIndex AsInteger, ByValpageSize AsInteger, ByReftotalRecords AsInteger) AsArrayL…

工厂好的html页面,jquery中被誉为工厂函数的是什么?

jquery中被誉为工厂函数的是“$()”。在jQuery中,无论我们使用哪种类型的选择符都需要从一个“$”符号和一对“()”开始。下面本篇文章给大家介绍一下。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。jQuery的三种$()“$”…

如何学好单片机?​嵌入式第一门课

很多想学单片机的人问我的第一句话就是:怎样才能学好单片机?对于这个问题我今天就我自己是如何开始学单片机,如何开始上手,如何开始熟练这个过程给大家讲讲。先说说单片机,一般我们现在用的比较多的的MCS-51的单片机&a…

在 Mac 上通过 Docker 运行 Asp.net Core 简易教程

首先,你需要在 Mac 上安装好 Docker 下载地址 https://download.docker.com/mac/stable/Docker.dmg 或者查看别人的 安装教程 怎么安装这里就不在赘述了。 打开 Docker 输入命令 docker run -d --rm -p 8000:80 --name aspnetcore_sample microsoft/dotnet-sample…

TCP协议-相关面试题

一、TCP协议简介 一般问到TCP协议的时候 最常见的是TCP连接建立和断开的过程,也就是三次握手和四次挥手,两张图足矣。 1.1 三次握手 1.2 四次挥手 二、常见面试题 2.1 TCP连接阶段 2.1.1 发送序号和确认序号问题 例: TCP建立连接的过程采用三…

Android RIL源码研究笔记 の ril (一)

Android源码目录hardware/ril/libril中总共包含5个C/CPP文件,它们分别是ril_commands.h、ril_unsol_commands.h、ril_event.h、ril_event.cpp和ril.cpp。这篇文章主要分析ril.cpp文件。 我们可以将该文件划分为定义部分和实现部分,先来看定义部分&#x…

[转载]Manually configuring Microsoft Internet Information Services (IIS)

Manually configuring Microsoft Internet Information Services (IIS) 原文摘自http://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//index.jsp?topic/com.ibm.websphere.base.doc/info/aes/ae/tins_manualWebIIS.html This topic describes manual configuration setti…

生活中的计算机趣味知识大全,五个有趣的电脑小知识

五个有趣的电脑小知识1, 更改临时文件夹的路径问:我使用的系统为Windows XP,我想把系统临时文件(Temp文件)存放区由C盘移到其他分区(如D盘),请问该如何*作?答:在“我的电脑上点鼠标右键,选择“属…

稚晖君又整活啦!基于全志F1C200s的超迷你

转自全志在线B站最强小电视(基于全志H3)钢铁侠机械臂曾经靠着“B站最强小电视”以及号称“钢铁侠机械臂”等硬核产品出圈的稚晖君又双叒叕来整活啦!稚晖君B站首页这次稚晖君开源了基于全志F1C200s的一个超迷你&低成本的Linux开发板&#…

分布式为什么使用Redis

一 为什么使用 Redis 在项目中使用 Redis,主要考虑两个角度:性能和并发。如果只是为了分布式锁这些其他功能,还有其他中间件 Zookpeer 等代替,并非一定要使用 Redis。 性能: 如下图所示,我们在碰到需要执行…

手动添加mysql服务

重新安装系统以后不再重新安装mysql 只需要我们把mysql服务添加到系统服务里即可,一下是具体步骤: 安装mysql服务 新建并编辑内容如下的一个bat文件,并且执行(盘符:\mysql\bin\mysqld-nt.exe为安装目录,按实际情况填写,如果安装路径里面有空格…

心情

今天有些沮丧。 突然想起一句话: 千山暮雪,形影相吊! 不知道是因为想起这句话才沮丧,还是因为心情差才想起这句话。 转载于:https://www.cnblogs.com/armlinux/archive/2006/12/20/2391047.html

微型计算机突然断电什么信息全部都是,微型计算机的硬件组成阶段作业(函授2014春).doc...

微型计算机的硬件组成阶段作业(函授2014春)微型计算机的硬件组成一、单项选择题(共15道小题,共15.0分)下列叙述中,错误的一个是个人微型计算机键盘上的Ctrl键是起控制作用的,它必须与其他键同时按下才有作用个人微型计算机在使用过程中突然断…

困扰多年的PCB散热问题终于可以解决了!

做电子的同学应该都会知道电路板,电路板分为基板导电部分组成。如下图,我们普通的单层电路板是一块有机材料加上导电铜层组成的。在大学那会我们会用面包板来做一些基础的实验,用面包板做实验可以减少打PCB板的时间,因为制作一个P…

进程之间的通信方式-共享内存

共享内存是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。原理图如下: 共享内存的实现分为两个步骤: 一、…

第4天:调用样式表

用web标准设计网站,过渡的方法主要是采用XHTMLCSS,css样式表是必不可少的。这就要求所有网页设计师必须熟练掌握CSS,如果你以前不常用,那么现在就开始学习吧。要制作符合web标准的网站,不懂CSS是设计不出漂亮的页面的。…

获取url参数值(可解码中文值)

/*** 根据指定参数名称获取参数值* param {String} urlStr 参数名称* return {Object} 参数值* */ getUrlParams function (urlStr) {// 获取url中"?"符后的字串let url urlStr || location.href;let params {};if (url.indexOf(?) ! -1) {let str url.sub…

和一个刚毕业不久的朋友聊天

我记得还在你上大学的时候,我们就开始联系了,想不到的是你已经毕业半年多。我相信每个人都会有经历从学生到工作的过程,当然肯定也会因为工作后面对很多不一样的人和事,我也希望能够通过我们的一次对话,让没有毕业的同…

大工奥鹏计算机在线作业,大工20春《计算机网络技术》在线作业1题目【标准答案】...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼大工20春《计算机网络技术》在线作业1试卷总分:100 得分:100一、单选题 (共 10 道试题,共 50 分)1.网络协议是通信双方必须遵守的事先约定好的规则,一个网络协议由语法、语义和 ( ) 三部分组成。A.逆序B.次数C.时序D.词序2.运输层的…