1114743_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

1114743_ja-JP

1114743_ja-JP

KSDK 1.1.0を搭載したFRDM-KL03Zボード上の低消費電力デモアプリケーション<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

このドキュメントでは、KDS 2.0.0 と最新バージョンの KSDK 1.1.0 で低電力デモ アプリケーション (FRDM-KL03Z ボード上の低電力デモ アプリケーション ) を作成する方法について説明します。KSDK 1.1.0インプリメンテーションには、低消費電力デモ・アプリケーションの設計をより複雑にする新機能があります。

このドキュメントでは、次の低電力デモ アプリケーションの作成について説明します。

アプリケーションが緑色のLEDの点滅を1回起動すると、RTCデバイスアラームが15秒(外部発振器32768Hzを使用)に設定されてCPUがウェイクアップし、CPUはVLLS1モードになります(VLLS0モードは外部発振器では使用できません)。

CPU のウェイクアップは、次の方法で可能です。

- SW2ボタンを押すと、プロセッサがウェイクアップし、緑色のLEDが点滅し始めます(5回)。

- ピンPTB6をアースに5回短絡すると(ピンは8ピンヘッダーコネクタ(ピン番号4)にあり、たとえばボタンをピン番号4とアースに接続できます)、プロセッサがウェイクアップし、緑色のLEDが点滅し始めます(5回)。

- 選択したRTCタイムアウトが期限切れ(15秒)すると、アラーム割り込みによってプロセッサがウェイクアップされ、緑色のLEDが点滅し始めます(5回)。

アプリケーションが再度初期化され、VLLS1 モードからのリカバリーが実行されます。アラームは再び 15 秒に設定され、CPU は再び VLLS1 モードに入ります。


準備

まず、KDS 2.0.0 と KSDK 1.1.0をインストールする必要があります。手順については、ドキュメント「 KDS 2.0.0にKinetis SDK 1.1.0サポートをインストールする方法」を参照してください。

新規プロジェクト

すべてのソフトウェアを適切にインストールして更新すると、低電力デモアプリケーションを作成する準備が整います。

新しいKinetis design Studioプロジェクトを作成します。

pastedImage_7.png

FRDM-KL03Zボードを選択します

pastedImage_10.png

KSDK 1.1.0へのKinetis SDKパスを選択します。をクリックし、[Processor Expert] を選択します。

pastedImage_13.png

アプリケーションが作成され、[問題] ウィンドウに警告は報告されません。

しかし、別の問題があります。OSグループのfsl_os_abstractionコンポーネントがアプリケーションに追加され(KSDK 1.0.0にはありませんでした)、継承されたfsl_lptmr_halコンポーネントにLPTMRデバイスが割り当てられます。

pastedImage_16.png

この競合の唯一の解決策は、このコンポーネントを削除することです (低電力デモには OS は必要なく、単純なアプリケーションのみです)。ただし、このコンポーネントは fsl_clock_manager によって使用され、fsl_clock_managerは PinSettings コンポーネントによって使用されます。したがって、これらすべてのコンポーネント(fsl_os_abstraction、fsl_clock_manager、PinSettings)を削除する必要があります。

PinSettings がプロジェクトから削除されると、すべての信号名も削除されるため、CPU コンポーネントでピンを再度選択する必要があります。

pastedImage_21.png

PinSettings コンポーネントはInit_GPIO配線や電気的プロパティなどの GPIO ピンの設定を可能にするコンポーネントに置き換える必要があります。

Init_GPIOコンポーネントをプロジェクトに追加し、次のプロパティを設定します(詳細ビューに切り替えます)。

  • デバイスの選択 - GPIOB
  • Settings/Clock GateEnabledに設定します。
  • [Settings/Pin 0] グループを [Initialize] に設定し、このピン (LLWU_P4) の次のプロパティを選択します。
    • ピンの方向 – 入力
    • プル抵抗 – 有効
    • プル選択 - プルアップ
  • [Settings/Pin 6] グループを [Initialize] に設定し、このピン (LPTMR_ALT3) の次のプロパティを選択します。
    • ピンの方向 – 入力
    • プル抵抗 – 有効
    • プル選択 - プルアップ
  • Settings / Pin 11グループをInitializeに設定し、このピンの次のプロパティを選択します(PTB11 – GREEN LED)。
    • ピン方向 – 出力
    • 出力値 – 1

  • Pin selection/routing/Pin 11Enabledに設定します。ピン 11 グループが開いており、PTB11 がピン (GPIO 機能) として選択されています。

