2194618_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2194618_ja-JP

2194618_ja-JP

U-Bloxを搭載したRT1170EVKBボードを使用してSDKサンプル(evkbmimxrt1170_a2dp_sink_cm7)を起動する方法

まず私の質問を述べさせていただきます。
最初に質問を述べると混乱してしまうと思う、SO質問の後で私の環境と、この質問に至った経緯を説明します。

■質問
1.MCUXpresso IDEs を使用しない場合のダウンロード時間は約 90 秒です。少し長いようですが、適切でしょうか?
また、この時間を短縮する方法はありますか?
2. MCUXpresso IDEsを使用する場合と使用しない場合で、F1[0x5c] を同じにするにはどうすればよいですか?
IDEs でダウンロードできるようにしたいと思います。

■ 環境
- MCUXpresso IDE バージョン v25.6 [ビルド 136] [2025-06-27]
- SDKバージョン25.06.00、マニフェストバージョン 3.15.0
- SDKsの例: evkbmimxrt1170_a2dp_sink_cm7
- WiFiモジュール:U-Blox MAYA-W266-00B

■ 変更概要
1. WiFiモジュール定義値: WIFI_IW612_BOARD_RD_M2
2. ボードのBluetooth HCI UART設定(board.h)
pin_mux.c 以降UART2 を設定すると、この定義は UART7 から UART2 に変更されました。
3. 初期化プロセスの変更(main.c、コントローラ_wifi_nxp.c)
- GPIOクロックを有効にする(main.c)
- #if セクションに「WIFI_IW612_BOARD_RD_M2」を追加します。(コントローラ_wifi_nxp.c)
- 必要に応じて WiFi モジュールを初期化する (controller_wifi_nxp.c)
- 必要に応じて include 宣言と関数を追加しました (controller_wifi_nxp.c)
4. #undef CONFIG_WIFI_SDIO_DEBUG を無効にしました (wifi_config.h)
5. #ifセクションに「WIFI_IW612_BOARD_RD_M2」を追加しました(edgefast_bluetooth_app.h)
6. controller_hci_uart_get_configuration関数の有効化(hardware_init.c)
7. ピン設定の変更(ピンの追加や値の変更を含む)(pin_mux.c/h)
この変更は ConfigTool Pins を使用して行われました。
8. sdio_interface_send関数の準備状態を変更しました(fwdnld_sdio.c)
9. wlan_sdio_init_ioport関数を変更してCMDポートを無効にしました(sdio.c)

■ 状況(背景、原因、解決策)
● 背景
MCUXpresso IDEs で起動すると、firmware_download 関数が SUCCESS を返しません。
sdio_interface_send 関数が準備状態の確認に失敗し、コンソールに次のログが表示されます。

[wifi_io] 0x30068ae4からコネクティビティファームウェアのコピーを開始します
[wifi_io] 圧縮されていない画像が見つかりました。ダウンロードを開始します。長さ: 1092508
[wifi_io] エラー: wlan_card_status() でエラーが発生しました
[wifi_io] エラー: カードタイムアウト sdio_interface_send:313
アサートエラー " API_SUCCESS == 結果 ": ファイル "controller_wifi_nxp.c" 行 "347" 関数名 "controller_init"

ただし、MCUXpresso IDE がコネクテッドされておらず、デバイスの電源を入れ直すことで起動した場合、ファームウェアのダウンロードは成功します。ダウンロードが成功した場合のログを以下に示します。

[wifi_io] 0x30068704からコネクティビティファームウェアのコピーを開始します
[wifi_io] 圧縮されていない画像が見つかりました。ダウンロードを開始します。長さ: 1092508
[wifi_io] ファームウェア準備完了
[wifi_io] WLAN FWのダウンロードに成功しました

●原因
調査の結果、起動時にMCUXpresso IDEがコネクテッドされているかどうかによって、ONになるReadyビットが異なることが判明しました。
MCUXpresso IDE のコネクテッドの有無による違いは以下のとおりです。
- MCUXpresso IDE - 番号: F1[0x5c] = 0x0d (CARD_IO_READY、CIS_CARD_RDY、DN_LD_CARD_RDY)
- MCUXpresso IDE - 番号: F1[0x5c] = 0x88 (DN_LD_CP_RDY, CARD_IO_READY)
*F1は機能1を示します。
※準備ビットのリストも添付しております。

● 解決策
現時点では解決策を見つけることができません。
そのため、判断基準を以下のように変更いたしました。
【変更前】
wlan_card_status(DN_LD_CARD_RDY | CARD_IO_READY) == true の場合
【変更後】
ブール値の ready_by_card = wlan_card_status(DN_LD_CARD_RDY | CARD_IO_READY);
ブール ready_by_cmd = wlan_card_status(DN_LD_CP_RDY | CARD_IO_READY);
if (ready_by_card || ready_by_cmd)

