chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入解析RK平臺(tái)Android/Linux Bootloader核心文件:android_bootloader.c

jf_44130326 ? 來(lái)源:Linux1024 ? 作者:Linux1024 ? 2026-01-09 10:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Bootloader是Android設(shè)備啟動(dòng)的第一道“關(guān)卡”,負(fù)責(zé)初始化硬件、加載系統(tǒng)鏡像并完成內(nèi)核啟動(dòng)的前置準(zhǔn)備。在基于U-Boot的Android設(shè)備中,android_bootloader.c是對(duì)接Android啟動(dòng)邏輯的核心文件——它決定了設(shè)備是進(jìn)入正常系統(tǒng)、Recovery模式還是Fastboot模式,同時(shí)承擔(dān)了AVB(Android Verified Boot)驗(yàn)證、內(nèi)核加載、命令行參數(shù)組裝等關(guān)鍵工作。(這個(gè)啟動(dòng)流程android和linux共用)

本文將從文件定位、核心函數(shù)、執(zhí)行流程三個(gè)維度,拆解這個(gè)文件的底層邏輯。

一、文件核心定位

android_bootloader.c是U-Boot中實(shí)現(xiàn)Android啟動(dòng)流程的核心模塊,核心職責(zé)包括:

1.解析BCB(Bootloader Control Block)信息,決策設(shè)備啟動(dòng)模式(正常/Recovery/Fastboot);

2.處理AVB驗(yàn)證邏輯,保障系統(tǒng)鏡像的完整性;

3.加載Android內(nèi)核/Recovery鏡像到指定內(nèi)存地址;

4.組裝內(nèi)核啟動(dòng)參數(shù)(cmdline),傳遞系統(tǒng)啟動(dòng)所需的關(guān)鍵信息;

5.處理DTBO(Device Tree Overlay)疊加,適配不同硬件配置;

6.對(duì)接Android A/B分區(qū)機(jī)制,支持槽位切換與驗(yàn)證。

該文件依賴(lài)android_bootloader_message.h(BCB結(jié)構(gòu)體定義)、android_avb(AVB驗(yàn)證)、bootm.h(內(nèi)核啟動(dòng))等核心頭文件,是Bootloader與Android系統(tǒng)之間的“橋梁”。

二、核心函數(shù)拆解

按功能模塊劃分,文件中的核心函數(shù)可分為6大類(lèi),以下是關(guān)鍵函數(shù)的細(xì)節(jié)解析:

1. BCB(啟動(dòng)控制塊)操作模塊

BCB存儲(chǔ)在misc分區(qū),是Bootloader與Android系統(tǒng)交互啟動(dòng)指令的核心載體,相關(guān)函數(shù)負(fù)責(zé)BCB的讀寫(xiě)與解析。

(1)android_bootloader_message_load/write

?作用:從misc分區(qū)讀取/寫(xiě)入BCB結(jié)構(gòu)體(android_bootloader_message);

?關(guān)鍵邏輯

?計(jì)算BCB所需的扇區(qū)數(shù),檢查misc分區(qū)大小是否足夠;

?調(diào)用blk_dread/blk_dwrite完成分區(qū)讀寫(xiě);

?讀寫(xiě)失敗時(shí)打印錯(cuò)誤日志,返回負(fù)值。

(2)android_bootloader_load_and_clear_mode

?作用:解析啟動(dòng)模式,是整個(gè)文件的“決策中樞”;

?關(guān)鍵邏輯

a.先檢查RAM中是否有Fastboot指令(如reboot-bootloader),有則直接返回BOOTLOADER模式;

b.加載misc分區(qū)的BCB,解析command字段:

bootonce-bootloader:?jiǎn)未芜M(jìn)入Bootloader,讀取后清空BCB;

boot-recovery/boot-fastboot:進(jìn)入Recovery模式;

無(wú)匹配指令:默認(rèn)NORMAL模式。

(3)android_bcb_write