pastedImage_24.png

pastedImage_27.png

これらの設定には、選択したピンの配線のための初期化コードと、フリーダムボード上のRGB LEDの緑色LEDの駆動に使用されるPTB11のGPIO機能が提供されます。

また、新しいバージョンのGCCツールをインストールした場合は、リンカの設定を変更する必要があります (ドキュメント「 KDS 2.0.0にKinetis SDK 1.1.0サポートをインストールする方法 - Kinetis Lファミリの追加手順」の章を参照)

プロジェクトのコンテキスト メニューを開き、[プロパティ] 項目を選択し、C/C++ ビルド/設定の [ツール設定] タブの [Cross ARM C++ Linker/Miscellaneous] で [その他のリンカー フラグ] 設定を "-specs=nano.specs -specs=nosys.specs" に変更します。

pastedImage_30.png

Tip:

コンパイルされたコードとコードサイズの詳細を知りたい場合は、次のオプションを使用して拡張リストファイルを作成し、次の ツールチェーン タブでコードサイズ情報を印刷できます。

pastedImage_35.png

Processor Expertコードを生成し、エラーや警告なしにアプリケーションのビルドを処理できます。

ビルドが完了すると、コンソールウィンドウに次の情報が表示されます。

'呼び出し: Cross ARM GNU Create Listing'

arm-none-eabi-objdump --source --all-headers --demangle --line-numbers --wide "低電力デモ KL03.elf" > "低電力デモ KL03.lst"

「完成した建物:低電力デモKL03.lst」

' '

「呼び出し:クロスARM GNU印刷サイズ」

arm-none-eabi-size --format=berkeley "低電力デモKL03.elf"

テキストデータ BSS DEC HEX ファイル名

1480 108 876 2464 9a0低電力デモKL03.elf

「完成した建物:低電力デモKL03.siz」

' '

注記:

すべての SDK コンポーネントが削除されているため、メモリ フットプリントが非常に小さいことがわかります。

ピンの配線

ピンの配線は、プロジェクト内のInit_GPIOおよびその他のコンポーネントによって提供されます。次のピンが使用されます。

  • SW2 - ADC0_SE9/PTB0/IRQ_5/LLWU_P4/EXTRG_IN/SPI0_SCK/I2C0_SCL – ボード上の SW2 ボタンの入力ピン (LLWU ウェイクアップ ピン)
  • GPIOピン– PTB6 / IRQ_2 / LPTMR0_ALT3 / TPM1_CH1 / TPM1_CLKIN1 – LPTMRデバイスの入力ピン
  • LED_GREEN - PTB11/TPM0_CH0/SPI0_MISO - ボード上のRGB LEDの緑色LEDを駆動する出力ピン

Processor Expert コンポーネントの追加

これで、低電力デモアプリケーションのすべてのコンポーネントを追加できます。

  • GPIOピンを制御するfsl_gpio_hal
  • LLWUデバイスを制御するためのInit_LLWUおよびfsl_llwu_halコンポーネント
  • RTCデバイスを制御するためのInit_SRTCとfsl_rtc_hal
  • LPTMRデバイスの制御Init_LPTMRとfsl_lptmr_hal
  • SMC(システムモードコントローラー)デバイスを制御するfsl_smc_hal

CPUデバイス

外部発振器32768Hzを使用し、Very Low Leakage Stopモードを許可するようにデバイスを構成する必要があります。そこで、CPU のコンポーネントインスペクターで次のプロパティを設定します (アドバンスビューに切り替えます)。

  • Clock settings / Clock Sources / System oscillator 0Enabledになっていることを確認し、EnableinstopEnabledに設定します。 クロックソース、クロックピン、およびクロック周波数は、FRDM-KL03Zボードにプリセットされています
  • Clock configuration/Clock Configuration 0 に移動し、次のように設定します。
    • 内部リファレンスクロック/2MHzまでの低速IRC周波数 (デモアプリケーションには十分であり、消費電力も削減します)。
    • MCGライト設定/MCGモードLIRC_2Mに設定
    • 非常に低電力モード を有効 にします(VLLS1モードは点滅した後に入るため、 VLPモードエントリ の設定は ユーザー のままにします。VLLS1モードに入るためのコードを書きます)
    • システムクロック/コアクロック0.5Mhzに設定
    • システムクロック/バスクロック 0.5Mhzに設定(これにより、非常に低いリークストップモードに入ることができます)
  • 低電力モードの設定/分離の確認[許可されていない値] に設定します (ユーザー コードで行います)

