Download presentation
Presentation is loading. Please wait.
Published byBaldwin Gaines Modified over 8 years ago
1
The World Leader in High Performance Signal Processing Solutions Toolchain Basics
2
a 2 Components that make up blackfin toolchain GCC 3.4.4, GCC 4.0 already in place Compiler Binutils 2.15 Includes assembler and linker Elf2flt Utility that converts files from elf format to a flat file format Three different install options are available (first 2 recommended) Binaries Pre-compiled Binaries RPM Pre-Compiled Binaries in RPM Package Manager (RPM) format Compiling Source
3
a 3 Development Environment—Libraries What‘s the uClibc ? is a C library for developing embedded Linux systems. It is much smaller than the GNU C Library (glibc), but nearly all applications supported by glibc also work perfectly with uClibc. Why you need uClibc ? Any Unix-like operating system needs a C library: e.g. library which defines the „system calls'' open, read, write, ioctl, close and other basic facilities such as printf, molloc, exit...
4
a 4 Development Environment—Toolchain To use uClibc, you need to have a toolchain, which is composed of binutils, gcc, uClibc. The GNU Binutils are a collection of binary tools. The main ones are: ld - the GNU linker. as - the GNU assembler. Ar - A utility for creating, modifying and extracting from archives. c++filt - Filter to demangle encoded C++ symbols. addr2line - Converts addresses into filenames and line numbers. Gprof, Nlmconv, nm, objcopy, objdump, ranlib, Readelf, Size, Strings, strip, windres
5
a 5 Development Process — IDEs 1/3 Debugger Linux Platform (gdb or DDD) Breakpoints Watchpoints Backtrace Disassembled code Examine Memory Examine Registers GNU DDD is a graphical front-end for command-line debuggers such as GDB, DBX, WDB, Ladebug, JDB, XDB, the Perl debugger
6
a 6 Development Process — IDEs 2/3 Source Navigator Works under Windows and Linux Provides cross- reference information for all sources in a project Free (http://sourcenav.sourceforge.net)
7
a 7 Development Process — IDEs 3/3 Eclipse Java™-based IDE Commercial plug- ins available Cross-platform support Blackfin interface provided by Analog Devices Zero cost (http://www.eclipse.org)
8
a 8 BFLT file format Lightweight binary format for uClinux -Wl,-elf2flt options to convert ELF to bFLT Compared with ELF: Simpler header, Smaller size (no symbol table), Quick loading (relocation) Structure:
9
a 9 BFLT file format - header flat header: flthdr utility to display and modify header struct flat_hdr { char magic[4]; unsigned long rev; /* version */ unsigned long entry; /* Offset of first executable instruction with text segment from beginning of file */ unsigned long data_start; /* Offset of data segment from beginning of file */ unsigned long data_end; /* Offset of end of data segment from beginning of file */ unsigned long bss_end; /* Offset of end of bss segment from beginning of file */ /* (It is assumed that data_end through bss_end forms the bss segment.) */ unsigned long stack_size; /* Size of stack, in bytes */ unsigned long reloc_start; /* Offset of relocation records from beginning of file */ unsigned long reloc_count; /* Number of relocation records */ unsigned long flags; unsigned long filler[6]; /* Reserved, set to zero */ };
10
a 10 Relocation #define FLAT_FLAG_RAM 0x0001 /* load program entirely into RAM */ #define FLAT_FLAG_GOTPIC 0x0002 /* program is PIC with GOT */ #define FLAT_FLAG_GZIP 0x0004 /* all but the header is compressed */ #define FLAT_FLAG_GZDATA 0x0008 /* only data/relocs are compressed (for XIP) */ #define FLAT_FLAG_KTRACE 0x0010 /* output useful kernel trace for debugging */ Do relocate while program loading Each entry in the relocation table is an address of a location that needs to be relocated.
11
a 11 Demo - Adding User Applications to the uClinux Distribution To add your own user application to the Blackfin uClinux-dist, follow the link: http://docs.blackfin.uclinux.org/doku.php?id=addin g_user_applications http://docs.blackfin.uclinux.org/doku.php?id=addin g_user_applications
12
a 12 Demo: Debug kernel using KGDB To do source code kernel debug using KGDB: http://docs.blackfin.uclinux.org/doku.php?id=debuggers#deb ugging_kernel
13
a 13 Demo: Debug using JTAG (gdbproxy) http://docs.blackfin.uclinux.org/doku.php?id=debuggers#de bugging_via_jtag_gdbproxy
14
a 14 Demo – Debug application (gdbserver) http://docs.blackfin.uclinux.org/doku.php?id=debuggers#de bugging_via_ethernet
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.