?作用:向misc分區(qū)寫(xiě)入啟動(dòng)指令(如Recovery啟動(dòng)命令);

?關(guān)鍵限制:指令長(zhǎng)度不能超過(guò)32字節(jié),否則返回內(nèi)存錯(cuò)誤。

2. AVB驗(yàn)證模塊

AVB是Android的鏡像驗(yàn)證機(jī)制,保障系統(tǒng)鏡像未被篡改,相關(guān)函數(shù)處理驗(yàn)證流程與鏡像分發(fā)。

(1)android_slot_verify

?作用:核心AVB驗(yàn)證函數(shù),完成分區(qū)驗(yàn)證與狀態(tài)更新;

?關(guān)鍵邏輯

a.檢測(cè)設(shè)備解鎖狀態(tài)(解鎖則跳過(guò)嚴(yán)格驗(yàn)證);

b.分配內(nèi)存緩沖區(qū),加載boot/vendor_boot/init_boot等分區(qū);

c.調(diào)用avb_slot_verify執(zhí)行哈希樹(shù)驗(yàn)證;

d.根據(jù)驗(yàn)證結(jié)果更新androidboot.verifiedbootstate(green/orange/yellow/red);

e.驗(yàn)證失敗時(shí)標(biāo)記當(dāng)前槽位為不可啟動(dòng)。

(2)avb_image_distribute_prepare/finish

?作用:AVB驗(yàn)證前后的鏡像內(nèi)存管理;

?prepare:分配連續(xù)內(nèi)存緩沖區(qū),規(guī)劃boot/vendor_boot/init_boot的內(nèi)存布局;

?finish:將驗(yàn)證后的鏡像分發(fā)到指定內(nèi)存地址,修復(fù)v3+版本的boot.img頭部。

3.鏡像加載模塊

負(fù)責(zé)從指定分區(qū)加載Android鏡像到內(nèi)存,是內(nèi)核啟動(dòng)的前置步驟。

(1)android_image_load_by_partname

?作用:根據(jù)分區(qū)名(如boot/recovery)加載鏡像到指定內(nèi)存;

?關(guān)鍵邏輯

a.通過(guò)分區(qū)名獲取分區(qū)信息(起始扇區(qū)、大?。?;

b.調(diào)用android_image_load將鏡像加載到內(nèi)存,并返回加載后的地址。

(2)android_bootloader_boot_flow

?作用:整合所有啟動(dòng)流程的“主函數(shù)”;

?核心流程:?jiǎn)?dòng)模式檢測(cè)→ AVB驗(yàn)證→鏡像加載→命令行組裝→內(nèi)核啟動(dòng)。

4.內(nèi)核啟動(dòng)模塊

負(fù)責(zé)內(nèi)核啟動(dòng)的最終執(zhí)行,包括內(nèi)存分配、參數(shù)傳遞。

android_bootloader_boot_kernel

?作用:?jiǎn)?dòng)Android內(nèi)核;

?關(guān)鍵邏輯

a.解析內(nèi)核壓縮類(lèi)型(GZIP/LZ4/LZO等),計(jì)算解壓所需內(nèi)存;

b.分配解壓內(nèi)存,釋放壓縮鏡像占用的內(nèi)存;

c.組裝bootm參數(shù)(內(nèi)核地址、設(shè)備樹(shù)地址);

d.調(diào)用do_bootm_states執(zhí)行內(nèi)核啟動(dòng)流程。

5.命令行組裝模塊

內(nèi)核啟動(dòng)參數(shù)(cmdline)的核心組裝邏輯,決定系統(tǒng)啟動(dòng)的行為。

android_assemble_cmdline

?作用:整合多源參數(shù),生成最終的內(nèi)核cmdline;

?整合內(nèi)容

a.環(huán)境變量中的bootargs基礎(chǔ)參數(shù);

b.A/B分區(qū)的槽位后綴(如androidboot.slot_suffix=_a);

c.設(shè)備序列號(hào)(androidboot.serialno=xxx);