GPIOピン

fsl_gpio_halコンポーネントのコンポーネントインスペクターを開き、 詳細 ビューに切り替えて、次のプロパティを設定します。

  • デバイスの選択 - GPIOB

LLWU(Low-Leakage Wakeup unit)デバイス

Init_LLWU のコンポーネントインスペクターを開き、 詳細 ビューに切り替えて、次のプロパティを設定します。

  • Settings / External Source / Pin 4Any edge valueに設定します(SW2ボタンに接続されているこのピンを使用します)
  • Pins/Pin 4Enabled に設定し、下の項目で Pin ADC0_SE9/PTB0/IRQ_5/LLWU_P4/EXTRG_IN/SPI0_SCK/I2C0_SCL を選択します
  • リセット後の初期化/使用の値を no に設定します

LLWUを使用してCPUをウェイクアップし、割り込みは必要ありません。

RTC(リアルタイムクロック)デバイス

Init_SRTC のコンポーネントインスペクターを開き、 詳細 ビューに切り替えて、次のプロパティを設定します。

  • 設定/クロックゲート有効に設定します
  • 設定/オシレーター設定/オシレーターの状態有効に設定します(停止モードでも外部オシレーターを有効にします)
  • 設定/時刻設定/アラーム時間[s]15 に設定します(VLLS1モードからウェイクアップするまでに15秒のタイムアウト)
  • 割り込み/RTC割り込み/割り込み要求有効に設定します
  • 割り込み/RTC割り込み/タイムオーバーフロー割り込み無効に設定する
  • 割り込み/RTC割り込み/時間無効割り込み無効に設定
  • Initialization/Time counterEnabled に設定します。
  • リセット後の初期化/使用の値を no に設定します



LPTMR(Low-Power Timer)デバイス

Init_LPTMR のコンポーネントインスペクターを開き、 詳細 ビューに切り替えて、次のプロパティを設定します。

  • 設定/クロックゲート有効に設定します
  • 設定/クロック設定/クロック選択を内部1kHz LPOに設定します(このクロックソースはVLLS1モードで有効になります)
  • 設定/クロック設定/プリスケール値/グリッチフィルタープリスケーラー/64に設定します。グリッチフィルター32(パルスの生成に使用される接続されたボタンのグリッチを排除します)
  • [Settings/Compare value] を 4 に設定します (LPTMR 割り込みは、比較値がカウンタと等しく、カウンタ値が増加すると、つまり、入力ピンの 5 パルスが LPTMR 割り込みを呼び出すときに呼び出されます)
  • 設定/タイマーモードパルスカウンターに設定します(タイマーを使用して入力ピン3の外部パルスをカウントします)
  • Set Settings/Pin SelectInput 3に設定します。
  • Settings/Pin polarityActive Lowに設定
  • Pins/Input pin 3Enabledに設定し、Pin 3の項目でPTB6/IRQ_2/LPTMR0_ALT3/TPM1_CH1、TPM_CLKIN1を選択します。
  • 割り込み/割り込み要求有効に設定します
  • 割り込み/タイマー割り込み有効に設定します(タイマー割り込みを使用して、入力3ピンで5パルス後にCPUをVLLS1モードからウェイクアップします)
  • 「Initialization/Timer enable」を「yes」に設定します。
  • リセット後の初期化/使用の値を no に設定します

Processor Expertコンポーネントの設計時設定が完了し、アプリケーションコードを作成する準備が整いました。

コードを生成してアプリケーションをビルドすると、エラーや警告は発生しません。Processor Expert プロジェクトは、次のようになります。

pastedImage_41.png

アプリケーション・コード

コンポーネント設定では、RTC割り込みとLPTMR割り込みの2つの割り込みを有効にしました。したがって、これらの割り込みサービスルーチンを書く必要があります。たとえば、RTC.hファイルでは、RTC_IRQHandler割り込みルーチンの宣言を見つけることができます。したがって、宣言を使用して、main.c にルーチンの定義を書き込むことができますプログラムモジュール:

