Вы находитесь на странице: 1из 2

Pre-Requisites

A. Digital and Analog electronics.


B. Micro-processors, Learn Micro-controller from basic to higher version
(AT89c51/Arduino/ARM/STM32F427).
C. An understanding of Multi-Tasking
D. A good understanding of DMA (Direct Memory Access), and how to implement it for
systems which have DMA capability.
E. How to develop and debug code for communications using RS-232, SPI, I2C, and
parallel data ports Learn Communication Protocol(I2C/SPI/UART/CAN).
F. Develop and debug code for peripherals such as UARTs, A/D & D/A converters,
timers, PWM generation from a timer, real-time clocks, etc.
G. Developing code to run under an RTOS (Real Time Operating System), and how to
use semaphores, mutexes, queues, inter-task communications.
H. Ability to debug multi-tasking code.
I. An understanding of the different kinds of memory (RAM, ROM, Flash), the
differences between them and how they are read, written, accessed.
J. An excellent knowledge of what interrupts are and how they work in code.
K. Kernel Programming
L. Device Drivers

1.Embedded Software Engineer


i. Micro-controller Firmware Engineer
ii. Embedded Linux Engineer / Embedded Operating System Engineer
iii. Embedded Networking Engineer
iv. Embedded Applications Engineer
v. Embedded - Technology experts
vi. Driver Development - Linux

2.Embedded Hardware Engineer

i. Hardwareengineer
ii. Board Design Engineer
iii. Board (hardware) validation engineer

3.Embedded System Engineer

4.Embedded Frimware Engineer

5.Application Engineer

i. Application Engineer Technical Support


ii. Tech Support Engineer
iii. Product Application Engineer (PAE)

A. C or C++: hardware related C programming is the bedrock of embedded engineering.


This includes knowledge of the processor and the compiler do behind the scenes
B. Understanding of operating systems: embedded developers usually need experience
in programming in embedded Linux or similar embedded operating systems
C. Knowledge of assembly language: competency in at least one assembly language,
such as ARM or x86

D. Basic electronics: embedded engineers use oscilloscopes, logic analyzers and


multimeters for debugging
E. Algorithms - search, sort, b-trees
F. Design Patterns - factory, observer, singleton etc.
G. Microprocessor fundamentals - interrupt processing, registers, assembly code,
etc.
H. Microcontroller fundamentals - ADC, DAC, Timers, PWM, DMA, watchdog, etc.
I. Memory - NOR, NAND, SRAM, DRAM, wear levelling
J. Basic protocols - I2C, SPI, UART, LIN *Advanced protocols - SATA, PCIE, USB,
CAN, MOST
K. Concurrent/ parallel programming - MPI for SMP etc.
L. UML - class diagram, component diagram, state diagram, sequence diagram
M. Perl or Python for scripting, for e.g. to modify simple text files.
N. Specialized techniques for embedded programming e.g. debouncing of switches,
resistive ladder switches, rotary encoders, etc.
O. Software architecture for embedded systems, software design, software
integration and / or system programming
P. Build environments - makefile, cmake
Q. Basic FPGA/ ASIC design, basic DSP
R. Embedded developers working on commercial IoT devices usually need experience
with some of the following: HMI programming, audio stacks (microphone, filters and
DSP)
S. Other programming languages which can be complementary are Rust, Go, Python

Вам также может понравиться