Let’s investigate my post to understand popped question in our mind one by one.
1. What is an embedded system?
It is a controller with a dedicated function, embedded as part of a complete device often including hardware and mechanical part. It uses data, information, command from other system or devices as input, then processes it to make output as converted data, command to other system or displayed data to user.
Embedded system includes embedded hardware, refers to the physical elements that make up a embedded system. This include monitor, peripheral devices, memory, … which are controlled by embedded microprocessor.
Then embedded software is software written to control embedded hardware, normally microprocessor, to process input and scarify output.
For example, a smart rice cooker includes an embedded system inside it. Temperature sensor, pressure sensor are used to detect cooking condition as input; the core provides heat to rice and LCD displays current time and condition as output. Microprocessor process temperature, pressure, humidity input data to control heat core to cook the rice. And of course, a software is written only for it to control other devices in system.
We have a cooking system embedded into a cooker. Much more clear now right?
2. Who is an embedded software engineer?
Not only cookers, manufacturers build embedded software into the electronics of cars, telephones, modems, robot appliances, toys, security systems, televisions and set-top boxes, and digital watches, for example.
As you can see, we have a lot of chances to work for those manufacturers as an embedded software engineer, who develop software for embedded system.
3. How to classify embedded systems?
As you can see, microprocessors are the most important part in embedded system. Depend on it we can understand the performance and capability of an embedded system.
Because of the variation of microprocessors family, I will choose ARM Cortex Processors to work with in my every post, and also to help you understand them in detail.
Bellow classification also decides what we will learn in all my blogs:
- ARM Cortex-A family: Applications processors for full OS and 3rd party application. With a powerful processor, we can have a Embedded Linux or event Android system, where we can easily work with performance 3rd party as QT, BT stack, USB stack, Network stack …
- ARM Cortex-R family: Embedded processors for real-time signal processing, control applications. We can make the best time respond with this kind of processor, where we can use RTOS for programming as uC-OSII, uC-OSIII, FreeRTOS, …
- ARM Cortex-M family: Micro-controller oriented processors for MCU and SoC application. Small embedded system with specific features can be make easily. These systems focuses on power performance and cost.
Now we have 3 type of embedded software programming according to above chip family: Micro-Controller programming, RTOS programming and Embedded Linux programming.
4. How to become an embedded software engineer?
The answer is simple now, go indeed to each kinds of embedded system, then you will get not only overview of almost embedded systems, but also the sharp skills and knowledge in your work.
Below table describes essential things in each kind:
|Blog tutorial link
Datasheet, schematic reading
C language programming
Basic protocol: UART, I2C, SPI, RS232, JTAG…
Advanced protocol: SATA, PCIE, USB, CAN, MOST…
Micro-controller programming skills
RTOS knowledge, skills
|Embedded Linux Programming
RTOS Programming skills
Bring up system skill
Script programming language: bash shell, python
Application language: C++, Java, Android
|Embedded Linux Programming
5. Now what are you waiting for? Let choose your interesting thing to begin and go along with me in the journey to become an embedded software engineer.