#define RTC_ALARM_TIMEOUT_SEC 15

/* RTC割り込みサービスルーチン */

PE_ISR(RTC_IRQHandler) {

if (RTC_HAL_HasAlarmOccured(RTC_BASE)) {

次のアラームを RTC_ALARM_TIMEOUT_SEC 秒で設定します (TAF フラグもクリアします)

  RTC_HAL_SetAlarmReg(RTC_BASE,RTC_HAL_GetAlarmReg(RTC_BASE) + RTC_ALARM_TIMEOUT_SEC);

}

if (RTC_HAL_IsTimeInvalid(RTC_BASE)) {

       /* カウンターの停止とTSR レジスタ の設定によりTIF(Time Invalid Flag)をクリア */

RTC_HAL_EnableCounter(RTC_BASE, false);

       RTC_HAL_SetSecsReg(RTC_BASE, 0);

       /* イネーブルカウンター */

RTC_HAL_EnableCounter(RTC_BASE, 真);

}

}

この割り込みルーチンは、実行モードで緑色のLEDが点滅しているときにアラーム割り込みが呼び出された場合(フラグをクリアして新しいアラーム時間を設定)にアラーム割り込みを処理し、VLLS1モードからの回復中に発生する可能性のある無効な時間割り込みも処理します。RTCモジュールは少し特殊で、すべての実行、待機、および停止モードで動作し、リセットによりTime Invalid割り込みビット(TIIEビットRTC_IER)が有効になり、リセット時にTime Invalid割り込み(PORまたはソフトウェアリセット)が呼び出されることに注意してください。したがって、Invalid Timeフラグをクリアしないと、アプリケーションは無限サイクルでRTC割り込みを呼び出し続け、アプリケーションはまったく機能しません(これは、簡単な解決策がない問題の1つでもあります)。RTC割り込みルーチン(上記で定義)は、アプリケーションで必要なすべてのケースを適切に処理します。

RTC割り込みは、常に低リークストップモードからのウェイクアップを引き起こすことに注意してください(KL03派生物のLLWUでは設定できません–チップ固有のLLWU情報を参照)。また、レジスタのリセット後の値が0x01 RTC_SR(TIFフラグがセットされている)です。そのため、RTCが初期化されず、低リークストップモードに入ると、RTCモジュールの割り込みフラグ(TIFフラグがセットされる)により、CPUは直ちにウェイクアップします。つまり低リーク停止モードに入る前に、常にRTCモジュールを適切に初期化し、すべてのフラグをクリアする必要があります。

また、VLSS1 モードからのウェイクアップに使用される LPTMR デバイスのサービス ルーチンも必要です。これは、LPTMR 割り込みフラグをクリアするだけの単純な割り込みサービス ルーチンです。

/* LPTMR 割り込みサービスルーチン */

PE_ISR(LPTMR0_IRQHandler) {

/* LPTMR割り込みフラグをクリアする */

  LPTMR_HAL_ClearIntFlag(LPTMR0_BASE);

}

これで、main 関数を記述できます。点滅するための一時的なカウント変数が必要になります。


/* ここにローカル変数の定義を記入してください */

揮発性uint32_t i; 待機用

uint8_t blink_count;

また、緑色のLEDを駆動するピンPTB11の定義も必要です

/* PTB11 - LEDグリーンピン */

#define LED_GREEN_PIN 11

また、点滅しているLEDの数:

#define LED_BLINK 5

PE_low_level_init() でデバイスを初期化した後、リセットの理由を確認する必要があります (POR リセットまたは VLLS1 リカバリ)。したがって、次のコードを書くことができます。

