2016-09-28 00:29:55 +08:00
|
|
|
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
|
|
|
|
|
2018-10-12 19:02:55 +08:00
|
|
|
|
|
|
|
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
|
2018-10-24 21:17:33 +08:00
|
|
|
-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"
|
2018-10-12 19:02:55 +08:00
|
|
|
-s Take a snapshot of state
|
|
|
|
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
2018-10-24 21:17:33 +08:00
|
|
|
- Get traces from "/sys/kernel/debug/sof/etrace" file, verifies fw_version with
|
|
|
|
"/sys/kernel/debug/sof/fw_version" and prints logs to stdout
|
|
|
|
|
|
|
|
$ sof-logger -l ldc_file -e
|
|
|
|
|
|
|
|
- Get traces from "/sys/kernel/debug/sof/etrace" file, verifies fw_version with
|
|
|
|
ver_file file and prints logs to stdout
|
|
|
|
|
|
|
|
$ sof-logger -l ldc_file -v ver_file
|
|
|
|
|
2018-10-12 19:02:55 +08:00
|
|
|
- Get traces from "/sys/kernel/debug/sof/etrace" file and prints logs to stdout
|
|
|
|
|
|
|
|
$ sof-logger -l ldc_file
|
|
|
|
|
|
|
|
- Get traces from "/sys/kernel/debug/sof/etrace" file and prints logs to
|
|
|
|
out_file file
|
|
|
|
|
|
|
|
$ sof-logger -l ldc_file -o out_file
|
|
|
|
|
|
|
|
- Get traces from "/sys/kernel/debug/sof/trace" file and prints logs to stdout
|
|
|
|
|
|
|
|
$ sof-logger -l ldc_file -t
|
|
|
|
|
|
|
|
- Get traces from "/sys/kernel/debug/sof/trace" file and prints logs to
|
|
|
|
out_file file
|
|
|
|
|
|
|
|
$ sof-logger -l ldc_file -t -o out_file
|
|
|
|
|
|
|
|
- Get traces from stdin and prints logs to stdout
|
|
|
|
|
|
|
|
$ sof-logger -l ldc_file -p
|
|
|
|
|
|
|
|
- Get traces from stdin and prints logs to out_file file
|
|
|
|
|
|
|
|
$ sof-logger -l ldc_file -p -o out_file
|
|
|
|
|
|
|
|
- Get traces from trace_dump file and prints logs to stdout
|
|
|
|
|
|
|
|
$ sof-logger -l ldc_file -i trace_dump
|
|
|
|
|
|
|
|
- Get traces from trace_dump file and prints logs to out_file file
|
|
|
|
|
|
|
|
$ sof-logger -l ldc_file -i trace_dump -o out_file
|
|
|
|
|
|
|
|
- c flag is intented for defining clock value (in MHz) used to format log
|
|
|
|
timestamps. By default clock value is set to 19.2 (MHz). Below example
|
|
|
|
set clock value to 19.9 (MHz).
|
|
|
|
|
|
|
|
$ sof-logger -l ldc_file -i trace_dump -o out_file -c 19.9
|
|
|
|
|
|
|
|
|
2018-09-04 22:47:22 +08:00
|
|
|
tests
|
|
|
|
=====
|
|
|
|
|
|
|
|
To generate all test configuration files:
|
|
|
|
|
|
|
|
make tests
|