Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
リセットで止まる 私は S32M24x EVB を使っていますが、コントローラーがリセット状態のままになっています。搭載デバッガーを使用しています。 リセット LED が常にハイになっているのがわかり、コントローラーで何もフラッシュできません。 私はDesign Studioを使用しており、「実行中のターゲットにアタッチ」を有効にして試してみましたが、搭載デバッガーは攻撃できますが、停止またはリセットできず、しばらくするとアタッチメントも壊れているようです。 「arm-none-eabi-gdb.exe」を直接使用して試してみましたが、デバイスは保護されており、ソフト リセットに失敗したと表示されます。 ハードウェアもチェックしましたが、コンポーネントは損傷していませんでした。 実行中のプログラムのフラッシュ構成ワードは次のとおりです。 .section .flash_config, "a" .long 0xFFFFFFFF ; 8 bytes backdoor comparison key .long 0xFFFFFFFF ; .long 0xFFFFFFFF ; 4 bytes program flash protection bytes .long 0xFFFF7FFE ; FDPROT:FEPROT:FOPT:FSEC(0xFE = unsecured) そしてフラッシュセクションは - MEMORY { int_flash_config : ORIGIN = 0x00000400, LENGTH = 0x00000010 } SECTIONS { .flash_config ALIGN(4) : > int_flash_config } この状況の原因は何でしょうか? また、コントローラを再び正常に動作させる方法は何でしょうか? 前もって感謝します!!! Re: Stuck in Reset この問題は、起動時にフラッシュ構成ワードがクリアされたために発生しました。 Re: Stuck in Reset こんにちは@Satyajit_Patil オシロスコープを使用してリセット信号を確認していただけますか?リセットピンを直接測定し、観察した波形の画像を共有します。リセット ラインが図のように切り替わる、添付の信号と同様の信号が表示されることが予想されます。 さらに、私や同様の現象を経験している他のお客様に効果があったプロセスを試していただけますか?MCU を再フラッシュするには、点滅例を使用してフラッシュを試行しながらリセット ボタンを押し続けます。失敗する可能性があり、再試行するかどうかを尋ねられます。その場合は、リセット ボタンを放し、そのプロンプトの下で再度プログラムのロードを試みてください。これを実行すると、プログラムは正常にロードされ、ボードが回復するはずです。 上記の手順を試しても問題が解決しない場合は、お知らせください。 BR、ヴェインB
查看全文
CAAM ドライバからのユーザーコールバックの使用方法 がある: /*! @brief CAAMハンドル * jobRing とオプションでユーザー コールバック関数を指定します。 * ユーザー コールバック関数は、ジョブリング割り込みがユーザーによって有効にされている場合にのみ呼び出されます。 * デフォルトでは、jobRing 割り込みは無効になっています (デフォルトのジョブ完了テストは CAAM 出力リングをポーリングします)。 */ typedef 構造体 _caam_handle_t { caam_job_ring_t ジョブリング; /* コールバック関数 */ caam_job_callback_t コールバック; /*!< コールバック関数 */ void *userData; /*!< CAAMジョブ完了コールバックのパラメータ */ } caam_handle_t; SOコールバックを書いてcaam_handle_t*ハンドルにマッピングしました 静的void xpnd_CAAM_job_ring_1_complete_clb(void* args) { BaseType_t pxHigherPriorityTaskWoken = pdFALSE; xSemaphoreGiveFromISR(sem[ITF_1], &pxHigherPriorityTaskWoken); IRQ を無効にします(CAAM_IRQ1_IRQn); } 最後に試したのは: IRQ を有効にします (CAAM_IRQ1_IRQn); drv_res = CAAM_RNG_GetRandomDataNonBlocking( ベース、ハンドル、kCAAM_RngStateHandle0、説明、データ、データサイズ、 kCAAM_RngDataAny、NULL); if (drv_res == kStatus_Success) { pdTRUE != xSemaphoreTake(sem[ITF_1], MS_TIMEOUT) の場合 { PRINTF("CAAM 操作に失敗しました\r\n"); ST_FAILURE を返します。 } } それ以外 { PRINTF("ドライバ操作のセットアップに失敗しました、res %d\r\n", drv_res); ST_FAILURE を返します。 } セマフォからエラーを報告しなかったため、プログラムはすぐにクラッシュしたと思います。 他に何かする必要がありますか? アセンブリ startup_mimxrt1176 には CAAM_IRQ0_IRQHandler のプロトタイプがありますが、定義されていない可能性があります。このような状況になるでしょうか? また、ドライバ コードでは、カスタム コールバックが呼び出される場所がわかりません。 Re: How to use user callback from CAAM driver こんにちは@jslota13245さん、 弊社の製品にご興味をお持ちいただき、またコミュニティをご利用いただき誠にありがとうございます。 あなたのコードは FreeRTOS に基づいているようです。 まず NXP SDK デモ「evkbmimxrt1170_caam_cm4」でテストすることをお勧めします。このデモプロジェクトは、KSDKソフトウェアを使用してプレーンテキストを暗号化し、AESアルゴリズムを使用して復号化するデモプログラムです。CBCモードとGCMモードのデモが行われます。対称鍵は、CAAMの乱数ジェネレータを使用してランダムに生成されます。   このデモを実行して、問題が API の使用によるものか、FreeRTOS の統合によるものかを確認してください。   よろしくお願いいたします。 メイリュー Re: How to use user callback from CAAM driver 親愛なる@mayliu1様、 デモでは、ユーザー コールバックの使用方法、または実際の割り込みの使用方法は示されません。 完了時に CAAM ハードウェアからの割り込みが必要です。それについて手伝ってもらえますか?
查看全文
Power consumption regression after suspend/freeze in BSP 6.6.36 (i.MX8MP) Hello, We are observing a power consumption regression on i.MX8M Plus when using the NXP RealTime Edge v3.1 BSP based on Linux 6.6.36. After suspend/resume, the system consumes ~20% more power than before entering suspend. This happens with a very minimal hardware setup: only NAND and eMMC are connected (no USB, PCIe, Wi-Fi, ETH, etc.). Comparison across BSPs: linux-imx BSP based on Linux 6.6.23 (non-RT): no issue, power consumption is correctly restored after suspend/freeze Realtime Edge 3.1 BSP Linux 6.6.36 (non-RT and RT): issue present Realtime Edge 3.3 BSP (Linux 6.12): no issue observed, power consumption is restored correctly Please let us know if this is a known issue or if there are recommended patches or configuration changes. If needed, we can provide device tree sources, kernel configuration, and any additional files required to help reproduce and analyze the issue. Best regards, Aitor i.MX 8M | i.MX 8M Mini | i.MX 8M Nano i.MXRT Linux Suspected Software Defect Yocto Project Re: Power consumption regression after suspend/freeze in BSP 6.6.36 (i.MX8MP) Hello, Sorry for that, but yes we have update the BSP, please download the real time edge 3.3. Regards Re: Power consumption regression after suspend/freeze in BSP 6.6.36 (i.MX8MP) Hello, Thank you for the reply. We have already tested Realtime Edge 3.3 (kernel 6.12) and can confirm that the issue is not present there. However, upgrading to 3.3 is not an option for us at the moment, as we are currently based on Realtime Edge 3.1 and need to stay close to our existing kernel and BSP for compatibility reasons. Since the problem is fixed in Realtime Edge 3.3, could you please point us to: The specific patch(es) or commit(s) where this issue was addressed, or Any recommended backport to BSP 3.1 / kernel 6.6.x This would allow us to apply the fix without requiring a full BSP upgrade Best regards, Aitor Re: Power consumption regression after suspend/freeze in BSP 6.6.36 (i.MX8MP) Hi, In this case you will have to ask to our professional services since some package that are needed in the 3.1 are update. Regards
查看全文
MCXE246 MCUXpresso not working for custom board The generated code for a basic project for a custom board with a MCXE246 doesn't work correctly. To make it compile i needed to add  __attribute__ ((used,section(".FlashConfig"))) const struct { unsigned int word1; unsigned int word2; unsigned int word3; unsigned int word4; } Flash_Config = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE}; but when debugging the code doesn't run, it keeps starting in the WDOG code executing every line from the top of the file to the bottom even if the functions are not called. I never reach the main() Is it possible to provide me with a mcuexpresso project for a custom board with a mcxe246? Thank you Kind regards Niels Boot ROM|Booting | Flash Core and Memory Re: MCXE246 MCUXpresso not working for custom board Hi @nd_psi  Thanks for your project. Your project is missing the start. c file. This is a bug in our old version SDK. But we fix it. Please download the latest version of SDK v25.12. BR Harry Re: MCXE246 MCUXpresso not working for custom board Hi @Harry_Zhang, Thank you for your reply, unfortunately it still doesn't work. When I follow the same steps, I get a compile error saying that no flashconfig is provided. I can get rid of this error by disabling the following option (which is enabled by default): When I debug, the MCU crashes immediately and I get the error No source available for "_pvHeapStart() at 0x1fff0080" . I have attached my project. MCUXpresso IDE v25.6 [Build 136] [2025-06-27] SDK_2.x_MCXE246 version 25.09.0.201911251446 (epluginsite815 2025-09-22) 3.15.0 Kind regards Niels Re: MCXE246 MCUXpresso not working for custom board Hi @nd_psi  I tested it on my end. 1. Create a new mcxe246 project. 2. You don't need to add Flash_Config , it can compile successfully 3. And i can debug it. BR Harry Re:Re: MCXE246 MCUXpresso not working for custom board Hi @Harry_Zhang, Thank you for your reply, I updated the SDK and i can now compile it without changing a setting. But when i debug i still get an error and never reach main(). I have attached my project. Kind regards Niels Re: Re:Re: MCXE246 MCUXpresso not working for custom board Hi @nd_psi  I just tested your project. I can debug it. So I think you can try to connect the chip with the jlink. If you can not connect the chip : prioritize  check the hardware connection BR Harry Re: Re:Re: MCXE246 MCUXpresso not working for custom board Hi @nd_psi  “ I connected the J-link to the FRDM-MCXE247 board and observed the same behavior.” In my last reply, my test board was FRDM-MCXE247 and my debuger was J-link. So I think you can try changing a J-link. BR Harry Re: Re:Re: MCXE246 MCUXpresso not working for custom board Hi @Harry_Zhang, Thank you for your reply, unfortunately it still doesn't work. The problem is that I can connect via J-link, but when I start debugging, the program counter jumps to a random location in memory, so you can never execute your code (you also don't end up in the main). You can connect via J-link. I have checked the connections, and this does not offer a solution either. I connected the J-link to the FRDM-MCXE247 board and observed the same behavior. In addition, I connected my custom board to an MCU link, and it works there, so you can run your code without any problems. Are there any known issues with debugging using J-link? Kind regards Niels
查看全文
FLEXIO I2C による RPMSG の問題 私は i.MX93 M33 コア開発の初心者です。サンプル コード mcimx93evk_rpmsg_lite_str_echo_rtos_remote_cm33 と mcimx93evk_flexio_i2c_read_accel_value_transfer_cm33 をテストしましたが、どちらも正常に動作しました。 しかし、FlexIO I²C 関数を mcimx93evk_rpmsg_lite_str_echo_rtos_remote_cm33 にマージしようとすると、プログラムは FLEXIO_I2C_MasterInit() によって呼び出される FLEXIO_SetShifterConfig() で停止してしまいます。 これら 2 つの機能 (初期化順序、クロック/IRQ 設定、注意すべきリソース競合など) をきれいに統合するためのアドバイスやベスト プラクティスを共有していただける方はいらっしゃいますか?どなたかご指導いただければ幸いです。よろしくお願いします。 Re: Issue of RPMSG with FLEXIO I2C dtbを添付しました。ありがとうございます! Re: Issue of RPMSG with FLEXIO I2C こんにちは@nyc 使用している dts を共有していただけますか? よろしくお願いします、 志明 Re: Issue of RPMSG with FLEXIO I2C @スタッフお手伝いできるスタッフはいますか? Re: Issue of RPMSG with FLEXIO I2C こんにちは@nyc dtsをチェックしましたが、異常はありません。コードをもう一度確認し、クロックが生成されていることを確認してください。FLEXIO I2C ファイルを再度確認してください。 よろしくお願いします、 志明
查看全文
BL2レベルからNORフラッシュへの読み書き 私はS32G3 (Yocto BSP 43)に取り組んでおり、セキュア ブート (BL2) エラーを QSPI NOR に記録しようとしています。 BL2 の MMIO 読み取り/書き込み API を使用しようとしましたが、API 呼び出しの直後にブート プロセスが停止したようです。 xspi_read() / xspi_write() API を使用しようとしましたが、未定義の参照エラーで BL2 ビルドが失敗します。調査の結果、これらのAPIはATFに実装されていないことがわかりました。FSPIの読み取り/書き込みAPIも同様です。 セキュア ブートが有効な場合、BL2 からの読み取り/書き込みアクセスがサポートされているかどうかを確認してください。サポートされている場合、このCASEに推奨されるAPIを教えていただけますか?あるいは、BL2 からのログ記録やデータの永続化に関して実行可能なアプローチや推奨される代替方法についてご指導いただければ幸いです。 よろしくお願いします、 ジャヤシュリー Re: read write in NOR flash from BL2 level こんにちは@Jayashree 、 再度ご連絡いただきありがとうございます。いつでもサポートさせていただきます。あなたの質問に関して、過去に同様の実装を見たことはありません。ただし、ここに私の推奨事項があります: xspi_read/xspi_write を使用するには、以下を含める必要があります。 #include ソース ファイルでは、bl2_main() に xspi_write を追加してビルドできました。ビルド プロセスのみをテストしたことに注意してください。 bl_common.c#L94で行われたように、 io_read/io_write を使用することもできます。 MMIO の読み取り/書き込みについて言及しましたが、include/lib/mmio.h 内の関数のことを指しているのでしょうか? これが役に立つかどうか教えてください Re: read write in NOR flash from BL2 level 迅速なご対応ありがとうございます。あなたの提案に従って、推奨ヘッダーファイルをインクルードし、bl2_main.cでXSPI APIを呼び出そうとしました。ファイル。ただし、ビルド中に未定義の参照/シンボルエラーが依然として発生します。     ご参考までに、修正したファイルを下記に添付いたします。ご確認いただき、必要な構成やビルドの変更が不足している場合はお知らせいただけると幸いです。 /* * Copyright (c) 2013-2023、Arm Limited および貢献者。 * * SPDXライセンス識別子: BSD-3条項 */ #include #include #include #include #include #include #include #include #include <ドライバ/auth/auth_mod.h> #include <ドライバ/auth/crypto_mod.h> #include <ドライバ/console.h> #include <ドライバ/fwu/fwu.h> #include <ドライバ/nxp/flexspi/fspi_api.h> #include #include #include #include #include "bl2_private.h" #ifdef __aarch64__ #NEXT_IMAGE "BL31" を定義します #それ以外 #NEXT_IMAGEを「BL32」と定義する #endif /* ================== NOR テスト構成 ================== */ #NOR_TEST_OFFSET 0x400U を定義します #NOR_TEST_SIZE 4U を定義します /* =================================================== */ #ENABLE_RUNTIME_INSTRUMENTATION の場合 PMF_REGISTER_SERVICE(bl_svc、PMF_RT_INSTR_SVC_ID、 BL_TOTAL_IDS、PMF_DUMP_ENABLE); #endif #RESET_TO_BL2の場合 /**************************************************************************************** * RESET_TO_BL2=1のときのBL2のセットアップ関数 **********************************************************************************/ void bl2_el3_setup(u_register_t arg0, u_register_t arg1, u_register_t arg2, u_register_t 引数3) { /* プラットフォーム固有の初期セットアップを実行する */ bl2_el3_early_platform_setup(arg0, arg1, arg2, arg3); /* プラットフォーム固有のセットアップを後で実行します */ bl2_el3_plat_arch_setup(); #CTX_INCLUDE_PAUTH_REGSの場合 /* * ARMv8.3-PAuthがレジスタが存在するかアクセス * 保存中または復元中に障害が発生します。 */ アサート(is_armv8_3_pauth_present()); #endif /* CTX_INCLUDE_PAUTH_REGS */ } #else /* RESET_TO_BL2 */ /**************************************************************************************** * RESET_TO_BL2=0のときのBL2のセットアップ関数 **********************************************************************************/ void bl2_setup(u_register_t arg0, u_register_t arg1, u_register_t arg2, u_register_t 引数3) { /* プラットフォーム固有の初期セットアップを実行する */ bl2_early_platform_setup2(引数0、引数1、引数2、引数3); /* プラットフォーム固有のセットアップを後で実行します */ bl2_plat_arch_setup(); #CTX_INCLUDE_PAUTH_REGSの場合 /* * ARMv8.3-PAuthがレジスタが存在するかアクセス * 保存中または復元中に障害が発生します。 */ アサート(is_armv8_3_pauth_present()); #endif /* CTX_INCLUDE_PAUTH_REGS */ } #endif /* RESET_TO_BL2 */ /**************************************************************************************** * BL2で行うべきことは、さらに画像をロードし、制御を渡すことです。 ※次回BLです。BL2 によって占有されていたメモリは、BL3x ステージによって再利用されます。BL2 * 完全に S-EL1 で実行されます。 **********************************************************************************/ void bl2_main(void) { エントリポイント情報t *次のbl_ep_info; uint32_t write_val = 0xA5A5A5A5; uint32_t read_val = 0; 整数rc; #ENABLE_RUNTIME_INSTRUMENTATION の場合 PMF_CAPTURE_TIMESTAMP(bl_svc、BL2_ENTRY、PMF_CACHE_MAINT); #endif NOTICE("BL2: %s\n", バージョン文字列); NOTICE("BL2: %s\n", build_message); /* S-EL1 で残りの一般的なアーキテクチャ設定を実行します */ bl2_arch_setup(); #PSA_FWU_SUPPORTの場合 fwu_init(); #endif /* PSA_FWU_SUPPORT */ crypto_mod_init(); /* 認証モジュールを初期化する */ auth_mod_init(); /* メジャーブートバックエンドを初期化する */ bl2_plat_mboot_init(); /* ブートソースを初期化する */ bl2_plat_preload_setup(); /* ============================================================ * XSPI / NOR 直接アクセステスト(永続ログ記録実験) * ============================================================== */ 通知("\n=====================================================\n"); NOTICE("BL2: XSPI NOR 直接アクセス テスト\n"); NOTICE("BL2: NORオフセット = 0x%x\n", NOR_TEST_OFFSET); 通知("==================================================\n"); NOTICE("BL2: 0x%08xをNORに書き込み中\n", write_val); rc = xspi_write(NOR_TEST_OFFSET、&write_val、sizeof(write_val)); (rc!=0)の場合 { エラー("BL2: xspi_write が失敗しました (%d)\n", rc); } それ以外 { NOTICE("BL2: xspi_write OK\n"); } NOTICE("BL2: NORから読み戻しています\n"); rc = xspi_read(NOR_TEST_OFFSET、&read_val、sizeof(read_val)); (rc!=0)の場合 { エラー("BL2: xspi_read が失敗しました (%d)\n", rc); } それ以外 { NOTICE("BL2: xspi_read OK、値 = 0x%08x\n", read_val); } 通知("==================================================\n"); NOTICE("BL2: XSPI NOR テストが完了しました。ブートを続行します\n"); 通知("==================================================\n\n"); /* 後続のブートローダイメージをロードします。*/ next_bl_ep_info = bl2_load_images(); /* メジャーブートバックエンドを破棄する */ bl2_plat_mboot_finish(); #if !BL2_RUNS_AT_EL3 #ifndef __aarch64__ /* * AArch32 状態の場合、BL1 と BL2 は MMU セットアップを共有します。 * BL2はBL1領域をマップしないので、MMUは * BL1 に戻るには無効にする必要があります。 */ _mmu_icache_secure() を無効にします。 #endif /* ! __aarch64__ */ #ENABLE_PAUTH の場合 /* * 次回のブートイメージを実行する前にポインタ認証を無効にする */ pauth_disable_el1(); #endif /* ENABLE_PAUTH */ #ENABLE_RUNTIME_INSTRUMENTATION の場合 PMF_CAPTURE_TIMESTAMP(bl_svc、BL2_EXIT、PMF_CACHE_MAINT); #endif コンソールフラッシュ(); /* * SMC 経由で次の BL イメージを BL1 に実行します。合格方法に関する情報 * BL32(存在する場合)およびBL33ソフトウェアイメージへの制御は * 次の BL 画像に引数として渡されます。 */ smc(BL1_SMC_RUN_IMAGE、(符号なしlong)next_bl_ep_info、0、0、0、0、0、0); #else /* BL2_RUNS_AT_EL3 の場合 */ NOTICE("BL2: "NEXT_IMAGE"を起動しています\n"); print_entry_point_info(次のbl_ep_info); #ENABLE_RUNTIME_INSTRUMENTATION の場合 PMF_CAPTURE_TIMESTAMP(bl_svc、BL2_EXIT、PMF_CACHE_MAINT); #endif コンソールフラッシュ(); #ENABLE_PAUTH の場合 /* * 次回のブートイメージを実行する前にポインタ認証を無効にする */ pauth_disable_el3(); #endif /* ENABLE_PAUTH */ bl2_run_next_image(次のbl_ep_info); #endif /* BL2_RUNS_AT_EL3 */ } Re: read write in NOR flash from BL2 level こんにちは@Jayashree 、 申し訳ありませんが、保存されていないバージョンのファイルをコンパイルしていた可能性があります。再試行しましたが、コンパイルできませんでした。何度も試行しましたが、できませんでした。現時点では、最初の返信で述べたように io_read/io_writ を使用するか、SPI ドライバを ATF に移植するためのベースとして、最近追加された A53 コア上の RTD を使用するデモ プロジェクトを使用するかの 2 つだけをお勧めします。 2 番目にアクセスするには、FlexNet にログインし、次のパスに従います。 オートモーティブ ソフトウェア – S32G リファレンスソフトウェア > オートモーティブ ソフトウェア – S32G RTD on A53 > RTD_ON_S32G A53_0.1.0ソリューションデモ オプションのいずれかが表示されない場合は、flex net にログインしてこのリンクを使用してください。 これは単なる推奨事項であり、私の側ではテストされていないことに注意してください。ATF は A53 コアのブートの非常に初期段階であるため、どちらも回復不可能な問題が発生する可能性があります。 ご不便をおかけして申し訳ございません。 Re: read write in NOR flash from BL2 level こんにちは、 ご返信ありがとうございます。 先ほど提案されたio_read/io_write APIを使ってみました。コードは正常にビルドされましたが、 書き込みや検索ができませんでした(下の画像を参照)   2 番目のアプローチに関しては、A53 コアで RTD デモを続行できませんでした。代わりに、U-Boot の SPI/NOR アクセス API を BL2 ステージに移植するという代替アプローチを試みました。ビルドの問題を解決し、バイナリを正常に生成できましたが、BL2 から SPI API が呼び出されるとすぐにブート プロセスが停止します。   この時点で、BL2 ステージで最小限のデータをログに記録または保持し、後で Linux からアクセスできるようにする他の推奨またはサポートされている代替手段があるかどうかを確認したかったのです。具体的には、S32G での早期ブート ログ記録のための安全なメカニズムやリファレンス・デザインはありますか。それとも、BL2 は基本的にこのようなユース ケースには適していないのでしょうか。 BL2/ATF はブートの非常に初期の段階であり、このような変更によって回復不可能な問題が発生する可能性があることは理解し認識していますが、皆様の経験に基づくガイダンスやベスト プラクティスがあれば非常に役立ちます。 ありがとう Re: read write in NOR flash from BL2 level こんにちは@Jayashree 、 問題を克服するために他のオプションを検索してみましたが、これを実現する方法に関する参考資料は見つかりませんでした。ご存知のとおり、ATF はブート プロセスの非常に早い段階で行われるため、フラッシュ メモリにアクセスすることは ATF の範囲外です。個人的な推奨としては、私が思いつく最も古いログはu-bootからのもので、ext4writeを使うことができます。そのためには、.configに次の設定を追加する必要があります。ファイル: CONFIG_CMD_EXT4_WRITE=y ext4 操作の詳細については、 https://docs.u-boot.org/en/latest/usage/filesystems/ext4.htmlを参照してください。 このコマンドを使用すると、Linux ファイルシステム内のファイルに書き込むことができます。 これが役に立つことを願っています Re: read write in NOR flash from BL2 level こんにちは、 フラッシュ アクセスに関する ATF/BL2 の制限についてご説明いただき、確認していただきありがとうございます。 BL2 自体から直接最小限の読み取り/書き込み操作を実行することが技術的に可能かどうかをまだ調査中です。これは通常の範囲外であることは承知していますが、実現可能性を確認したかったのです。具体的には、必要な MMC 依存関係を明示的に追加することで、BL2 から eMMC にアクセスできるかどうか疑問に思いました。コードベースを確認しているときに、mmc.c ですでにブロックレベルの読み取りおよび書き込み API が定義されていることに気付きました。BL2 で MMC サブシステムを十分早い段階で初期化し、最小限のログ記録の目的でこれらのブロック読み取り/書き込み関数を使用することは可能でしょうか? 私はそれに伴うリスクを十分に理解しており、このアプローチが根本的にサポートされていないのか、それとも単に推奨されていないのかを確認したかったのです。 サポートありがとうございます。 よろしくお願いします、 ジャヤシュリー Re: read write in NOR flash from BL2 level こんにちは@Jayashree 、 必要なクロックとモジュールをすべて初期化すれば理論的には可能ですが、詳細なガイダンスは提供できません。SD カードの構成方法とアクセス方法については、 Usdhc_Ip_example_S32G399A_M7サンプル プロジェクトを参照してください。Linux に必要なパーティションに干渉しないようにする必要があることに注意してください。この方法を採用する場合は、メモリの一部をログ用に予約し、他の目的には使用しないことをお勧めします。 よろしくお願いいたします。 Re: read write in NOR flash from BL2 level こんにちは@Jayashree 、 PMF は Arm からも NXP からも提供されていないため、あまりサポートできません。ただし、モジュールの ARM ドキュメントhttps://trustedfirmware-a.readthedocs.io/en/latest/perf/psci-performance-instr.htmlを確認することをお勧めします。 Re: read write in NOR flash from BL2 level こんにちは@alejandro_e 、 BL2 から eMMC に書き込めるようになったことを嬉しく思います。次のステップとして、データとともにタイムスタンプを記録したいと考えています。パフォーマンス測定フレームワーク (PMF) に遭遇しましたが、現段階でそれを有効にして使用する方法と、この機能にアクセスするためにどのマクロ フラグを有効にする必要があるかがわかりません。 どのように進めればよいかご指導いただけますでしょうか? Re: read write in NOR flash from BL2 level こんにちは@alejandro_e 、 ご返信ありがとうございます。 共有されたリンクは PSCI パフォーマンス計測を指していると思われますが、これは TF-A のタイムスタンプ収集に使用される一般的なパフォーマンス測定フレームワーク (PMF) とは異なるようです。 https://github.com/nxp-auto-linux/arm-trusted-firmware/blob/c834244b9c54c79e80315aecc9807f5b0eb79342/docs/design/firmware-design.rst#L2619 TF-A のドキュメントによると、PMF はシステム カウンターに依存し、ビルド フラグによって有効にできる汎用フレームワークのようです。 PMF は TF-A 自体の一部なので、S32G プラットフォームで本当にサポートされていないかどうかを再確認していただけますか? よろしくお願いします。 Re: read write in NOR flash from BL2 level こんにちは@Jayashree 、 ご説明ありがとうございます。サポートに関しては、PMF ライブラリが正しく実行されるかどうかはわかりませんが、ドキュメント内にその参照が見つからなかったため、ご自身でテストする必要があります。また、その点に関して、弊社からガイダンスやサポートを十分に提供することはできません。 ご不便をおかけして申し訳ございません。
查看全文
RW612 - WiFi チャネル状態情報 (CSI) 現在、FRDM-RW612 から CSI データを抽出しようとしています。パラメータを誤って構成すると、ファームウェアが不正なチャネル構成などのエラーを通知することになるため、CSI コールバックが機能しない原因となっている重要なコンポーネントが不足しているものと思われます。残念ながら、まだ CSI のコールバックを取得できません。 どなたか助けていただければ幸いです! Re: RW612 - WiFi Channel State Information (CSI) 親愛なる@rb_ots様、 お客様向けにチャネル状態情報 (CSI) のアプリケーション ノートを提供しています。(AN14281) このアプリケーションは、FRDM-RW612 で CSI テストを段階的に実行する方法を説明します。 リンクから AN にアクセスできます。これはオンライン ドキュメントです。 https://docs.nxp.com/bundle/AN14281/page/topics/about_this_document.html ぜひお試しください! よろしくお願いいたします。 魏東 Re: RW612 - WiFi Channel State Information (CSI) はい!まさに私が探していたものであり、大変助かりました。
查看全文
i.MX8MP 平台开启 CAAM + trusted keys 后 warm reboot 稳定性问题咨询 NXP社区技术人员,大家好        在 i.MX8MP 平台上做系统稳定性测试时,遇到一个与 CAAM 相关的 warm reboot 小概率卡住问题,想请教是否有相关经验或建议的配置方式。 测试环境说明 SoC:i.MX8MP 系统:Yocto Linux(init 启动方式) 内核版本:6.6.52 存储:eMMC 测试方式:系统启动后,通过脚本进行连续 reboot 压力测试 现象描述 关闭 CAAM 相关功能时 连续 reboot 测试超过 500 次 系统均可正常启动 未出现卡死或启动异常 开启 CAAM 及 trusted/encrypted keys 相关功能后 reboot 测试中 约 1/100 ~ 1/200 的概率 系统在启动阶段卡住 串口停留在早期初始化日志 异常时可观察到类似日志     3、异常时可观察到类似日志          <1>内核卡住log [ 2.159151] caam 30900000.crypto: caam pkc algorithms registered in /proc/crypto [ 2.166628] caam 30900000.crypto: rng crypto API alg registered prng-caam [ 2.173441] caam 30900000.crypto: registering rng-caam [ 2.180670] Executing RNG SELF-TEST with wait [ 2.259240] mmc2: new HS400 Enhanced strobe MMC card at address 0001 [ 2.266720] mmcblk2: mmc2:0001 DV4032 29.1 GiB [ 2.274171] mmcblk2: p1 p2 p3 [ 2.279584] mmcblk2boot0: mmc2:0001 DV4032 4.00 MiB [ 2.286069] mmcblk2boot1: mmc2:0001 DV4032 4.00 MiB [ 2.293040] mmcblk2rpmb: mmc2:0001 DV4032 16.0 MiB, chardev (234:0) [ 60.410412] imx-sdma 30bd0000.dma-controller: Direct firmware load for imx/sdma/sdma-imx7d.bin failed with error -2 [ 60.420874] imx-sdma 30bd0000.dma-controller: Falling back to sysfs fallback for: imx/sdma/sdma-imx7d.bin [ 121.822422] imx-sdma 30bd0000.dma-controller: external firmware not found, using ROM firmware [ 123.010384] random: crng init done      <2> 在 reboot 过程中,也偶尔能看到: caam_jr ... Device is busy      <3> 相关内核配置 CONFIG_CRYPTO=y CONFIG_CRYPTO_DEV_FSL_CAAM=y CONFIG_CRYPTO_DEV_FSL_CAAM_JR=y CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y CONFIG_TRUSTED_KEYS=y CONFIG_TRUSTED_KEYS_CAAM=y CONFIG_ENCRYPTED_KEYS=y CONFIG_DM_CRYPT=y 关闭 CAAM(或 trusted/encrypted keys),warm reboot 稳定性恢复正常 Re: i.MX8MP 平台开启 CAAM + trusted keys 后 warm reboot 稳定性问题咨询 你好 在 i.MX8MP 平台上,考虑到您提供的内核 6.6.52 和 CAAM RNG 自检卡住问题,这通常与残余 RNG 初始化状态、作业环权限锁定或 SDMA 固件加载超时引起的连锁反应有关。以下是针对该问题的分析建议和配置解决方案: 1。核心原因分析 CAAM 状态机未 RESET:热重启不会 RESET 所有 SoC 寄存器。如果 CAAM 在重启之前很忙(例如,caam_jr...设备在日志中处于繁忙状态),重启后 RNG 的硬件状态机可能处于不确定的中间状态。任务环权限问题:如果使用高度保证启动 (HAB) 或 OP-TEE,BootROM 或 ATF 可能会锁定某些任务环 (JR)。在热重启期间,如果未正确释放 JR 寄存器,Linux 内核将在执行 RNG 自测并等待阶段无限期等待,因为它无法获得硬件响应。 2.建议的优化和解决方案 答:内核配置和驱动程序调整禁用同步自检:尝试在 CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API 中禁用强制等待机制,或者在 U-启动 中预初始化 RNG。 集成 SDMA 固件:将 SDMA 固件编译到内核(CONFIG_EXTRA_FIRMWARE= " imx/sdma/sdma-imx7d.bin ")中,以避免在启动的早期阶段由于文件系统未安装而导致 60 秒的等待时间。这可以大大降低启动过程中的时间风险。 B. 修改 U-启动/ATF RESET 行为(解决方法)热RESET 在 i.MX8M 系列上经常会出现这种残留问题。 C 。DTS 设备树检查 caam_jr 节点的属性。在某些版本中,必须确保任务环分配与安全模式一致: &crypto { status = "okay"; }; &sec_jr0 { status = "okay"; }; 此致 Re: i.MX8MP 平台开启 CAAM + trusted keys 后 warm reboot 稳定性问题咨询 感谢回复!我将对这两个部分进行改动验证,后续反馈情况;
查看全文
VR5510 BUCKx electrical specification and LDO2 instability Hello I'm looking for information about VR5510 BUCK performances: I would like to use them in analog application where an LDO is the right choose: however VR5510 LDOs can be at limit current in some situation. I'm not able to find any information about voltage ripple specification of the BUCKs (referred to suggested output filter, I'm using). Is it possible to have? I found on this forum that other VRs have this kind of information but VR5510 doesn't. I have an issue using VR5510 in companion with SJA1110. Short story long: if the SJA1110 is keep in HARD RESET and I power up the VR5510 from external source, the LDO2 connected to VDDIO 1.8V MII power supply rail startup in instability generating 2.2V instead of 1.8V (i think that voltage can rise up to Vin 3.3V if not limited by some SJA1110 internal clamp) Attached the portion of the schematic from NXP  SJA1110-EVM board that is exactly what I used on my custom board. I'm monitoring the 1.8V voltage with VR5510 internal voltage monitors, in that case VR5510 PGOOD never change state because of OVERVOLTAGE detected. Very strange thing is that if I disconnect PGOOD pin from SJA1110 HARD RESET pin, i have no issues and PMIC start successfully together with SJA1110. Is there the possibility that LDO2 goes in instability due to high output load current and never recovers? OTP program is to autoretry every 4s but VR5510 never retry. Thank you enrov Power solution Re: VR5510 BUCKx electrical specification and LDO2 instability Hello Enrico, Thank you for your question regarding the VR5510.   The BUCKx output ripple specification for VR5510 is peak-to-peak 1%.   Could you please confirm which VR5510 part numbers you are using? If VMONx is not used for LDO2 voltage monitoring, PGOOD cannot be asserted in case of LDO2 overvoltage (OV). Please note that VR5510 does not have internal voltage monitors for LDO rails.    Does this issue occur on all modules or only on a specific one? If it can be reproduced across all modules, I recommend following up on this with the SJA1110 engineer to check if the issue can also be reproduced on the SJA1110 EVB. If LDO2 is operating in an overloaded state, the expected fault would be UV (undervoltage), not OV (overvoltage). As a troubleshooting step, please disconnect the LDO2 load and check if the device powers up normally. Additionally, I suggest measuring the impedance of the LDO2 and VPRE network to ensure they are within normal range.   BRs, Tomas Re: VR5510 BUCKx electrical specification and LDO2 instability Hello Tomas thank you for your reply. Going deeper in analysis seems that LDO2 is driven by outside uncontrolled voltage that rise from 1.8 to 2.2. Due to the fact that I am monitoring LDO2 with VREF, PGOOD is not asserted ever. The problem seems to be at SJA side, my only curiosity is to understand if LDO2 can be unstable and if, it can forward the input voltage to output. I agree about the point where you say that an overload is related to an UV, but I do not see UVs. Just for sharing: VR5510 ( I'm using AMMA0 and AMBA0 versions) seems not to be the source of the problem. But any advise on stability of LDOs and instability behavior is well accepted. Regards Re: VR5510 BUCKx electrical specification and LDO2 instability Hello Enrico, If the external components for the LDO regulator are within the specified range, there should be no risk of instability. We generally believe that the input of an LDO cannot be directly forwarded to the output, unless the LDO is specifically configured in load switch mode. BRs, Tomas Re: VR5510 BUCKx electrical specification and LDO2 instability Hello Tomas, ok thank you.  Just to close the topic of LDOs, for VR5510 is there any possibility to parallel LDO2 and LDO3 (that are the same hw seems) with external ballast resistor just to let them share a current that can be slightly over the maximum of 400mA (transitory), to keep the voltage within range? Or, can you tell me if the three BUCKs converter can be used as alternative to LDOs for analog application where noise is important? (this is because i asked the expected output voltage ripple). I'm starting a new application where I would like to use VR5510 to supply some high-speed ADCs and opamps (tens of MHz range of application). Thank you Enrico Re: VR5510 BUCKx electrical specification and LDO2 instability Hello Enrico, LDO2 and LDO3 on VR5510 cannot be used in parallel. In general, BUCKx outputs are not recommended as a direct ADC reference. We recommend adding an external LDO after BUCKx for this purpose. BRs, Tomas
查看全文
NETC 驱动程序代码审查:同步障碍 1.在 NETC 驱动程序中,"MCAL_INSTRUCTION_SYNC_BARRIER() "不应该是必须的。它会降低性能,可以将其删除。根据我的理解,如果不动态更改指令序列,就不需要刷新指令 FIFO (isync)。如果我说错了,请帮忙仔细检查。 例如,在 Netc_Eth_Ip_SendFrame() 中,关于下面的代码,对于存储指令,投机不会执行,为什么我们需要这个障碍? /* 启用开发错误时,我们需要先添加一个障碍,以避免在前一个 else if 条件完成之前发生投机性检测。 在前一个 else if 条件完成之前,我们需要先添加一个障碍。*/ mcal_instruction_sync_barrier(); mcal_data_sync_barrier(); 2. 需要对 "MCAL_DATA_SYNC_BARRIER() "中的某些内容进行审查。其中部分似乎不一定(如上),部分需要调整。例如,在 Netc_Eth_Ip_SendFrame()中,关于下面的代码,"MCAL_DATA_SYNC_BARRIER() "应移到缓存操作之后,TBPIR 寄存器之前。 /* BD 在内存中的写入已被优化,因此在开始传输前需要进行同步处理。 以确保在内存中正确写入传输 BD。*/ mcal_data_sync_barrier();   RTD Re: NETC driver code review: sync barrier 关于"变量 LockTxBufferDes 已更改" ,正如我在问题中所述,任何投机执行都不会导致内存存储动作损坏,因为内存存储动作不会被撤销。请仔细检查投机概念。 Re: NETC driver code review: sync barrier 您好, 我知道在更改全局变量之前会添加障碍命令,以避免对其他变量造成影响。例如:在函数 SendFrame 中使用以下代码: 如果没有屏障命令,在"之前,如果" 条件完全解决,就会执行推测执行。如果出现 NextProducerIndex = LastTxdata 的情况,说明队列已空或已满,但 CPU 预测错误,因此设置变量 LockTxBufferDes = TRUE。在"if" 条件结束后,CPU 发现错误并返回,但变量 LockTxBufferDes 发生了变化。该变量的序列为:发送前,LockTxBufferDes = LOCKED;在 ReportTransmission 中处理后,LockTxBufferDes = UNLOCKED。这导致一个缓冲区被忽略使用。 对于此命令: 这与 RM 中的说明有关: 添加障碍是为了确保 TxBD 在以下命令开始之前同步到内存: 顺祝商祺! Nhi Re: NETC driver code review: sync barrier 您好, 我的回答如下: 我对此没有更多了解,因此我创建了票据 ARTDCC1-640,您可以通过该票据从 SW 团队获得解释。 顺祝商祺! Nhi Re: NETC driver code review: sync barrier 这张截图来自哪里?截图中没有显示的来源和背景是什么? Re: NETC driver code review: sync barrier 是的,我通过人工智能工具找到了这个。是科迪。 Re: NETC driver code review: sync barrier 该截图没有 URL 可以查询,是人工智能生成的文本,这种说法对吗?如果是,是哪个人工智能;如果不是,这是从哪里来的? Re: NETC driver code review: sync barrier 您好, 我刚刚找到它,虽然不是官方文档,但我认为这可能是 SW 添加该命令的原因。我不知道,也许我的想法是错的,他们有其他原因。SW 团队将在上述票据中给予答复。 顺祝商祺! Nhi Re: NETC driver code review: sync barrier 好吧,这又是一个人工智能工具以非常漂亮的措辞提供根本不正确信息的案例。
查看全文
frequency measurement example code for the s32k3xx Hi all, I am working with an S32K3 series MCU and I want to measure the frequency of an external signal coming on a GPIO pin using the eMIOS peripheral. I have checked the S32K3 reference manual, S32 Design Studio, MCUXpresso Config Tools, and available SDK examples, but I could not find any clear documentation or example that explains how to configure eMIOS for frequency measurement, including pin routing, channel mode selection, clock configuration, or the required settings in the .mex file. I would appreciate it if you could guide me on the correct eMIOS mode to use for this purpose or share any reference example, code snippet, or configuration screenshot that demonstrates a working frequency measurement setup on S32K3. Re: frequency measurement example code for the s32k3xx Hi Please refer to these examples for configuring eMIOS in IPWM mode: Example S32K344 eMIOS DS3.5 RTD500 S32K344_Example_Emios_Icu_IPWM_measurement_DS34_RTD_100_v2 Example IP S32K312 EMIO PWM Generation & Duty capture using Polling DS3.5 RTD300 Example IP S32K312 EMIO PWM Generation & Duty capture using Interrupt DS3.5 RTD300 Example ASR S32K312 EMIO PWM Generation & Duty capture using Polling DS3.5 RTD300 Example ASR S32K312 EMIO PWM Generation & Duty capture using Interrupt DS3.5 RTD300 Please note that the S32K3 projects are usually used with S32DS(S32 Configuration Tool) or EBTresos as configuration tools, and not with MCUXpresso Config Tools. Best Regards, Robin ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "ACCEPT AS SOLUTION" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. ------------------------------------------------------------------------------- Re: frequency measurement example code for the s32k3xx Hi @Robin_Shen, I am using the Example S32K344 eMIOS DS3.5 RTD500 as my base code. I modified the project to measure input frequency by configuring eMIOS_1 Channel 7 as an input (IPWM mode). I updated the S32 Configuration Tool accordingly and added the required changes in the main file. I am reading the measured value using the Ipwm_duty_cycle_array(checked inside the watchdog task). However, even when no external signal is applied on PTA24, the measured value is always 100. Could you please explain why a constant value is reported without any input signal? Is this expected behavior due to default pin state, internal pull-up, clock source, or IPWM configuration? I have attached snapshots for reference. Re: frequency measurement example code for the s32k3xx If you want to use polling method instead of interrupt method, please poll the status via Emios_Icu_Ip_GetInputState before calling Emios_Icu_Ip_GetDutyCycleValues. while(TRUE != Emios_Icu_Ip_GetInputState(INSTANCE_1, CHANNEL_7)){} Emios_Icu_Ip_GetPulseWidth(INSTANCE_1, CHANNEL_7); Emios_Icu_Ip_GetDutyCycleValues(INSTANCE_1, CHANNEL_7, &Ipwm_duty_cycle); Ipwm_duty_cycle_array[index] = (Ipwm_duty_cycle.ActiveTime * 100) / Ipwm_duty_cycle.PeriodTime; Re: frequency measurement example code for the s32k3xx Hi @Robin_Shen , As I want to use interrupt-based measurement, I unchecked IcuSignalMeasureWithoutInterrupt (please refer to the image below) and modified the main.c according to the interrupt-based example code. Currently, the IRQ handler is triggered, which confirms that the interrupt configuration is working. However, the measured ActiveTime and Period Time values are always 0. Could you please help explain why the interrupt is generated but both timing values remain zero? Is this related to IPWM mode configuration, edge selection, signal level on the pin, or missing ICU start/notification API calls? I have attached the configuration snapshot for reference. In this code same as the example code but I just changed the channel 5 instead of 7. Re: frequency measurement example code for the s32k3xx This seems similar to the discussion in the S32K344 MCAL IPWM ICU CAPTURE: Please call Emios_Icu_Ip_IrqHandler first, and then call Emios_Icu_Ip_GetDutyCycleValues. Re: frequency measurement example code for the s32k3xx Hi @Robin_Shen , Thank you for the clarification, the issue is resolved now and the interrupt-based measurement is working as expected.I have one additional question. I want to know how to run the eMIOS module using an external clock source? Could you please guide me on what key configuration changes are required for this? Re: frequency measurement example code for the s32k3xx You are welcome.  I may not have understood your question. Please correct me if I am wrong. I see that your Emios_Icu has IcuEmiosBusSelect set to EMIOS_ICU_BUS_A. Would you like to change it to something else? By the way, the S32K3_RTD_Training_eMIOS_public.pdf file in the S32K311 EMIOS GPT might be helpful to you. Please post a new question in community you have any questions that are not related to the original topic of an existing case. It helps to keep it clear. Re: frequency measurement example code for the s32k3xx Hi @Robin_Shen , I am trying to measure input frequency on multiple eMIOS channels. When I configure and enable only one channel, the project builds and works correctly. However, when I enable a second eMIOS/ICU channel for frequency measurement, I immediately get configuration errors and the project fails to build. I have attached a screenshot of the configuration error for reference. Re: frequency measurement example code for the s32k3xx Hi @Robin_Shen,  I am trying to measure the input frequency on PTE25 (eMIOS1 Channel 5). I am applying a 10 Hz signal from a DSO, and I have verified that the input signal is stable. However, the measured frequency value is unstable and fluctuates around 900–1200, even though the input is only 10 Hz. To debug this, I changed the IcuSignalMeasurementProperty to ICU_PERIOD_TIME and updated the IRQ handler as shown below: void EMIOS1_4_IRQ_Customized(void) {     Emios_Icu_Ip_IrqHandler(1, 5);     period_time = Emios_Icu_Ip_GetTimeElapsed(1, 5);     if (period_time)    {         uint64_t emios_freq = 48000000ULL; // hardcoded         signal_frequency = emios_freq / period_time; captured = 1;    } } Even after these changes, the frequency value remains unstable. Could you please help me understand why the measured frequency is incorrect and unstable for a low-frequency input, and what configuration changes are required to correctly measure a 10 Hz signal using eMIOS/ICU?   Re: frequency measurement example code for the s32k3xx I will be on leave until February 2nd. I suggest you post a new question; my colleague will provide technical support. Thank you for your understanding.
查看全文
IMX8MP - No audio during playback with SOF sound card Hi, I am trying to run playback using the SOF sound card on the IMX8M Plus EVK, but I am not able to hear any audio from the headphone jack. Here are the steps I am using to run the playback: Boot the device and interrupt to enter uboot Use "editenv fdtfile" and change the device tree name to "imx8mp-evk-sof-wm8960.dtb" Continue the boot Run "aplay -l" to obtain SOF sound card ID Run the following commands to initiate playback: amixer -c [sof_card_id] cset name="Left Output Mixer PCM Playback Switch" on amixer -c [sof_card_id] cset name="Right Output Mixer PCM Playback Switch" on aplay -Dhw:[sof_card_id],0 [path_to_wav_file] The wav file used in this case is 32 bit, 48Khz stereo. I see no error when running the playback command. I have also tried playing the same wav file using the default device tree and the wm8960 sound card, and I am able to hear the output. Please let me know what I can do to solve this issue. i.MX 8 Family | i.MX 8QuadMax (8QM) | 8QuadPlus Multimedia Re: IMX8MP - No audio during playback with SOF sound card Hi @aporter28  Did you refer this guide? SOF User Guide on NXP i.MX8 platforms — SOF Project 2.11.0 documentation Best Regards, Zhiming Re: IMX8MP - No audio during playback with SOF sound card That worked great, thanks! I am currently just exploring the capabilities of SOF on NXP boards. Re: IMX8MP - No audio during playback with SOF sound card Hello @aporter28 , On my setup the control you want to modify is named 'Headphone'. Assuming SOF card number is 0 please try this. amixer -c 0 sset Headphone 80% Also you can use the alsamixer TUI and modify the Headphone control Can you share with us what project are you working on with the Sound Open Firmware? 
查看全文
IMX8MP - 使用 SOF 声卡播放时没有音频 您好, 我正试图使用 IMX8M Plus EVK 上的 SOF 声卡进行播放,但无法从耳机插孔听到任何音频。 以下是我运行回放的步骤: 启动设备并中断以进入 uboot 使用 " editenv fdtfile " 将设备树名称更改为 " imx8mp-evk-sof-wm8960.dtb " 继续启动 运行"aplay -l" 获取 SOF 声卡 ID 运行以下命令启动播放: amixer -c [sof_card_id] cset name="左输出混音器 PCM 回放开关" on amixer -c [sof_card_id] cset name="Right Output Mixer PCM Playback Switch" on aplay -Dhw:[sof_card_id],0 [path_too_wav_file] [path_too_wav_file 这里使用的是 32 位、48Khz 立体声的 wav 文件。运行回放命令时没有发现任何错误。 我还尝试使用默认设备树和 wm8960 声卡播放相同的 wav 文件,我能够听到输出。 请告诉我如何才能解决这个问题。 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus 多媒体 Re: IMX8MP - No audio during playback with SOF sound card 您好@aporter28 ,您参考过这份指南吗? 恩智浦 i.MX8 平台上的 SOF 用户指南 - SOF 项目 2.11.0 文档 致: Zhiming Re: IMX8MP - No audio during playback with SOF sound card 效果很好,谢谢!我目前只是在探索恩智浦板上SOF的功能。 Re: IMX8MP - No audio during playback with SOF sound card 您好@aporter28, 在我的设置中,您要修改的控件名为 "耳机"。 假设 SOF 卡号为 0,请试试这个。 amixer -c 0 sset Headphone 80% 此外,您还可以使用 alsamixer TUI 修改耳机控制 ,您能告诉我们您正在使用声音开放固件开发什么项目吗?
查看全文
#TJA1104 SAF9000 OM7 RTDとのドライバ統合 こんにちは、 私はQuantum (SAF9000) OM7の お客様 アプリケーション サポート エンジニアとして働いています。 現在、弊社の お客様 (Hirschmann) は SGMII インターフェースに関する問題に直面しています。TX 極性が逆になっているように見えますが、ボードは CONFIG レジスタを通じてこれを修正することを想定し、このように設計されました。 彼らは # TJA1104デバイスを使用しており、システムとの互換性を確保するために適切なドライバを統合したいと考えています。 TJA1104 ドライバーを既存のRTD ドライバーと統合する方法をお客様にご案内してサポートしていただけますか? ご返信よろしくお願いします。 よろしくお願いいたします。 ナガ・セギレディ AA SW - 外部デバイス Re: #TJA1104 Driver integration with SAF9000 OM7 RTD こんにちは、 AASW チームは、Quantum のコンテキストでこのコンポーネントに対する SW サポートのリクエストを受け取りませんでした。CES チーム (Florea Simona または Salam Zeidan が対応可能) までお問い合わせください。 Re: #TJA1104 Driver integration with SAF9000 OM7 RTD こんにちは、ナガさん 昨日、Simona Florea と話をしましたが、最新情報に基づいて、Quantum プロジェクトのコア チームである Harm Voss (APM) と Ron Leenders (RTE) に連絡することを強くお勧めします。 Re: #TJA1104 Driver integration with SAF9000 OM7 RTD こんにちは、 情報をいただきありがとうございました。 サポートについては、@Florea Simona または Salam Zeidan に連絡しました。 よろしくお願いいたします。 ナガ・セギレディ
查看全文
#TJA1104 Driver integration with SAF9000 OM7 RTD Hello, I am working as Customer application support engineer for Quantum (SAF9000) OM7. Our customer(Hirschmann) is currently facing an issue with the SGMII interface. The TX polarity appears to be reversed, and their board was designed this way with the expectation of correcting it through the CONFIG register. They are using the #TJA1104 device and now would like to integrate the appropriate drivers to ensure compatibility with their system.  Could you please support the customer by guiding them on how to integrate the TJA1104 drivers with the existing RTD drivers? Thank you very much! Best Regards, Naga Segireddy AA SW - External Device Re: #TJA1104 Driver integration with SAF9000 OM7 RTD Hello, The AASW team didn't received any request for SW support for this component in context of Quantum. Please address to the CES team (possible @Florea Simona or Salam Zeidan) Re: #TJA1104 Driver integration with SAF9000 OM7 RTD Hello, Thank you very much for the information. I have contacted @Florea Simona or Salam Zeidan for the support. Best Regards, Naga Segireddy Re: #TJA1104 Driver integration with SAF9000 OM7 RTD Hi Naga, I spoke with Simona Florea yesterday, and based on the latest information, I strongly recommend reaching out to the Quantum project core team: Harm Voss (APM) and Ron Leenders (RTE).
查看全文
#TJA1104 驱动器与 SAF9000 OM7 RTD 集成 你好 我是 Quantum (SAF9000) OM7 的客户应用支持工程师。 我们的客户(赫希曼)目前正面临 SGMII 接口的问题。TX 极性似乎发生了逆转,他们的电路板是这样设计的,希望通过 CONFIG 寄存器进行校正。 他们正在使用 # TJA1104 设备,现在想集成相应的驱动程序以确保与系统的兼容性。 您能否通过指导客户如何将 TJA1104 驱动程序与现有 RTD 驱动 程序 集成来支持他们? 非常感谢! 顺祝商祺! 纳加-塞吉雷迪 AA SW - 外部设备 Re: #TJA1104 Driver integration with SAF9000 OM7 RTD 你好 AASW 团队没有收到任何在 Quantum 背景下为该元器件提供软件支持的请求。请联系 CES 团队(可能的 @Florea Simona 或 Salam Zeidan)。 Re: #TJA1104 Driver integration with SAF9000 OM7 RTD 你好 非常感谢你提供的信息。 我已联系@Florea Simona 或 Salam Zeidan 寻求支持。 顺祝商祺! 纳加-塞吉雷迪 Re: #TJA1104 Driver integration with SAF9000 OM7 RTD 嗨,娜迦, ,我昨天与 Simona Florea 交谈过,根据最新信息,我强烈建议与量子项目核心团队联系:Harm Voss(APM)和 Ron Leenders(RTE)。
查看全文
IMX8MP - SOFサウンドカードで再生中にオーディオが出ない こんにちは、 IMX8M Plus EVK の SOF サウンド カードを使用して再生を試みていますが、ヘッドフォン ジャックからオーディオが聞こえません。 再生を実行するために使用している手順は次のとおりです。 デバイスを起動し、ubootに入るために割り込みます 「editenv fdtfile」を使用して、デバイスツリー名を「imx8mp-evk-sof-wm8960.dtb」に変更します。 ブートを続行 「aplay -l」を実行してSOFサウンドカードIDを取得します。 再生を開始するには、次のコマンドを実行します。 amixer -c [sof_card_id] cset name="左出力ミキサPCM再生スイッチ" on amixer -c [sof_card_id] cset name="右出力ミキサPCM再生スイッチ" on aplay -Dhw:[sof_card_id],0 [wavファイルへのパス] このCASEに使用される wav ファイルは 32 ビット、48Khz ステレオです。再生コマンドを実行してもエラーは表示されません。 また、デフォルトのデバイス ツリーと wm8960 サウンド カードを使用して同じ wav ファイルを再生してみましたが、出力を聞くことができました。 この問題を解決するために何ができるか教えてください。 i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus マルチメディア Re: IMX8MP - No audio during playback with SOF sound card こんにちは@aporter28 このガイドを参照しましたか? NXP i.MX8 プラットフォームの SOF ユーザーガイド — SOF プロジェクト 2.11.0 ドキュメント よろしくお願いします、 志明 Re: IMX8MP - No audio during playback with SOF sound card うまくいきました、ありがとう!現在、NXP ボード上の SOF の機能を調査しているところです。 Re: IMX8MP - No audio during playback with SOF sound card こんにちは@aporter28さん、 私のセットアップでは、変更したいコントロールの名前は「ヘッドフォン」です。 SOF カード番号が 0 であると仮定して、これを試してください。 amixer -c 0 sset Headphone 80% また、alsamixer TUIを使用してヘッドフォンコントロールを変更することもできます。 Sound Open Firmware でどのようなプロジェクトに取り組んでいるのか教えていただけますか?
查看全文
LCD に画像を表示するために、uboot は Linux カーネルにどのようなブート引数を渡すのでしょうか -- iMX93EVK こんにちは、NXPサポートスペシャリスト様。 iMX93EVK は LVDS 経由で LCD に接続されます。 LCD にイメージを表示するために、u-boot はどのようなブート引数を Linux カーネルに渡す必要がありますか? imx93_evk.h を変更する方法ファイル? よろしくお願いいたします。
查看全文
s32k312 int sram' 溢出了 8 字节 亲爱的恩智浦工程师 在我使用 S32K312 期间,当我尝试增加全局变量时,S32DS 在编译后报告了一个 " int SRAM 溢出 8 字节 " 错误。我已经上传了地图和链接文件。能否请您帮忙分析一下这个问题?谢谢。 Re: s32k312 int sram' overflowed by 8 bytes 你好,@fengba_360、 这仅仅意味着您使用的 sram 超过了链接器文件中声明的 64KB。你可以尝试缩小堆,将全局变量、不可缓存变量和可共享变量移出 sram,或者改用闪存。 请检查项目编译的地图文件,并根据程序的大小调整链接文件。有关定义和建议,您可以参考社区的一些旧帖子: 无法增加 s32 中的堆大小 - NXP Community 调整 S32K312 的 int_sram 内存分配 致以最诚挚的问候, Julián
查看全文
MM9z1J638D PTBxによる時間指定ウェイクアップは1回のみ機能します こんにちは、 PTB1 で時間指定ウェイクアップ機能を動作させることができました。しかし、PTB1 から起動するのは 1 回だけです。最初のウェイクアップ後はすべて正常に動作しているようで、LIN とアプリケーション コードは問題なく実行されています。 2回目にスリープモードに入ると、MCUは理解できない別の状態になるようです 電流消費は、電流が基本的にゼロになる最初のスリープ時とは異なり、通常動作時よりわずかに減少します。 デバッガーが接続を失い、再接続できない MCU が保護されます。 この状態から抜け出す唯一の方法は、電源を入れ直すことです。 もう 1 つの観察結果は、ウェイクアップが LIN によってトリガーされる場合、複数回ウェイクアップしても問題はないと思われることです。ウェイクアップが時間指定ウェイクアップ PTB1 によってトリガーされた場合にのみ、問題が発生します。 これが私のスリープモードの設定です #define Wakeup_counter (unsigned int) 10*1000 // counter value in terms of ALFCLK (1ms by default) char Wakeup_counter_hi = (char) ((Wakeup_counter & 0xFF00U) >> 8); // get the high byte char Wakeup_counter_lo = (char) ((Wakeup_counter & 0x00FFU) >> 0); // get the low byte void Handle_SleepRequest() { ....... // save parameters to EEPROM RTIDisable(); ADCDisable(); TsenseDisable(); B_GPIO_VSENSE = 0; l_sys_irq_disable(BSC2_Node1); // only SCI!!! B_TIE_C3I = 0; // LIN timer interrupt disabled IrqDisable(); B_GPIO_IN1_TCAP1 = 0; // PTB1 input buffer disconnected from Timer channel 1 - input capture B_GPIO_OUT1_TCOMP1 = 1; // Timer channel 1 - output compare connected to PTB1 output buffer OR gate (needs to be configured to allow OC to generate a system wakeup) B_GPIO_CTL |= B_GPIO_CTL_DIR1_MASK | B_GPIO_CTL_DIR1M_MASK; // set PTB1 to output B_GPIO_CTL |= 0|B_GPIO_CTL_PE1M_MASK; // PTB1 I/O to high impedance mode so that it's not connected to outside of MCU // force internal PTB1 to low B_TSCR1_TEN = 1; B_TCTL1 = B_TCTL1_OM1_MASK; // clear on OC B_CFORC_FOC1 = 1; // force OC to clear because TCTL1 set to clear on OC B_TSCR1_TEN = 0; // disable the timer to setup timer B_TCNT = 0x0000U; // reset counter B_TIOS_IOS1 = 1; // Timer channel 1 acts as an output compare to allow TC1 write /*Timer clock selection to be Timerclk/1 see table 647*/ B_TSCR2_PR0 = 0; B_TSCR2_PR1 = 0; B_TSCR2_PR2 = 0; B_TSCR2_TCRE = 0; //Inhibits timer counter reset and couter continuews to run // setup a rising edge on hitting the OC B_TCTL1 = B_TCTL1_OM1_MASK | B_TCTL1_OL1_MASK; // configure to be set on OC B_TC1Hi = Wakeup_counter_hi; // compare register needs to write the high byte before low byte B_TC1Lo = Wakeup_counter_lo; B_TFLG1_C1F = 1; // enable Timer channel 1 to cause a hardware interrupt ADCLpEnable(); B_PCR_WUEH_WUPTB1 = 1; // enable PTB1 as the internal timed wake up source PCREnterSleepMode(); while(1) DO_NOTHING; // should not reach here } 私のウェイクアップ処理関数 void Wakeup_Process(void){ if (B_PCR_CTL_OPM & 2) { // Check if Wake Up from Sleep mode (see page RM3.0 110 Intermediate Mode) B_PCR_CTL = OPM_SET_NORMAL; // set normal mode while (!(B_PCR_SRH_WLPMF )) DO_NOTHING; // Wait for Clock Domain Change } else{ if(!B_PCR_SR_HWRF) { PCRReset(); } } } メイン関数 void main () { SYS_Init(); CPMUInit(&ClockConf); D2DInit((TYPE_D2DCLKDIV) ClockConf.D2dDiv); XirqEnable(); // enable XIRQ -> isrD2DErr() "write-once" Wakeup_Process(); // Process wakeup event to bring CPU to normal if it is waken up B_WD_CTL = WD_OFF; PCRInit(ClockConf.PCRprescaler); SYSStartupTrimming(); ADCInit(); GPIOInit(); RTIInit(); RTIEnable(); IrqEnable(); EEPROM_Init(0x05);// 6.25MHz busclk ReadEEPROM(); for EVER { ...... // main application loop if (SleepRequested){Handle_SleepRequest();} } } ご協力に感謝します。 Re: MM9z1J638D Timed wakeup by PTBx only works for once これらはPCREnterSleepMode()関数ですでにクリアされています。 void PCREnterSleepMode_SMP(void){ IrqDisable(); B_INT_MSK = 0xFF3F; // Mask Analog Interrupts B_ACQ_SRH = 0xFF; // Clear pending Flags B_INT_MSK = 0xFF00; // Enable Analog Int B_PCR_SR = 0xFFFF; // Clear Flags B_TFLG1 = 0xFF; // Clear timer interrupt flag1 B_PCR_CTL = OPM_SET_SLEEP; // Goto Sleep Mode StopEnable(); StopEnter(); } しかし、問題点は分かったと思います。ウェイクアップが発生するたびに実行されるデコンディショニング関数があり、カウンター OC をリセットしたり、GPIO 構成を逆にするなど、ウェイクアップ ソースの PTB1 を構成するのとは逆に PTB1 構成を逆にします。しかし、問題は、レジスタが更新されたかどうかを確認するための while ループを配置しない限り、リセットが登録されないということのようです。たとえば、while ループを配置しないと、デコンディショニング関数で TC1 を 0x0000 に設定しているにもかかわらず、TC1 カウンターはスリープ状態になる前に設定した期間を保持し続けます。 レジスタがリセットされていることを確認するための while ループ チェックを追加したので、ウェイクアップは正常に機能し、毎回成功します。 void PTB1_WU_Decondition(allow_Continue){ /* Configure port before enable it*/ B_GPIO_IN1_TCAP1 = 0; // PTB1 input buffer disconnected from Timer channel 1 - input capture // B_GPIO_IN1_TCAP1 = 1; // PTB1 input buffer disconnected from Timer channel 1 - input capture B_GPIO_OUT1_TCOMP1 = 0; // Timer channel 1 - output compare connected to PTB1 output buffer OR gate (needs to be configured to allow OC to generate a system wakeup) B_GPIO_CTL |= 0 | B_GPIO_CTL_DIR1M_MASK; // set PTB1 to output // B_GPIO_CTL |= 0 | B_GPIO_CTL_DIR1M_MASK; // set PTB1 to input // B_GPIO_CTL |= B_GPIO_CTL_PE1_MASK|B_GPIO_CTL_PE1M_MASK; // PTB1 I/O enable mask enabled PTB1 enabled (not seem necessary due to figure 33.) B_GPIO_CTL |= 0|B_GPIO_CTL_PE1M_MASK; // PTB1 I/O to high impedance mode so that it's not connected to outside of MCU B_TIOS_IOS1 = 0; // Timer channel 1 disabled /* Timer clock selection to be Timerclk/1 see table 647*/ B_TSCR2_PR0 = 0; B_TSCR2_PR1 = 0; B_TSCR2_PR2 = 0; B_TSCR2_TCRE = 0; //Inhibits timer counter reset and couter continuews to run // setup a rising edge on hitting the OC B_TSCR1_TEN = 1; // enable the timer to reset TC1 B_TC1Hi = 0x00U; // compare register needs to write the high byte before low byte B_TC1Lo = 0x00U; B_TSCR1_TEN = 0; // disable the timer B_TFLG1_C1F = 1; // clear timer 1 flag while(B_TFLG1_C1F != 0 && B_TC1 != 0x0000U || allow_Continue){}; // MUST WAIT otherwise, the settings don't register B_PCR_WUEH_WUPTB1 = 0; // disable PTB1 as the internal timed wake up source } Re: MM9z1J638D Timed wakeup by PTBx only works for once こんにちは@WWsmp 、 書き込み後の読み取りシーケンスは良い方法です。 関数を再配置すれば、待機ループなしでも成功するでしょうか? B_GPIO_OUT1_TCOMP1 = 0;// Detach OC from PTB1 B_GPIO_IN1_TCAP1= 0;// No capture routing B_GPIO_CTL|= B_GPIO_CTL_DIR1M_MASK;// Internal buffer direction benign B_GPIO_CTL|= B_GPIO_CTL_PE1M_MASK;// High impedance to outside B_TSCR1_TEN= 0;// Stop counter B_TIOS_IOS1= 1;// Channel 1 acts as Output Compare B_TCTL1&= ~(B_TCTL1_OM1_MASK | B_TCTL1_OL1_MASK);// No OC action B_TSCR2_PR0 = 0; B_TSCR2_PR1 = 0; B_TSCR2_PR2 = 0; B_TFLG1_C1F= 1;// write-1-to-clear B_TCNT= 0x0000U;// ensure counter starts from 0 B_TC1Hi= 0x00U;// high byte first B_TC1Lo= 0x00U; B_TSCR1_TEN= 1; B_PCR_WUEH_WUPTB1 = 0; Re: MM9z1J638D Timed wakeup by PTBx only works for once こんにちは@danielmartynek 、 修正したと思いましたが、実際には 100% 機能していません。問題はまだ解決していませんが、while ループを追加したため、状況が変わりました。MCU を一貫してスリープ状態にして起動することができているように見えましたが、PCRReset() は何らかの理由でトリガーされましたが、それはアプリケーションからではありませんでした。PCRReset() は isrD2DErr() によってトリガーされます。 /*! \brief Interrupt Service Routine for D2D error interrupts. * * Interrupts are caused by errors detected by the D2D Initiator (uC side) * during D2D transferes. This error is critical NMI and you need to have the * CCR X-bit cleared */ interrupt VectorNumber_Vd2di_err void isrD2DErr(void) { while(1) { if(D2DSTAT0_ERRIF) { D2DSTAT0_ERRIF = 1; // clear flag }else{ PCRReset(); // issue an analog die reset } } } 私がそれをどのように実現したかというと、ウェイクアップ理由とリセット理由を保存する変数があるということです。通常、PTB1 から起動すると、B_PCR_SRL_WUPTB1F が 1 に設定され、B_PCR_SRH_HVRF が 1 に設定されます。しかし、「修正」後、B_PCR_SRH_HVRF、B_PCR_SRH_WDRF、および B_PCR_SRH_HWRF がすべて 1 に設定され、WU ビットが設定されていないことに気付きました。これは PCRReset() と呼ぶ動作に似ています。そして、D2D エラーまで追跡しました。 このエラーを引き起こす可能性がある具体的な理由はありますか? Re: MM9z1J638D Timed wakeup by PTBx only works for once こんにちは@WWsmp 、 開発チームとの議論を開始させてください。 少し時間がかかるかもしれません。 ありがとうございました。 ダニエル Re: MM9z1J638D Timed wakeup by PTBx only works for once こんにちは@WWsmp 、 投稿したコードには問題は見つかりませんでした。 以下は、isrD2Derr エラーの考えられる原因です。isrD2Derr は、アナログ ダイと MCU (S12Z) ダイ間のダイ間 (D2D) インターフェースでエラーが検出されたことを示します。エラーは、電気、タイミング、電源、モード制御、またはソフトウェアの問題によって発生する可能性があります。 電源関連の問題 VDDH / VDDD2D(2.5 V D2D電源)の不安定性 電圧低下、リップル、または不十分なデカップリングにより、D2D 信号が破損する可能性があります。 多くの場合、パリティ エラーまたは確認応答エラーが発生します。 供給順序の問題 一方のダイがもう一方のダイよりも早く動作可能になります。 D2D アクセスは、ターゲット ダイがまだリセットまたはブラウンアウト状態の間に発生します。 クランキングまたはVSUP低電圧 オートモーティブ クランキング中、一方のダイがリセットまたは保持状態になり、もう一方のダイが動作を継続する場合があります。 タイムアウト エラーが発生します。 時計とタイミングの問題 D2Dクロックの不安定性 PLL ロック解除、IRC ドリフト、またはクロック モニター イベントにより、D2D タイミングが壊れる可能性があります。 過剰なD2Dクロック周波数マージン 最大 D2D 周波数に近い値で実行すると、ノイズ マージンが減少します。 EMC と温度に対してより敏感です。 クロックドメインの不一致 一方のダイのクロックがゲートまたは遅くなる一方で、もう一方は D2D トランザクションの発行を継続します。 リセットおよび電源モード同期エラー ダイ間の非同期リセット アナログダイがアクティブな間、MCU はリセットされます (またはその逆)。 このウィンドウ中に D2D アクセスが発生すると、タイムアウトまたは ACK エラーが発生します。 停止/スリープモードの不一致 アナログ ダイが NORMAL モードのままである間、MCU は STOP/SLEEP に入ります。 ターゲット ダイ クロックがゲートされている間に D2D アクセスが試行されました。 不適切なウェイクアップシーケンス ターゲットダイが低電力モードを完全に終了する前に発行された D2D トランザクション。 D2Dプロトコル/トランザクションタイミングの問題 サービスの遅延によるタイムアウト 長い割り込みマスクまたはクリティカルセクションは D2D サービスをブロックします。 ISR 負荷が高い、またはプリエンプティブでないコード パスが長い。 過剰なバーストアクセス 間隔を空けずに、D2D レジスタの読み取り/書き込みを大規模または高速に実行するシーケンス。 内部サービスのレイテンシを超える可能性があります。 無効または不正なD2Dアクセス マップされていない、または制限されている D2D レジスタ ウィンドウへのアクセス。 トランザクションのサイズまたはシーケンスが正しくありません。 ソフトウェアの初期化と構成エラー スタートアップトリミングが正しく実行されません 起動時に IFR 値がコピーされません。 クロック/リファレンス ドリフトが発生し、ビット エラーの確率が高くなります。 不適切なD2D初期化順序 クロック、電源ドメイン、またはエラー フラグが完全にクリアされる前に使用される D2D。 競合する構成モード 自動温度ゲイン補正 (ATGCE) は、キャリブレーション要求割り込みとともに有効になります。 過剰な D2D トラフィックと競合が発生します。 EMC、ノイズ、環境ストレス EMI / ESD障害 高速過渡現象により D2D データ ビットが反転し、パリティ エラーが発生する可能性があります。 ISO 7637‑2 パルス テスト中によく使用されます。 グランドバウンスまたは接地不良 高電流の共有リターンパス (シャント、LIN、CAN)。 D2D 信号の整合性に影響します。 高温または温度勾配 クロックのドリフトとレギュレータのディレーティングにより、タイミング マージン違反が増加します。 レイアウトとハードウェア実装の問題 VDDH/VDDD2Dピン付近のデカップリングが不十分 アナログ、デジタル、高電流パス間の分離が不十分 リファレンス・デザインの逸脱 NXP リファレンス デザインと比較して、フィルタリング コンポーネントが欠落しているか変更されています。 BR、ダニエル
查看全文