嵌入式软件工程师杂谈 —– 什么是BSP工程师?
点击左上方蓝色“混说Linux”,选择“设为星标”
1
嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。
嵌入式硬件工程师主要职责是负责设计嵌入式系统的硬件原理图,使用相应的工具画出PCB图,后期配合嵌入式软件工程师调试系统。
嵌入式软件工程师从系统软件上又可以分为两种:BSP工程师和嵌入式应用软件工程师。嵌入式应用软件工程师主要是负责编写基于嵌入式系统的应用软件。类似于基于windows上的QQ、word。由于我本人是做BSP的,因此这里我们着重讨论BSP工程师。
那么BSP工程师的具体工作有哪些呢?
我们首先从嵌入式设备谈起,前面我们谈到了很多的嵌入式设备,从系统角度来讲这些设备有些是跑操作系统的,有些没有跑。对于不跑操作系统的设备来讲,其功能相对简单一点,使用的主控芯片一般也比较简单,比如风靡一时的51系列单片机、stm系列的单片机。对于这些简单系统来讲,它对软件开发人员要求相对比较低,当然也就没有我前面所说的分工那么详细,有时候甚至从画板、点亮、开发都是由一个人来完成的。对于跑操作系统来讲的设备,就不一样了。一般来讲,跑操作系统的设备其软件开发分三个阶段:
点亮板子
使能板子上所有设备
为板子开发应用程序
如前文所述,嵌入式系统是一个具有专一功能的系统,其上所有的硬件,软件都应该为这一功能服务。第二个阶段结束的时候,板子上所有的设备都已经可以正常使用了。这个阶段的任务就是开发应用程序来实现某种特定的功能,应用程序中会使用第二阶段提供的软件接口控制板子上的设备来完成这一功能。
上述前两个阶段属于BSP开发的内容,第三个阶段属于嵌入式应用软件开发的过程。综上所述,BSP工程师主要应该具备的能力主要有:
掌握计算机原理方面的知识; 掌握操作系统的相关知识,深入研究某种操作系统,目前来讲,研究linux操作系统应该是大部分人的选择; 基本的linux(开发环境)操作; 精湛的C语言功底和一定的C++/汇编的知识; 掌握一定的硬件和电路原理方面的知识; 熟悉常见的接口协议,如I2C, SPI, UART, USB等。
当然作为一个软件开发人员也必须掌握一些通用的软件,比如:
代码管理软件,常见的如git等; 代码阅读软件,这个就因个人喜好而不同了,比如:opengrok,source insight,vim下ctags/cscope插件组合等。
往期推荐