What Does an Embedded BSP Engineer Do?

Click on the above“Wheat Uncle”, select“Top/Star Official Account”

Welfare dry goods delivered first-hand
Hello everyone, I am Wheat.
Today we will learn about what exactly a BSP engineer is.

1. Embedded Systems

To understand what an embedded software engineer is, we first need to talk about embedded systems (embedded devices). According to Wikipedia, an embedded system is defined as follows:

An embedded system (Embedded System) is a computer system that is embedded within a mechanical or electrical system, with a specific function and real-time computing performance.

In simple terms, an embedded system is a computer system with a specific function.

There are many embedded devices around us, common examples include smartphones, digital cameras, and other consumer electronic devices, as well as the recently popular smart speakers, smart TVs, robotic vacuum cleaners, and smart home devices.

Of course, it also includes car anti-lock systems, various medical imaging systems, and other devices.

In short, we may encounter it in various industries, especially with the advent of the intelligent era, many non-smart devices will gradually be replaced by embedded devices, such as smart locks.

2. Embedded Engineers

As the application of embedded devices becomes more widespread, the demand for related talents is also increasing. So what kinds of talents are related?

The most important among them is the embedded engineer.

Embedded engineers are divided into two types: embedded hardware engineers and embedded software engineers.

The main responsibilities of embedded hardware engineers are:

  • Responsible for designing the hardware schematic of the embedded system and using appropriate tools to draw the PCB layout;
  • Later, cooperate with embedded software engineers to debug the system.

Embedded software engineers can be further divided into two types:

  • BSP engineers
  • Embedded application software engineers

Embedded application software engineers are mainly responsible for writing application software based on embedded systems, similar to QQ and Word on Windows.

Since I work on BSP, we will focus on BSP engineers here.

What Does an Embedded BSP Engineer Do?

3. BSP Engineers

BSP, short for Board Support Package, means Board Support Package in Chinese.

A BSP engineer, as the name suggests, is responsible for the development, debugging, and maintenance of the board support package.

So what is a board support package?

As mentioned earlier, embedded hardware engineers are responsible for designing hardware and drawing PCB layouts, and factories will produce corresponding circuit boards based on the PCB layouts.

An embedded system needs not only a circuit board but also corresponding software support. The prerequisite for software development is to first ensure that the board works normally and stably, and then to write corresponding application software to achieve its specific functions.

The code that ensures the board works normally and stably belongs to the board support package.

What are the specific tasks of a BSP engineer?

We will first discuss embedded devices. Earlier, we mentioned many embedded devices; from a system perspective, some of these devices run operating systems, while others do not.

For devices that do not run an operating system, their functions are relatively simple, and the main control chips used are generally also simpler, such as the once-popular 51 series microcontrollers and STM series microcontrollers.

For these simple systems, the requirements for software developers are relatively low. Naturally, the division of labor is not as detailed as mentioned earlier, and sometimes a single person may handle everything from schematic design to debugging and development.

For devices that run operating systems, it is different. Generally, the software development for devices running operating systems is divided into three stages:

1. Bring Up the Board

The first batch of boards produced does not contain any software.

BSP engineers need to modify the reference code obtained from the chip manufacturer in conjunction with the hardware schematic, debug the board, and ensure that the operating system on the board can work normally and stably;

thus providing a stable development and debugging environment. This process is called bringing up the board, commonly referred to as Bringup.

This is one of the most valuable tasks for a BSP engineer, as it requires a certain breadth and depth of knowledge.

This involves knowledge of computer principles, operating systems, processor architectures, as well as some hardware knowledge.

In summary, the core work is the porting and trimming of the kernel.

2. Enable All Devices on the Board

In the previous stage, the board’s CPU and basic components can work normally. In this stage, all peripherals will be enabled, and corresponding software control interfaces will be provided for the application programs to be developed later.

This process essentially involves developing drivers under the corresponding operating system, which requires an understanding of hardware working principles and knowledge of operating systems.

3. Develop Application Programs for the Board

As mentioned earlier, an embedded system is a system with a specific function, and all hardware and software on it should serve this function.

By the end of the second stage, all devices on the board can be used normally.

The task of this stage is to develop application programs to achieve a specific function, where the application program will use the software interfaces provided in the second stage to control the devices on the board to complete this function.

4. Skills Required for BSP Engineers

The first two stages above belong to the content of BSP development, while the third stage belongs to the process of embedded application software development.

In summary, the main skills that BSP engineers should possess include:

Knowledge of Computer Principles

Knowledge of operating systems, with in-depth research on a certain operating system; currently, studying Linux operating systems should be the choice for most people;

Basic operations in the Linux (development environment)

Excellent proficiency in C language and some knowledge of C++/Assembly.

Knowledge of Hardware and Circuit Principles

Familiarity with common interface protocols such as I2C, SPI, UART, USB, etc.

Of course, as a software developer, one must also be familiar with some common software, such as:

Code management software, commonly like git;

Code reading software, which varies by personal preference, such as: opengrok, source insight, or the ctags/cscope plugin combination under vim, etc.

Original article address: https://luomuxiaoxiao.com/?p=170

Copyright statement: This article is sourced from the internet, and the copyright belongs to the original author. For copyright issues, please contact for deletion.

Previous Recommendations

10 Days to Learn STM32 Learning Insights Summary

My Cousin Enters 985, Really Difficult

Chaotic Pendulum of Order Four

This Free Circuit Simulation Tool is Yyds

Skillfully Use Macro Definitions to Improve Development Efficiency

Another Open Source Artifact, Worth Collecting and Learning!

Leave a Comment