上記の手順を実行した後でも、IDEs を使用してダウンロードすることができませんでした。
このため、私はここで調査を終了し、ここで質問することにしました。

■ 添付ファイル
プロジェクトファイルセット: evkbmimxrt1170_a2dp_sink_cm7_nexty.7z
準備ビットステータス: F1-5C_bit.png
実行ログとIDEコネクテッド: COM12_20251029_082435_connectIDE-1.log、COM12_20251029_083226_connectIDE-2.log
IDE がコネクテッドされていない状態での実行ログ: COM12_20251029_082814_disconnectIDE.log

■ 追伸
IDE がコネクテッドされていない場合、ファームウェアのダウンロードが成功した後、controller_hci_uart_init 関数は戻りません。現在この問題を調査中です。
この段階で何かご意見がありましたら、ぜひお知らせください。

宜しくお願いします、
五十嵐正幸さん。


Re: How to launch the SDK sample (evkbmimxrt1170_a2dp_sink_cm7) using an RT1170EVKB board with a U-B

@masayuki_igarashi さん、こんにちは。

あなたの質問にお答えします:

1. はい、Bluetooth 経由で接続することはCAN。「bt_settings_init」関数は Bluetooth の状態と構成を永続的に保存するためのものであるため、リセット時にすべての Bluetooth 設定を再初期化する必要があります。
2. 残念ながら、ソースコードが公開されていないすべての提供ライブラリは、一般アクセスされることを意図していません。

問題に関しては、サンプルをカスタム ボードに移植するプロセスを容易にするため、MIMXRT1170-EVKB でサンプルをテストすることを強くお勧めします。

Re: How to launch the SDK sample (evkbmimxrt1170_a2dp_sink_cm7) using an RT1170EVKB board with a U-B

こんにちは、 @RomanVR

この回答では 2 つの点を報告します。
1. RT1170EVKBサンプルプログラムの動作状況
2. このサンプルプログラムの変更点

1. RT1170EVKBサンプルプログラムの動作状況

以下のサンプルプログラムが動作することを確認いたしました。

  1. こんにちは世界: evkbmimxrt1170_hello_world_cm7
  2. LED: evkbmimxrt1170_lpi2c_polling_b2b_master_cm7
  3. Wi-Fi: evkbmimxrt1170_wifi_setup_cm7

2. このサンプルプログラムの変更点(概要)

  1. プリプロセッサの追加/変更
    • SKIP_DCDC_CONFIGURATION=1
    • WIFI_IW612_BOARD_RD_M2 (初期モジュール構成は削除されました)
    • MFLASH_ANOTHER_SETTING (Flashの変更により新しく追加されました)
  2. WiFiモデル変更による変更点(WIFI_IW612_BOARD_RD_M2)
    • プリプロセッサ設定の変更
    • 各ファイルに関連する設定条件を追加しました
    • controller_wifi_nxp.c、edgefast_fluetooth_app.h、hardware_init.c
  3. デバッグコンソールをUART1からUART7に変更しました
    • board.c/h、pin_mux.c/h
  4. Bluetooth HCI UART構成をUART7からUART10に変更しました
    • ボード.h
  5. BT関連の修正
    • BTウェイクアッププロセッシングを追加
      • controller_wifi_nxp.c (controller_hci_uart_init関数)
    • HCI UART設定をUART2からUART10に変更しました
      • hardware_init.c (controller_hci_uart_get_configuration関数)
    • BT_RST/V_INT_WAKEの低/高設定
      • wifi_bt_config.c
  6. 変数設定を変更しました
    • littlefs_pl.c
      • lfs_pl_init 関数を修正しました (現在の問題が解決したら元に戻る可能性があります)
        • block_countとstart_addの取得方法を変更しました
          • LittleFS_config.block_count = (uint32_t)(&EDGEFAST_BT_LITTLEFS_STORAGE_MAX_SECTORS);
          • LittleFS_ctx.開始アドレス= ((uint32_t)EDGEFAST_BT_LITTLEFS_STORAGE_START_ADDRESS) - (uint32_t)(MFLASH_BASE_ADDRESS);
        • LittleFS_config.read_buffer/prog_buffer/lookahead_buffer にローカル変数ポインターを割り当てました。
  7. フラッシュメモリの変更による変更
    • mflash_drv.c
      • NOR_CMD_LUT_SEQ_IDXの定義値を変更しました
      • デバイス構成を変更しました
      • カスタムLUTを変更しました
      • プログラムコードと変数のRAM割り当て
        • カスタムLUT
        • DisableGlobalIRQ を __get_PRIMASK() と __disable_irq() に変更しました
        • tmpLUT
        • memcpyを手動プロセッシングに変更しました
        • EnableGlobalIRQ を __enable_irq() に変更しました
    • evkbmimxrt1170_flexspi_nor_config.c
      • qspiflash_config.memConfigを変更しました
  8. 初期化プロセッシングを変更しました
    • main.c
      • ベクターテーブルをRAMに再配置
      • フラッシュメモリのクロック設定プロセッシングを追加
      • xTaskCreateStaticでapp_a2dp_sink_taskを作成しました(DTCMにタスクスタックスペースを配置しました)
  9. ピン構成を変更しました
    • pin_mux.c/h (動作確認済みのプロジェクトファイルを使用)
      • BT_RST、VENDOR_DEF2、VENDOR_DEF3、WIFI_WAKE、V_INT_WAKE、LPUART7、LPUART10、WIFI_SDIO、FlexSPI、PDN、WIFI_RST
      • *GPIO_EMC_B1_39はBT_RSTとして使用されます。この例では SDRAM は使用されていないため、これは問題にはなりません。
  10. デバッグの修正(最終的には削除されます)
    • lfs_pl_init関数
      • 内部バッファサイズチェック
      • R6(汎用レジスタ)の更新チェック
      • PSPとTCBのアドレスチェック
    • GPIO2_Combined_0_15_IRQHandlerの呼び出し回数をカウントする
    • LPUART10_IRQHandlerの呼び出し回数をカウントする
    • mflash_drv_init_internal 内の taskENTER_CRITICAL/taskEXIT_CRITICAL の前後に FLEXSPI_SoftwareReset をラップしてみてください。
    • xPortSysTickHandlerの呼び出し回数をカウントする
    • configCHECK_FOR_STACK_OVERFLOWを0から2に変更する
    • スタック破損をチェックするコードを追加する
    • MemManage_Handler/UsageFault_Handler/vApplicationStackOverflowHookの追加

