20250917在榮品RD-RK3588-MID開發板的Android13系統下使用tinyplay播放wav格式的音頻

input keyevent 24
1|console:/sdcard # cat /proc/asound/cards
console:/sdcard # ls -l /dev/snd/

【需要打開Android13內置的音樂應用才會有聲音出來,原因未知!】
1|console:/sdcard # tinyplay /sdcard/Music/kiss8.wav -D 1 -d 0


20250917在榮品RD-RK3588-MID開發板的Android13系統下使用tinyplay播放wav格式的音頻
2025/9/17 20:37


緣起:板子的音頻/喇叭部分是按照榮品RD-RK3588-MID開發板設計的,但是沒有聲音。
排除了靜音了/聲音過小。
播放網頁視頻/wav音頻都沒有聲音。

后來才定位到是耳機檢測引腳GPIO1C4恒定為低,開機RK3588就認為是耳機模式了!
喇叭肯定沒有聲音了。


Y:\MID_MX_RK3588_android13-20250818\kernel-5.10\arch\arm64\boot\dts\rockchip\rk3588\rp-audio-rt5640.dtsi


/ {
rt5640-sound {
compatible = "simple-audio-card";
simple-audio-card,format = "i2s";
simple-audio-card,name = "rockchip,rt5640-codec";
simple-audio-card,mclk-fs = <256>;
simple-audio-card,widgets =
"Microphone", "Mic Jack",
"Headphone", "Headphone Jack";
simple-audio-card,routing =
"Mic Jack", "MICBIAS1",
"IN1P", "Mic Jack",
"Headphone Jack", "HPOL",
"Headphone Jack", "HPOR";
simple-audio-card,cpu {
sound-dai = <&i2s0_8ch>;
};
simple-audio-card,codec {
sound-dai = <&rt5640>;
};
};

// 2025/9/17 20:09 wenyuanbo add ?Close headset for LoudSpeaker
// ? ? ? rk_headset: rk-headset {
// ? ? ? ?status = "okay";
// ? ? ? ?compatible = "rockchip_headset";
// ? ? ? ?headset_gpio = <&gpio1 RK_PC4 GPIO_ACTIVE_HIGH>;
// ? ? ? ?pinctrl-names = "default";
// ? ? ? ?pinctrl-0 = <&hp_det>;
// ? ?};
};

&i2s0_8ch {
status = "okay";
};

&i2c7 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c7m0_xfer>;

? ? rt5640: rt5640@1c {
#sound-dai-cells = <0>;
compatible = "realtek,rt5640";
reg = <0x1c>;
clocks = <&mclkout_i2s0>;
clock-names = "mclk";
realtek,in1-differential;
pinctrl-names = "default";
pinctrl-0 = <&i2s0_mclk>;
io-channels = <&saradc 4>;
hp-det-adc-value = <500>;

spk-play-volume = <7>; ? ? ? ////63-0 min-max
hp-play-volume = <15>; ? ? ? ////63-0 min-max
capture-volume = <127>; //0-127 min-max

? ? ? ? ? ? ? ?assigned-clocks = <&mclkout_i2s0>;
assigned-clock-rates = <12288000>;
};
};

// 2025/9/17 20:09 wenyuanbo add ?Close headset for LoudSpeaker
//&pinctrl {
// ? ? ? ?rt5640_pinctrl {
// ? ? ? ? ? ? ? ?hp_det:hp_det {
// ? ? ? ? ? ? ? ? ? ? ? ?rockchip,pins = <1 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
// ? ? ? ? ? ? ? ?};
// ? ? ? ?};
//};


【ADB】播音的LOG:
Microsoft Windows [版本 10.0.19045.6216]
(c) Microsoft Corporation。保留所有權利。

C:\Users\QQ>adb shell
rk3588_t:/ $ su
rk3588_t:/ # input keyevent 24
rk3588_t:/ # cat /proc/asound/cards

