View On GitHub
The Embedded New Testament
The "Holy Bible" for embedded engineers
Project maintained by
theEmbeddedGeorge
Hosted on GitHub Pages — Theme by
mattgraham
Items to prepare for general embedded interview
Operating systems/Computer Architecture:
Process and Threads
Process Scheduling
Synchronization IPC mechanisms (mutex/spinlock/semaphore)
Memory Management (Virtual memory/paging/translation)
Producer and Consumer Problem
Caching (cache coherency/cache line)
Memory mapped IO/ IO Mapped IO
Interrupt
(Done)
Context switch (process/ISR)
Registers/instructions/execution
(Done)
ARM programmer’s model
(Done)
Bus protocol
(Done)
UART
(Done)
SPI
(Done)
I2C
(Done)
RS232/422/485
(Done)
Linux Kernel concepts:
Linux boot sequence
Buffer sharing: DMA Buf & ION
Wait events/Wait queues
ISR handling (Top half/Bottom half)
Bottom Half - Tasklet/Workqueue/SoftIRQ
Platform driver
Driver probe (Module init, driver register, compatibility string)
Device Tree (Device nodes and parsing)
Clocks/Regulators/GPIO/Pinctrl
IOMMU/MMU
Timer Library
IOCTL, notify dirent
kmalloc/vmalloc
kmap/mmap/ioremap
sysfs/debugfs/procfs
C programming:
What is static keywords?
(Done)
What is volatile for?
(Done)
Macro usage
(Done)
Network
Network OSI layers
(Done)
TCP/UDP
IP
(Done)
Ethernet
Router/Switch
Algorithm and data structure
Linked list
(Done)
reverse Linked list
(Done)
delete a node from the linked list
(Done)
delete duplicate
(Done)
detect cycle
(Done)
Implement hash table with linked list
(Done)
Implement queue with linked list
(Done)
String
reverse string
(Done)
check whether it is palindrome
(Done)
implement strstr()
(Done)
implement atoi()/itoa()
Circular buffer
State machine
(Done)
Stack
(Done)
Queue
(Done)
Binary search tree
(Done)
DFS
(Done)
BFS
(Done)
Memory api
safe memcpy/memmove
(Done)
sizeof
(Done)
alligned_malloc
(Kinda Done)
wrapper api to read/write arbitrary bytes with fix-byte API
Bitewise operation
(Done)
hamming distance
(Done)
plus without using ‘+’ (A plus B)
(Done)
reverse bits
(Done)
Power of 2
(Done)
Add binary
(Done)
Single number
(Done)
Check endianess
(Done)