Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
RW612 BLE無線テスト FW 私たちは、NXP-RW612 MCU をホストする BLE モジュールを Zephyr と一緒に使用しています。 製品の無線承認を取得するために、MCU ベンダーは通常、この目的専用の BLE RadioTest FW サンプルを提供します。場合によっては、クライアント側/PC ソフトウェアも提供されることがあります。 質問: 1) NXP-RW612 MCU の「BLE RadioTest FW サンプル」はどこで入手できますか? 2) NXP は無線テスト用のクライアント側/PC ソフトウェアも提供していますか? もしそうなら、どこで入手できますか? Re: RW612 BLE Radio Tests FW こんにちは、 Zephyr でのこのプロセスがどのようなものか確認させてください。 よろしくお願いいたします。 ダニエル。 Re: RW612 BLE Radio Tests FW こんにちは、 返信が遅くなり申し訳ありません。まだフィードバックを待っています。 よろしくお願いいたします。 ダニエル。 Re: RW612 BLE Radio Tests FW ダニエルさん、最新情報をありがとうございます。 これは非常に重要なトピックです。地域の無線承認がなければ、今後発売される NXP RW612 ベースの製品を販売することができないからです。 よろしくお願いいたします トニー Re: RW612 BLE Radio Tests FW こんにちは@tobgさん、 あなたの調子が良いといいのですが。シェルの例を使用して、DTM (直接テスト モード) を実行できます。 トランスミッタモードの DUT の場合、DUT 側で次のコマンドを使用できます。 bt hci-cmd 08 34 00ff0002   レシーバモードのリファレンスデバイスの場合は、以下を使用できます。 bt hci-cmd 08 33 000200   テストが完了したら、両方のデバイスで次のコマンドを実行してテストを停止します。 bt hci-cmd 08 1F   参考までに、このアプリケーションノートを確認してください: https://www.nxp.com/docs/en/application-note/AN14163.pdf   これがお役に立てば幸いです。 ご質問がございましたら、お知らせください。 よろしくお願いいたします。 リカルド Re: RW612 BLE Radio Tests FW こんにちは@tobgさん、 更新ありがとうございます。現時点では、RW612 + Zephyr には、FreeRTOS RF テスト モードに類似した統合無線テスト ファームウェアはありません。 利用可能なオプションは、Zephyr シェルの例を介して BLE DTM を使用することであり、AN14163 は現在、RW612 での BLE 無線テストに使用できる唯一のリファレンスです。 これがお役に立てば幸いです。 よろしくお願いいたします。 リカルド Re: RW612 BLE Radio Tests FW 本当にありがとう、リカルド。 DTM モードのサンプルは知っていましたが、アプリケーション ノートは知りませんでした。ありがとう! このFWが例えば以下のような要件をすべて満たすかどうかはちょっと不安です。FCC 承認。 私が期待していたのは、このアプリケーション ノート「FreeRTOS の RF テスト モード」で説明されているものと同様の、Zephyr 用のサンプル FW/SW への参照でした。これは、NXP RW612でサポートされているすべての無線タイプ(BLE、Wifi)の無線テストについて説明していることに注意してください。 NXP はそのようなものを提供していますか? トニーより Re: RW612 BLE Radio Tests FW AN14163で示されているLinuxのhcitoolを使用する代わりに、NXP独自のWindows用テストツールNXP Test Tool 12を使用することもできます。このツールは、関連するすべてのHCI(ヒューマンコンピュータインタラクション)機能を備えた優れたGUIを提供します。 https://www.nxp.com/design/design-center/development-boards-and-designs/frdm-development-boards/connectivity-tool-suite:CONNECTIVITY-TOOL-SUITE
記事全体を表示
RW612 BLE Radio Tests FW We are using a BLE module that hosts the NXP-RW612 MCU together with Zephyr. In order to obtain radio approvals for products, MCU vendors usually provide a dedicated BLE RadioTest FW sample for this purpose.  Sometimes also client side/PC software  is provided. Questions: 1) Where can I find "BLE RadioTest FW sample" for the NXP-RW612 MCU? 2) Do NXP also provide client side/PC SW for radio testing, if so where can I find it? Re: RW612 BLE Radio Tests FW Hi, Let me check what is the process for this in Zephyr. Regards, Daniel. Re: RW612 BLE Radio Tests FW Hi, Sorry for the late reply. I am still waiting for feedback. Regards, Daniel. Re: RW612 BLE Radio Tests FW Thank you very much for the update Daniel. This is quite an important topic, as we would be unable to sell our upcoming NXP RW612 based products without regional radio approvals. Best regards Tonny Re: RW612 BLE Radio Tests FW Hi @tobg , Hope you are doing well. You can use the shell example and perform DTM (Direct Test Mode). For the DUT in transmitter mode, you could use the following command on DUT side: bt hci-cmd 08 34 00ff0002   For the reference device in receiver mode, you could use: bt hci-cmd 08 33 000200   After completing the test, with the following command on both devices to stop the test: bt hci-cmd 08 1F   For your reference, you can check this Application Note: https://www.nxp.com/docs/en/application-note/AN14163.pdf   Hope this helps. If you have any question, please let us know! Regards, Ricardo Re: RW612 BLE Radio Tests FW Thanks a lot Riccardo. I was aware of the DTM mode sample, but not the application note. Thanks! I am a bit unsure if this FW will cover all requirements for e.g. FCC approval. What I had hoped for, was a reference to sample FW/SW alike what is described in this application note RF Test Mode on FreeRTOS but for Zephyr. Note that this describes radio testing on all radio types (BLE, Wifi) supported by the NXP RW612 Do NXP provide such? Regards Tonny Re: RW612 BLE Radio Tests FW Hi @tobg , Thanks for the update. At the moment, for RW612 + Zephyr there is no combined Radio Test firmware similar to the FreeRTOS RF Test Mode. The available option remains using BLE DTM via the Zephyr shell example, and AN14163 is currently the only reference available for BLE radio testing on RW612. Hope this helps. Best Regards, Ricardo Re: RW612 BLE Radio Tests FW Instead of using the linux hcitool as indicated in AN14163 you can use NXP's own NXP Test Tool 12 for Windows. This tool provides a nice GUI with all relevant HCI available. https://www.nxp.com/design/design-center/development-boards-and-designs/frdm-development-boards/connectivity-tool-suite:CONNECTIVITY-TOOL-SUITE
記事全体を表示
KV5 DMA and UART Good morning I imported the example for using the UART and DMA. The original example has the UART0. It works. I changed for using other ports, now I try with UART4 and it does not. I can see the callback called for the and of TX but never for the end of RX. I don t get the point. I am sure the pins and the connections are ok. I am using the tower system for the KV5.  I drop here the example with minor modifications for changing the UART. Every help is welcome.. Thank You Pietro Re: KV5 DMA and UART Hello Pietro Could you help us confirm which UART-DMA example are you using and which SDK version is it from? Could you help us share your connections? Best Regards, Luis Re: KV5 DMA and UART The file is here. 
記事全体を表示
KV5 DMAとUART おはよう UART と DMA を使用するための例をインポートしました。元の例には UART0 があります。それは動作します。他のポートを使用するように変更し、UART4 で試してみましたが、うまくいきませんでした。TX の終了に対してコールバックが呼び出されたことはわかりますが、RX の終了に対しては呼び出されません。要点が分かりません。ピンと接続は正常であると確信しています。KV5 にタワー システムを使用しています。 ここでは、UART を変更するための若干の変更を加えた例を示します。 あらゆる援助を歓迎します。 ありがとう ピエトロ Re: KV5 DMA and UART こんにちは、ピエトロ どの UART-DMA の例を使用しているか、またどの SDK バージョンのものか確認していただけますか? あなたのつながりを共有するのに協力してもらえませんか? 敬具、ルイス Re: KV5 DMA and UART ファイルはここにあります。
記事全体を表示
Gui-Guider は NXP 以外の製品のライセンスを購入できますか? Gui-Guider で NXP 以外の製品のライセンスを購入できるかどうか教えてください。 Re: Gui-Guider用于非NXP的产品是否可以购买License こんにちは@RPJ 当社は商用ライセンスを提供していません。GUI Guider は NXP プラットフォーム製品のみサポートされています。 ご理解いただきありがとうございます。 BR ハリー
記事全体を表示
S32DSライセンスの有効期限が切れました こんにちは。S32 Design Studio for ARM v2.2 のライセンスの有効期限が切れました。延長していただけますか? フルフィルメントID: 199868897 有効期限: 2026年1月9日 製品: S32 Design Studio for ARM v2.2 ありがとうございます。 アクティベーション | インストール | ライセンス | インストーラーのダウンロード Re: S32DS License Expired こんにちは、 S32DS ライセンスが延長されました。古いコードを使用して S32DS を再度アクティブ化してください。
記事全体を表示
SRK revocation on IMX RT1176 HABv4 Hello, We are currently working on enabling Secure Boot (HAB) on the i.MX RT1176 and are observing unexpected behavior related to SRK revocation. We have implemented a complete chain of trust with multiple binaries stored in NOR Flash, each binary being individually signed. Authentication works correctly, and SRK selection is well controlled.  We have burned the SRK_REVOKE fuse corresponding to SRK index 1 using the OCOTP controller. The fuse programming completes successfully, and the programmed value is persistent. In the CSF, we are also using the following configuration: [Unlock] Engine = OCOTP Features = SRK_REVOKE However, despite revoking SRK1: An image signed with SRK1 is still successfully authenticated No HAB events or errors are reported (HAB_SUCCESS) The boot process continues normally, as if the key were not revoked Any guidance or clarification on the correct SRK revocation flow on RT1176 would be greatly appreciated.   THANK YOU  Re: SRK revocation on IMX RT1176 HABv4 Hi @yosri_c , Thanks for your interest in NXP MIMXRT series! Based on the information you provided, CSF selected SRK1 (index=0) and then unlocked the SRK_REVOKE eFuse bit. However, have you actually programmed the SRK_REVOKE bit? It would be best to read it via the host computer and cross-verify it with your experimental results. Additionally, this document will be helpful to you: https://community.nxp.com/t5/i-MX-Security/i-MX-8MQ-SRK-Revocation-limitations-in-HAB-Closed-configuration/ta-p/1109142 Best regards, Gavin Re: SRK revocation on IMX RT1176 HABv4 hi @Gavin_Jia  Thank you for your response  . i already read the programmed value using the OCOTP_ReadFuseShadowRegisterExt from OCOTP , and i can see that the value correspond to the desired mask , yet the revoked SRK is still usable in a closed configuration , i tried with index 0 and index 1 and still have the same result  
記事全体を表示
S32K3xx FreeRTOS SMP NXP has ported FreeRTOS SMP (V11.1.0) to the S32K389. Many customers are interested in how to enable the FreeRTOS SMP on the S32K3xx. The demo is implemented as a single project with a single linker file and a single ELF file. Demo SW/HW Environment: 1. S32DS3.6.4 2. RTD7.0 3.SW32K3_FreeRTOS_11.1.0_7.0.0_CD1_HF1_D2511_DesignStudio_updatesite 4. S32K389 EVB  Demo Code Key Features: 1.FreeRTOS SMP is running on the S32K389 with all cores active. 2.DTCM is used as the task stack. 3.The hardware semaphore (SEMA42) is enabled in FreeRTOS. 4.XRDC is enabled so that each core has a unique core ID for semaphore operations. 5.CAN0 runs on Core0, and CAN4 runs on Core2. 6.LPUART11 is used to print debug information. All cores can output their own messages via LPUART11.  Disclaimer: The code is provided as demo code. NXP makes no commitment regarding its quality.
記事全体を表示
imx6 vxworks7.0 drawing Using imx6q's gpu to draw two screen outputs, extremely occasional program error triggering data abort exception, operating system is using vxworks 7.0, what could it be related to? What are the known bugs? Graphics & Display i.MX6Quad Re: imx6 vxworks7.0绘图 Thank you. We have encountered similar issues several times since 2022: the program crashes, leading to a failure of watchdog feeding and a hardware watchdog reset. Have other users reported similar problems? What are the known defects of the GPU driver for i.MX6Q under the VxWorks 7.0 operating system? Is it safe to enable two tasks for dual-screen rendering? If not, how can dual-screen display be implemented for i.MX6Q under the VxWorks 7.0 operating system? Re: imx6 vxworks7.0绘图 Hello, When using VxWorks 7.0 for dual-screen GPU rendering on the i.MX6Q platform, extremely rare Data Abort exceptions occur, typically related to memory inconsistency, resource contention, or timing vulnerabilities in the Vivante GPU driver in multi-display controller (IPU) environments. The following are common causes and troubleshooting directions for this type of problem: Memory Inconsistency and Cache Coherency This is the most common cause of Data Aborts in real-time operating systems such as VxWorks:  GPU and CPU cache misalignment: The i.MX6Q's GPU is not within the ARM's Snoop Control Unit. If the application layer updates the video memory data but does not manually execute cacheFlush(), or if the CPU immediately accesses the region after the GPU finishes drawing and does not execute cacheInvalidate(), it may result in illegal address offsets or data corruption, triggering an abort Regards Re: imx6 vxworks7.0绘图 Hi, You better enter a support request to VXworks. Regards Re: imx6 vxworks7.0绘图 We tried to reproduce it, but we couldn't reproduce it. Is there any way to increase the probability of reproduction.
記事全体を表示
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 ライブラリが正しく実行されるかどうかはわかりませんが、ドキュメント内にその参照が見つからなかったため、ご自身でテストする必要があります。また、その点に関して、弊社からガイダンスやサポートを十分に提供することはできません。 ご不便をおかけして申し訳ございません。
記事全体を表示
Is it possible to dynamically link a camera to a mipi_csi port Hi I want to switch between hdmi in and camera in, both via one mipi_csi channel HDMI would use 4 data lanes and camera just one data lane. The one DataLane and the CSI Clock Lane will be multiplexed between hdmi and camera. Is it possible to change the links between mipi_csi and hdmi resp. camera, so when I mux to hdmi, add a link via media-ctrl to have the hdmi in as source for the mipi csi and vica versa? So, do not have any ports in the devicetree but do the link between camera (resp. hdmi) to mipi csi via media-ctrl. Currently I have the problem, that /dev/media0 is not available, when mipi csi has no port. Regards, Thilo Re: Is it possible to dynamically link a camera to a mipi_csi port Working on it, but I found some keywords which do sound good. For those interested: The keywords I found are compatible: "video-mux" and "gpio-mux". I currently compiling my kernel with theses two activated, so not sure if they work as I expect them to work. But at least it sounds like the correct way. The open question is, how I can inform the mipi_csi about the 4 or 1 data lane config. ...... Any ideas? Cheers, Thilo Re: Is it possible to dynamically link a camera to a mipi_csi port video-mux seems to not be the solution, as the imx8-media-dev expects nodes to be i2c devices (drivers/staging/media/imx/imx8-media-dev.c:1041). I even changed the of_find_i2c_device_by_node to of_find_device_by_node but this brings a kernel oops when the media pads should be linked. 😞 My guess is, that the subdevices of the video-mux are not probed yet but the imx8-media-dev tests the video-mux only and so it dies then. Any ideas? Cheers, Thilo Re: Is it possible to dynamically link a camera to a mipi_csi port I even tried to add such kind of tests into video-mux for the sink endpoints.  Did not help. The video-mux endpoint kills the im8-media-dev during probing. I'm not sure what the video-mux driver would need to act as source for the imx8-media-dev ....  So, currently I'm stuck here. Any help would really be appreciated! Cheers, Thilo Re: Is it possible to dynamically link a camera to a mipi_csi port Hello @cthilo  I hope you are doing very well. Could you please share your BPS version? Are you using a custom hardware? Maybe another option is to choose a source via DT overlay at boot, or add an external CSI‑2 switch to keep a single input visible to the SoC.  Best regards, Salas. Re: Is it possible to dynamically link a camera to a mipi_csi port Hi Salas Thanks I'm fine :). I hope you too! We build our own image based on yocto scarthgap. The kernel is linux-imx-tq with our own dts as we run on our own hardware. meta-imx: scarthgap-6.6.52-2.2.2 meta-tq: scarthgap (latest) meta-freescale: scarthgap (latest) Our dts is based on the imx8mp-tqma8mpql-mba8mpxl.dts (as our hw uses the imx8mp SOM from TQ). We use a video mux device which can switch between two inputs, but has just one GPIO as "switch".  Therefor the virual device video-mux with a gpio mux-controller would be perfect (except the lanes). The camera uses only one csi data lane, the hdmi in with 4k uses 8 csi data lanes (one of theses 8 will be needed to be muxed). Kind regards Thilo Re: Is it possible to dynamically link a camera to a mipi_csi port Hi Salas any ideas how a devicetree video-mux device can be used with a imx8-media-dev ? imx8-media-dev has a hard dependency, that sudev's need to be i2c devices. At least in linux kernel 6.6.x:  imx8-media-dev.c:1041 > client = of_find_i2c_device_by_node(rem); That is the first problem with a virtual video-mux device. I tried to use of_find_device_by_node. With this it makes it a step further but then a kernel oops occurs and i have not enough knowledge about the v4l2 stack stuff. Any ideas? Kind regards Thilo
記事全体を表示
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) はい!まさに私が探していたものであり、大変助かりました。
記事全体を表示
New Revision 1B of LPC5536 Triggers Hard Fault Hi, We recently received new PCBs featuring the updated chip revision 1B of the LPC5536. However, we are encountering a hard fault when using the same firmware in the SDK function FLASH_IsFlashAreaReadable(). I've attached a screenshot that captures the step right before the system crashes into a hard fault. We are currently using SDK version 25.03.00 with MCUXpresso IDE version v24.12. Any insights or suggestions on resolving this issue would be greatly appreciated. Thank you!   Re: New Revision 1B of LPC5536 Triggers Hard Fault Hello @nobodyKnows, I did not find any changes between revisions except for the errata mentioned in chapter 5.1 "ROM.1" in the Errata sheet LPC553x, which is directly related to revision 1B. Could you verify that your FLASH_init function does what is indicated in the errata? BR Habib Re: New Revision 1B of LPC5536 Triggers Hard Fault Hello @nobodyKnows, Could you provide a detailed explanation of the methodology you used to implement the errata fix? BR Habib Re: New Revision 1B of LPC5536 Triggers Hard Fault Hello, thanks a lot for your fast responds. We tried to implement the workaround according to errata sheet. But it does not help. I guess the  API location address  0x13028c41U is wrong for Rev. 1B. Re: New Revision 1B of LPC5536 Triggers Hard Fault Hello @nobodyKnows, I understand that you are using the FLASH_Init function from our SDK, and as you mentioned, you are currently using SDK version 25.03. Could you verify that this function is executing correctly? Specifically, this line: /* Call ffr_init is required for 1B. Also OK for 0A. */ return BOOTLOADER_API_TREE_POINTER->flashDriver->ffr_init(config); On the other hand, when you switched to the new LPC revision, did you modify any part of the hardware design? BR Habib Re: New Revision 1B of LPC5536 Triggers Hard Fault Hi, Okay I see the fix is already done in API. Yes it is called and all other functions seems to work. It is just FLASH_IsFlashAreaReadable() which is not working. Now we use this workaround: bool flashRead (uint32_t addr, uint8_t *flashData, uint32_t size){ status_t status; if(SYSCON->DIEID == 0){ status = FLASH_IsFlashAreaReadable(&flashConfig, addr, size); if(status != kStatus_FLASH_Success){ return false; } } status = FLASH_Read(&flashConfig, addr, flashData, size); return (status == kStatus_FLASH_Success); } Re: New Revision 1B of LPC5536 Triggers Hard Fault Hello @nobodyKnows, I found this post which appear have the same problem, and the fix was to not use the function "FLASH_IsFlashAreaReadable", instead of this, use the FLASH_Read() HAL API call, which if the status returned an error, this means that probably the FLASH area is hidding. Which is the same flow where you are using in your workaround. Let me ask to the internal team to obtain more information about this issue, but at the moment your workaround could be works. BR Habib
記事全体を表示
imx8mp using dual out, HDMI and LVDS Hi We need to use HDMI out and two LVDS out in parallel. HDMI via the normal hdmi dts instance and LVDS via two adv7393 connected to ldb lvds channel0 and channel1. With ldb lvds untouched, HDMI is working so far. Weston can start and use HDMI-A-1. Then, I enable one of the adv7393 by adding the endpoints in lvds-channel 0, port 1  and the hdmi part stops working and weston tells me, that there are no drm devices found. How are the ldb and hdmi connected to each other, that the influence each other? Any help is appreciated! Kind regards Thilo Re: imx8mp using dual out, HDMI and LVDS Hello, Could you share the BSP version that you are using? Also, are you using NXP EVK? Best regards/Saludos, Aldo. Re: imx8mp using dual out, HDMI and LVDS Hi Aldo We build our own image based on yocto scarthgap. The kernel is linux-imx-tq with our own dts as we run on our own hardware (which can be the problem of course too). meta-imx: scarthgap-6.6.52-2.2.2 meta-tq: scarthgap (latest) meta-freescale: scarthgap (latest) Our dts is based on the imx8mp-tqma8mpql-mba8mpxl.dts (as our hw uses the imx8mp SOM from TQ). So, no not NXP EVK. Could you still give me some hints? Kind regards Thilo Re: imx8mp using dual out, HDMI and LVDS Hello, Sure will try to help, could you share the device tree so I can take a look at it? Best regards/Saludos, Aldo. Re: imx8mp using dual out, HDMI and LVDS Hi Aldo here you are. Hopefully you see something. There is a hdmi_cam_mux and a hdmi_cam_video_mux (commented out) which was a try to mux the hdmi in and the camera. But this didn't work like this, as the imx8-media-dev.c:1041 expects the subdevs to be an i2c device but the video-mux isn't. If the rest would work, I don't know. Commenting this check out (easy test) did bring a kernel oops. So, not a good way. Cheers Thilo Re: imx8mp using dual out, HDMI and LVDS Hi Aldo My answer was regarding another thread which I mixed up, but the Dts is correct. Sorry for the confusion! Cheers, Thilo Re: imx8mp using dual out, HDMI and LVDS Hello, I was trying to find if the problem was a device tree issue, but couldn't find much about the bindings for the adv7393, so couldn't say for sure. I would suggest to try without the HDMI and see if the video encoder is detected by the system. Also, have you checked the dmesg? Is the encoder found and the driver working correctly? Finally regarding your initial question one could refer to the reference manual Figure 13-1. Display, Imaging, Camera I/F Diagram & Figure 13-4. MEDIAMIX Block Diagram Best regards/Saludos, Aldo. Re: imx8mp using dual out, HDMI and LVDS Hi Aldo so HDMI should not be related to the lvds out channels, when I interpret that overview correctly. Anyway, I'll try to disable hdmi related stuff and test if the lvds setup only is working. Here is a grep of ldb, adv73 and interconnect, as theses three are related as far as I understand. [root@vci ~]# dmesg | grep "ldb\|adv73\|interconnect" [ 0.069206] /ldb-display-controller/lvds-channel@0: Fixed dependency cycle(s) with /soc@0/bus@30800000/i2c@30a30000/adv7393@2a [ 0.069265] /ldb-display-controller/lvds-channel@0: Fixed dependency cycle(s) with /soc@0/bus@32c00000/lcd-controller@32e90000 [ 0.069342] /ldb-display-controller/lvds-channel@1: Fixed dependency cycle(s) with /soc@0/bus@30800000/i2c@30a20000/adv7393@2b [ 0.069392] /ldb-display-controller/lvds-channel@1: Fixed dependency cycle(s) with /soc@0/bus@32c00000/lcd-controller@32e90000 [ 1.522532] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with 32e90000.lcd-controller [ 1.532750] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with 32e90000.lcd-controller [ 2.009363] imx-bus-devfreq 32700000.interconnect: failed to fetch clk: -2 [ 2.016254] imx-bus-devfreq: probe of 32700000.interconnect failed with error -2 [ 2.322034] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with 0-002b [ 2.342605] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with 1-002a [ 2.384121] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with phy-lvds [ 2.393017] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with phy-lvds [ 8.633579] adv7393 0-002b: chip found @ 0x56 (30a20000.i2c) [ 8.669132] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with 0-002b [ 8.669387] adv7393 1-002a: chip found @ 0x54 (30a30000.i2c) [ 8.698574] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with 1-002a Can the failed probe of the interconnect be the problem? I never touched the interconnect instance of the dtb, so I wonder how this can't work correctly? The "Failed to create device link" errors are obvious but I can tell what caused it. Could you tell me, what the cause can be for the "Failed to create device link" errors?  Cheers, Thilo Re: imx8mp using dual out, HDMI and LVDS Hi Aldo The "interconnect probe fail" is not the problem. I just added the opp table for it (which was a backport of a patch for a more current kernel). The final entry of interconnect node looks now something like this: https://github.com/torvalds/linux/blob/63804fed149a6750ffd28610c5c1c98cce6bd377/arch/arm64/boot/dts/freescale/imx8mp.dtsi#L1666 but the link failed 0x180 errors still occur? any idea where they originate from? Is it related to the problem, that the lcd-controller (lcdif2) can't link either? ldb-display-controller: Failed to create device link (0x180) with 32e90000.lcd-controller or the lvds phy? imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with phy-lvds But these are just enabled in my dts. Please any hint/help! Cheers Thilo Re: imx8mp using dual out, HDMI and LVDS Hi I enabled more and more debug output and getting theses messages now: > imx-lcdifv3 32fc6000.lcd-controller: No irq get, ret=-517 -517 is "deferred probe" lcd-controllers interrupt is from GIC_SPI. So how can't it get its irq? Can someone please shed some light here!? Cheers Thilo
記事全体を表示
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? 
記事全体を表示
为了在 LCD 上显示图像,uboot 向 Linux 内核传递了哪些引导参数 -- iMX93EVK 您好,恩智浦支持专家、 iMX93EVK 通过 LVDS 与 LCD 相连。 u-boot 需要将什么启动参数传递给 Linux 内核,才能在 LCD 上显示图像? 如何修改 imx93_evk.h文件? 顺祝商祺!
記事全体を表示
连接 Jenkins 和 CodeWarrior 5.9.0 制作版本 你好。 我是使用 S912XET256 MCU 进行开发的开发人员。 我正在尝试连接 Jenkins 和 Codewarrior 5.9.0 IDE 来创建自动版本。 我知道在 Codewarrior 5.9.0 IDE 中按下 " make " 按钮会开始版本。 我知道生成的 *.s19 和 *.map 文件是在 bin 文件夹中创建的。 我正在创建一个 Build.bat 文件来连接 Jenkins。 我需要知道执行"make" 按钮的 *.exe 文件是什么。 期待您的回复。 谢谢! Re: Connecting Jenkins and Codewarrior 5.9.0 Make Build 我上传了一个 Jenkins 连接 bat 文件示例。请参考。 从 Codewarrior 5.9.0 开始,编译程序是 CmdIDE.exe。 S912XET256.bat @echooff setlocal enabledelayedexpansion set"CW_PATH=C:\Program Files (x86)\Freescale\CWS12v5.1\bin\CmdIDE.exe" set"PROJECT_ROOT=%~dp0..." set"MCP_FILE=%PROJECT_ROOT%\Project.mcp" echo [信息] 开始版本... echo [INFO] 使用 Force 版本 执行 cmDide... " %CW_PATH% " " %MCP_FILE% " /F /C /M /E /S 设置"BUILD_EXIT_CODE=%errorlevel%" echo [DEBUG] 搜索生成的 .s19files... dir /s"%PROJECT_ROOT% \*.s19" 如果 %BUILD_EXIT_CODE% neq 0( echo [错误] 版本失败,代码为 %BUILD_EXIT_CODE% exit /b %BUILD_EXIT_CODE% ) 退出 /b 0 谢谢。
記事全体を表示
6.6.52 ベースの Debian 12 のビルドの問題 私はLinux 6.6.52をベースにしたDebian 12を使用しています bld uboot -m imx8mpiwg コマンドを使用すると mkimage と uboot バイナリが生成されますが、bld -m imx8mpiwg コマンドを使用すると uboot と makimage バイナリが生成されません。何が問題なのでしょうか? これに対する解決策は何ですか Re: Build issue with the debian 12 based on 6.6.52 imx8mpevkボードをビルドしました。flexbuild/build_lsdk2512/bspの下にubootフォルダとmkimageフォルダがあります。bld -m を実行すると、以下のBSPファームウェアイメージを取得できます。 flexbuild/build_lsdk2512/images の下にある ATF、U-Boot、OP-TEE OS、カーネル、dtb、ペリフェラルファームウェア、および initramfs のうち、uboot だけが必要な場合は、コマンド "bld uboot -m " を使用できます。 Re: Build issue with the debian 12 based on 6.6.52 問題は解決されました。 ありがとう
記事全体を表示
コア m7 の GPIO13 とコア m4 の GPIO9 への同時アクセス NXPチームの皆様 CPU i.mxrt1176CVM8A。 私のアプリケーションには、Core m4 モーター制御アプリケーションと Core m7 リアルタイム アプリケーションがあります。 コア m7 GPIO13 とコア m4 GPIO9 から同時にアクセスすると、GPIO9 へのアクセスは 31µs 以上遅延されます。 データシートの13.1章と2.1.2章にシステムバスダイアグラムの以下の情報 LPSRMIX マスターが GPIO13 にアクセスしている場合、XB は現在の LPSRMIX マスター アクセスが完了するまで、すべての AIPS4 ペリフェラルへの WAKEUPMIX マスター要求を保持します。GPIO13 アクセスは電力を節約するために SNVS ドメインにあるため 32 K クロックに基づいており、これらの WAKEUPMIX マスター要求は 31µs 以上保持される可能性があります。 AIPS4 から GPIO13 (LPSRMIX-Domin) 間のコア m7 からの遅延は理解していますが、コア m4 から GPIO-SOC への直接経路での GPIO9 (WAKEUPMIX) ピン GPIO_AD_31 までの 31µs を超える遅延は理解していません。 添付ファイルに、緑と青の通信でマークしたバス図があります。 どうか助けてください。この遅延により、モーター制御サイクルに問題が発生します。 Re: Simultan access GPIO13 from core m7 and GPIO9 from core m4 こんにちは、パブロさん。 迅速なご対応ありがとうございます。 cortex m7はマスターで、メインクロックは792.000.000Hzです。 Cortex m4のメインクロックは392.727.258 Hzです。 バスクロックルートは240MHz バスLPSRクロックルートは160MHzです 設定ファイルも添付されていますのでご確認ください。   よろしくお願いします、 アンドレアス   Re: Simultan access GPIO13 from core m7 and GPIO9 from core m4 こんにちは@AndreasL 、 バスダイヤグラムの添付ファイルが見れません。もう一度送っていただけますか? Cortex の構成は何ですか? 両方の Cortex の速度はどれくらいですか? よろしくお願いします、 パブロ Re: Simultan access GPIO13 from core m7 and GPIO9 from core m4 こんにちは@AndreasL 、 情報をありがとうございます。 GPIO13 レジスタにアクセスしている間、LPSR ドメイン バスは保留になります。 この場合、GPIO9 は LPSR ドメインの一部であるため、M4 コアから GPIO9 への通信は、M7 コアが GPIO13 レジスタへのアクセスを完了するまで待機する必要があります。 i.MX RT1170 クロスオーバー プロセッサ データ シートの表 3: i.MX RT1170 モジュール リストを参照してください。 モータ制御サイクルの実装がこの動作の影響を受けている場合は、GPIO13 以外の GPIO を使用してみてください。 よろしくお願いします、 パブロ
記事全体を表示
i.MX RT1060 QTMR 级联模式,带输入捕获-无上限 当级联两个 TMR 通道用于 32 位计数器时,我似乎无法正常进行输入捕获。仅使用一个通道时,输入捕获可以正常工作,但当我尝试级联通道时却无法正常工作。 1.定义了 TMR1 ch0 和 ch1 结构。TMR1 ch0 时钟源为 kQTMR_ClockDivide_1,TMR2 ch1 时钟源为 kQTMR_ClockCounter0,输出 2. qtmr_begin 初始化通道。它们被设置为自由运行。TMR1 IRQ 已启用。为输入捕获启用 TMR1 中断。计时器启动。 当我调用 getCount 时,上层计数(通道 1)只能得到 0。否则,如果我忽略上面的计数,下面的计数总是正确的。 const qtmr_config_t QuadTimer_1_Channel_0_config = { .primarySource = kQTMR_ClockDivide_1, .secondarySource = kQTMR_Counter0InputPin, .enableMasterMode = false, .enableExternalForce = false, .faultFilterCount = 0, .faultFilterPeriod = 0, .debugMode = kQTMR_RunNormalInDebug }; const qtmr_config_t QuadTimer_1_Channel_1_config = { .primarySource = kQTMR_ClockCounter0Output, .secondarySource = kQTMR_Counter0InputPin, .enableMasterMode = false, .enableExternalForce = false, .faultFilterCount = 0, .faultFilterPeriod = 0, .debugMode = kQTMR_RunNormalInDebug }; void qtmr_begin() { QTMR_Init(TMR1, kQTMR_Channel_0, &QuadTimer_1_Channel_0_config); QTMR_Init(TMR1, kQTMR_Channel_1, &QuadTimer_1_Channel_1_config); /* Ensure free-running (no stop at compare) */ TMR1->CHANNEL[kQTMR_Channel_0].CTRL &= ~TMR_CTRL_LENGTH_MASK; TMR1->CHANNEL[kQTMR_Channel_1].CTRL &= ~TMR_CTRL_LENGTH_MASK; /* Setup the input capture */ QTMR_SetupInputCapture(TMR1, kQTMR_Channel_0, QTMR_CounterInputPin, false, true, kQTMR_RisingEdge); /* Enable at the NVIC */ EnableIRQ(TMR1_IRQn); /* Enable timer compare interrupt */ QTMR_EnableInterrupts(TMR1, kQTMR_Channel_0, kQTMR_EdgeInterruptEnable); QTMR_StartTimer(TMR1, kQTMR_Channel_0, kQTMR_PriSrcRiseEdge); QTMR_StartTimer(TMR1, kQTMR_Channel_1, kQTMR_CascadeCount); } void TMR1_IRQHandler(void) { QTMR_ClearStatusFlags(TMR1, kQTMR_Channel_0, kQTMR_EdgeFlag); qtmrIsrFlag = true; } void getCount(void) { // Discard the first capture for (int i = 0; i < 2; i++) { while (!qtmrIsrFlag) { } qtmrIsrFlag = false; uint16_t lowerCount = TMR1->CHANNEL[kQTMR_Channel_0].CAPT; uint16_t upperCount = TMR1->CHANNEL[kQTMR_Channel_1].HOLD; uint32_t counterValue = ((uint32_t)upperCount << 16) | lowerCount; } } i.MX RT106x Re: i.MX RT1060 QTMR Cascade mode w/ Input Capture - No Upper Count 我在某种程度上已经明白了这一点。我使用了错误的寄存器来读取上部(通道 1)的计数。HOLD 寄存器不保存级联通道的计数,它用于存储特定事件期间的计数器值,无论是硬件还是软件,通常用于同步事件或保存先前的值等。 我应该只是读取 CNTR 寄存器。我可以在 IRQ 处理程序中或之后立即读取,然后同步到低 16 位。 不过,我发现还有一个问题不明白。如果我将频道 1 计时器 RESET 为 0,则计数始终从 1 开始,而不是 0。因此,(通道 1)上限计数的捕获时间总是偏差 1。为了补偿,我必须将通道 1 计数器 RESET 为 0xFFFF 才能获得正确的计数。为什么? const qtmr_config_t QuadTimer_1_Channel_0_config = { .primarySource = kQTMR_ClockDivide_1, .secondarySource = kQTMR_Counter0InputPin, .enableMasterMode = false, .enableExternalForce = false, .faultFilterCount = 0, .faultFilterPeriod = 0, .debugMode = kQTMR_RunNormalInDebug }; const qtmr_config_t QuadTimer_1_Channel_1_config = { .primarySource = kQTMR_ClockCounter0Output, .secondarySource = kQTMR_Counter0InputPin, .enableMasterMode = false, .enableExternalForce = false, .faultFilterCount = 0, .faultFilterPeriod = 0, .debugMode = kQTMR_RunNormalInDebug }; void qtmr_begin() { QTMR_Init(TMR1, kQTMR_Channel_0, &QuadTimer_1_Channel_0_config); QTMR_Init(TMR1, kQTMR_Channel_1, &QuadTimer_1_Channel_1_config); /* Ensure free-running (no stop at compare) */ TMR1->CHANNEL[kQTMR_Channel_0].CTRL &= ~TMR_CTRL_LENGTH_MASK; TMR1->CHANNEL[kQTMR_Channel_1].CTRL &= ~TMR_CTRL_LENGTH_MASK; /* Setup the input capture */ QTMR_SetupInputCapture(TMR1, kQTMR_Channel_0, QTMR_CounterInputPin, false, true, kQTMR_RisingEdge); /* Enable at the NVIC */ EnableIRQ(TMR1_IRQn); /* Enable timer compare interrupt */ QTMR_EnableInterrupts(TMR1, kQTMR_Channel_0, kQTMR_EdgeInterruptEnable); QTMR_StartTimer(TMR1, kQTMR_Channel_1, kQTMR_CascadeCount); QTMR_StartTimer(TMR1, kQTMR_Channel_0, kQTMR_PriSrcRiseEdge); } void TMR1_IRQHandler(void) { QTMR_ClearStatusFlags(TMR1, kQTMR_Channel_0, kQTMR_EdgeFlag); qtmrIsrFlag = true; } void getCount(void) { // Discard the first capture uint16_t lowerCount; uint16_t upperCount; uint32_t counterValue; for (int i = 0; i < 2; i++) { /* Reset channel 1 count to 0 - for some reason we have to reset to one value before or the count is off by 1...so we reset to 0xFFFF */ TMR1->CHANNEL[kQTMR_Channel_1].CNTR = 0xFFFF; while (!qtmrIsrFlag) { } qtmrIsrFlag = false; lowerCount = TMR1->CHANNEL[kQTMR_Channel_0].CAPT; upperCount = TMR1->CHANNEL[kQTMR_Channel_1].CNTR; counterValue = ((uint32_t)upperCount << 16) | lowerCount; } } Re: i.MX RT1060 QTMR Cascade mode w/ Input Capture - No Upper Count 嗨@azone, 非常感谢您关注我们的产品并使用我们的社区。 我根据你关于使用QTMR Cascade模式和输入捕获的问题进行了验证测试。 硬件:MIMXRT1060-EVKB , 将输入信号连接至 J33-6。 软件:QTMR3 通道 0 和通道 1 配置为级联模式 使用此设置,当计数器级联时,输入捕获可以正常工作。 设置 Edge 中断标志后,您可以读取捕获寄存器: board_qtmr_baseaddr->channel[board_qtmr_input_capture_channel0].capt; 和 BOARD_QTMR_BASEADDR->CHANNEL[BOARD_QTMR_INPUT_CAPTURE_CHANNEL1].CAPT; 顺祝商祺! MayLiu Re: i.MX RT1060 QTMR Cascade mode w/ Input Capture - No Upper Count 你好@azone、 感谢您提供的最新信息。 关于你的新问题,我也为你做了一个测试。 输入频率为 1kHz 的信号和频率为 150MHz 的 TMR 时钟,可以得到正确的数值。 硬件:MIMXRT1060-EVKB,我向 J33-6 输入 1KHZ 信号。 SW: 请参阅我之前的帖子。 致以最崇高的敬意 MayLiu Re: i.MX RT1060 QTMR Cascade mode w/ Input Capture - No Upper Count 嗨,谢谢您的答复。我从你的配置中看出,获得级联通道 1 计数的最佳方法是同时为该通道设置输入捕获并读取 CAPT 寄存器,而不是依赖读取 CNTR 寄存器。 这招管用。但对于通道 1 来说,它仍然算出了一个过高的值。我使用的是 SDK 的应用程序接口,而不是直接操作寄存器,但我的配置似乎与您的相同。 举例说明,当我输入频率为 1kHz 的信号,TMR 时钟为 150MHz 时,我预计计数将为 150,000。这意味着高 16 位计数为 "2",低 16 位计数为 "18928"=150,000。但是,我得到的上限计数是 "3"。在测量任何频率时,它总是偏差+1。为什么会这样? const qtmr_config_t QuadTimer_1_Channel_0_config = { .primarySource = kQTMR_ClockDivide_1, .secondarySource = kQTMR_Counter0InputPin, .enableMasterMode = false, .enableExternalForce = false, .faultFilterCount = 0, .faultFilterPeriod = 0, .debugMode = kQTMR_RunNormalInDebug }; const qtmr_config_t QuadTimer_1_Channel_1_config = { .primarySource = kQTMR_ClockCounter0Output, .secondarySource = kQTMR_Counter0InputPin, .enableMasterMode = false, .enableExternalForce = false, .faultFilterCount = 0, .faultFilterPeriod = 0, .debugMode = kQTMR_RunNormalInDebug }; void qtmr_begin() { CLOCK_EnableClock(kCLOCK_Timer1); QTMR_Init(TMR1, kQTMR_Channel_0, &QuadTimer_1_Channel_0_config); QTMR_Init(TMR1, kQTMR_Channel_1, &QuadTimer_1_Channel_1_config); /* Explicitly disable secondary source - not supported in API and not necessary but doing it anyways */ TMR1->CHANNEL[kQTMR_Channel_0].CTRL &= ~TMR_CTRL_SCS_MASK; TMR1->CHANNEL[kQTMR_Channel_1].CTRL &= ~TMR_CTRL_SCS_MASK; /* Ensure free-running (no stop at compare) */ TMR1->CHANNEL[kQTMR_Channel_0].CTRL &= ~TMR_CTRL_LENGTH_MASK; /* Setup the input capture */ QTMR_SetupInputCapture(TMR1, kQTMR_Channel_0, kQTMR_Counter0InputPin, false, true, kQTMR_RisingEdge); QTMR_SetupInputCapture(TMR1, kQTMR_Channel_1, kQTMR_Counter0InputPin, false, true, kQTMR_RisingEdge); /* Enable at the NVIC */ EnableIRQ(TMR1_IRQn); /* Enable timer compare interrupt */ QTMR_EnableInterrupts(TMR1, kQTMR_Channel_0, kQTMR_EdgeInterruptEnable); } void TMR1_IRQHandler(void) { uint16_t lowerCount; uint16_t upperCount; QTMR_ClearStatusFlags(TMR1, kQTMR_Channel_0, kQTMR_EdgeFlag); qtmrIsrFlag = true; lowerCount = TMR1->CHANNEL[kQTMR_Channel_0].CAPT; upperCount = TMR1->CHANNEL[kQTMR_Channel_1].CAPT; // UPPER COUNT IS ALWAYS OFF BY +1 } void getCount(void) { uint32_t counterValue; while (!qtmrIsrFlag) { } qtmrIsrFlag = false; counterValue = ((uint32_t)upperCount << 16) | lowerCount; } } Re: i.MX RT1060 QTMR Cascade mode w/ Input Capture - No Upper Count 好的,感谢您的测试。一定是我的配置出错了。我们可以修改硬件,使用 32 位 GPT 代替 16 位 QTMR,这样我就不用再使用级联模式了。不过,为了帮助其他可能看到此问题的人,我会尽量花一点时间找出错误,更新本帖。
記事全体を表示