追加の質問

  1. bt_settings_init 関数呼び出しをコメントアウトした場合でも、Bluetooth 経由でスマートフォンに接続CANますか?
  2. BT_bluetooth_onはライブラリとして提供されているようですが、ソースコードを公開することは可能でしょうか?

宜しくお願いします、

五十嵐正幸さん。



Re: How to launch the SDK sample (evkbmimxrt1170_a2dp_sink_cm7) using an RT1170EVKB board with a U-B

こんにちは@masayuki_igarashiさん、お元気にお過ごしでしょうか。

Hello World の例を試してみて、その例がカスタム ボードで適切に実行されるかどうかを共有していただけませんか?
さらに、カスタム ボードを開発する際には、メモリ仕様、GPIO の場所など、考慮すべき事項があることにご注意ください。より具体的な設計ガイドラインについては、 MIMXRT1160/1170 プロセッサのハードウェア開発ガイドを参照してください。

また、カスタム ボード上で実行するためにワイヤレス アプリケーションにどのような変更を加えたかを明確にしていただけますか?

Re: How to launch the SDK sample (evkbmimxrt1170_a2dp_sink_cm7) using an RT1170EVKB board with a U-B
こんにちは@Ricardo_Zamoraさん
RT1170EVKB ハードウェアの作り直しは難しいため、カスタム ボードを使用することにしました。
MCU: MIMXRT1176CVM8A
 
カスタム ボードでは、controller_init 関数を正常に完了できました。
(firmware_download と controller_hci_uart_init も両方とも正常に完了しました。)
 
ただし、controller_init 関数の後に実行される bt_settings_init 関数の下の lfs_pl_init 付近で障害が発生しました。
サンプルは通常は変更せずに実行できると思いますが、変更が必要な場合は、サンプルを動作させる方法を教えてください。
 
障害発生後に実施した対応は以下のとおりです。サンプルの実行方法がわからなかったので、いろいろ試してみました。
最初はスタックの破損を疑いましたが、調査の結果、その可能性は低いと判断しました。
その後、障害の原因として次の 2 つが考えられました。
1.mflash_drv_init の下のプログラム コードは RAM に割り当てる必要があります。
例:EnableGlobalIRQ はフラッシュメモリに格納されるため、この機能は使用できず、内部プロセッシングに変更されました。
2. mflash_drv_init の下のデータも RAM に配置する必要があります。
例: カスタム LUT が RAM に明示的に配置されました。
 
上記の他に修正が必要な点はありますか?
 
以下の障害情報が報告されており、現在対処中です。
(誤った訂正が含まれる場合があります。)
 
活断層
メモリ管理障害 (MMSR)
MMARVALID (7) MemManageフォールトアドレスレジスタ(MMFAR)有効フラグ
DACCVIOL (1) データアクセス違反フラグ
 