/* ここにコードを書きます */

  if (RCM_SRS0 == 0x01) { /* リセットの理由をテストします - VLLSでの ウェイクアップ */

    if(PMC->REGSC &  PMC_REGSC_ACKISO_MASK) {

      PMC->REGSC |= PMC_REGSC_ACKISO_MASK; /* VLLSx recovery */

    }

    for (blink_count = 0; blink_count < LED_BLINK; blink_count++) {

       緑色のLEDが点滅

GPIO_HAL_ClearPinOutput(GPIOB_BASE,LED_GREEN_PIN);

       for (i = 0; i<40000; i++);

    GPIO_HAL_SetPinOutput(GPIOB_BASE,LED_GREEN_PIN);

        for (i = 0; i<40000; i++);

  }

    次のアラームを「RTC_ALARM_TIMEOUT_SEC」秒で設定します(TAFフラグもクリアします)

    RTC_HAL_SetAlarmReg(RTC_BASE,RTC_HAL_GetAlarmReg(RTC_BASE)+RTC_ALARM_TIMEOUT_SEC);

  } else {

      /* パワーオンリセット */

      / *緑色のLEDをオンにします* /

GPIO_HAL_ClearPinOutput(GPIOB_BASE,LED_GREEN_PIN);

       /* しばらく待つ */

       for (i = 0; i<40000; i++);

       / *緑色のLEDをオフに切り替えます* /

    GPIO_HAL_SetPinOutput(GPIOB_BASE,LED_GREEN_PIN);

  }

VLLS1 リカバリの場合、PMC_REGSC レジスタのピン絶縁 ACKISO ビットを認識します。このビットをクリアすると、すべてのピンが通常の動作モードになります。次に、緑色のLEDが5回点滅します(これはデモ目的の単純なコードにすぎません。必要に応じて、Init_TPMコンポーネントを使用してTPMxデバイスで点滅するための独自のより洗練されたコードを書くことができます)。

PORリセットの場合、緑色のLEDが1回点滅します。

リセット/ワクアップ状態がアプリケーションコードによって提供されると、VLLS1モードに入ることができます。最初のステップとして、CPU を VLLS1 モードからウェイクアップするための割り込みフラグが設定されていないことを確認する必要があるため、LLWU および SW2 ピン (PTB0) 割り込みフラグをクリアし、enter_vllsx機能を使用して VLLS1 モードに入ります。

/* 選択したピン 4 - PTB0 の LLWU フラグをクリア */

LLWU_F1 |= LLWU_F1_WUF4_MASK;

/* SW2 ピンの割り込みフラグをクリア - PTB0 */

PORTB_PCR0 |= PORT_PCR_ISF_MASK;

VLLS3を入力してください

enter_vllsx((smc_por_option_t)NULL,kSmcStopSub3);

VLLS0 に入る - VLLS0 モードでは外部水晶クロック ソースが機能しない ため 、RTC と LPTMR が機能しない

enter_vllsx(kSmcPorEnabled, kSmcStopSub0);

VLLS1を入力してください

enter_vllsx((smc_por_option_t)NULL,kSmcStopSub1);

緑色のLEDをオンに切り替えます-VLLSxモードに入っていないときはエラー状態です

GPIO_HAL_ClearPinOutput(GPIOB_BASE,LED_GREEN_PIN);

VLLS1モードが入っていない場合(エラー状態の表示)に緑色のLEDをオンにするためのコードもあります。

enter_vllsx関数は次のように定義されます (デモ KSDK デモ例の既存の関数を使用します)。

/*

* VLLSxモードエントリー ルーチン

*/

スタティックボイドenter_vllsx(smc_por_option_t PORPOValue, smc_stop_submode_t VLLSValue) {

       smc_power_mode_config_t smcConfig;

       /* 電源モードを特定のVLLSxモードに設定する */

smcConfig です。porOption = true;

       smcConfig.porOptionValue = (smc_por_option_t) PORPOValue;

smcConfig です。powerModeName = kPowerModeVlls;

       smcConfig.stopSubMode = (smc_stop_submode_t) VLLSValue;

       SMC_HAL_SetMode(SMC_BASE, &smcConfig);

}

これは、低電力デモアプリケーションに必要なすべてのコードです。これで、アプリケーションをビルドして実行できます。

'呼び出し: Cross ARM GNU Create Listing'

arm-none-eabi-objdump --source --all-headers --demangle --line-numbers --wide "低電力デモ KL03.elf" > "低電力デモ KL03.lst"

「完成した建物:低電力デモKL03.lst」

' '

「呼び出し:クロスARM GNU印刷サイズ」

arm-none-eabi-size --format=berkeley "低電力デモKL03.elf"

テキストデータ BSS DEC HEX ファイル名

7828 112 896 8836 2284低電力デモKL03.elf

