Goecode Technologies as the Internet of things (IoT), autonomous driving, and robotics, IOT and embedded engineering skills are becoming more and more relevant, particularly. Writing embedded software requires very different skills from enterprise or application software development. To celebrate the new filter for embedded engineers on Goecode, we have some questions you always wanted to know about embedded system, but were too afraid to ask.
What are embedded systems?
An embedded system is a computer with a dedicated function within a larger mechanical or electrical system. They often perform pre-defined tasks with very specific requirements.
Embedded systems can be microprocessors, the tiny electronic chips found inside a computer’s central processing unit (CPU), which compute and calculate the commands. They can also be microcontroller-based, which is usually a SoC (System on a chip) containing logic units, memory slots, and I/O peripherals, etc. In either case, there is an integrated circuit (IC) at the heart of the product that is generally designed to carry out computation for real-time operations.
What is the difference between an software engineer and a embedded engineer?
Like software engineers, embedded engineers code, debug, test and write the corresponding documentation. Unlike software engineers, embedded engineers work largely with hardware, and often need to develop or configure a custom operating system unique to the hardware and memory map of the device. Embedded Engineers must also consider safety.
How does IoT relate to embedded systems?
Most Internet of Things (IoT) products are in fact embedded devices which are connected to the internet. IoT fans imagine a world where the internet and cloud resources process huge amounts of data collected by these devices, and use it to improve the services and devices.
With the growth of IoT, micro-controller firmware engineers, who specialize in C programming, know some assembly languages, and are adept at designing simple devices, will be in high demand.
What do embedded engineers do?
Embedded engineers typically have control over both hardware and software design. Typically this requires an in-depth knowledge of embedded architectures.
What skills do embedded engineers have?
Embedded engineers generally come from an Electrical Engineering, Computer Science background and have total command of embedded architecture. The most common programming language used by embedded engineers is C and C++.
The five key roles of embedded system: micro-controller firmware engineers, embedded operating system engineers, embedded networking engineers, embedded applications engineer and embedded technology experts. Each has its own particular specialities, but in general the key skills include:
- C & C++: hardware related C language is the bedrock of embedded engineering.This includes knowledge of the processor and the compiler.
- Understanding of operating systems: embedded developers usually need experience in programming in embedded Linux.
- Knowledge of assembly language: competency in at least one assembly language, such as ARM or x86
Other skills include:
- Basic electronics: embedded engineers use oscilloscopes, logic analyzers and multimeters for debugging.
- Microprocessor fundamentals - interrupt processing, registers, assembly code, etc.
- Microcontroller fundamentals - ADC, DAC, Timers, PWM, DMA, watchdog, etc.
- Memory - NOR, NAND, SRAM, DRAM, wear levelling
- Basic protocols - I2C, SPI, UART, LIN *Advanced protocols - SATA, PCIE, USB, CAN, MOST
- Concurrent/ parallel programming - MPI for SMP etc.
- Perl or Python for scripting, for e.g. to modify simple text files.
- Specialized techniques for embedded programming
- Software architecture for embedded systems, software design, software integration and / or system programming
- Embedded developers working on commercial IoT devices usually need experience with some of the following: HMI programming, audio stacks.