障害ステータスレジスタ
IPSR 0x00000004 例外ステータスレジスタ(メモリ管理障害)
CFSR 0x00000082 構成可能な障害ステータスレジスタ
MMSR 0x00000082 メモリ管理障害ステータスレジスタ
BFSR 0x00000000 バス障害ステータスレジスタ
UFSR 0x00000000 ユーザー障害ステータスレジスタ
HFSR 0x00000000 ハードフォールトステータスレジスタ
DFSR 0x00000000 デバッグ障害ステータスレジスタ
MMAR 0xC5A70A9D メモリ管理障害アドレスレジスタ
BFAR 0xC5A70A9D バス障害アドレスレジスタ
ABFSR 0x00000000 補助バス障害ステータスレジスタ
 
スタックレジスタ(PSP LR/EXC_RETURN=0xfffffffd)
R0 0x00000000
R1 0x202403BC
R2 0x20264CCC
R3 0x00000000
R12 0x00000000
LR 0x20240ED7 mflash_drv_init_internal() @ \evkbmimxrt1170_a2dp_sink_cm7_nexty_NXP_PFP\flash\mflash\mimxrt1170evkb\mflash_drv.c459行目
PC 0x3002D4E4 lfs_pl_init() @ \evkbmimxrt1170_a2dp_sink_cm7_nexty_NXP_PFP\bt_ble\port\pal\mcux\bluetooth\littlefs_pl.c524行目
PSR 0xA1000000
PSP 0x200164D8
 
宜しくお願いします、
五十嵐正幸さん。
Re: How to launch the SDK sample (evkbmimxrt1170_a2dp_sink_cm7) using an RT1170EVKB board with a U-B

@masayuki_igarashi さん、こんにちは。

混乱をおかけして申し訳ございません。共有いただいたガイド ( MIMXRT1170-EVKB および Murata 2EL M.2 モジュールのハードウェア再作業ガイド) は、ボードに必要な再作業を行うための正しいガイドです。

さらなる発見がありましたらお知らせください。

Re: How to launch the SDK sample (evkbmimxrt1170_a2dp_sink_cm7) using an RT1170EVKB board with a U-B

こんにちは、 @Ricardo_Zamora

「MIMXRT1170-EVKB および Murata M.2 モジュールのハードウェア リワーク ガイド」を確認しました。
情報では、MIMXRT1060-EVKC の写真を使用し、コンポーネントの位置について説明しました。
MIMXRT1170-EVKB の回路図やレイアウト ファイルで検索しても、一部のコンポーネントが見つかりません。
R93 と J55 は MIMXRT1170-EVKB の回路図やレイアウト ファイルには存在せず、J54 は MIMXRT1170-EVKB の M.2 インターフェース ソケットであるようです。
上記のガイドの内容は、おそらく MIMXRT1060-EVKC 向けでしょうか?

SO、同様のガイドを見つけたので、以下に示します。
タイトル: 「MIMXRT1170-EVKB および Murata 2EL M.2 モジュールのハードウェアリワークガイド」
URL: https://mcuxpresso.nxp.com/mcuxsdk/latest/html/middleware/edgefast_bluetooth/docs/HWRGEFBTPALUG/topi...

上記のガイドは、RT1170-EVKB で Bluetooth を実行するためにハードウェアを変更する正しい方法ですか?
そうでない場合は、MIMXRT1170-EVKB のガイドがあるかどうかをお知らせください。

宜しくお願いします、
五十嵐正幸さん。

Re: How to launch the SDK sample (evkbmimxrt1170_a2dp_sink_cm7) using an RT1170EVKB board with a U-B

こんにちは@Ricardo_Zamoraさん

お返事ありがとうございます。
ボードのやり直しが必要だとは知りませんでした。提供していただいたURLを確認させていただきます。

まず、ご要望のボードの写真を添付いたしますのでご確認ください。
先ほども申し上げましたが、私は手直しが必要であることを認識していなかったため、添付の写真の基板は手直し前の状態となっております。

ご清聴ありがとうございました。
よろしくお願いします、
五十嵐正幸さん。

Re: How to launch the SDK sample (evkbmimxrt1170_a2dp_sink_cm7) using an RT1170EVKB board with a U-B

こんにちは@masayuki_igarashiさん、お元気にお過ごしでしょうか。


ボードのセットアップ(モジュール接続を含む)の詳細な写真を共有していただけますか?


Bluetooth UART および PCM インターフェースの場合、 MIMXRT1170-EVKB および Murata M.2 モジュールのハードウェア再作業ガイドに示されているように、MIMXRT1170-EVKB の再作業が必要であることに注意してください。


さらに、変更されていないワイヤレスサンプルを再加工したボードにフラッシュしたときに、この動作が続くかどうかを確認します。


結果をお知らせください。


よろしくお願いいたします。

リカルド

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎11-20-2025 10:06 AM
更新者: