LPC55S6X(Zephyr OS)のCore 1でUSBを使用するネタバレLPC55S69(LPCXPRESSOボード)のCPU1にUSBペリフェラル(デバイスコントローラ)を割り当てるには何をする必要があるか調べています。
修正された cdc-acm サンプル プロジェクトを構築しています。メイン コア (CPU0) は、CPU1 を有効にしたビルドでフラッシュされます。CPU1 でコードを実行しても問題はありません。たとえば、ボタンの押下を処理できます。しかし、USB ハードウェアは正しく初期化されません。たとえば、USB_EhciPhyInit 内では、usbPhyBase->CTRL へのすべての書き込みで値が 0 から変更されないことがわかります (ハードウェア レジスタを確認するために Ozone デバッガーを使用しています)。
要約すると、 USBPHY レジスタと USBHSD レジスタの両方がドライバーからの書き込みを無視するようです。
確認したこと:
1. 同じプロジェクトがCPU0でも動作する
2. CPU1を初期化して起動するために使用するCPU0プロジェクトでは、USBコントローラとUSB RAMが無効になっています。
3. CPU1でUSBコントローラとUSB RAMが有効になります
基本的にCPU0のUSB初期化と同じSWパスをたどりましたが、ペリフェラルが死んでしまったようです。クロックが有効になっていないようです。
USBRe: Using USB on Core 1 of LPC55S6X (Zephyr OS)こんにちは@alexfeinman
LPC55S69 では、2 つの M33 コアが同じペリフェラルを共有しますが、CPU1 には TrustZone がなく、デフォルトでは多くのペリフェラルが Secure‑only として表示されます。
LPCXPRESSO55S69 — Zephyr プロジェクト ドキュメント
Harry_Zhang_0-1770715804895.png
BR
ハリー
Re: Using USB on Core 1 of LPC55S6X (Zephyr OS)ありがとう。あなたの返答を正しく理解していれば、私の選択肢は、CPU0 で非セキュア ビルドを使用するか、信頼ゾーンを構成して何らかの方法で CPU1 USB アクセスを許可するかのいずれかになります。Zephyr で後者を実現する方法に関するリソースを教えていただけますか?
Re: Using USB on Core 1 of LPC55S6X (Zephyr OS)こんにちは@alexfeinman
CPU1 (LPC55S69 の 2 番目の Cortex-M33) は TrustZone をまったくサポートしていません。
Zephyr では、「TrustZone を CPU1 USB アクセスを許可するように構成する」ことはできません。
あなたの目標は何ですか?
CPU1 で実行されている USB デバイスのみですか?
BR
ハリー
Re: Using USB on Core 1 of LPC55S6X (Zephyr OS)返信が遅くなり申し訳ありません。通知メールがなぜか迷惑メールフォルダに入ってしまっていました。
私の目標は、USBインターフェースを処理するコードをコア1で実行し、コア0ではそれとは無関係な処理を実行させることです。基本的には、コア1を専用の通信プロセッサとして使用し、複数のUART-USBブリッジ(合計4つ)を実行させたいと考えています。