如何成为一名优秀的嵌入式BSP工程师

关注、星标公众号,直达精彩内容
嵌入式硬件工程师要求_嵌入式硬件工程师有前途吗_嵌入式硬件工程师需要学什么

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


总结:BSP,全称是Board Support Package,中文意思是板级支持包。 BSP工程师,顾名思义,负责板级支持包的开发、调试和维护。 那么什么是主板支持包? 什么是BSP工程师? 如何成为一名优秀的嵌入式BSP?

1. 嵌入式系统

要了解什么是嵌入式软件工程师,我们先从嵌入式系统(嵌入式设备)开始。 维基百科对嵌入式系统的定义如下:

嵌入式系统是嵌入机械或电气系统内部、具有专门功能和实时计算性能的计算机系统。

通俗地说,嵌入式系统就是具有专门功能的计算机系统。 我们身边有很多嵌入式设备,比如智能手机、数码相机等消费电子设备,以及近年来兴起的智能音箱、智能电视、扫地机器人等智能家居设备。 当然,还包括汽车防抱死制动系统、各种医学成像系统等设备。 总之,我们在各行各业都可能接触到它,尤其是随着智能时代的到来,很多非智能设备将逐渐被嵌入式设备取代,比如智能门锁。

2.嵌入式工程师

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

嵌入式硬件工程师有前途吗_嵌入式硬件工程师要求_嵌入式硬件工程师需要学什么

嵌入式工程师三级、BSP工程师

BSP,全称是Board Support Package,中文意思是板级支持包。 BSP工程师,顾名思义,负责板级支持包的开发、调试和维护。 那么什么是主板支持包? 正如我们之前提到的,嵌入式硬件工程师负责设计硬件并绘制PCB图。 工厂会根据PCB图生产相应的电路板。 嵌入式系统仅有电路板还不够,还必须有相应的软件支持。 软件开发的前提是首先使单板正常稳定工作,然后在其上编写相应的应用软件,实现其特有的功能。 使板卡正常稳定工作的代码属于板级支持包。

那么BSP工程师的具体工作有哪些呢?

让我们从嵌入式设备开始。 我们之前讨论过很多嵌入式设备。 从系统角度来看,其中一些设备运行操作系统,有些则不运行。 对于不运行操作系统的设备,其功能比较简单,使用的主控芯片一般也比较简单,比如现在流行的51系列单片机、stm系列单片机等。 对于这些简单的系统,对软件开发人员的要求相对较低。 当然,它们的分工并不像我前面提到的那么详细。 有时候连画板、灯光、开发都是一个人完成的。 对于运行操作系统的设备来说,情况有所不同。 一般来说,运行操作系统的设备的软件开发分为三个阶段:

1.点亮黑板

第一批主板出厂时没有任何软件。 BSP工程师需要根据硬件原理图修改从芯片制造商获得的参考代码并调试板子,使板子上的操作系统能够正常稳定地工作,从而提供稳定的开发和调试环境。 这个过程称为点亮板子,行话称为Bringup。 。 对于 BSP 工程师来说,这是最有价值的工作之一,因为它需要 BSP 工程师拥有广度和深度的知识。 会涉及到计算机原理、操作系统、处理器架构等,还有一些硬件方面的知识。 综上所述,其核心工作就是内核的移植和裁剪。

2. 启用板上所有设备

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

3. 开发板应用程序

如上所述,嵌入式系统是一个具有特定功能的系统,其上的所有硬件和软件都应该服务于该功能。 第二阶段结束时,板上所有设备均可正常使用。 这一阶段的任务是开发一个应用程序来实现特定的功能。 应用程序将使用第二阶段提供的软件接口来控制板上的器件来完成此功能。

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

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

当然,作为一名软件开发人员,还必须掌握一些常用软件,例如:

简单来说,作为一名嵌入式BSP工程师,不仅要了解硬件的工作原理,还要能够编写相应的软件使其正常工作。 学习和发展的难度不言而喻。 那么,要成为一名合格的嵌入式BSP工程师,需要学习哪些知识以及如何学习呢?

简单来说,作为一名嵌入式BSP工程师,不仅要了解硬件的工作原理,还要能够编写相应的软件使其正常工作。 学习和发展的难度不言而喻。 那么,要成为一名合格的嵌入式BSP工程师,需要学习哪些知识以及如何学习呢?

5、专业背景

我们先从专业背景说起。 经过我的了解,从事嵌入式BSP开发的人主要来自计算机专业和电子信息专业。 这两个专业是与嵌入式BSP最相关的专业。 当然,也有一些同事是从其他专业转来的(比如我,熟悉我的朋友都知道我大学学的是物理,是一个比较偏科的专业)。 所以,如果你是计算机或者电子信息专业的话,你的基础就已经足够好了。 因为我们从上一篇文章中知道,对于BSP工程师来说,主要的工作是让硬件和其上的操作系统稳定工作,所以了解硬件原理、计算机原理和操作系统是最基本的要求,而这两个专业将学习模拟电路和数字电路等硬件原理的基础知识。 计算机原理和高级语言也是这两个专业的必修课。 这些基本形成了BSP工程师必备的知识。 当然,如果你不是这两个专业的学生,也不必灰心。 毕竟,每个人都可以掌握大学所学的课程,并且理解到讲解的程度。 因此,即使你没有经历过系统的学习,只要你有足够的兴趣,有一定的自制力,完全自学也不是不可能。