0 [rockchipdp0 ? ?]: rockchip-dp0 - rockchip-dp0
rockchip-dp0
1 [rockchiprt5640c]: rockchip_rt5640 - rockchip,rt5640-codec
rockchip,rt5640-codec
2 [rockchiphdmi0 ?]: rockchip-hdmi0 - rockchip-hdmi0
rockchip-hdmi0
rk3588_t:/ # ls -l /dev/snd/
total 0
crw-rw---- 1 system audio 116, ? 3 2025-09-10 19:21 controlC0
crw-rw---- 1 system audio 116, ? 6 2025-09-10 19:21 controlC1
crw-rw---- 1 system audio 116, ? 8 2025-09-10 19:21 controlC2
crw-rw---- 1 system audio 116, ? 2 2025-09-10 19:21 pcmC0D0p
crw-rw---- 1 system audio 116, ? 5 2025-09-10 19:21 pcmC1D0c
crw-rw---- 1 system audio 116, ? 4 2025-09-10 19:21 pcmC1D0p
crw-rw---- 1 system audio 116, ? 7 2025-09-10 19:21 pcmC2D0p
crw-rw---- 1 system audio 116, ?33 2025-09-10 19:21 timer
rk3588_t:/ # tinyplay /sdcard/Music/kiss8.wav -D 1 -d 0
Playing sample: 2 ch, 44100 hz, 16 bit 53268480 bytes
rk3588_t:/ # cd /sdcard/M
Movies/ ?Music/
rk3588_t:/ # cd /sdcard/Music/
rk3588_t:/sdcard/Music # ls -l
total 56748
-rw-rw---- 1 u0_a94 media_rw ?4835832 2025-06-14 11:09 kiss8.mp3
-rw-rw---- 1 u0_a94 media_rw 53268598 2025-09-17 17:26 kiss8.wav
rk3588_t:/sdcard/Music # tin
tinycap ? ? ?tinymix ? ? ?tinypcminfo ?tinyplay
rk3588_t:/sdcard/Music # tinyp
tinypcminfo ?tinyplay
rk3588_t:/sdcard/Music # tinyplay k
kiss8.mp3 ?kiss8.wav
rk3588_t:/sdcard/Music # tinyplay kiss8.mp3
Error: 'kiss8.mp3' is not a riff/wave file
1|rk3588_t:/sdcard/Music #
1|rk3588_t:/sdcard/Music # tiny
tinycap ? ? ?tinymix ? ? ?tinypcminfo ?tinyplay
1|rk3588_t:/sdcard/Music # tinyplay ki
kiss8.mp3 ?kiss8.wav
1|rk3588_t:/sdcard/Music # tinyplay kiss8.wav
Playing sample: 2 ch, 44100 hz, 16 bit 53268480 bytes
^Crk3588_t:/sdcard/Music #
rk3588_t:/sdcard/Music # tinyplay kiss8.wav -D 1
Playing sample: 2 ch, 44100 hz, 16 bit 53268480 bytes
rk3588_t:/sdcard/Music # tinyplay kiss8.wav -D 1 d 0
Playing sample: 2 ch, 44100 hz, 16 bit 53268480 bytes


