Week 1: Toolchain & gdb (ch. 2,3) Flashcards
What is needed on the development platform for you to interact with gdb to communicate with the device programmer?
- a gdb program that is compatible with the target processor
- a gdb-server programmer that can translate gdb requests to commands understandable by the device programmer
What are the 4 phases of microprocessor program development?
- Assembly/compile time
- user-created assembly code gets processed to make machine code and data
- Linking
- assembled programs combined into a memory image file
- Loading
- memory image file loaded into processor memory
- Execution/run-time
- processor executes loaded program in memory
- program counter becomes relevant now
What is openocd?
- functions as a gdb-server, so that gdb commands can be interpreted and requests sent to the hardware programmer to retrieve and return requested info to a gdb session
- provides facilities for in-circuit programming and on-chip debugging
What components make up a typical cross-platform development environment?
- Development Platform (Linux or Windows, where dev tools run)
- Device Programmer (intermediary hardware programming device, vendor-supplied, providing in-circuit programming support)
- Target Processor (memory image file loaded for here execution)
What is the toolchain? What components does this one have?
- all programs needed to develop software
- assembler (as)
- compiler (gcc)
- linker (ld)
- debugger (gdb)
- utility commands (objcopy, objdump)
- used on the development platform to develop code for target processor
What is in-circuit programming?
Moving code to the target platform
(device programmer provides in-circuit programming support)
How does gdb communicate with a gdb-server (openocd)?
via tcp/ip (telnet) or named pipes
Explain what the gdb-server programmer module is responsible for.
- It is the intermediary in the development platform that can translate gdb requests to commands understandable by the vendor device programmer
- Communicates with device programmer (has device driver support)
- openocd software does all of this
What is cross-platform development?
Developing code on a different processor than the one it is intended to run on
What does it mean when code is cross-compiled?
- developed and compiled on one platform to run on another
- using arm-none-eabi-gcc command
Once all hardware components are in place in the dev environment, what is the purpose of a host program on the development platform?
To interact with the target processor: programming or debugging