問題タブ [wakeup]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
9603 参照

arm - ARM: 他の CPU コア/AP を開始/ウェイクアップ/起動し、実行開始アドレスを渡しますか?

私は過去 3 ~ 4 日間、これに頭を悩ませていましたが、(ARM または非公式の) DECENT の説明文書が見つかりません。私はODROID-XU ボード (big.LITTLE 2 x Cortex-A15 + 2 x Cortex-A7)ボードを持っており、ARM アーキテクチャについてもう少し理解しようとしています。私の「実験的」コードでは、WFI (割り込み待機) 状態から他のコアをウェイクアップしたい段階に到達しました。

私がまだ見つけようとしている不足している情報は次のとおりです。

1.メモリ マップド GIC のベース アドレスを取得するときに、CBAR を読み取る必要があることを理解しています。しかし、最終的な GIC ベース アドレスに到達するために CBAR のビット (2 つの PERIPHBASE 値) をどのように配置する必要があるかを説明しているドキュメントはありません。

2. GICD_SGIR レジスタを介して SGI を送信する場合、0 ~ 15 のどの割り込み ID を選択すればよいですか? それは問題ですか?

3. GICD_SGIR レジスタを介して SGI を送信する場合、どこから実行を開始するかを他のコアに伝えるにはどうすればよいですか?

4.コードが U-BOOT ブートローダーによってロードされるという事実は、この状況にどのように影響しますか?

Cortex-A Series Programmer's Guide v3.0 (ここにあります:リンク)セクション 22.5.2 (Linux での SMP ブート、271ページ)に次のように記載されています。

プライマリ コアが起動している間、セカンダリ コアは WFI 命令を使用してスタンバイ状態に保持されます。それ (プライマリ コア) は、セカンダリ コアにスタートアップ アドレスを提供し、プロセッサ間割り込み (IPI) を使用してそれらをウェイクアップします。

Linuxはどのようにそれを行いますか? ドキュメント- Sは、「セカンダリコアにスタートアップアドレスを提供します」に関する他の詳細を提供していません。

私の欲求不満は高まっており、答えにとても感謝しています. 事前にどうもありがとうございました!

追加の詳細

私が使用するドキュメント:

  • ARMv7-A&R アーキテクチャ リファレンス マニュアル
  • Cortex-A15 TRM (テクニカル リファレンス マニュアル)
  • Cortex-A15 MPCore TRM
  • Cortex-A シリーズ プログラマーズ ガイド v3.0
  • GICv2 アーキテクチャ仕様

私が今までにやったこと:

  • UBOOT は 0x40008000 にロードします。変換テーブル (TTB) をセットアップし、それに応じて TTBR0 と TTBCR を書き込み、0x40008000 を 0x8000_0000 (2GB) にマップしたので、MMU も有効にしました
  • 独自の例外ハンドラをセットアップする
  • シリアル経由で Printf 機能を利用できます (ODROID-XU の UART2)

上記のすべてが適切に機能しているようです。

私が今やろうとしていること:

  • GIC ベース アドレスを取得 => CBAR を読み取り、その値を 0xFFFF8000 と論理積 (&) し、これを GIC ベース アドレスとして使用しますが、これが正しくないことはほぼ確実です。
  • GICD_CTLR に値 0x1 を書き込むことにより、GIC ディストリビュータを有効にします (GIC ベース アドレスからのオフセット 0x1000?)。
  • 次のパラメーターを使用して SGI を構築します: Group = 0、ID = 0、TargetListFilter = "All CPUs Except Me" および GICD_SGIR GIC レジスターを介して送信 (書き込み)
  • 他のコアには実行開始アドレスを渡していないので、このままでは何も起こりません。

....アップデート....

答えを求めて、Linux カーネルと QEMU のソース コードを調べ始めました。これが私が見つけたものです(間違っている場合は修正してください):

  • ボードの電源を入れると、すべてのコアがリセットベクターから実行を開始します
  • ソフトウェア (ファームウェア)コンポーネントは、セカンダリ コアで WFI を実行し、これらのセカンダリ コアとプライマリ コアの間のプロトコルとして機能するその他のコードを実行します。
  • たとえば、EnergyCore ECX-1000 (Highbank)ボードで使用されるプロトコルは次のとおりです。

**(1)** the secondary cores enter WFI and when

**(2)** the primary core sends an SGI to wake them up

**(3)** they check if the value at address (0x40 + 0x10 * coreid) is non-null;

**(4)** if it is non-null, they use it as an address to jump to (execute a BX)

**(5)** otherwise, they re-enter standby state, by re-executing WFI

**(6)** So, if I had an EnergyCore ECX-1000 board, I should write (0x40 + 0x10 * coreid) with the address I want each of the cores to jump to and send an SGI