「完成した建物:低電力デモKL03.siz」

' '

注記:

アプリケーションでSDK関数が使用されているため、コードサイズが大きくなっていることがわかります。

これは、標準ライブラリを使用してエラーを報告できる assert 関数の使用によるところもあります。この機能が不要で、コンパクトなコード(消費電力を減らすため)だけが必要な場合は、次の方法で実行できます。

Low Power デモ KL03 アプリケーションの [プロパティ] を開き、[C/C++Build/Settings] を選択し、[Tool Settings] タブで [Cross ARM C Compiler/Preprocessor] を選択し、[ Defined symbols ] リストに NDEBUG シンボルを追加します。

pastedImage_47.png

アプリケーションを再びクリーンにしてビルドすると、コードサイズは縮小されます。

「呼び出し:クロスARM GNU印刷サイズ」

arm-none-eabi-size --format=berkeley "低電力デモKL03.elf"

テキストデータ BSS DEC HEX ファイル名

3192 108 876 4176 1050低電力デモKL03.elf

「完成した建物:低電力デモKL03.siz」

' '

08:20:28 ビルド完了 (15s.886ms を要)

また、アプリケーションのコードサイズを縮小するための追加の手順もあります。GNU Cツールの最適化レベルを設定できます。

低電力デモ KL03 アプリケーションの [プロパティ] を開き、[C/C++Build/Settings] を選択し、[Tool Settings] タブで [Optimization] を選択し、[Optimization Level] を要求された値に設定します (一部のレベルはデバッグに適していないことに注意してください)。

pastedImage_50.png

デバッグ

アプリケーションには、デフォルトで事前定義されたデバッグ接続が含まれています。.Project Explorer ウィンドウでプロジェクトのコンテキスト メニューを開き、[Debug As/Debug Configurations...] を選択すると、[デバッグ構成] ウィンドウが開き、すべての事前定義済みデバッグ構成 (OpenOCD、PE Micro、Segger J-link) を選択して構成できます。デフォルト設定は、Freedomボード(OpenSDAインターフェース– j-linkまたはPE Micro)で簡単に使用できます。

適切なデバッグ接続を選択し、アプリケーションのデバッグのためにデバッグをクリックするだけです。

[Debug Configuration] ウィンドウで [GDB SEGGER J-Link Debugger] グループを開き、[Low power demo KL03 Debug] コンフィギュレーションを選択します。[デバッガー]タブを見ると、MKL03Z32xxx4デバイス名がすでに入力されています。セミホスティングとSWOのコンソールの割り当てのチェックを外します(SWOはOpenSDA SEGGER J-linkではサポートされていません)。

pastedImage_53.png

[スタートアップ]タブに移動し、[SWOを有効にする]オプションのチェックを外します(SWOはOpenSDA SEGGER J-linkではサポートされていません)。

pastedImage_56.png

[Apply and Debug] ボタンをクリックすると、デバッガが起動します (FRDM-KL03Z ボードをワークステーションに接続する必要があります)。

これで、アプリケーションを起動し( [再開 ]ボタンをクリック)、機能を確認できます。VLLS1 モード エントリのため、デバッガーが切断されます。ただし、アプリケーションは実行され、使用できます。

LPTMRパルスを生成するためのボタンを接続する場合は、ボタンの1つのピンを8ピンコネクタJ1のピン#4のPTB6に接続し、ボタンの2番目のピンをGNDの10ピンコネクタJ2のピン#7に接続できます。

pastedImage_59.png

このデモ・アプリケーションは、実際の低消費電力アプリケーションの出発点として使用できます。それがあなたを助け、プロセッサエキスパートでの最初の低電力アプリケーションの実装の時間を節約することを願っています。

VLLS1モードでCPUの消費電力を測定することもできます。これは、FRDM-KL03ユーザーガイドに記載されています。R27とR28をはんだ付けし、ヘッダーピンをボードのJ10位置にはんだ付けするだけです。ここで J10 のジャンパーを使用して CPU の電源を接続する必要があり、ジャンパーを取り外すと、これらの 2 つのピンを使用して CPU のエネルギー消費量を測定できます (マルチメーターなど)

pastedImage_62.png

标记 (1)
无评分
版本历史
最后更新:
‎01-05-2026 01:07 AM
更新人: