嵌入式BSP工程师基本任务分析

简介: 嵌入式BSP工程师基本任务分析

a4b09879a26040439bfcfdb8b4015dac.png

到底什么是BSP工程师呢?来看这篇文章吧


一、嵌入式系统


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

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

通俗的讲,嵌入式系统就是一种具有专一功能的计算机系统

我们身边就有好多嵌入式设备,常见的比如智能手机,数码相机等消费类的电子设备,再比如最近几年兴起的诸如智能音箱、智能电视、扫地机器人智能家居设备。

当然还包括汽车防抱死系统、各种医疗成像系统等设备。

总之各行各业我们都有可能接触到它,尤其随着智能化时代的到来,很多非智能的设备也将逐步由嵌入式设备所替代,典型的如智能门锁。


二、嵌入式工程师


随着嵌入式设备应用越来越广泛,相关人才的需求也越来越大。那么相关的人才都有哪些呢?

其中最主要的就是嵌入式工程师。

嵌入式工程师分为两种:嵌入式硬件工程师嵌入式软件工程师

嵌入式硬件工程师主要职责:

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

嵌入式软件工程师从系统软件上又可以分为两种:

  • BSP工程师
  • 嵌入式应用软件工程师

嵌入式应用软件工程师主要是负责编写基于嵌入式系统的应用软件。类似于基于Windows上的QQ, Word。

由于我本人是做BSP的,因此这里我们着重讨论BSP工程师。

6206d1cc83bd9c9a1c6694468c448d2b.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插件组合等。

目录
相关文章
|
监控 算法
偏最小二乘(Partial Least Squares,PLS)原理及模型建立
偏最小二乘(Partial Least Squares,PLS)原理及模型建立
偏最小二乘(Partial Least Squares,PLS)原理及模型建立
|
9月前
|
安全 芯片 Windows
U盘插上后显示为空?其实数据没丢,可以这样恢复
U盘变空并不等于数据丢失!本文详解U盘插入提示“格式化”、显示为空等常见问题的原因,教你如何在不格式化的前提下恢复数据,修复异常,并避免再次发生。内容涵盖逻辑错误识别、恢复软件使用步骤及U盘是否还能继续使用的判断方法,助你轻松应对U盘故障。
|
机器学习/深度学习 弹性计算 搜索推荐
真正的0代码,0脚本,0门槛,QwQ-32B一键部署!
阿里云最新发布的QwQ-32B模型通过强化学习显著提升了推理能力,在多个核心指标上达到DeepSeek-R1满血版水平,超越了DeepSeek-R1-Distill-Qwen-32B。用户可通过阿里云系统运维管理(OOS)的公共扩展功能,一键部署OpenWebUI+Ollama至ECS,轻松运行QwQ-32B模型。该方案支持本地部署和连接阿里云百炼在线模型,无需编写代码,操作简便,适合新手尝试。具体步骤包括:在阿里云控制台安装OpenWebUI扩展、选择ECS实例并创建、等待几分钟后获取URL链接,即可开始使用。此外,还提供了详细的配置指南和高级玩法介绍,帮助用户更好地利用该模型。
|
机器学习/深度学习 算法 前端开发
RAG-Gym: 基于过程监督的检索增强生成代理优化框架
本文介绍RAG-Gym框架,通过过程监督优化推理与搜索代理。针对传统RAG架构效能限制及提示工程依赖问题,提出统一优化方法。核心贡献包括:设计ReSearch代理架构实现推理与搜索协同;验证过程奖励模型提升性能;系统分析过程监督来源、奖励模型迁移性和性能扩展规律。实验表明,RAG-Gym显著增强知识密集型任务中搜索代理表现,为未来智能系统研发提供理论与实践参考。
340 3
RAG-Gym: 基于过程监督的检索增强生成代理优化框架
|
人工智能 开发框架 算法
《C++巧筑智能框架根基:开启 AI 开发新航道》
在科技飞速发展的今天,C++作为高效强大的编程语言,在构建人工智能开发框架基础架构中扮演着重要角色。本文探讨如何利用C++的优势,从数据处理、模型构建、训练及评估等模块出发,打造稳定、高效的AI开发框架,支持计算密集型任务,促进人工智能技术的发展与应用。
443 8
|
存储 传感器 边缘计算
构建成功的边缘计算基础设施:硬件选择与关键接口
构建成功的边缘计算基础设施:硬件选择与关键接口
784 8
|
机器学习/深度学习 存储 监控
基于YOLOv8深度学习的路面坑洞检测与分割系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割(1)
基于YOLOv8深度学习的路面坑洞检测与分割系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割
|
监控 Cloud Native 持续交付
实现容器集群轻松部署:Docker Swarm 集群管理解析
实现容器集群轻松部署:Docker Swarm 集群管理解析
1252 0
|
缓存 网络协议 算法
UDP如何实现可靠传输
UDP如何实现可靠传输
715 0
|
开发框架 小程序 JavaScript
【小程序开发框架选型】7大小程序开发框架,哪一个更适合你?
小程序越来越流行,微信小程序、百度小程序、支付宝小程序、头条小程序等等不断涌入我们的生活,随着小程序的火爆,各种小程序框架不断出现。小程序开发公认的7个小程序开发框架: 原生、uni-app、taro、mpvue、wepy、chameleon、remax。各有利弊。
2842 0