6. 推荐书籍

言归正传,我们根据上一篇文章中BSP工程师必备的知识来介绍一下如何学习。

1. 计算机原理

正如我们前面提到的,运行操作系统的嵌入式系统也是典型的计算机系统。 既然我们要将操作系统移植到计算机上,那么了解计算机的运行原理细节对于开发来说是至关重要的。 这些知识在处理疑难杂症时特别有用。 这里有一本计算机原理的经典书籍——《计算机系统:程序员的视角》(中文译名:《深入理解计算机系统》)。 从本书开始,本书从程序员的角度系统地描述了计算机程序的存储。 、运行的基本原理,并结合实例分析如何优化计算机程序。 第二部分基于计算机原理介绍了操作系统中的一些重要概念,并从程序运行的角度对这些概念进行了详细的解释和解释。

从2010年开始我已经读了好几遍了,每次重读我仍然感觉收获很多。 因此,在这篇博客中,我新建了一个专题,从“从程序员编写的C文件到编译生成可执行文件,最后到程序运行的过程”的角度来总结自己对本书中一些知识的理解。 ”和收获。 本书自出版以来已出版三版。 我收集了英文第二版和第三版最新高清扫描中文电子书(文件大小501M)。

2.Linux基本操作

大多数嵌入式开发都是在Linux操作环境下进行开发的,因为上面有很多优秀的开源开发工具,可以方便快捷地搭建编译环境,并且有非常方便的调试工具可用。 很多同学可能根本没有接触过Linux系统。 启动后,他们就茫然了,甚至找不到文件。 这并不是什么问题,毕竟它的设计理念和我们熟悉的Windows完全不同。 对于程序员来说,当你适应了Linux系统之后,你可能甚至不想再使用Windows了。 关于学习Linux基本操作的书籍,推荐《鸟哥的Linux私房菜》,由浅入深地介绍了Linux系统。 它不仅涉及Linux的基本操作,还包括如何重装Linux系统、Linux文件管理、以及shell脚本编写等知识,其实这本书主要是针对Linux系统管理员的,不过前13中的内容Chapters 是 Linux 系统入门的绝佳选择。

3.C语言基础

前面我们说过BSP工程师主要是处理底层硬件和系统,所以C语言是主要的编程语言。 学习C语言,强烈推荐“C语言之父”Dennis Ritchie的《C程序设计语言》这本书。 这本书只有200多页,没有附录也只有100多页,但是字字都精致,甚至文中的例子程序都是直接libc库中的函数,比计算器还要经典国内著名C教材中的例子。 多少次!

4.Linux操作系统

这里所说的Linux系统与上面的Linux操作完全不同。 上面所说的Linux操作是指你的工作电脑是Linux系统,需要在上面下载、修改、编译、调试代码,而这里的Linux系统是指你的目标开发板上运行的Linux系统。 如果你是BSP工程师,你需要了解系统从硬件上电到完成Linux系统初始化和init进程的整个过程。 当然,这涉及到很多知识,所以我建议新手从Linux驱动开始。 所谓驱动程序,简单来说就是Linux系统中的一些模块。 这些模块都有统一的框架,开发者只需填写控制相应硬件的C程序代码即可。 通过学习Linux驱动,你会逐渐了解驱动框架、并发访问原理以及Linux分离分层的思想。 这将使得扩展到Linux系统的其他模块,甚至整个Linux系统变得非常容易。 对于修复Linux设备驱动程序的坏习惯,我首先推荐《Linux设备驱动程序》(翻译成中文为“Linux设备驱动程序”)。 本书中的大部分例子都是拿一小段内存来模拟一个Linux设备,然后实现相应的字符。 设备驱动,并以此为例说明设备驱动中的常见知识点。

掌握了Linux设备驱动程序后,应该对Linux操作系统有一个初步的了解和概况。 稍后你应该对Linux有一个系统的了解。 当然,如果这时候你有很强的毅力,直接阅读Linux源码也是一种选择。 不过我觉得更重要的是结合我们之前从驱动中提取的Linux思想,从整体上了解Linux系统。 这就不得不说到另一本经典书籍——《Linux内核开发》(翻译成中文为《Linux内核设计与实现》),这本书省略了很多细节,也很少在全文中列出大段代码。 相反,它概述了 Linux 设计和实现的原则。

整体掌握原理后,我们还缺乏Linux实现的具体细节。 《专业Linux内核架构》(中文译名《深入Linux内核架构》)是一个不错的选择,单从页数就可以体现出来。 原版有1337页,中文版有1055页。

7. 阅读建议