NXPのi.MXRT500クロスオーバーMCUを使用したDSPの有効化について
マルチスレッドプログラム、XOSリアルタイムオペレーティングシステムを使用したアプリケーションの開発、セマフォとのリソース共有、およびNXPのi.MXRT500ファミリーの方法について説明します。多数のマイクロコントローラーは、エンジニアがDSP対応のスマートデバイスを設計するのに役立ちます。
今日のスマートコンシューマーデバイスには、さまざまなセキュリティおよび信号処理アプリケーションの要求を満たすために、大量のデータを処理できるコンポーネントが必要です。これらのコンポーネント(マイクロコントローラーを含む)は、そのデータを迅速かつ効率的に処理できる必要があり、高度に最適化されたデジタルシグナルプロセッサーが必要です。
この記事では、Cadence®Tensilica®FusionF1オーディオプロセッサのいくつかの機能を紹介します。これは、i.MX RT500MCUのメインCPUが信号処理計算を実行するのを支援する指定コプロセッサです。
マルチスレッドプログラムのコアコンセプト
一見すると、最新の処理ハードウェアは、多くのスレッドを同時に実行しているような錯覚を引き起こします。実際には、単一のCPUコアが一度に単一のスレッドを処理します。スレッドの数が使用可能なCPUコアの数を超える場合は、スレッドをスケジュールするためのオペレーティングシステムが必要です。
OSは、開始されたすべてのスレッドとその状態を追跡する必要があり、さまざまなアプリケーションを効率的かつ一見並列に実行できるように、各スレッドにCPUタイムスロットを割り当てます。
図1。 スレッドのさまざまな状態
オペレーティングシステムスケジューラは、実行の準備ができているスレッドのキュー、ブロックしているスレッドのキューを維持し、CPU時間の公平な配分を実現するために、現在実行中のスレッドに関する情報を保存する必要があります。
- レディキュー内のスレッドは現在、OSがCPU上でそれらをスケジュールするのを待っています。通常、OSスケジューラはさまざまな優先度レベルを認識しており、CPUで実行する次のスレッドを選択するときに考慮します。
- ブロッキングスレッドは、ピン割り込みやファイル操作などの外部イベントが発生するのを待ちます。これらのスレッドをスケジュールすると、CPUは外部操作が終了するのを待って処理能力を浪費することになります。ブロッキング操作が終了すると、関連する待機中のスレッドは準備完了キューの最後に戻ります。
- 現在実行中のスレッドがブロッキング操作を実行するか、OSがスケジューリング戦略に従って別のスレッドをスケジュールする可能性があります。その場合、スケジューラーは現在実行中のスレッドをブロックされたスレッドのリストまたは準備完了キューの最後にそれぞれ移動します。
OS開発者は、正確な要件に応じて、1つまたは多くの異なるスケジューリング戦略を実装することを選択できます。スケジューリングに加えて、異なるスレッド間の同期と通信は、マルチスレッドシステムの他の重要な側面です。
XOSの条件とイベント
XOS RTOS(リアルタイムオペレーティングシステム)内の条件により、開発者は、指定された条件が真になるまでブロックするようにスレッドに指示できます。システムは、アプリケーション開発者によって定義された条件関数を使用して、各条件を評価します。 XOSは、別のスレッドが条件オブジェクトにシグナルを送信するとき、または割り込みハンドラーが条件オブジェクトをトリガーするときに、評価を実行します。
一方、XOS内のイベントは、開発者がさまざまなスレッドまたはスレッドと割り込みハンドラーを同期するために利用できるビットのグループを表します。 XOSを使用すると、複数のスレッドがイベントを待機し、それらを同時に通知できます。
XOSでの割り込み
XOSは、実行時に発生する割り込みと例外を処理するための豊富な機能セットを提供します。 XOS内の割り込みメカニズムにより、プログラマーはカスタムハンドラーを柔軟にインストールできると同時に、システム内で割り込みのディスパッチが可能な限り高速に機能するようになります。 XOSは、ネストされた割り込み処理もサポートしています。つまり、優先度の高い割り込みが発生した場合、OSは現在の割り込みハンドラーを一時停止します。システムが優先度の高い割り込みの処理を終了すると、優先度の低い割り込みの処理を自動的に再開します。
スレッドには、XOSでの時間制限や定期的なタイマーコールバックなどの時間関連のサービスも含まれる場合があります。 DSPコプロセッサーは、プログラマーが必要に応じて構成できる最大3つの内部タイマーをサポートします。
セマフォを理解する
マルチスレッドプログラミングでは、セマフォは共有リソースへのアクセスを制御および調整する手段を提供します。セマフォは、異なるスレッドを同期することにより、並行システムのクリティカルセクションの問題を回避するのに役立ちます。セマフォは、プログラマーがソースコードに自由に設定できる事前定義された開始値を持つ内部カウンターを追跡する単純な構造です。さまざまな実装が存在しますが、カウンターは通常、共有リソースにアクセスできるスレッドの数を表します。
スレッドが共有リソースにアクセスするときはいつでも、システムは関連するカウンターがゼロより大きいかどうかをチェックします。そうである場合、OSはリソースへのアクセスを許可し、セマフォの内部カウンターを減らします。スレッドが特定の時間にリソースにアクセスできない場合、スレッドはブロッキング状態に切り替わり、リソースへのアクセスを受信するまで待機します。スレッドがリソースを解放するたびに、OSはセマフォカウンターを増やし、新しいスレッドがクリティカルセクションに入る可能性があります。
図2。 セマフォがどのように機能するかを示すフローチャート
i.MX RT500MCUとDSPの概要
i.MX RT500は、最大275MHzのクロック速度と最大5メガバイトのSRAMをサポートする強力なArm®Cortex®-M33コアをベースにしたデュアルコアマイクロコントローラーのファミリーです。
i.MX RT500 MCUは、Arm TrustZoneや、最大8つのリージョンをサポートする内蔵メモリ保護ユニット(MPU)などの保護機能を提供します。 CASPER暗号化コプロセッサーは、ハードウェアアクセラレーションを可能にして、非対称暗号化アルゴリズムに必要なさまざまな機能を強化します。一連の省電力機能により、設計者はi.MXRT500の消費電力をアプリケーションの要件に合わせることができます。
さまざまな専用ハードウェアアクセラレータが、メインCPUがDSP計算を実行するのを支援します。追加のCadence®Tensilica®FusionF1オーディオDSP、ベクターグラフィックアクセラレーションを備えた2D GPU、およびさまざまなディスプレイインターフェイスにより、i.MXRT500はさまざまな安全で低電力の組み込みアプリケーションに適しています。一般的な使用例には、HMIアプリケーション、IoTデバイス、ヒアラブル、音声起動のパーソナルアシスタント、およびその他の同様の消費者向けデバイスが含まれます。
オーディオDSPを見てください
i.MX RT500には、処理コアが他のタスクを実行できるようにしながら、数学的に複雑な計算を実行することでCPUコアの負荷を軽減するのに役立つ、さまざまな特別なコプロセッサーが含まれています。そのような専用プロセッサの1つがFusionDSPであり、Cadence®Tensilica®FusionF1オーディオプロセッサとハードウェア浮動小数点ユニットが含まれています。
このオーディオ処理エンジンは、最大200 MHzの周波数で動作し、仮想アシスタントなどの常時オンの音声トリガーデバイスを有効にするように設計されています。また、オーディオDSPは、多数のオーディオコーデックを使用した一般的な前処理および後処理タスク用のさまざまなモジュールを組み合わせています。
DSPコアとメインCPUコアは、さまざまな方法で相互に通信できます。 RAMが保護されており、特定の部分がセキュアのみのアクセス用にマークされていない限り、開発者はFusionDSPを使用するときにSRAM全体を使用できます。
心の中でDSPを使ったプログラミング
テンシリカDSPは、FreeRTOS™、Zephyr™、Linux®、XOSなどのさまざまなリアルタイムオペレーティングシステム(RTOS)をサポートしています。ケイデンスは、テンシリカプロセッサを念頭に置いたリファレンスデザインとしてXOS組み込みカーネルを開発しました。
軽量のXOSカーネル機能には、タスクスケジューラ、適応型コンテキストスイッチング、同期メカニズム、割り込みと例外の管理、および重要なリソースの管理が含まれます。カーネルのソースコードは主に標準Cで記述されており、XtensaプロセッサやDSPに固有のものではありません。
スマートコンシューマーデバイスの要件を満たす
クロスオーバーMCUのi.MXRT500ファミリには、将来のスマートコンシューマデバイスを刺激するように設計されたさまざまな機能があります。さまざまなコプロセッサは、セキュリティおよび信号処理アプリケーションの数学的に複雑な計算を実行する際に、MCUのメインプロセッシングコアを支援します。そのようなコプロセッサーの1つは、高度に最適化されたCadence®Tensilica®FusionF1オーディオDSPであり、仮想アシスタントなどの常時オンの音声トリガーデバイスを可能にします。プログラマーは、XOSとXplorer IDEを利用して、専用のケイデンスプロセッサー用のアプリケーションを設計できます。
アプリケーションノートAN13159には、詳細、サポートされているAPI関数のリスト、XOSの条件とイベントの例が含まれており、NXPのWebサイトには、i.MXRT500の機能とアプリケーションに関する詳細情報が記載されています。また、アプリケーションノート、ビデオ、オンデマンドウェビナーなどのさまざまなトレーニング資料も提供しています。
業界記事は、業界パートナーが編集コンテンツに適さない方法でAll About Circuitsの読者と有用なニュース、メッセージ、テクノロジーを共有できるようにするコンテンツの形式です。すべての業界記事は、読者に有用なニュース、技術的専門知識、またはストーリーを提供することを目的とした厳格な編集ガイドラインの対象となります。業界記事で表明されている見解や意見はパートナーのものであり、必ずしもAll AboutCircuitsやそのライターのものではありません。
埋め込み