查詢rt5640聲卡的I2C掛載:
rk3588_t:/ # i2cdetect -y 7
0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?a ?b ?c ?d ?e ?f
00: ? ? ? ? ?-- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
rk3588_t:/ #
rk3588_t:/ # i2cdump -y 7 0x1C
i2cdump: ioctl 703: Device or resource busy
1|rk3588_t:/ #
1|rk3588_t:/ # i2cdump -y -f 7 0x1C
0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?a ?b ?c ?d ?e ?f ? ?0123456789abcdef
00: 00 c7 0f c8 80 00 00 00 00 00 00 00 00 00 00 08 ? ?.????..........?
10: 00 00 00 00 00 00 00 00 00 af af 00 2f 7f 00 00 ? ?.........??./?..
20: 00 00 00 00 00 00 00 70 70 80 14 54 aa 00 0c 00 ? ?.......pp??T?.?.
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ? ?................
40: 00 00 00 00 00 00 00 00 f8 38 00 00 fc 00 00 01 ? ?........?8..?..?
50: 00 00 01 f0 00 00 00 00 00 00 00 00 00 00 00 00 ? ?..??............
60: 00 98 00 e8 00 c0 0c 00 00 00 00 00 04 00 00 00 ? ?.?.?.??.....?...
70: 80 80 80 01 0c 1d 00 00 00 00 00 00 00 00 00 00 ? ???????..........
80: 00 00 00 00 00 00 00 00 00 00 00 06 02 a0 00 11 ? ?...........???.?
90: 07 0e 00 30 00 00 00 00 00 00 00 00 00 00 00 00 ? ???.0............
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ? ?................
b0: 20 00 00 00 22 1f 00 00 03 00 00 00 00 00 00 00 ? ? ..."?..?.......
c0: 04 00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 ? ??..... .........
d0: 06 1c 8c aa 00 00 04 00 00 08 00 00 00 00 00 00 ? ?????..?..?......
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ? ?................
f0: 00 00 00 00 00 00 00 00 00 00 3f 40 00 00 10 62 ? ?..........?@..?b

rk3588_t:/ #
rk3588_t:/ # cd /sys/class/i2
i2c-adapter/ ?i2c-dev/
rk3588_t:/ # cd /sys/class/i2c-adapter/i2
i2c-0/ ? i2c-1/ ? i2c-10/ ?i2c-2/ ? i2c-4/ ? i2c-6/ ? i2c-7/ ? i2c-8/ ? i2c-9/
rk3588_t:/ # cd /sys/class/i2c-adapter/i2c-7
rk3588_t:/sys/class/i2c-adapter/i2c-7 # ls -l
total 0
drwxr-xr-x 3 root root ? ?0 2025-09-17 16:47 7-001c

--w------- 1 root root 4096 2025-09-17 16:51 delete_device
lrwxrwxrwx 1 root root ? ?0 2025-09-17 16:51 device -> ../../fec90000.i2c
drwxr-xr-x 3 root root ? ?0 2025-09-17 16:47 i2c-dev
-r--r--r-- 1 root root 4096 2025-09-17 16:51 name
--w------- 1 root root 4096 2025-09-17 16:51 new_device
lrwxrwxrwx 1 root root ? ?0 2025-09-17 16:51 of_node -> ../../../../firmware/devicetree/base/i2c@fec90000
drwxr-xr-x 2 root root ? ?0 2025-09-17 16:47 power
lrwxrwxrwx 1 root root ? ?0 2025-09-17 16:51 subsystem -> ../../../../bus/i2c
-rw-r--r-- 1 root root 4096 2025-09-17 16:47 uevent
-r--r--r-- 1 root root 4096 2025-09-17 16:51 waiting_for_supplier
rk3588_t:/sys/class/i2c-adapter/i2c-7 # cd 7-001c
rk3588_t:/sys/class/i2c-adapter/i2c-7/7-001c # ls -l
total 0
lrwxrwxrwx 1 root root ? ?0 2025-09-17 16:51 driver -> ../../../../../bus/i2c/drivers/rt5640
-r--r--r-- 1 root root 4096 2025-09-17 16:51 modalias
-r--r--r-- 1 root root 4096 2025-09-17 16:51 name
lrwxrwxrwx 1 root root ? ?0 2025-09-17 16:51 of_node -> ../../../../../firmware/devicetree/base/i2c@fec90000/rt5640@1c
drwxr-xr-x 2 root root ? ?0 2025-09-17 16:47 power
lrwxrwxrwx 1 root root ? ?0 2025-09-17 16:51 subsystem -> ../../../../../bus/i2c
lrwxrwxrwx 1 root root ? ?0 2025-09-17 16:51 supplier:platform:fd58c318.mclkout-i2s0 -> ../../../../virtual/devlink/platform:fd58c318.mclkout-i2s0--i2c:7-001c
lrwxrwxrwx 1 root root ? ?0 2025-09-17 16:51 supplier:platform:pinctrl -> ../../../../virtual/devlink/platform:pinctrl--i2c:7-001c
-rw-r--r-- 1 root root 4096 2025-09-17 16:47 uevent
rk3588_t:/sys/class/i2c-adapter/i2c-7/7-001c # cat name
rt5640

