tools
Table of Contents
http://kaiwantech.wordpress.com/2013/12/28/linux-tools-for-the-serious-systems-programmer/
Linker scripts
- kernel: arch/$(ARCH)/kernel/vmlinux.lds
- userland, embedded in the toolchain, see strace ld –verbose
Memory
Real-time
Debugging
OpenOCD
Profiling
http://elinux.org/Kernel_Trace_Systems
http://rostedt.homelinux.com/kernelshark/
Measuring execution time in ARM Cortex A8
from stackoverflow:
valgrind (only supported on cortex ARM processors.. boo) mprof (not so hot with threads?) gprof (not so hot with threads?) oprofile (requires kernel mods, but most modern kernels have it. I've used this under ARM. systemtap (recently ported to arm, looks awesome - like dtrace for Linux) strace and ltrace can actually be useful sometimes, although very high-level iostat et all as well if you want to kick it old school. Fair amount of information in /proc/ and /sys if you dig ioapps - IO tracing lsof is useful for tracking stuck sockets and file handles systat pmap iptraf tcpdump perftools - CPU and memory profiling bootchart QEMU can host ARM kernels / binaries, and can be instrumented from outside. It's proven useful to me a couple times.
Manual instrumentation using the gcc hooks
void __cyg_profile_func_enter (void *, void *) __attribute__((no_instrument_function)); void __cyg_profile_func_exit (void *, void *) __attribute__((no_instrument_function));
http://dtrace.org/blogs/brendan/2011/12/16/flame-graphs/
In Linux, ARM MPU counters profile information are normally accessed through the kernel via the OProfile tool or the Linux perf events framework.
latency plots
Static analysis
splint
Using clang: https://interrupt.memfault.com/blog/arm-cortexm-with-llvm-clang
Compiling the kernel
Useful in embedded systems, as only the strongly recommended options are set to Y:
make allnoconfig # useful in embedded systems, setting the strongly recommended options to Y make clean # remove most generated files but keep config make mrproper # remove all generated files make distclean # also remove the editor backup and patch reject files make oldcondif make make LOADADDR=0x80008000 uImage make dtbs
Patches
- quilt, tools to manage a stack of patches
- git
tools.txt · Last modified: by admin