#!/usr/bin/env bash # Kaisa:对 hda_link_dma_hw_params / snd_hdac_ext_bus_link_set_stream_id / sof_ipc3_pcm_hw_params # 做 function_graph 追踪(需 root、CONFIG_FUNCTION_GRAPH、debugfs 已挂载)。 # 用法:sudo ./scripts/collect-hda-link-ftrace.sh [plughw:0,3] # 产出:/tmp/hda_link_ftrace_.txt;请复制到 audio_topology/collected/ # 详见 patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md §6.1 set -euo pipefail if [[ "${EUID:-}" -ne 0 ]]; then echo "请使用 sudo 运行。" >&2 exit 1 fi PLUG="${1:-plughw:0,3}" TRACING="${TRACING:-/sys/kernel/tracing}" if [[ ! -d "$TRACING" ]]; then TRACING="/sys/kernel/debug/tracing" fi if [[ ! -d "$TRACING" ]]; then echo "未找到 tracing($TRACING)。请确认 CONFIG_FTRACE。" >&2 exit 1 fi TS=$(date +%Y%m%d_%H%M%S) KR=$(uname -r) OUT="/tmp/hda_link_ftrace_${KR}_${TS}.txt" echo "tracing dir: $TRACING" echo 0 > "$TRACING/tracing_on" 2>/dev/null || true echo function_graph > "$TRACING/current_tracer" echo 'hda_link_dma_hw_params' > "$TRACING/set_ftrace_filter" echo 'snd_hdac_ext_bus_link_set_stream_id' >> "$TRACING/set_ftrace_filter" echo 'sof_ipc3_pcm_hw_params' >> "$TRACING/set_ftrace_filter" echo 1 > "$TRACING/options/funcgraph-proc" 2>/dev/null || true : > "$TRACING/trace" echo 1 > "$TRACING/tracing_on" echo "播放: speaker-test -D $PLUG -c 2 -t wav -l 1 (约 8s)" timeout 10 speaker-test -D "$PLUG" -c 2 -t wav -l 1 >/dev/null 2>&1 || true echo 0 > "$TRACING/tracing_on" { echo "### uname -r: $KR" echo "### plughw: $PLUG" echo "### ftrace filter:" cat "$TRACING/set_ftrace_filter" 2>/dev/null || true echo "### trace:" cat "$TRACING/trace" } > "$OUT" echo "已写入: $OUT ($(wc -l < "$OUT") 行)" echo "复制到仓库: cp $OUT /path/to/chromebox_10th_audio_driver/audio_topology/collected/"