rk3588_t:/sys/class/i2c-adapter/i2c-7/7-001c #
rk3588_t:/sys/class/i2c-adapter/i2c-7/7-001c # reboot -p
Done
rk3588_t:/sys/class/i2c-adapter/i2c-7/7-001c #
E:\DOCX9\聲音>


參考資料:
由于大家都拿到的常見音頻格式為mp3,但是tinyplay只支持wav格式。
在線免費的mp3轉wav網站:
https://convertio.co/zh/mp3-wav/
https://convertio.co/zh/epub-docx/


1|console:/sdcard # cat /proc/asound/cards
console:/sdcard # ls -l /dev/snd/
1|console:/sdcard # tinyplay kiss8.wav -D 0 -d 0
https://blog.csdn.net/wb4916/article/details/149885045?spm=1011.2415.3001.5331
20250803讓飛凌OK3576-C開發板在Rockchip的原廠Android14下適配聲卡NAU88C22YG【Android部分】

https://blog.csdn.net/wb4916/article/details/135632136?spm=1011.2415.3001.5331
20240116使用Firefly的AIO-3399J的預編譯的Android10固件確認RT5640聲卡信息


百度:rk3588 耳機檢測
input keyvent 音量+


https://blog.csdn.net/u011774634/article/details/137873834?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7ECtr-5-137873834-blog-144431586.235%5Ev43%5Epc_blog_bottom_relevance_base5&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7ECtr-5-137873834-blog-144431586.235%5Ev43%5Epc_blog_bottom_relevance_base5&utm_relevant_index=10
RK3588 Android12 拔出耳機后一段時間后系統才檢測到耳機拔出的狀態
https://blog.csdn.net/u011774634/article/details/137873834

原因:
耳機檢測引腳HP_DET的上拉電阻阻值過大,因硬件設計耳機未插入時HP_DET為高電平,耳機插入后為低電平。當把耳機拔出后HP_DET由低電平轉為高電平所需的時間較長(幾十秒),所以系統在耳機拔出后一段時間后才檢測到拔出事件。


https://blog.csdn.net/STM32TSZ/article/details/138584992
Linux-筆記 i2c-tools

4. i2cdump
(1)查看i2c設備所有寄存器的值,輸入命令i2cdump -y -f 1 0x51
-y 取消交互過程,直接執行命令
-f 強制訪問該設備
1 表示i2c總線編號
0x51 表示i2c設備地址


https://www.cnblogs.com/MrNull/p/14279118.html
adb shell按鍵操作(input keyevent)

每個數字與keycode對應表如下:

24 --> "KEYCODE_VOLUME_UP"
25 --> "KEYCODE_VOLUME_DOWN"


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/100468.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/100468.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/100468.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

總共分為幾種IP

IP&#xff08;Internet Protocol&#xff09;地址根據不同的分類標準可分為多種類型&#xff0c;以下是常見的分類方式&#xff1a;按版本分類IPv4&#xff1a;32位地址&#xff0c;格式為四組十進制數字&#xff08;如192.168.1.1&#xff09;&#xff0c;約43億個地址&#…

【Linux】常用命令(六)

【Linux】常用命令&#xff08;六&#xff09;1. yum命令1.1 基本語法1.2 常用命令2. 從服務器把數據cp到本地3. uname命令3.1 常用命令1. yum命令 全稱&#xff1a;Yellowdog Updater, Modified作用&#xff1a;是 RPM 包管理器的前端工具&#xff0c;用于基于 RPM 的 Linux …

go grpc開發使用

1、安裝proto 下載 Windows 版本 打開官方發布頁面 訪問 Protocol Buffers 的 GitHub Releases 頁面&#xff1a; &#x1f449; https://github.com/protocolbuffers/protobuf/releases 解壓 ZIP 文件 將下載的 ZIP 文件解壓到一個你容易找到的目錄&#xff0c;例如&#xff1…

MyBatis分頁:PageHelper

MyBatis分頁&#xff1a;PageHelper &#x1f4d6; 前言&#xff1a;為什么需要分頁&#xff1f; 在處理大量數據時&#xff0c;一次性從數據庫查詢并返回所有結果是不可行的&#xff0c;這會帶來巨大的性能和內存開銷。分頁是解決這一問題的標準方案。而PageHelper是一個極其流…

Gin框架:構建高性能Go Web應用

Gin框架&#xff1a;構建高性能Go Web應用 Gin是Go語言中最受歡迎的Web框架之一&#xff0c;以其高性能、簡潔API和豐富的中間件支持而聞名。本文將帶你從零開始&#xff0c;逐步掌握Gin框架的核心概念和高級特性&#xff0c;并通過實際代碼示例演示如何構建高效的Web應用程序。…

IO進程——線程、IO模型

一、線程Thread1、引入1.1 概念相當于是一個輕量級的進程&#xff0c;為了提高系統的性能引入線程&#xff0c;在同一進程中可以創建多個線程&#xff0c;共享進程資源1.2 進程和線程比較相同點&#xff1a;都為操作系統提供了并發執行的能力不同點&#xff1a;調度和資源&…

人工智能概念:NLP任務的評估指標(BLEU、ROUGE、PPL、BERTScore、RAGAS)

文章目錄一、評估指標基礎1. 準確率&#xff08;Accuracy&#xff09;2. 精確率&#xff08;Precision&#xff09;3. 召回率&#xff08;Recall&#xff09;4. F1-Score5. 示例二、文本生成專用指標1. BLEU&#xff1a;機器翻譯與標準化文案的“質量標尺”1.1 計算流程&#x…

團隊對 DevOps 理解不統一會帶來哪些問題

團隊對DevOps理念與實踐的理解不統一、片面甚至扭曲&#xff0c;是導致眾多企業DevOps轉型失敗的根本原因&#xff0c;它將直接引發一系列深層次的、相互關聯的嚴重問題。核心體現在&#xff1a;轉型極易淪為“為了工具而工具”的盲目自動化&#xff0c;導致最核心的文化變革被…

企業級實戰:構建基于Qt、C++與YOLOv8的模塊化工業視覺檢測系統(基于QWidget)

目錄一、概述二、項目目標與技術架構2.1 核心目標2.2 技術選型2.3 軟件架構三、AI推理DLL的開發 (Visual Studio 2019)3.1 定義DLL接口 (DetectorAPI.h)3.2 實現核心功能 (DetectorAPI.cpp)四、Qt Widget GUI應用程序的開發4.1 項目配置 (.pro 文件)4.2 UI設計 (mainwindow.ui)…

SVN自動化部署工具 腳本

SVN自動化部署工具 功能概述 這是一個自動化部署SVN倉庫的bash腳本&#xff0c;主要功能包括&#xff1a; 自動安裝SVN服務&#xff08;如未安裝&#xff09; 創建SVN項目倉庫 配置多用戶權限 設置自動同步到網站目錄 提供初始檢出功能 下載地址 https://url07.ctfile…

Facebook主頁變現功能被封?跨境玩家該如何申訴和預防

不少跨境玩家在運營Facebook公共主頁時&#xff0c;最期待的就是通過變現工具獲得穩定收入。但現實中&#xff0c;經常會遇到一個扎心的問題&#xff1a;主頁好不容易做起來&#xff0c;卻突然收到提示——“你的變現功能已被停用”。這意味著收入中斷&#xff0c;甚至可能導致…

安裝es、kibana、logstash

