-
Notifications
You must be signed in to change notification settings - Fork 0
Study‐Plan‐Nvda
✅ Understand stack/heap/global memory in C
✅ Pointer arithmetic, array vs pointer differences
✅ const, volatile, restrict volatile example
✅ Struct padding, alignment, packing
✅ Unions & hardware register mappings example
✅ Bit manipulation and bitfields
✅ Function pointers, callbacks
✅ Data structures (ring buffer, linked list, memory pool)
Hands-On Tasks
🔲 Implement pointer increment demos
✅ Create struct & print field offsets using offsetof() link
✅ Create struct & print field offsets using contianerof() link
🔲 Implement bit macros for register operations
🔲 Implement a function-pointer state machine
🔲 Implement a lock-free ring buffer
🔲 Implement a fixed-size memory pool allocator
🔲 Write custom memcpy, memset, strlen
🔲 Mini-project: Memory dump + struct parser tool
🔲 Flow diagrams / sequence diagrams for memory operations
🔲 User vs kernel mode
🔲 System call mechanism
🔲 Context switching & scheduling basics
🔲 Virtual memory, MMU, paging, TLB
🔲 Page faults, memory maps
🔲 ELF basics (loader, relocations)
Hands-On Tasks
🔲 Inspect /proc//maps
🔲 Write a simple syscall tracer using ptrace()
🔲 Write code to force TLB misses & measure time
🔲 Draw memory hierarchy diagram
🔲 Draw syscall sequence diagram
🔲 Mini-project: ELF reader (print .text, .data, .bss)
🔲 PCIe basics: config space, BARs, MSI/MSI-X
🔲 DMA: coherent vs non-coherent, scatter-gather
🔲 IOMMU basics
🔲 Interrupt types: legacy, MSI, MSI-X
🔲 MMIO vs PIO
🔲 Ordering, barriers, memory fences for devices
Hands-On Tasks
🔲 Use lspci -vvv to examine real PCIe hierarchy
🔲 Write a dummy Linux kernel module that reads MMIO region
🔲 Implement a mock MSI interrupt handler
🔲 Inspect PCIe config space in a VM
🔲 Draw sequence diagram: CPU → PCIe → Device → DMA → Interrupt
🔲 Mini-project: Simulate DMA engine + register map in userspace
🔲 Kernel build system basics
🔲 Kernel boot flow
🔲 Device Trees
🔲 Workqueues, tasklets, softirqs
🔲 Interrupt framework
🔲 QNX microkernel fundamentals
Hands-On Tasks
🔲 Write a simple character driver
🔲 Expose custom sysfs entry
🔲 Use ftrace to trace driver functions
🔲 Use perf to profile kernel events
🔲 QNX thread scheduling demo (if available)
🔲 Draw sequence diagram for driver probe → init → interrupt handler
🔲 Mini-project: Dummy PCI-like driver (probe + BAR read)
🔲 Mutex, spinlock, RW locks
🔲 C11 atomics
🔲 Lock-free algorithms
🔲 False sharing & cache line alignment
🔲 Multi-core scheduling, NUMA
🔲 Virtualization: KVM, VMCS/VMCB basics
🔲 MMIO virtualization
Hands-On Tasks
🔲 Implement lock-free stack/queue using atomics
🔲 Demonstrate false-sharing performance issue
🔲 Use perf to analyze cache misses
🔲 Write minimal KVM demo to trap guest MMIO
🔲 Draw virtualization access sequence diagram
🔲 Mini-project: Multithreaded packet processor
Topics
🔲 ARM exception levels (EL0–EL3)
🔲 GIC interrupt controller
🔲 Cache maintenance operations (dsb, isb)
🔲 x86 ring levels, IDT, APIC/LAPIC
🔲 Paging structures for ARM & x86
🔲 SoC buses: AXI/AMBA
🔲 Boot flows
Hands-On Tasks
🔲 Write small ARM assembly snippet (stack ops)
🔲 Write x86 assembly snippet using cpuid
🔲 Implement custom exception test in QEMU
🔲 Draw SoC memory/interconnect diagram
🔲 Mini-project: Simple exception handler in ARM or x86 (QEMU)
🔲 GDB advanced features (watchpoints, reverse exec)
🔲 Debugging multithreaded apps
🔲 perf, ftrace, eBPF basics
🔲 Sanitizers: ASan/UBSan
🔲 Coverage: gcov/lcov
🔲 Static analysis: cppcheck, clang-tidy
Hands-On Tasks
🔲 Debug a deadlock via GDB
🔲 Trace a full function call graph with ftrace
🔲 Measure cache misses using perf stat
🔲 Generate coverage report using lcov
🔲 Draw debugging flow diagram
🔲 Mini-project: Debug broken multithreaded C program
🔲 ISO 26262 basics
🔲 MISRA-C compliance rules
🔲 ASPICE overview
🔲 System-level architecture
🔲 Interconnects, memory hierarchy
🔲 Interrupt routing, DMA path visualization
Hands-On Tasks
🔲 Perform MISRA-C check on existing code
🔲 Draw system architecture diagram (CPU → interconnect → device)
🔲 Draw memory hierarchy diagram
🔲 Draw interrupt routing flow
🔲 Tiny PCIe-style DMA simulator (registers + descriptor engine)
🔲 Multithreaded packet processor using lock-free queues
🔲 Character driver exposing MMIO registers + IRQ
🔲 Virtual device in QEMU/KVM with MMIO traps
🔲 Display-pipeline drawing
🔲 Rendering pipeline diagram
🔲 Sequence diagram for device init
🔲 System block diagrams for each week
🔲 How to add new printer support (Linux CUPS pipeline diagram)
🔲 How to write a driver probe sequence diagram
🔲 How to design a userspace DMA test tool