A
Inspired by posts asking about electrical engineering vs computer/software engineering in embedded systems, I've assembled a list of topics from each field that I think are relevant to embedded systems generally. Many of these are more relevant to specific types of systems, but I think this is a good discussion starter. Is this list biased toward a particular field? Are there any glaring holes? (edited to add commenter contributions)
Off the top of my head, this is how I would break down the major topics. There's a bonus "well-rounded engineer" list at the end.
Abstract, electrical engineering
Off the top of my head, this is how I would break down the major topics. There's a bonus "well-rounded engineer" list at the end.
Abstract, electrical engineering
- Digital logic
- Analog Design
- Control Systems, Systems Theory, Feedback
- Communications
- Protocols
- Yield, Reliability
- Modeling & Simulation
- RF, EMF, Thermal, Optical
- Power electronics
- Microprocessors, microcontrollers, DSP, GPU
- Design, Manufacturing, Test, Quality Assurance
- Integrated circuits
- PCB, EMC, EMF, ESD
- Discrete Electronics & Components
- Resistors, capacitors, transistors
- Operational Amplifiers
- Power - amplifiers, drivers, high frequency, electrical grid
- FPGA, PLA, CLPD design
- Memory - SRAM, DRAM, Non-volatile (flash, eeprom, FRAM, MRAM, battery-backed)
- Storage - HDD, SSD
- Circuit protection
- Sensors, Actuators
- basic architecture (vNeuman cycle, Harvard, 1/multi busses, switch fabric)
- applied digital logic: busses, encoders, decoders, muxes, adder, multiplier, memory
- SRAM, DRAM, FLASH, refreshing, muxed busses, latency versus throughput
- rotating memory (disks), access time, throughput, caching, elevator algorithm
- ISA categories (CISC, RISC, VLIW)
- instruction-level parallelism (SISD, SIMD, MIMD, MISD, etc.)
- ISA / assembler principles (0,1,2,3 operands, addressing modes, auto in/dec, ...)
- pipe-lining, hazards, interlocks, stalls, delay slots, branch prediction
- virtual memory, address translation
- caches, cache hierarchies, data locality, prefetching, performance impact, coherency, write-through/delayed write
- implementation paralellism, CISC->RISC decoding, execution units
- user / OS mode, mode switching, hartbeat vulnerability
- task switching, threads versus processes, stackless versus stackfull
- the troubles of bench-marking complex systems
- CPU / GPU
- ISO layers, internet equivalents
- shannon, bit rate, baud rate
- self-clocked / separate clock
- keeping the O open
- delay, throughput, round-trip
- channel sharing (time, frequency, color, etc.)
- transmission: electrical, optical, wireless, baseband, wide spectrum
- speed versus power versus distance, link budget
- multi-access, collision, slots, CSMA/CD
- practical examples: CAN, UART/RS232, USB, TCP, UDP, IP, internet/WWW, WiFi, BL, BLE, LoRa, packet radio
- routing, packet switching, circuit switching
- multiplexing/de-multiplexing
- in-band/out-band signaling, bit/byte stuffing
- encoding, encryption, compression
- 2-armies problem
- internet vulnerabilities
- Data Structures & Algorithms
- Software Patterns
- Operating Systems - Windows, Linux/Unix, real-time (RTOS), light-weight
- Networks and Network Components
- Compilers, languages
- Calculus, differential equations
- Frequency/Phase analysis - Bode plots
- Signal processing, complex math
- DSP implementations
- Big O, computational complexity
- Linear Algebra
- Set Theory
- Network Theory
- AI and ML, Neural Networks
- DSP Algorithms - Fourier transforms, DFT
- Information Theory
- Probability, Statistics, Combinatorics
- Graph Theory
- Discrete mathematics
- Systems Engineering
- Process, Standards, Documentation
- Project Management
- Psychology, Team Dynamics
- Legal framework - laws & process, compliance, regulations
- Communicating and Presenting - technical, non-technical, teaching