下載 elk 下載地址 elasticsearch地址: https://www.elastic.co/cn/downloads/elasticsearch kibana地址: https://www.elastic.co/cn/downloads/kibana logstash地址: https://www.elastic.co/cn/downloads/logstash 解壓elk 創建es全家桶文件夾 cd /usr/local mkdir elk …

Django admin 后臺開發案例【字段/圖片】

這是一個簡單的django admin 管理后臺,這個應用案例主要是給運營人員進行填寫數據 主要功能包括: 上傳圖片功能【選擇上傳時可以預覽】【替換已有數據中的圖片時可以預覽新舊圖片】 每條數據都將會記錄操作歷史。記錄操作人是誰?修改內容是什么?并且定位責任到某一員。 …

【C++】const和static的用法

目錄&#x1f680;前言&#x1f4bb;const&#xff1a;“只讀”的守護者&#x1f4af;修飾普通變量&#x1f4af;修飾指針&#x1f4af;修飾函數&#x1f4af;修飾類成員&#x1f4af;修飾對象&#x1f31f;static&#xff1a;“靜態存儲”與“作用域控制”&#x1f4af;修飾全…

F019 vue+flask海外購商品推薦可視化分析系統一帶一路【三種推薦算法】

文章結尾部分有CSDN官方提供的學長 聯系方式名片 B站up&#xff1a; 麥麥大數據 關注B站&#xff0c;有好處&#xff01; 編號: F019 關鍵詞&#xff1a;海外購 推薦系統 一帶一路 python 視頻 VueFlask 海外購電商大數據推薦系統源碼 &#xff08;三種推薦算法 全新界面布局…

【大數據專欄】流式處理框架-Apache Fink

Apache Fink 1 前言 1.1 功能 1.2 用戶 國際 國內 1.3 特點 ◆ 結合Java、Scala兩種語言 ◆ 從基礎到實戰 ◆ 系統學習Flink的核心知識 ◆ 快速完成從入門到上手企業開發的能力提升 1.4 安排 ◆ 初識Flink ◆ 編程模型及核心概念 ◆ DataSet API編程 ◆ Data…

向內核社區提交補丁

一、背景 內核的版本一直以來一直在持續迭代&#xff0c;離不開眾多開發者的貢獻。有時候我們會根據項目要求基于現有的內核版本開發一些新的功能或者修復掉一些特定場下的問題&#xff0c;我們是可以將其提交給社區的。 一般提交社區有兩個基本原則&#xff0c;一是提交的補…

TENGJUN-USB TYPE-C 24PIN測插雙貼連接器(H14.3,4腳插板帶柱):USB4.0高速傳輸時代的精密連接方案解析

在高速數據傳輸與多設備互聯需求日益增長的當下&#xff0c;USB TYPE-C接口憑借其可逆插拔、高兼容性的優勢成為主流&#xff0c;而TENGJUN推出的USB TYPE-C 24PIN測插雙貼連接器&#xff08;規格&#xff1a;H14.3&#xff0c;4腳插板帶柱&#xff09; &#xff0c;以對USB4.0…

企業級 Docker 應用:部署、倉庫與安全加固

1 Docker簡介及部署方法 1.1 Docker簡介 Docker之父Solomon Hykes&#xff1a;Docker就好比傳統的貨運集裝箱 Note 2008 年LXC(LinuX Contiainer)發布&#xff0c;但是沒有行業標準&#xff0c;兼容性非常差 docker2013年首次發布&#xff0c;由Docker, Inc開發1.1.1 什么是do…

rust語言 (1.88) 學習筆記:客戶端和服務器端同在一個項目中

同一項目下多個可執行文件&#xff0c;多個子項目參照以下&#xff1a; 一、項目目錄 項目/|-- client/|-- main.rs|-- Cargo.toml|-- server/|-- main.rs|-- Cargo.toml|-- Cargo.toml二、項目公共 Cargo.toml [workspace] # 定義Rust工作區配置 members …