d.根設(shè)備信息(root=/dev/xxx);

e.啟動(dòng)模式參數(shù)(如skip_initramfs/androidboot.force_normal_boot=1)。

6. DTBO疊加模塊

適配不同硬件配置的設(shè)備樹(shù)疊加邏輯。

android_fdt_overlay_apply

?作用:加載DTBO分區(qū),將設(shè)備樹(shù)疊加層應(yīng)用到主設(shè)備樹(shù);

?關(guān)鍵邏輯

a.根據(jù)啟動(dòng)模式(正常/Recovery)選擇DTBO分區(qū);

b.讀取DTBO頭部,選擇匹配的設(shè)備樹(shù)條目;

c.擴(kuò)容主設(shè)備樹(shù)內(nèi)存,應(yīng)用疊加層;

d.失敗時(shí)回滾主設(shè)備樹(shù)備份。

三、核心執(zhí)行流程(附流程圖)

android_bootloader.c的整體執(zhí)行流程可分為5個(gè)階段,以下是流程拆解與可視化流程圖:

1.流程總覽

wKgZPGlgbzKAOmv4AAJ4BrBWUqk590.png

2.流程分步解析

階段1:?jiǎn)?dòng)模式檢測(cè)(核心是BCB解析)

Bootloader啟動(dòng)后,首先讀取misc分區(qū)的BCB結(jié)構(gòu)體,同時(shí)檢查RAM中是否有Fastboot遺留指令(如reboot-bootloader)。根據(jù)BCB的command字段,決策設(shè)備進(jìn)入NORMAL(正常)、RECOVERY(恢復(fù))或BOOTLOADER(Fastboot)模式。

階段2:AVB驗(yàn)證(可選)

?若設(shè)備鎖定且啟用AVB,執(zhí)行分區(qū)驗(yàn)證:分配連續(xù)內(nèi)存緩沖區(qū),加載boot/vendor_boot/init_boot等分區(qū),通過(guò)AVB哈希樹(shù)驗(yàn)證鏡像完整性;

?若設(shè)備解鎖,跳過(guò)嚴(yán)格驗(yàn)證,僅標(biāo)記驗(yàn)證狀態(tài)為orange(未驗(yàn)證);

?驗(yàn)證完成后,將鏡像分發(fā)到內(nèi)核啟動(dòng)所需的內(nèi)存地址。

階段3:鏡像加載

根據(jù)啟動(dòng)模式選擇對(duì)應(yīng)的分區(qū)(正常模式選boot,Recovery模式選recovery/boot),調(diào)用android_image_load將鏡像加載到指定內(nèi)存地址。

階段4:命令行組裝

整合環(huán)境變量、A/B槽位、序列號(hào)、啟動(dòng)模式參數(shù)等,生成最終的內(nèi)核cmdline,并更新bootargs環(huán)境變量(如添加androidboot.slot_suffix=_a、skip_initramfs等)。

階段5:內(nèi)核啟動(dòng)

?適配DTBO疊加層(若有),擴(kuò)容主設(shè)備樹(shù)并應(yīng)用疊加;

?根據(jù)內(nèi)核壓縮類(lèi)型分配解壓內(nèi)存,釋放壓縮鏡像內(nèi)存;

?調(diào)用do_bootm_states執(zhí)行內(nèi)核啟動(dòng)流程,完成Bootloader到Android內(nèi)核的交接。

四、核心亮點(diǎn)與設(shè)計(jì)思路

1.靈活性適配:支持A/B分區(qū)、AVB驗(yàn)證、DTBO疊加等Android核心特性,兼容不同版本的Android啟動(dòng)邏輯;

2.容錯(cuò)機(jī)制:BCB讀取失敗時(shí)默認(rèn)進(jìn)入正常模式,AVB驗(yàn)證失敗時(shí)標(biāo)記槽位為不可啟動(dòng),保障設(shè)備基礎(chǔ)可用性;

