thesofproject / soft

SOF Tools (now merged into SOF) - deprecated
8 stars 19 forks source link
audio debug probes topologies trace

Sound Open Firmware Tools

This is a collection of open source tools used to develop open source audio DSP firmwares for ALSA.

Building and Installing

./autogen.sh (only needed first time) ./configure make make install

rimage

rimage is used to convert ELF executable firmware files to the firmware file formats used by the kernel drivers.

e.g.

rimage -i elf_file -o kernel_file -m machine

rimage can also convert kernel firmware formats to flat binaries formats to assist in debugging :-

e.g. convert to flat binary, then ELF then dissasemble

rimage -i /lib/firmware/intel/reef-byt.ri -o image.bin -b -m byt

xtensa-byt-elf-objcopy -I binary -O elf32-xtensa-le -B xtensa image.bin image.bin.elf

xtensa-byt-elf-objdump -D image.bin.elf > image.dis.txt

sof-logger

sof-logger is used to print logs delivered from FW dma_trace mechanism, by searching log entries in *.ldc file generated by rimage.

Every entry declared in FW is placed in elf output file (e.g. sof-apl) in .static_log_entries section in a form of struct defined in sof/src/include/sof/trace.h in sof fw repo.

*.ldc file contains snd_sof_logs_header (defined in rmbox/logger_convert.c) following by .static_log_entries section incorporated from FW elf file (e.g. sof-apl). snd_sof_logs_header contains basic information about .static_log_entries section like base_address and data_length.

sof-logger works by reading entry parameters value and entries addresses from FW dma_trace mechanism and searching suitable entry in *.ldc file by its address.

Usage sof-logger <option(s)> <file(s)> Display mailbox contents -h help -l .ldc_file Specify the .ldc file -i in_file Get traces from in_file, instead of the default "/sys/kernel/debug/sof/etrace" -o out_file Specify the output file, instead of default stdout -t Get traces from "/sys/kernel/debug/sof/trace", instead of the default "/sys/kernel/debug/sof/etrace" -p Get traces from stdin, instead of the default "/sys/kernel/debug/sof/etrace" -c Set timestamp clock in MHz -e Enable checking firmware version with default verification file "/sys/kernel/debug/sof/fw_version" -v ver_file Enable checking firmware version with ver_file file, instead of default: "/sys/kernel/debug/sof/fw_version" -s Take a snapshot of state

Examples:

tests

To generate all test configuration files:

make tests