質問:

  • 1. これを行うソフトウェア コンポーネントは何ですか? SD カードに書き込んだ BL1 バイナリですか、それとも U-BOOT ですか?
  • 2. 私の理解では、このソフトウェア プロトコルはボードごとに異なります。そうですか、それとも基礎となるプロセッサにのみ依存していますか?
  • 3. ピックワン ARM ボードのこのプロトコルに関する情報はどこにありますか? - ARM の公式 Web サイトまたはボードの Web ページで見つけることができますか?
0 投票する
1 に答える
623 参照

android - スケジュールされたアラームでウェイクアップした後、Android は利用可能な WIFI に自動的に再接続しますか?

  1. 私は WifiManager.WifiLock のようなことを認識しています。永続的な Wi-Fi 接続は必要ないため、使用する必要はありません。代わりに、たとえば 30 分おきに Wi-Fi 接続を試す必要があります。

  2. CONNECTIVITY_CHANGE リスナーを登録しました。30分間隔でスケジュールされた目覚ましアラームを設定した場合。ウェイクアップ後、Android は利用可能な WIFI に自動的に再接続するので、私の CONNECTIVITY_CHANGE リスナーはそれを聞くことができますか?

0 投票する
1 に答える
1601 参照

linux - RTC をウェイクアップ ソースとして設定し、sys ファイル システムを使用してすべての日に特定の時刻を設定する方法

imx6 SabreSD を使用しています。RTC をウェイクアップ ソースとして設定する必要があり、1 日中特定の時間を設定する必要があります。 /class/rtc/rtc0/wakealarm; RTC は x 秒後にシステムを起動します

これを使用すると、x 秒後にシステムを起動できます。しかし、時間として 00:00:01 としてこれが必要です

echo standby > /sys/power/state でサスペンド状態にします

方法はありますか。助けてください よろしくお願いします

0 投票する
1 に答える
3486 参照

serial-port - Arduino DUE、スリープモードから復帰するためのシリアル割り込み手順

文字がシリアル ポートに到着するまで、SAM3X チップをスリープ モードにしたいと思います。ウェイクアップ手順をトリガーするために、シリアル割り込み手順で補助フラグを使用することを考えていましたか? あなたはどう思いますか?私が従うか試してみるべきアドバイスや他の方法はありますか?

0 投票する
1 に答える
132 参照

android - スリープ状態から電話をかける

電話の加速度計を監視するアプリを作成しました。傾いたときに特定の番号を呼び出す必要があります。

これまでのところすべてが実行されており、通話もできますが、ハンドごとに電話のロックを解除した後でのみです.

このアプリは、誰かが私の車からタイヤを盗もうとしたときに私に電話することを意図しているため、電話はスリープ状態から私に電話する必要があります。

これが私の呼び出しメソッドと関連する変数です:

...

編集:ああ、私も試しました:

私が言ったように、彼は電話をかけますが、画面がすでにロック解除されている場合に限ります:(

edit2: Android 2.1 (API レベル 7) で実行する必要があります

助けてください:3

0 投票する
1 に答える
3180 参照

android - Android:デバイスのウェイクアップがいつ発生したかを検出していますか?

デバイスのウェイクアップに応答するためのWakefulBroadcastReceiverという v4 ヘルパー クラスについて知っています。

デバイスが起動したことを単純に検出し、必要なロジックを実行するヘッドレス Android アプリを作成したいと考えています (以下のテスト アプリでは、メッセージをログに記録するだけです)。

ただし、アプリのマニフェストで指定するインテントを見つけることができなかったため、WakefulBroadcastReceiverが起動されます。

WakefulBroadcastReceiverがデバイスのウェイクアップのすべてのインスタンスを検出するように、そのようなアプリを構成する方法を知っている人はいますか?

まず、WakefulBroadcastReceiverは次のとおりです。

...そして、実行されるサービスは次のとおりです。

最後に、これが私のマニフェストです。「何がここにあるのか????」に注意してください。インテント フィルターで。

どうもありがとうございました。

0 投票する
3 に答える
12387 参照

android - Androidフォンをスリープから復帰させる方法は?

プログラムでAndroid携帯をスリープから復帰させる方法(memにサスペンド)? 私はウェイクロックを取得したくありません。つまり、電話はCPUを無効にして「実際の」スリープ状態になります。ある種の RTC (リアルタイム クロック) メカニズムを使用できると思いますか?

誰にも例がありますか?

ありがとう。

0 投票する
1 に答える
324 参照

c++ - Linux で C++ を使用してウェイクアップ コンピューターを検出する

コンピューターがウェイクアップしたことをどのように検出できるかわかりません。または、LAN でウェイクアップを検出したいです。一般的な方法がわかりません。/etc/pm/sleep.d にカスタム スクリプトを追加できることがわかりましたが、C++ アプリケーション内で呼び出す必要があります。これで、C++ で記述されたカスタム実行可能ファイルを追加してソケットを送信し、別の場所でそれをリッスンすることもできることがわかりましたが、それは複雑すぎるように思えます。