3.內(nèi)存高效管理:AVB驗(yàn)證時(shí)分配連續(xù)內(nèi)存緩沖區(qū),統(tǒng)一管理boot/vendor_boot/init_boot的內(nèi)存布局,避免內(nèi)存碎片;

4.啟動(dòng)模式兼容:兼顧傳統(tǒng)Recovery分區(qū)與A/B分區(qū)的Recovery邏輯(無(wú)Recovery分區(qū)時(shí)復(fù)用boot分區(qū))。

五、總結(jié)

android_bootloader.c是U-Boot對(duì)接Android啟動(dòng)邏輯的“核心樞紐”——它上承Bootloader的硬件初始化,下啟Android內(nèi)核的啟動(dòng)流程,同時(shí)兼顧了安全性(AVB)、靈活性(A/B分區(qū))和兼容性(DTBO)。

理解這個(gè)文件的邏輯,不僅能掌握Android/linux設(shè)備的啟動(dòng)流程,更能為定制化Bootloader、排查啟動(dòng)故障(如Recovery無(wú)法進(jìn)入、AVB驗(yàn)證失?。┨峁┖诵乃悸?。對(duì)于Android底層開(kāi)發(fā)、設(shè)備調(diào)試人員來(lái)說(shuō),這個(gè)文件是必須深入理解的核心模塊。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    4035

    瀏覽量

    134439
  • u-boot
    +關(guān)注

    關(guān)注

    0

    文章

    135

    瀏覽量

    39918
  • bootloader
    +關(guān)注

    關(guān)注

    2

    文章

    245

    瀏覽量

    48282
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    瑞芯微RK平臺(tái)Android音頻?EQ/DRC調(diào)試全攻略

    ,支持全局流綁定和動(dòng)態(tài)應(yīng)用兩種模式,配合官方調(diào)試工具可快速實(shí)現(xiàn)個(gè)性化音效調(diào)校。 本文基于瑞芯微官方《 Android EQ/DRC 開(kāi)發(fā)指南 V1.1.0 》,結(jié)合實(shí)際開(kāi)發(fā)經(jīng)驗(yàn),從 編譯集成、音效啟用、狀態(tài)驗(yàn)證、參數(shù)調(diào)試 四個(gè)維度,手把手教你完成 RK
    的頭像 發(fā)表于 04-12 10:23 ?7629次閱讀
    瑞芯微<b class='flag-5'>RK</b><b class='flag-5'>平臺(tái)</b><b class='flag-5'>Android</b>音頻?EQ/DRC調(diào)試全攻略

    深度解析?| DMA-BUF適配AndroidRK特性核心Patch:高性能內(nèi)存管理升級(jí)方案

    support ANDROID and RK feature,通過(guò)12個(gè)文件的深度改造與重構(gòu),為DMA-BUF機(jī)制注入了Android生態(tài)適配與R
    的頭像 發(fā)表于 03-16 08:16 ?2909次閱讀
    深度<b class='flag-5'>解析</b>?| DMA-BUF適配<b class='flag-5'>Android</b>與<b class='flag-5'>RK</b>特性<b class='flag-5'>核心</b>Patch:高性能內(nèi)存管理升級(jí)方案

    Binder?驅(qū)動(dòng)深度解析Android IPC?的核心底層實(shí)現(xiàn)

    。 本文將基于?Android 15 + Linux 6.1?內(nèi)核源碼(kernel/drivers/android/binder.c),從核心
    的頭像 發(fā)表于 03-12 08:11 ?462次閱讀
    Binder?驅(qū)動(dòng)深度<b class='flag-5'>解析</b>:<b class='flag-5'>Android</b> IPC?的<b class='flag-5'>核心</b>底層實(shí)現(xiàn)

    rk3576 android15平臺(tái)camera編譯配置都做了什么?

    文件是瑞芯微(Rockchip)Android平臺(tái)下相機(jī)子系統(tǒng)的核心編譯配置Makefile,屬于Android Build System
    的頭像 發(fā)表于 03-06 17:15 ?3139次閱讀
    <b class='flag-5'>rk</b>3576 <b class='flag-5'>android</b>15<b class='flag-5'>平臺(tái)</b>camera編譯配置都做了什么?

    RK3576 Android15音頻開(kāi)發(fā)必看:alsa_route核心文件解析與修改場(chǎng)景

    RK?Android平臺(tái)開(kāi)發(fā)的同學(xué),大概率都遇到過(guò)這些音頻問(wèn)題:插耳機(jī)沒(méi)聲音、通話(huà)音量忽大忽小、新增的HDMI聲卡沒(méi)適配、錄音增益異常…?這些問(wèn)題看似五花八門(mén),根源卻大概率指向同一個(gè)核心
    的頭像 發(fā)表于 02-26 08:08 ?355次閱讀
    <b class='flag-5'>RK</b>3576 <b class='flag-5'>Android</b>15音頻開(kāi)發(fā)必看:alsa_route<b class='flag-5'>核心</b><b class='flag-5'>文件</b><b class='flag-5'>解析</b>與修改場(chǎng)景

    深入解析U-Boot image.cRK平臺(tái)鏡像處理核心邏輯

    在瑞芯微(RK平臺(tái)的嵌入式開(kāi)發(fā)中,U-Boot作為核心的啟動(dòng)加載程序,負(fù)責(zé)完成鏡像解析、校驗(yàn)、加載等關(guān)鍵流程。而image.c正是U-Bo
    的頭像 發(fā)表于 02-24 16:46 ?1753次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b>U-Boot image.<b class='flag-5'>c</b>:<b class='flag-5'>RK</b><b class='flag-5'>平臺(tái)</b>鏡像處理<b class='flag-5'>核心</b>邏輯

    RK平臺(tái)Android設(shè)備OTA升級(jí)教程:從原理到U盤(pán)實(shí)操

    OTA(Over-The-Air)升級(jí)是 Android 系統(tǒng)標(biāo)準(zhǔn)的軟件更新方式,在 RK(瑞芯微)平臺(tái)上,OTA 升級(jí)不僅支持本地升級(jí)(如 U 盤(pán)、SD 卡),還支持網(wǎng)絡(luò)升級(jí),同時(shí)提供“完整包
    的頭像 發(fā)表于 02-09 16:23 ?2079次閱讀
    <b class='flag-5'>RK</b><b class='flag-5'>平臺(tái)</b><b class='flag-5'>Android</b>設(shè)備OTA升級(jí)教程:從原理到U盤(pán)實(shí)操

    RK3576平臺(tái)Android HAL層故障排查:從lshal命令看透問(wèn)題本質(zhì)

    RK3576 作為瑞芯微主流的中高端芯片,其 HAL 層基于 HIDL ( Android 硬件接口定義語(yǔ)言)實(shí)現(xiàn),排查這類(lèi)問(wèn)題的核心工具就是 lshal —— 一個(gè)能直接暴露 HIDL 服務(wù)運(yùn)行狀態(tài)的命令
    的頭像 發(fā)表于 02-06 07:12 ?566次閱讀
    <b class='flag-5'>RK</b>3576<b class='flag-5'>平臺(tái)</b><b class='flag-5'>Android</b> HAL層故障排查:從lshal命令看透問(wèn)題本質(zhì)

    技術(shù)分享 | RK3568 Android11 如何實(shí)現(xiàn)自啟動(dòng)應(yīng)用

    隨著Android版本的不斷升級(jí),對(duì)于應(yīng)用權(quán)限的管理會(huì)更加苛刻。我司IAC-RK3568-Kit開(kāi)發(fā)板默認(rèn)搭載Android11,相比較之前RK3288的產(chǎn)品安卓版本變更較大,有些客戶(hù)
    的頭像 發(fā)表于 02-05 17:26 ?643次閱讀
    技術(shù)分享 | <b class='flag-5'>RK</b>3568 <b class='flag-5'>Android</b>11 如何實(shí)現(xiàn)自啟動(dòng)應(yīng)用

    深入解析RK平臺(tái)編譯核心:build.sh的知識(shí)點(diǎn)、調(diào)試技巧與開(kāi)發(fā)價(jià)值

    在瑞芯微(RKLinux SDK 開(kāi)發(fā)中,build.sh是整個(gè)編譯構(gòu)建系統(tǒng)的“入口中樞”—— 它統(tǒng)一管理環(huán)境配置、命令解析、模塊構(gòu)建與日志輸出,幾乎所有芯片(如 RK3588、RV
    的頭像 發(fā)表于 02-03 16:02 ?3169次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b><b class='flag-5'>RK</b><b class='flag-5'>平臺(tái)</b>編譯<b class='flag-5'>核心</b>:build.sh的知識(shí)點(diǎn)、調(diào)試技巧與開(kāi)發(fā)價(jià)值

    MTK平臺(tái)LK階段mt_boot.c配置:SELINUX_STATUS 2的作用與影響

    在 MTK(聯(lián)發(fā)科)平臺(tái)Bootloader(以 LK/Little Kernel 為例)中,mt_boot.c是負(fù)責(zé) Linux 內(nèi)核啟動(dòng)邏輯的
    的頭像 發(fā)表于 02-03 15:46 ?958次閱讀
    MTK<b class='flag-5'>平臺(tái)</b>LK階段mt_boot.<b class='flag-5'>c</b>配置:SELINUX_STATUS 2的作用與影響

    硬核進(jìn)階:RK3576 Android15?驅(qū)動(dòng)與系統(tǒng)開(kāi)發(fā)實(shí)戰(zhàn)指南

    RK3576 探索之旅】系列文章導(dǎo)航及功能全景介紹(基于android14) 之前有出過(guò)系列的文章,但這是自己公司定制項(xiàng)目,暫時(shí)沒(méi)有相關(guān)硬件,有需求可以私信我,這個(gè)系列主要還是驅(qū)動(dòng)的開(kāi)發(fā),接下來(lái)
    的頭像 發(fā)表于 01-26 22:29 ?793次閱讀
    硬核進(jìn)階:<b class='flag-5'>RK</b>3576 <b class='flag-5'>Android</b>15?驅(qū)動(dòng)與系統(tǒng)開(kāi)發(fā)實(shí)戰(zhàn)指南

    深入解析rk平臺(tái)Android Bootloader核心代碼:從啟動(dòng)流程到AVB驗(yàn)證

    android_bootloader.c核心代碼,帶你讀懂Android設(shè)備從Bootloader到內(nèi)核的完整啟動(dòng)邏輯,以及開(kāi)發(fā)者關(guān)注這些代碼的
    的頭像 發(fā)表于 01-22 07:06 ?461次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b><b class='flag-5'>rk</b><b class='flag-5'>平臺(tái)</b><b class='flag-5'>Android</b> <b class='flag-5'>Bootloader</b><b class='flag-5'>核心</b>代碼:從啟動(dòng)流程到AVB驗(yàn)證

    如何基于開(kāi)發(fā)板RK3568 Android 11強(qiáng)制所有應(yīng)用橫屏展示

    RK3568 Android 11強(qiáng)制所有應(yīng)用橫屏展示,1、打開(kāi)frameworks/base/core/java/android/content/pm/parsing/component
    的頭像 發(fā)表于 11-07 16:07 ?861次閱讀
    如何基于開(kāi)發(fā)板<b class='flag-5'>RK</b>3568 <b class='flag-5'>Android</b> 11強(qiáng)制所有應(yīng)用橫屏展示

    RK3576 Android 14.0 SDK開(kāi)發(fā)指南(第一集)

    RK3576 Android 14.0 SDK代碼編譯 SDK下載到本地后大概70多個(gè)G 下載后要做個(gè)校驗(yàn) 解壓后內(nèi)核源碼 kernel代碼路徑說(shuō)明 Android14支持6.1 版本
    發(fā)表于 05-20 08:43