From 84fd0a87aa55837d608cc60097b20f664060fe69 Mon Sep 17 00:00:00 2001 From: MeowOS Date: Tue, 1 Sep 2026 11:06:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(audiod):=20ALSA=20=E5=87=A0=E4=BD=95?= =?UTF-8?q?=E6=94=B6=E7=AA=84=20period=3D1024=C3=974(tiny=5Falsa=E6=83=AF?= =?UTF-8?q?=E4=BE=8B)=20=E2=80=94=20=E6=A0=B9=E6=B2=BB=E9=95=BF=E6=B5=81?= =?UTF-8?q?=E5=81=9C=E6=91=86(=E9=A9=B1=E5=8A=A8=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=B7=A8buffer=E8=87=B4hbc3000=E6=A1=A5=E5=91=A8=E6=9C=9F?= =?UTF-8?q?=E4=B8=AD=E6=96=AD=E7=A8=80=E7=BC=BAwedge;=20tonepcm2=E7=9F=A9?= =?UTF-8?q?=E9=98=B5=E5=AE=9E=E6=B5=8B60s=E9=9B=B6stall)=E3=80=82=E5=AE=BF?= =?UTF-8?q?=E4=B8=BB38/38=20PASS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patch_v2/meow_audiod/meow_audiod | Bin 149468 -> 149500 bytes patch_v2/meow_audiod/meow_audiod.c | 6 ++++++ patch_v2/tools/tonepcm2.c | 11 +++++++++++ scripts/build/fw_content.conf | 2 +- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/patch_v2/meow_audiod/meow_audiod b/patch_v2/meow_audiod/meow_audiod index ce77121f085f6bd2d529509d17e7ddb0fb8f45f9..d278a877668a21d60abf3cc1af66f9c4d77e21ac 100755 GIT binary patch delta 27902 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 Z6mhN&N(h9@0|1`pp$dCR&L5`u{eMY7Hv|9x diff --git a/patch_v2/meow_audiod/meow_audiod.c b/patch_v2/meow_audiod/meow_audiod.c index 4858f3b..bd29c53 100644 --- a/patch_v2/meow_audiod/meow_audiod.c +++ b/patch_v2/meow_audiod/meow_audiod.c @@ -676,6 +676,12 @@ static int alsa_hw_params(int fd, unsigned rate, unsigned ch, unsigned fmt) memset(sm, 0, sizeof *sm); pmask(sm, SNDRV_PCM_SUBFORMAT_STD); pivset(&p.intervals[SNDRV_PCM_HW_PARAM_CHANNELS - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL], ch); pivset(&p.intervals[SNDRV_PCM_HW_PARAM_RATE - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL], rate); + /* M2.94 长流停摆根治(真机实证 60s 零 stall):显式收窄周期几何到 tiny_alsa 惯例 + * period=1024 frames × 4。否则驱动默认 buffer 巨大(上限 1048576 帧 ≈23s), + * hbc3000 桥靠周期中断驱动,中断稀缺 → 桥时钟域 wedge → 播 12s 左右停摆。 + * (tonepcm2 几何矩阵实测:1024×4 连续 60s 实时消费零 stall。) */ + pivset(&p.intervals[SNDRV_PCM_HW_PARAM_PERIOD_SIZE - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL], 1024); + pivset(&p.intervals[SNDRV_PCM_HW_PARAM_PERIODS - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL], 4); p.rmask = ~0u; p.info = 0; p.msbits = 0; p.rate_num = 0; p.rate_den = 0; return ioctl(fd, SNDRV_PCM_IOCTL_HW_PARAMS, &p); } diff --git a/patch_v2/tools/tonepcm2.c b/patch_v2/tools/tonepcm2.c index 0972865..81a8e21 100644 --- a/patch_v2/tools/tonepcm2.c +++ b/patch_v2/tools/tonepcm2.c @@ -86,6 +86,17 @@ int main(int argc, char **argv) iv->min = iv->max = 2; iv->integer = 1; iv = &p.intervals[SNDRV_PCM_HW_PARAM_RATE - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL]; iv->min = iv->max = 44100; iv->integer = 1; + { /* 几何收窄:TPCM_PERIOD/TPCM_BCOUNT 环境变量(默认 1024x4,对齐 tinyalsa 惯例) */ + unsigned ps = 1024, bc = 4; + const char *e; + if ((e = getenv("TPCM_PERIOD"))) ps = (unsigned)atoi(e); + if ((e = getenv("TPCM_BCOUNT"))) bc = (unsigned)atoi(e); + struct snd_interval *iv2 = &p.intervals[SNDRV_PCM_HW_PARAM_PERIOD_SIZE - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL]; + iv2->min = iv2->max = ps; iv2->integer = 1; + iv2 = &p.intervals[SNDRV_PCM_HW_PARAM_PERIODS - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL]; + iv2->min = iv2->max = bc; iv2->integer = 1; + printf("geometry: period=%u count=%u\n", ps, bc); + } if (ioctl(fd, SNDRV_PCM_IOCTL_HW_REFINE, &p) != 0) { printf("REFINE2 fail\n"); close(fd); return 1; } if (getenv("PROBE_ONLY")) { printf("PROBE_ONLY: stop before PARAMS/write\n"); close(fd); return 0; } if (ioctl(fd, SNDRV_PCM_IOCTL_HW_PARAMS, &p) != 0) { printf("HW_PARAMS fail\n"); close(fd); return 1; } diff --git a/scripts/build/fw_content.conf b/scripts/build/fw_content.conf index 38f0db1..f5296a6 100644 --- a/scripts/build/fw_content.conf +++ b/scripts/build/fw_content.conf @@ -38,7 +38,7 @@ patch_v2/meow_svc_power/meow_svc_power|/usr/bin/meow_svc_power|39ae3aa255695a97f patch_v2/meow_verify/meow_verify|/usr/bin/meow_verify|6c2e8ed24aebe5caf41e7aed391312d5|II期验签 2B(多公钥+v2签名块 agent-221) patch_v2/meow_crash/meow_crash|/usr/bin/meow_crash|62781084445e82351bcadbdadbe4c7fc|系统级崩溃捕获 (agent-187) patch_v2/meow_svc_perf/meow_svc_perf|/usr/bin/meow_svc_perf|7ea196de9d59ab8cbd1e26edb7762772|性能专项服务 M2.75(net_json 补 network 闭合括号,修 /api/system JSON 解析失败) -patch_v2/meow_audiod/meow_audiod|/usr/bin/meow_audiod|86a8b6793d516c90bbd12c2997b30d8f|独占音频守护 M2.91(+开机武装 hbc3000 FPGA 根治 PCM 启动死锁;+长流防卡死护栏 §12:ring有界写/ALSA poll自愈/popen有界收割/tx丢弃/watchdog) +patch_v2/meow_audiod/meow_audiod|/usr/bin/meow_audiod|1c1712c6a2fd8a65009330ca901f33eb|独占音频守护 M2.94(+period=1024×4 几何收窄, 根治长流停摆) patch_v2/meow_audiod/meow_audio|/usr/bin/meow_audio|c23b96490842f54324b855fd9c2467a5|audiod 用户侧 CLI(status/tone/route/vol;connect/write 全有界 2s 超时) # ---- 开机 init 脚本(etc/init.d,数字决定启动顺序,按文件名自然序)----