What Does an Embedded BSP Engineer Do?

Today we will learn what a BSP engineer is.

1. Embedded Systems

To understand what an embedded software engineer is, we must first discuss embedded systems (embedded devices). The definition of embedded systems on Wikipedia is as follows:
An embedded system (<span>Embedded System</span>) is a computer system that is embedded within mechanical or electrical systems, designed for 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, commonly seen in consumer electronics like smartphones and digital cameras, as well as the recently popular smart speakers, smart TVs, and robotic vacuum cleaners in smart home devices.
Of course, it also includes automotive anti-lock systems, various medical imaging systems, and other devices.
In summary, we may encounter embedded systems across various industries, especially with the advent of the intelligent era, where 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 types of talents are involved?
The most important of these is the embedded engineer.
Embedded engineers can be divided into two types: embedded hardware engineers and embedded software engineers.
The main responsibilities of embedded hardware engineers include:
  • Designing the hardware schematic of embedded systems and using relevant tools to draw the PCB diagram;
  • Later collaborating 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 or Word on Windows.
As I am involved in BSP, we will focus on discussing BSP engineers here.
What Does an Embedded BSP Engineer Do?

3. BSP Engineers

BSP, short for <span>Board Support Package</span>, means Board Support Package in Chinese.
A BSP engineer is, as the name suggests, 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, drawing the PCB diagram, and the factory will produce the corresponding circuit board based on the PCB diagram.
An embedded system alone is not enough with just the circuit board; it also requires corresponding software support. The prerequisite for software development is to first ensure that the board operates normally and stably, and then write the corresponding application software to achieve its specific functionality.
The code that ensures the board operates normally and stably belongs to the board support package.

What are the specific tasks of a BSP engineer?

Let’s first talk about embedded devices. We previously discussed many embedded devices; from a system perspective, some of these devices run operating systems while others do not.
For devices that do not run operating systems, their functionality is relatively simpler, and the main control chips used are generally 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, and the division of labor is not as detailed as previously mentioned; sometimes, even the tasks of drawing the board, lighting it up, and development can be completed by a single person.
For devices that run operating systems, the situation is different. Generally, for devices running operating systems, software development is divided into three stages:

1. Bring Up the Board

The first batch of boards shipped does not include 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 operate 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 architecture, and some hardware knowledge.
In summary, the core task 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 software control interfaces will be provided for the application programs to be developed later.
This process is essentially the driver development process under the corresponding operating system, requiring an understanding of hardware principles and knowledge of operating systems.

3. Develop Application Programs for the Board

As mentioned earlier, embedded systems are systems with specific functions, and all hardware and software on them should serve this function.
By the end of the second stage, all devices on the board should be functioning normally.
The task of this stage is to develop application programs to achieve specific functions, using 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 mentioned above pertain to BSP development, while the third stage relates to embedded application software development.
In summary, the main skills that a BSP engineer should possess include:

Knowledge of Computer Principles

Understanding of operating systems, with in-depth research into a specific operating system; currently, studying the Linux operating system is the choice for most people;
Basic Linux (development environment) operations;
Proficient in C programming and some knowledge of C++/assembly language.

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 master some general software, such as:
Code management software, commonly git, etc.;
Code reading software, which varies by personal preference, such as opengrok, source insight, or the vim ctags/cscope plugin combination.
Original article link: 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 removal.
END
What Does an Embedded BSP Engineer Do?
Write
Spring
Couplets
Send
Red
Envelope
What Does an Embedded BSP Engineer Do?

With the New Year approaching, there is just over a month left. The Breadboard Community, as in previous years, is starting the year-end couplet activity.

As usual, write couplets, requiring originality and relevance to the electronics industry.

Activity Rewards:

4 pairs of “Best Couplets”, each rewarded with a 100 yuan JD E-card.

5 pairs of “Excellent Participation”, each rewarded with a 30 yuan JD E-card.

How to Participate:

Click “Read the original text” in the lower left corner and reply to the post!

Leave a Comment