Skip to main content
grasp.study
About
Explore
Pricing
Log in
Try it for free
Back to course
👋
Welcome to a Grasp lesson
Create a free account
to keep studying and create your own study path.
Embedded Systems Engineering Curriculum
·
Module 3
The Build Process and Program Execution
1
C Compilation Process
Trace C source code through all compilation stages: preprocessing, compilation, assembly, and linking.
2
Understanding the Linker: Symbol Resolution, Relocation, and Strong vs. Weak Symbols
Explain the linking process, including symbol resolution, relocation, and the difference between strong and weak symbols.
3
ELF Sections and Memory Layout
Identify and explain ELF sections (.text, .data, .bss, .rodata, .plt, .got) and their roles in memory layout.
4
Startup Code: Before main()
Explain the sequence of startup code execution before main(): vector table setup, copying initialized data, and zeroing BSS.
5
Customizing Linker Scripts for Embedded Systems
Write and modify linker scripts to control memory regions and section placement for embedded targets.
6
Cross-Compilation Toolchain Setup and Optimization
Set up a cross-compilation toolchain and apply target-specific optimization flags.
7
Static Analysis for C/C++: Catching Bugs Early
Use static analysis tools (e.g., cppcheck, clang-tidy) to detect undefined behavior and common C pitfalls.
8
Debugging with DWARF: An `objdump` and `dwarfdump` Tutorial
Inspect DWARF debugging symbols using `readelf` or `dwarfdump` to understand how source-level debugging is enabled.
Previous module
Data Representation and Low-Level Manipulation
Next module
CPU and System Architecture