Scan to FollowLearn Embedded Together, learn and grow together
What exactly is a BSP engineer? Let’s take a look at this article.
1. Embedded Systems
To understand what an embedded software engineer is, we first need to discuss embedded systems (embedded devices). Wikipedia defines embedded systems as follows:
An <span>Embedded System</span>
is a computer system embedded within a mechanical or electrical system, with specific functions and real-time computing performance.
In simple terms, an embedded system is a computer system with specific functions.
We encounter many embedded devices in our daily lives, such as smartphones, digital cameras, and other consumer electronics, as well as recently popular smart devices like smart speakers, smart TVs, and robotic vacuum cleaners.
It also includes automotive anti-lock systems, various medical imaging systems, and more.
In short, we may come across them in 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 talent is also increasing. So, what types of talent are needed?
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 are:
-
Responsible for designing the hardware schematic for embedded systems and using appropriate tools to create PCB layouts;
-
Later, collaborate with embedded software engineers to debug the system.
Embedded software engineers can be further divided into two types:
-
-
Embedded application software engineers
Embedded application software engineers are primarily responsible for writing application software based on embedded systems, similar to QQ or Word on Windows.
Since I work on BSP, we will focus on BSP engineers here.
3. BSP Engineers
BSP, which stands for <span>Board Support Package</span>
, means board-level 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 and creating PCB layouts, which the factory will use to produce the corresponding circuit boards.
An embedded system requires not only a circuit board but also corresponding software support. The prerequisite for software development is to ensure that the board operates normally and stably, and then to write the corresponding application software to achieve its specific functions.
The code that ensures the board operates normally and stably belongs to the board support package.
What specific tasks does a BSP engineer have?
Let’s first discuss embedded devices. As mentioned earlier, we talked about many embedded devices. From a system perspective, some of these devices run an operating system, while others do not.
For devices that do not run an operating system, their functionality is relatively simple, and the main control chips used are generally also simpler, such as the once-popular 51 series microcontrollers or the STM series microcontrollers.
For these simple systems, the requirements for software developers are relatively low, and thus the division of labor is not as detailed. Sometimes, a single person may complete everything from schematic design to debugging.
For devices that run an operating system, the situation is different. Generally, for devices that run an operating system, software development is divided into three stages:
1. Bring Up the Board
The first batch of boards shipped does not contain any software.
BSP engineers need to modify the reference code obtained from the chip manufacturer based on the hardware schematic and debug the board to ensure that the operating system runs 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 BSP engineers, 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 kernel porting and trimming.
2. Enable All Devices on the Board
In the previous stage, the board’s CPU and basic components are already functioning normally. In this stage, all peripherals are enabled, providing software control interfaces for the application programs to be developed later.
This process essentially involves the development of drivers under the operating system, requiring knowledge of hardware principles and relevant operating system knowledge.
3. Develop Applications for the Board
As mentioned earlier, an embedded system is a system with specific functions, and all hardware and software should serve this function.
By the end of the second stage, all devices on the board should be functioning normally.
The task in this stage is to develop application programs to achieve specific functions, using the software interfaces provided in the second stage to control devices on the board to complete this functionality.
4. Skills Required for BSP Engineers
The first two stages mentioned are part of BSP development, while the third stage is part of embedded application software development.
In summary, the main skills that BSP engineers should possess are:
Knowledge of Computer Principles
Knowledge of operating systems, with a focus on studying a specific operating system. Currently, most people choose to study the Linux operating system;
Basic Linux (development environment) operations;
Proficient in C programming and some knowledge of C++/Assembly.
Knowledge of Hardware and Circuit Principles
Familiarity with common interface protocols such as I2C, SPI, UART, USB, etc.
As a software developer, it is also essential to master some common software, such as:
Code management software, commonly like Git;
Code reading software, which varies by personal preference, for example: OpenGrok, Source Insight, or Vim with ctags/cscope plugin combinations.
Original text:https://luomuxiaoxiao.com/?p=170
This article is sourced from the internet, and the copyright belongs to the original author. If there is any infringement, please contact us for removal.

Add me on WeChat for high-quality embedded group discussions

Follow me on Learn Embedded Together, let’s learn and grow together.
If you find this article helpful, click “Share”, “Like”, or “View”!