1.6 KiB
Embedded Systems Reverse Engineering
Week 1
Introduction and Overview of Embedded Reverse Engineering: Ethics, Scoping, and Basic Concepts
Non-Credit Practice Exercise 1 Solution: Explore in Ghidra
Answers
Question 1: What does the function return?
stdio_init_all() returns _Bool. The function signature is _Bool stdio_init_all(void).
Question 2: What parameters does it take?
None. The signature uses (void), which means zero parameters.
Question 3: What functions does it call?
In this build, it calls stdio_uart_init() to initialize serial output.
Question 4: What's the purpose?
Its purpose is to initialize standard I/O so printf()/puts() output can be transmitted over UART.
Expected Output
stdio_init_all() returns: _Bool
It takes 0 parameters
It calls the following functions: UART init
Based on these calls, I believe it initializes: Standard I/O for UART serial communication
Reflection Answers
-
Why would we need to initialize standard I/O before using
printf()? Without initialization, there is no configured output path.printf()needs a destination (UART in this exercise) to transmit characters. -
Can you find other functions in the Symbol Tree that might be related to I/O? Yes -
stdio_uart_init,__wrap_puts, and related low-level serial/output helpers are I/O-related. -
How does this function support the
printf("hello, world\r\n")call in main? It configures the UART output path so whenprintf()(optimized to__wrap_puts) runs, the string is sent over serial.