2166 views|1 replies

36

Posts

0

Resources
The OP
 

Skills required by MCU engineers and embedded engineers [Copy link]






1. Job analysis of single-chip microcomputer



1. Hardware direction



a. Familiar with the design and application of analog circuits and digital circuits;

b. Have experience in project schematic PCB design and hardware debugging;

c. Proficient in using hardware development tools (AD10, etc.) and PCB design software;

d. Master VHDL and Verilog hardware description languages and be able to write control logic;



2. Software level



a. Proficient in AVR, STM32 and other MCUs, familiar with various sensors;

b. Proficient in C/C++ language and have good code writing standards;

c. Familiar with SPI, IIC, UART, CAN, and can write a variety of bare metal drivers;

d. Proficient in using at least one single-chip microcomputer, such as STM32, MSP430, etc.;

e. Familiar with the use, debugging, simulation, and process of integrated development environments such as KEIL and IAR;

f. Familiar with at least one ARM architecture, such as Cortex-M3;

g. Understand the principles of real-time operating systems, such as UCOS/FreeRTOS/RT-thread;



2. Embedded job analysis



Next, let's analyze the job requirements and skill directions of embedded engineers. Let's learn how to become a qualified embedded engineer.



1. Embedded Software Development Engineer



C Development under Linux Platform (Large Company Making Embedded Products):

a. Proficient in C language;

b. Familiar with data structures;

[tables, stacks and queues, trees (balanced binary trees, Huffman trees, binary sorted trees, binary search trees, tree applications), graph storage methods, traversal, and related algorithms]



c. Understand and use common search and sorting algorithms;

[Static search: (1) sequential search (linear search), (2) binary search (binary or bisection search), (3) block search (indexed sequential search), dynamic search: (1) binary sorted tree (2) balanced binary tree, hash search (hash table)]



d. Familiar with Linux environment and able to write shell scripts;

[Understand the composition of Linux operating system and its various levels of implementation, and be able to read Makefile]



e. Familiar with Linux IO, processes, threads, and network programming (how to build concurrent servers);

f. Understand communication-related knowledge and master the use of at least one database;

g. Possess good programming habits and certain problem analysis and location capabilities, and be able to solve them;



2. Embedded System Engineer



a. Proficient in C language, understand assembly language, data structure and common algorithms;

b. Master a CPU architecture, familiar with common CPU architecture, understand MMU, CACHE, memory, DMA, etc.;

c. Proficient in an embedded operating system, familiar with common embedded operating systems, file systems, protocol stacks;

d. Proficient in Linux operating system transplantation, cutting, driver programming and debugging;

e. Have more than 3 development experiences in drivers such as LCD, Touch, CAMERA, USB, BT/WIFI/GPS, Sensor, etc.;

f. Have good English skills and team spirit;



3. Driver Engineer



a. Familiar with digital and analog electronics, and can understand schematic diagrams;

b. Familiar with various hardware protocols (SPI\IIC\UART, etc.) and kernel, fpga, etc.;

c. Have certain related basic theories and have the ability to read English documents;

d. Proficient in device tree, power management, memory management, file system management;

e. Familiar with Linux operating system (driver module), driver framework, and can write shell scripts and makefiles;



From the above, we can see that the job requirements for microcontrollers and embedded systems are different. Compared with single-chip microcomputers, embedded systems are more dependent on operating systems. In addition, although single-chip microcomputer engineers also use C language, the syntax and complexity of the language used are relatively low. Therefore, if we want to switch to embedded systems, we need to add the following knowledge to our existing knowledge system:



1. C/C++ advanced syntax

2. I/O operation

3. Data structure + algorithm

4. Embedded operating system



It is recommended to convert from single-chip microcomputer to embedded system. The direction that is more suitable for one's own expertise should be driver development. Single-chip microcomputer focuses on hardware and is low-level. In a broad sense, single-chip microcomputer development can also be regarded as embedded development, which is equivalent to a simple embedded system.



Single-chip microcomputer engineers generally have relatively familiar hardware knowledge. They only need to study the source code and architecture of embedded operating systems such as Linux in depth, and master the core technology of driver development under the Linux platform to realize the conversion from single-chip microcomputer engineer to embedded engineer. In addition, if you want to develop 32-bit single-chip microcomputers, you can also start with the STM32 series. There are still many related learning materials.

This post is from Programming Basics

Latest reply

This post was last edited by Alaric on 2021-3-28 10:37 Isn't this the recruitment requirement? Hardware foundation + programming foundation + algorithm foundation plus certain practical experience   Details Published on 2021-3-28 10:36
 

20

Posts

0

Resources
2
 
This post was last edited by Alaric on 2021-3-28 10:37

Isn't this the recruitment requirement? Hardware foundation + programming foundation + algorithm foundation plus certain practical experience

This post is from Programming Basics
 
 
 

Guess Your Favourite
Just looking around
Find a datasheet?

EEWorld Datasheet Technical Support

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号
快速回复 返回顶部 Return list