Multi Source Translation Content

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Multi Source Translation Content

Discussions

Sort by:
How I Choose an IPTV Provider for International Streaming Finding a reliable IPTV provider can be difficult, especially when you need international channels, movies, sports, and good streaming quality. From my experience, I usually look at a few important points before choosing a service: Stable streaming with minimal buffering Good picture quality, including HD and 4K where available A wide selection of international content Regularly updated VOD content Compatibility with Smart TVs, Android devices, Fire TV, and other popular platforms Responsive customer support A trial option before making a longer subscription I have tested different services over time, and one of the services I currently use is nexusiptv.live (here) . I like it mainly because the service is simple to set up and offers a broad international selection. Of course, IPTV performance can depend on your internet connection, device, location, and the content being streamed, so I recommend testing a service yourself before choosing a long-term subscription. What features matter most to you when choosing an IPTV provider?
View full article
i.MX RT1176 – FlexIO2パラレル受信:達成可能な最大シフトクロックは?わずか約48 MSPSしか到達しなかった iMXR1176 SDK 25.09.00 Manifest 3.15.0 ゴール i.MX RT1176に搭載されているLTC2164 16ビットADCからデータを取得しています。データパスは次のとおりです。 LTC2164(フルレートCMOS出力)→FlexIO2(パラレルRX)→eDMA→外部SDRAM ハードウェアのセットアップ LTC2164フルレートCMOS出力モードで構成され、外部100MHz発振器(100MSPS、16ビット並列)でクロックされます。 ADCデータ出力D0–D15はGPIO_AD_00...GPIO_AD_15。 ADC CLKOUT+はGPIO_AD_30に接続され、FlexIOタイマークロック(外部ピンクロックソース)として使用されました。 ソフトウェアのセットアップ FlexIO2は並列レシーバとして構成され、データはシフター7にラッチされます。シフター7から>0は、DMA要求が主張される前に32バイトバッファリングされるようにチェーンされています。 kDmaRequestMuxFlexIO2Request0Request1によってトリガーされたeDMAは、ピンポン(スキャッター/ギャザー)モードで2つのTCDを使用します。各メジャーループ完了時、つまり16384サンプルごとに割り込みが発生します。 FlexIO2の機能クロック:120MHz。 バスクロック(eDMA/SEMC側):240MHz。 問題 100 MSPS の場合、16384 サンプルの処理には163.84 µsかかるはずです。連続する 2 つの DMA 割り込み間の時間を測定 (GPIO トグル + オシロスコープ) すると、常に338 µsという結果が得られ、これは約 2.06 倍です。 これは約48 MSPSの実効持続レートに相当し、ボトルネックはADCやSDRAMではなくFlexIO側にあることを示唆している。 質問 RT1176の並列受信モードにおけるFlexIOの最大シフトクロック周波数に関する公式な文書はありますか?RMやデータシートにはそのような数値は見つかりませんでした。 タイマークロックのソースが外部ピンの場合、FlexIOの機能クロックと外部シフトクロックの比率はどのようになりますか?私のFlexIOクロック(120MHz)は、入力される100MHzクロックのわずか1.2倍ですが、それで十分でしょうか?それとも、入力同期ロジックには2倍または4倍が必要ですか? ほぼ正確な×2の比率を考えると、これはFlexIOタイマーがクロックの両端で減少している(TIMMPの慣例)によるもので、タイマー比較値が実質的にスループットを半分に減らしているのではないでしょうか? この部分でのFlexIO + eDMAの最大現実的な持続スループットについてのガイダンスがあれば、非常に助かります。なぜなら、別のペリフェラルに移行するか外部FIFOに切り替えるかを判断するからです。 よろしくお願いいたします。 通信・制御(I3C |I2C |SPI |FlexCAN |イーサネット |FlexIO) Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached こんにちは、ご返信ありがとうございます。確かに望ましい性能は達成できましたが、Flexioペリフェラルの推奨クロック周波数を最大を超えたことでしかできませんでした。具体的には、120MHzでクロックを設定するのではなく、100MSpsの取得には200MHz以上のクロック速度が必要ですが、120MHz構成ではクロックエッジがミスされます。問題は、200 MHzで動作しているにもかかわらず(リファレンスマニュアルには最大120 MHzと記載されていますが)、温度条件や生産バッチごとに安定して動作する保証がないことです。 Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached こんにちは、@azed38 さん。 外部ピンをクロックソースとして使用した場合、わずかな同期レイテンシが発生することに注意してください。RMのセクション67.3.3.2によると、このレイテンシは0.5から1.5 FlexIOクロックサイクルの範囲です。 Habib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.png FlexIOとDMAで達成可能な最大スループットに関しては、FlexIOとDMAの性能テストは存在しません。しかし AN12686 、FlexIOとDMAを用いた並列通信実装を示しているため、あなたのユースケースに関連する指針となるかもしれません。 BR ハビブ Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached こんにちは、@azed38 さん。 このトピックに関してはすでに別のチャネルでサポートを受けているのに気づきましたので、すべてのコミュニケーションを集中管理するために引き続きサポートを続けます。FlexIOを最大周波数仕様を超えて運用すると、最終アプリケーションに影響を与える予期せぬ挙動を引き起こす可能性があることを付け加えたいと思います。RMの表15-4「クロックルート」に記載されている情報に基づき、最大周波数を120MHzにすることを推奨します。 BR ハビブ Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached こんにちは、 この問題は、セクション「67.3.3.2」で説明されているピン同期の遅延が原因である可能性が高い。「ピン同期」というリファレンスマニュアルの内容です。 前述の構成を考慮すると、問題の根本原因は、このモジュールのピン同期遅延に起因する、入力データ周波数とFlexIOの動作クロック周波数の比率にある。 例えば、ピン同期遅延が存在するため、SPI MasterのようなFlexIOエミュレート**ペリフェラル**は、FlexIO動作クロック周波数の最大ボーレートでしか動作できません。RMの67.4.3節に記載されているように:「同期遅延のため、シリアル入力データのセットアップ時間は1.5 FlexIOクロックサイクルとなり、最大ボーレートはFlexIOクロック周波数の4で割られます。」 この場合、スループットは減少することが予想されており、ピン同期遅延はFlexIOモジュール固有の動作であるため、回避策はありません。 このため、FlexIOモジュールの適切な動作を保証するための最大動作周波数が120MHzであることと相まって、RT1170では期待される100MSPSは実現できません。 BR ハビブ Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached > ほぼ正確な ×2 比率を踏まえると、これはFlexIOタイマーがクロックの両端で減少していること(TIMCMPの慣例)によるもので、タイマー比較値が実質的にスループットを半分に減らしているのではないでしょうか? 念のため申し上げておきますが、FlexIOタイマーは、ピンまたはトリガーからクロック供給されている場合、デュアルエッジ検出に対応しています。つまり、外部信号が上昇エッジと下降エッジを1つだけ作った場合、タイマーは比較値に2回カウントされます。 また、これまでのFlexIOの一般的な経験から言うと、外部信号はFlexIOのクロックレートの半分までしか扱えないと思います。他にどうやって二重エッジを感知できるのでしょうか?エッジを検出するためには、クロック周期ごとに外部ピンを2回サンプリングする必要がある。
View full article
国際ストリーミングのためのIPTVプロバイダーの選び方 信頼できるIPTVプロバイダを見つけるのは難しいことがあります。特に国際チャネル、映画、スポーツ、そして良好なストリーミング品質が必要な場合はなおさらです。 私の経験から言うと、サービスを選ぶ前に、私は通常いくつかの重要な点を確認します。 バッファリングを最小限に抑えた安定したストリーミング HDや4Kも含めて良好な品質を提供 幅広い国際コンテンツ 定期的に更新されるVODコンテンツ スマートテレビ、Androidデバイス、Fire TV、その他の人気プラットフォームとの互換性 迅速なカスタマーサポート 長期契約前に試用できるオプション 私はこれまで様々なサービスを試してきましたが、現在利用しているサービスの1つがnexusiptv.live (こちら)です。このサービスが気に入っている主な理由は、設定が簡単で、幅広い国際的なコンテンツを提供しているからです。 もちろん、IPTVのパフォーマンスはインターネット接続、デバイス、場所、ストリーミングコンテンツによって異なるため、長期契約を選ぶ前にご自身でサービスを試すことをおすすめします。 IPTVプロバイダーを選ぶ際に最も重要な機能は何ですか?
View full article
MCXN547 SC Timer0 SDK 驱动程序问题 我使用的是MCXN547VKL单片机和SDK版本26.06.00。 背景:我使用 SCT timer0 通过分割模式下的 COUNTER 生成两个不同的 PWM 波形,CONFIG[UNIFY] = 0;即 COUNT_L 用于一个 PWM 生成器,COUNT_H 用于另一个 PWM 生成器。 问题:当我使用驱动程序 API " SCTIMER_SetCOUNTValue(SCT0,kSCTIMER_Counter_H,0U);" 加载 COUNTER_H 时,发生总线故障。 我发现问题出在 SDK 驱动程序代码上。驱动程序代码使用 32 位写入同时写入 COUNT_H 和 COUNT_L,而不是仅使用 16 位写入 COUNT_H。在写入 COUNT_H 时,COUNT_L 正在运行,这导致了总线故障。我修改了 SDK 驱动程序代码,使其使用 16 位写入,总线故障就没有发生。我已附上驱动程序代码,并用颜色标记出导致问题的代码行和解决方法。如果这确实是问题所在,可以更新 SDK 驱动程序。- 谢谢 /*! * @brief 设置计数器的值。 * 该功能用于设置计数寄存器的值,写入 COUNT_L、COUNT_H 或统一寄存器。 只有当相应的计数器停止时(CTRL 寄存器中的 HALT 位设置为 1),才允许使用 *。 * * @Param base SCTimer 外设基地址 * @Param whichCounter 要使用的 SCTimer 计数器。在 16 位模式下,我们可以选择 Counter_L 和 Counter_H。 * 在 32 位模式下,我们可以选择 Counter_U。 * @Param value 计数器值更新到 COUNT 寄存器。 */ static inline void SCTIMER_SetCOUNTValue ( SCT_Type *base, sctimer_counter_t whichCounter, uint32_t value) { SCTIMER_StopTimer(base, ( uint32_t )whichCounter); 切换(whichCounter) { case kSCTIMER_Counter_L : assert(value <= 0xFFFFU); assert(0U == (base-> CONFIG & SCT_CONFIG_UNIFY_MASK)); /* 当用户想要设置低计数器时,请使用 Counter_L 位 */ base-> COUNT_ACCESS16BIT.COUNTL = ( uint16_t ) value; 休息; case kSCTIMER_Counter_H : assert(value <= 0xFFFFU); assert(0U == (base-> CONFIG & SCT_CONFIG_UNIFY_MASK)); /* 当用户想要设置高位计数器时,请使用 Counter_H 位 */ // base->COUNT = (uint32_t)base->COUNT_ACCESS16BIT.COUNTL | SCT_COUNT_CTR_H(value); base-> COUNT_ACCESS16BIT.COUNTH = ( uint16_t ) value; //修复 休息; case kSCTIMER_Counter_U : assert(1U == (base-> CONFIG & SCT_CONFIG_UNIFY_MASK)); /* 当计数器在 32 位模式下运行时,同时使用 Counter_L/Counter_H 位(统一计数器)。*/ 基本->计数= 值; 休息; 默认: /* 修复 MISRA C-2012 问题规则 16.4。*/ 休息; } SCTIMER_StartTimer(base, ( uint32_t )whichCounter); } 时钟|计时器 Re: MCXN547 SC Timer0 SDK driver Issue 你好@JawaharA 感谢您的反馈。您对总线故障原因的分析是正确的:更新 COUNT_H 需要对 COUNT 寄存器进行 32 位写入,但当前函数只会停止 H 计数器。如果 L 计数器仍在运行,则此写入访问会触发 SCT 总线错误。 然而,将对 COUNTH 的访问更改为 16 位写入不符合 SCT 硬件访问要求,因为 COUNT_H 必须与 COUNT_L 一起作为一个字写入。正确的软件解决方案是在对 COUNT 执行 32 位写入之前停止 L 计数器和 H 计数器,然后在之后恢复它们之前的运行状态。我们建议相应地审查和更新 SDK,而不是使用单独的 16 位写入 COUNT_H。 BR 哈里 Re: MCXN547 SC Timer0 SDK driver Issue 嗨,哈里, 感谢您的快速回复。 根据您在回复中引用的手册页,如果 CONFIG[UNIFY] = 0,则在相应的计数器未运行时,可以单独读取或写入 COUNT_L 和 COUNT_H 寄存器。SDK 对 COUNT_L 寄存器使用 16 位写入。无论 CONFIG[UNIFY] 设置如何,COUNT_H 寄存器都应该使用 32 位写入进行写入 - 这是未记录的条件吗? 谢谢 - 贾瓦哈尔
View full article
KW47-EVK板的蓝牙通道发声示例在哪里? KW47-EVK 板及其子卡 (KW47-001-M10)的蓝牙通道发声示例在哪里? 我在https://github.com/nxp-mcuxpresso/ 的仓库中查找过,但找不到任何针对 KW47-EVK 开发板的具体示例。我还找到了FRDM-MCXW72的通道探测示例:FRDM-MCXW72:动手实践 8:FRDM 到电话的通道探测。 我还使用了 NXP AI 的帮助功能,但它给出的链接并不存在。 我已经安装了基于 Eclipse 的 MCUXpresso,以及适用于 KW47-EVK 板和子卡 (KW47-001-M10) 的 SDK。 提前致谢!——保罗 Re: Where are Bluetooth Channel Sounding Examples for the KW47-EVK board 你好, 希望你一切都好。感谢您的联系。要访问 KW47-EVK 的通道探测示例,建议使用 MCUXpresso for VS Code 扩展以及 MCUXpresso SDK GitHub 存储库,而不是手动浏览存储库。 步骤如下: 安装适用于 VS Code 的 MCUXpresso 扩展。您可以从 VS Code 应用商店或 NXP 页面下载并安装: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-for-visual-studio-code :MCUXPRESSO-VSC 从存储库导入 SDK 在 VS Code 中,打开 MCUXpresso 快速入门面板,点击“从存储库导入示例”,然后选择 KW47-EVK 板。该扩展程序将直接从 GitHub 存储库拉取 SDK。 使用 SDK 版本 26.06.00 (LTS) 我们建议使用 SDK 版本 26.06.00,这是当前的 LTS 版本,包含 KW47 的最新 BLE 协议栈更新,包括通道探测支持。   具体来说,我建议您查看以下文档:运行低功耗蓝牙定位场景 — MCUXpresso SDK 文档 希望这能帮到你! 顺祝商祺! 里卡多 Re: Where are Bluetooth Channel Sounding Examples for the KW47-EVK board 谢谢你,里卡多!这样就成功了,我可以使用 Visual Studio Code 扩展导入 mcxw72evk_loc_reader_bm。
View full article
S32K36x Bootloader Implementation Dear NXP Support Team, I am currently in the process of evaluating your microcontrollers for an application. I would specifically like to use the S32K364 microcontroller model. However, I am uncertain about how to implement a bootloader function for it. Are we supposed to simply adapt the existing "unified bootloader demo" from four years ago made for the original S32K31x/K32x/K34x MCUs if we want to flash our MCU using CAN-FD or is there a more official bootloader example project written specifically for the S32K36x series we could use directly?  Thanks in advance! Re: S32K36x Bootloader Implementation Hi @SewerynP  Please see my summary of the available S32K3 bootloader examples here: https://community.nxp.com/t5/S32K/S32K385-Bootloader/m-p/2367874/highlight/true#M58710 NXP does not provide production-ready bootloader code specifically for every S32K3 derivative. The available bootloader demos are reference software intended as a starting point for developing your own solution and can be adapted to S32K364. For a production-ready solution, you can consider third-party products such as Vector Flash Bootloader. Regards, Lukas
View full article
MCU-LINKが動作しません こんにちは、 新しいPC(Windows 10ノートPC)でMCU-LINKを使おうとしているのですが、残念ながらあまりうまくいっていません! mcuxpressoをインストールして、MCU-LINKをUSBポートに差し込むと、例の挙動のような音がしますが、mcuxpressoはプローブを認識できず、Windowsのデバイスマネージャーでは「USBコンポジットデバイス」の横に黄色い警告三角形があり、デバイスステータスに「このデバイスは起動できません(コード10)」というメッセージが表示されます。API を完了するためのシステム リソースが不足しています。 また、NXPのウェブサイトからWindows 10用のMCU-LINKドライバーインストーラーを手動でダウンロードしてみましたが、それでも成功しませんでした。 何かアドバイスをいただけますか?これは比較的新しいノートPCなので、リソース不足はないと思います。 どうもありがとうございました -ニック Re: MCU-LINK not working こんにちは、 私も全く同じ問題に直面しました。 ちょうど解けたので、役に立てればと思います。私は以下のことをしました。 C:\nxp\LinkServer_26.6.137\MCU-LINK_installer\scriptsへ移動します「program_CMSIS」をクリックし、コマンドパネルの指示に従います(つまり、MCUリンクのショートジャンパーJ3 -> USB経由でMCUリンクに接続 -スペースバーを押す>)。 (それ以外の場合は、「CMSIS」と書くか、Windowsの検索バーで「Program MCU-Link CMSIS-DAP」を検索して直接ファイルを探すこともできます。) これを実行すると、デバイスマネージャーで警告なしにデバイスが正しく認識され、ボードのデバッグも正常にできました。 関連があるのか、あるいは動作に役立ったのか(必須ではないかもしれませんが)、mcu-linkのファームウェアアップデートを行う前に、私は以下のことをしました: 1- 「Windows Security」 -> 「App & ブラウザ コントロール」 -> Smart App Control 設定 ->オフになりましたか? 2- LinkServerインストーラーを再インストールしました。nxpのウェブサイトの「LinkServer for マイクロコントローラ」で見つかります。 また、ファームウェアのアップデート後: 1- mcUspresso IDEを「管理者として実行」で開き、プロジェクトエクスプローラーでプロジェクトフォルダを開き、下部のフォルダ「(*project_name*)_ LinkServer Debug.launch」を削除しました。コードをデバッグする前に。 これは私の場合うまくいった方法です。誰かの役に立てば幸いです。 カンザス州より、よろしくお願いいたします。 Re: MCU-LINK not working こんにちは、私もMCU-Linkを使っていますが、ノートPCのポートに直接接続すると問題なく動作しています。しかしUSBハブを使って、そのUSBハブ経由でMCU -Linkを接続すると、デバグがうまくいかずエラーが出ます。どうすればこれを克服すればいいですか?ノートPCにはポートが1つしかないので、ハブ経由で使う必要があります Re: MCU-LINK not working 他に二つの代替案が思い浮かびます。 一つは、アンチウイルスがMCU-LINKを脅威として検知していないか確認し、念のため無効化することです。 2つ目は、別のコンピューターで試してみることです。もし問題が別のマシンでも続くなら、MCU-LINKに関連している可能性があると考えられます。そうでなければ、問題はOSかケーブルに関係している可能性が最も高いと思います。 これがお役に立てば幸いです。 Re: MCU-LINK not working @EdwinHz さん、ありがとうございます。 はい、その場所からドライバをダウンロードしました。 USBハブは使用していません。直接接続です。 別のUSBケーブルを試してみますが、可能性は低いようです。 他に何かご提案があれば教えてください。ありがとう!   Re: MCU-LINK not working こんにちは、 @nickwallis さん。 手動でインストールしたドライバは、MCU-Link Debug Probeのウェブサイトの下部にある「MCU-Link installer for Windows 10」ソフトウェアから来たものですか?もしそうでなければ、このインストーラーを使ってドライバを再インストールすることをお勧めします。 MCU-LINKへの接続を確認してください。USBハブに接続しているなら、直接マシンに接続してみてください。別のUSBケーブルも試してみてください。 よろしくお願いいたします。 エドウィン。
View full article
在 macOS 上,RT685 DSP 镜像使用缓存的二进制文件,而不是在 Zephyr sysbuild 中新构建的二进制文件。 平台:MacOS 15.6.1 (24G90) VS Code(版本:1.112.0)(普遍的)) MCUXpresso for VS Code: 26.8.29 Zephyr 工具链:zephyr-sdk-1.0.1,zsdk nxp-v4.4.1.1 应用程序:amp_blinky 已作为zephyr-freestanding导入 开发板:MIMXRT685-EVK 说明: 我正在MacOS上搭建开发环境,同样的步骤在我的Linux机器上运行良好。虽然使用 MCUXpresso进行构建和烧录时没有出现任何严重警告/错误,但应用程序在 Arm 和 DSP 内核上都能正常运行。然后我编辑了 remote/src 和 remote/prj.conf 下的代码,并在全新版本后将其刷入。然而,DSP 核心在编辑之前仍然运行了之前的图像。 以下是一些有趣的行为: 我也尝试修改了 Arm 核心代码,但更改已成功应用。 DSP核心代码的更改可能会触发非初始版本,而不是显示“无需工作”。 禁用 cmake 中的 CCACHE 似乎可以解决问题。 就目前来看,这似乎是一个与缓存相关的问题,编译器在运行 sysbuild 时忽略了 DSP 映像中的更改,并使用了缓存的二进制文件,无论它是否已被重新构建。这可能是由于 nxp_zephyr/zephyr/samples/boards/nxp/adsp/rtxxx/common/src/dspimgs.S 没有更新造成的。另外,这可能只是 macOS 系统的问题,因为我在 Linux 机器上没有发现这个问题。 这是已知问题吗?除了禁用 CCACHE 之外,有没有更优雅的解决方案? 顺祝商祺! 岳 ZEPHYR-OS-EDGE i.MX RT600 Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS 尊敬的@YueZ , 谢谢你的提问。 目前为止,我们这边还没有发现这个问题。 为了帮助找出根本原因,请您检查以下输出是否持续更新? 远程版本过程生成的 DSP BIN。 由 dspimgs.S 生成的对象文件 最终实际编程到设备上的 Arm BIN。 如果 DSP BIN 已更新,但从 dspimgs.S 生成的目标文件尚未更新,则一个可能的原因是构建系统没有更新 DSP BIN 时间戳。因此,依赖项检查可能跳过了重新编译 dspimgs.S。 我们建议将以下内容添加到负责 dspimgs.S 的CMake配置中,以确保 DSP BIN 中的更改触发重新构建: 设置(DSP_BIN_DIR ${CMAKE_BINARY_DIR} /../remote/zephyr) 设置属性(源) ${CMAKE_CURRENT_SOURCE_DIR} /src/dspimgs.S 属性 OBJECT_DEPENDS ${DSP_BIN_DIR} /zephyr_reset.bin ${DSP_BIN_DIR} /zephyr_text.bin ${DSP_BIN_DIR} /zephyr_data.bin ) (请同时确认文件路径是否正确。) 如有任何疑问,请与我们联系。   顺祝商祺! 雪莉 Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS 你好,雪莉, 谢谢你的回复! 我检查了 build/remote/zephy 下的三个 DSP BIN、最终的 Arm BIN 以及 build/amp_blinky/CMakeFiles/app.dir/.../adsp/rtxxx/common/src/ 下的 dspimgs.S.obj 的时间戳,它们都被原始构建或非原始构建更新了。 我还尝试了推荐的 CMake 配置,方法是替换 设置源文件属性( " ${CMAKE_CURRENT_LIST_DIR} /src/dspimgs.S" 对象依赖项 ${HIFI4_BUILD_DIR} /zephyr.elf )   (带   设置(HIFI4_BIN_DEPS) " ${HIFI4_BUILD_DIR} /zephyr.elf" " ${HIFI4_BUILD_DIR} /zephyr.reset.bin" " ${HIFI4_BUILD_DIR} /zephyr.text.bin" " ${HIFI4_BUILD_DIR} /zephyr.data.bin" ) 设置源文件属性( " ${CMAKE_CURRENT_LIST_DIR} /src/dspimgs.S" Properties 对象依赖项 " ${HIFI4_BIN_DEPS} " ) 在 dsp-load.cmake 中,并通过以下方式验证了更改: `ninja -C build/amp_blinky -t query build/.../dspimgs.S.obj`   但遗憾的是,这个问题依然存在。然后我又做了如下测试: 在 remote/src/main.c 中添加 ` printk ( " TESTCCACHE " );` 构建 调用 `strings build/.../dspimgs.S.obj | grep TESTCCACHE` 调用 `strings build/remote/zephyr/zephyr.text.bin build/remote/zephyr/zephyr.data.bin | grep TESTCCACHE` 步骤 3 没有返回任何结果,而步骤 4 找到了字符串。然后,我禁用 CCACHE 后再次运行测试,结果在两次测试中都发现了 TESTCCACHE。看起来,当启用 CCACHE 时,dspimgs.S.obj 的时间戳已更新,但没有加载正确的二进制文件。 欢迎大家就此发表意见。 顺祝商祺! 岳 Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS 尊敬的@YueZ , 请尝试: CCACHE_RECACHE=1?   与 CCACHE_DISABLE 完全绕过 ccache 并执行完全重建而不读取或写入任何缓存条目不同,CCACHE_RECACHE=1 强制重新生成所有输出,并使用新构建的结果更新缓存。 如果使用 CCACHE_RECACHE=1 后问题消失,则表明根本原因可能是缓存内容过旧。如果问题仍然存在,则表明问题与 ccache 本身有关,而不是与特定的缓存条目有关。 顺祝商祺! 雪莉   Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS 你好,雪莉, 是的, CCACHE_RECACHE=1 可以正常工作。 顺便说一下,我通过在 CMakeLists 中将 USE_CCACHE 设置为 0 来禁用 CCACHE。至于 CCACHE_DISABLE,我必须在 West 工作区的终端中显式设置才能使其生效,这对于在 VS Code 中使用 MCUXpresso 来说不太理想。CCACHE_RECACHE 也存在同样的问题,我无法通过将其添加到 CMakeLists 中来使用它。 顺祝商祺! 岳
View full article
RT685 DSPイメージは、MacOS上で新たに組み込まれたZephyr sysbuildの代わりにキャッシュバイナリを使用しています プラットフォーム:MacOS 15.6.1 (24G90) VS Code(バージョン:1.112.0)(ユニバーサル) MCUXpresso for VS Code: 26.8.29 Zephyr toolchain: zephyr-sdk-1.0.1, zsdk nxp-v4.4.1.1 用途: amp_blinkyをZephyr-freestandingとしてインポート 基板: MIMXRT685-EVK 説明: 私はMacOSで開発環境を設定していますが、同じ手順はLinuxマシンでも問題なく動作していました。ビルドとフラッシュは MCUXpressoで重大な警告やエラーを出さなかったが、ARMコアとDSPコアの両方でアプリケーションは正常に動作していた。その後、remote/srcとremote/prj.confのコードを編集し、クリーンビルド後にフラッシュしました。しかし、DSPコアは編集前に前の画像を実行していました。 以下に、興味深い行動例をいくつか示します。 Armコアコードの編集も試みましたが、その変更は成功裏に適用されました。 DSPコアコードの変更は「作業なし」と表示される代わりに、非純粋なビルドを引き起こすことがあります。 cmakeでCCACHEを無効にすると問題が解決するようです。 今のところ、コンパイラがsysbuildを実行する際にDSPイメージの変更を無視し、キャッシュされたバイナリを使っているというCAHCE関連の問題のように思えます。これは再構築されているにもかかわらずです。おそらくnxp_zephyr/zephyr/samples/boards/nxp/adsp/rtxxx/common/src/dspimgsが原因です。Sは更新されていません。また、Linuxマシンでは気づかなかったので、MacOSだけの問題かもしれません。 これは既知の問題ですか?CCACHEを無効にする以外の、より洗練された解決策はありますか? よろしくお願いいたします。 ユエ ゼファー・オス・エッジ  i.MX RT600 Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS こんにちは、シェリーさん。 ご返信ありがとうございます! build/remote/zephyの3つのDSP BINのタイムスタンプ、最終的なArm BIN、そしてdspimgsを確認しました。build/amp_blinky/CMakeFiles/app.dir/.../adsp/rtxxx/common/src/の項目S.obj、すべて純正または非純正のビルドで更新されていました。 また、推奨されている CMake 設定を置き換えて試してみました。 set_source_files_properties ( " ${CMAKE_CURRENT_LIST_DIR} /src/dspimgs.S" オブジェクトに依存する ${HIFI4_BUILD_DIR}/zephyr.elf )   with   設定(HIFI4_BIN_DEPS) 「${HIFI4_BUILD_DIR}/zephyr.elf」 「${HIFI4_BUILD_DIR}/zephyr.reset.bin」 「${HIFI4_BUILD_DIR}/zephyr.text.bin」 「${HIFI4_BUILD_DIR}/zephyr.data.bin」 ) set_source_files_properties ( " ${CMAKE_CURRENT_LIST_DIR} /src/dspimgs.S" プロパティ オブジェクトに依存する " ${HIFI4_BIN_DEPS} " ) dsp-load.cmakeでは、そして変更を検証しました `ninja -C build/amp_blinky -t query build/.../dspimgs.S.obj`   しかし残念ながら、この問題は依然として解決していません。次に、以下のように別のテストを行いました。 remote/src/main.c に` printk ( " TESTCCACHE " );` を追加する ビルド `strings build/.../dspimgs.S.obj | grep TESTCCACHE` を実行します。 呼び出し:'strings build/remote/zephyr/zephyr.text.bin build/remote/zephyr/zephyr.data.bin |grep TESTCCACHE' ステップ3では何も返されなかったが、ステップ4では文字列が見つかった。次に、CCACHEを無効にして再度テストを実行したところ、どちらのテストでもTESTCCACHEが検出されました。CCACHEが有効になっている場合、dspimgs.S.objのタイムスタンプは正しいバイナリをロードせずに更新されたようです。 この件について、ご意見をいただければ幸いです。 よろしくお願いいたします。 ユエ Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS @YueZ様、 ご質問ありがとうございます。 今のところ、私たちの側ではこの問題が既知のものではありません。 根本原因を特定するために、以下の出力が一貫して更新されているか確認していただけますか? リモートビルドプロセスによって生成されるDSP BINです。 dspimgs.S から生成されたオブジェクトファイル。 実際にデバイスにプログラムされている最後のArm BINです。 DSP BINは更新されているが、オブジェクトファイルはdspimgsから生成されていない場合Sは更新していないため、ビルドシステムがDSP BINのタイムスタンプを更新しなかった可能性があります。その結果、依存関係チェックでdspimgs.Sの再コンパイルがスキップされた可能性があります。 DSPIMGsを担当する CMake 構成に以下のコンテンツを追加することをお勧めします。DSP BINの変更が再構築を引き起こすようにするために: セット(DSP_BIN_DIR ${CMAKE_BINARY_DIR}/../リモート/ゼファー) set_properte(ソース ${CMAKE_CURRENT_SOURCE_DIR} /src/dspimgs.S プロパティ オブジェクト_依存 ${DSP_BIN_DIR} /zephyr_reset.bin ${DSP_BIN_DIR} /zephyr_text.bin ${DSP_BIN_DIR} /zephyr_data.bin ) (実際のファイルパスが正しいかどうかも確認してください。) ご質問がありましたら、お気軽にお問い合わせください。   よろしくお願いいたします。 シェリー Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS こんにちは、シェリーさん。 はい、 CCACHE_RECACHE=1は機能します。 ちなみに、CMakeListsでUSE_CCACHEを0に設定してCCACHEを無効にしています。CCACHE_DISABLEについては、動作させるにはwest workspace端末で明示的に設定しなければならず、MCUXpresso for VS Codeを使うにはあまり理想的ではありません。CCACHE_RECACHEも同じで、CMakeListsに追加しても使えません。 よろしくお願いいたします。 ユエ Re: RT685 DSP image uses cached binary instead of newly built in Zephyr sysbuild on MacOS @YueZ様、 CCACHE_RECACHE=1を試してみていただけますか?   ccache を完全にバイパスし、キャッシュエントリの読み書きを行わずに完全な再構築を実行する CCACHE_DISABLE とは異なり、CCACHE_RECACHE=1 はすべての出力の再生成を強制し、新しく構築された結果でキャッシュを更新します。 CCACHE_RECACHE=1 にすることで問題が解消される場合、根本原因はおそらく古いキャッシュの内容にあると考えられます。問題が解決しない場合は、特定のキャッシュされたエントリではなく、ccache自体に問題がある可能性が高いと考えられます。 よろしくお願いいたします。 シェリー  
View full article
PXP screen rotation issue based on i.MXRT1052 I'm using rt1052PXP to rotate a landscape view to a portrait view, but the overall display shifts downwards when I refresh the page. Why is this happening?   static void DEMO_FlushDisplay(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p) { lv_area_t dest_area = { .x1 = 0, .x2 = 480 - 1, .y1 = 0, .y2 = 800 - 1, }; lv_gpu_nxp_pxp_blit(((lv_color_t *)s_inactiveFrameBuffer), area, 800, color_p, area,480, LV_OPA_COVER, LV_DISP_ROT_270); DCACHE_CleanInvalidateByRange((uint32_t)color_p, DEMO_FB_SIZE); ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)s_inactiveFrameBuffer); s_framePending = true;if (xSemaphoreTake(s_frameSema, portMAX_DELAY) == pdTRUE) { /* IMPORTANT!!! * Inform the graphics library that you are ready with the flushing*/ lv_disp_flush_ready(disp_drv); } else { PRINTF("Display flush failed\r\n"); assert(0); } }   i.MXRT 105x 回复: 基于i.MXRT1052的pxp屏幕旋转问题 I've noticed an offset issue when drawing with PXP. Is it because the default initialization `#define LV_USE_GPU_NXP_PXP_AUTO_INIT 1` generated by guiguider can't be used directly? void lv_disp_drv_init(lv_disp_drv_t * driver) { lv_memset_00(driver, sizeof(lv_disp_drv_t)); driver->hor_res = 320; driver->ver_res = 240; driver->physical_hor_res = -1; driver->physical_ver_res = -1; driver->offset_x = 0; driver->offset_y = 0; driver->antialiasing = LV_COLOR_DEPTH > 8 ? 1 : 0; driver->screen_transp = 0; driver->dpi = LV_DPI_DEF; driver->color_chroma_key = LV_COLOR_CHROMA_KEY; #if LV_USE_GPU_NXP_PXP // driver->draw_ctx_init = lv_draw_pxp_ctx_init; // driver->draw_ctx_deinit = lv_draw_pxp_ctx_deinit; // driver->draw_ctx_size = sizeof(lv_draw_pxp_ctx_t); driver->draw_ctx_init = lv_draw_sw_init_ctx; driver->draw_ctx_deinit = lv_draw_sw_init_ctx; driver->draw_ctx_size = sizeof(lv_draw_sw_ctx_t); #else driver->draw_ctx_init = lv_draw_sw_init_ctx; driver->draw_ctx_deinit = lv_draw_sw_init_ctx; driver->draw_ctx_size = sizeof(lv_draw_sw_ctx_t); #endif } 回复: 基于i.MXRT1052的pxp屏幕旋转问题 Hi  @dsd, The LV_USE_GPU_NXP_PXP_AUTO_INIT allows LVGL to leverage the user of PXP for internal widget rendering, which could definitely cause issues when the application also uses this PXP in parallel for whole screen rotation. However, it is likely not the source of the issue. From the initial code, it seems like you are not using dest_area, or rather you are using area as both source and destination for the PXP blit, which means that only the partial dirty region might be getting placed on different absolute positions rather than the intended. 回复: 基于i.MXRT1052的pxp屏幕旋转问题 I used the code generated by guiguider to test it, even without using pxp rotation. static void DEMO_FlushDisplay(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p) { DCACHE_CleanInvalidateByRange((uint32_t)color_p, DEMO_FB_SIZE); ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)color_p); s_framePending = true; if (xSemaphoreTake(s_frameSema, portMAX_DELAY) == pdTRUE) { /* IMPORTANT!!! * Inform the graphics library that you are ready with the flushing*/ lv_disp_flush_ready(disp_drv); } else { PRINTF("Display flush failed\r\n"); assert(0); } } Simply modify the macro /*Use NXP's PXP GPU iMX RTxxx platforms*/ #define LV_USE_GPU_NXP_PXP 1 #if LV_USE_GPU_NXP_PXP /*1: Add default bare metal and FreeRTOS interrupt handling routines for PXP (lv_gpu_nxp_pxp_osa.c) * and call lv_gpu_nxp_pxp_init() automatically during lv_init(). Note that symbol SDK_OS_FREE_RTOS * has to be defined in order to use FreeRTOS OSA, otherwise bare-metal implementation is selected. *0: lv_gpu_nxp_pxp_init() has to be called manually before lv_init() / #define LV_USE_GPU_NXP_PXP_AUTO_INIT 1 #endif /* LV_USE_GPU_NXP_PXP */ The same problem will occur, and the direction of the offset will be the same as after rotation. 回复: 基于i.MXRT1052的pxp屏幕旋转问题 What's even stranger is that there are two different results within the same project, even though I thought the configuration should be the same. No display offset occurred Display offset occurs    
View full article
MCU-LINK 无法正常工作 您好, 我尝试在新电脑(Windows 10 笔记本电脑)上使用 MCU-LINK,但很遗憾,并没有取得太大成功! 我安装了 mcuxpresso,当我将 MCU-LINK 插入 USB 端口时,它会发出像枚举一样的正常声音,但 mcuxpresso 无法识别探针,并且在 Windows 设备管理器中,“USB 复合设备”旁边出现了一个黄色警告三角形,设备状态中显示一条消息,提示“此设备无法启动(代码 10)”。系统资源不足,无法完成 API 请求。 我还尝试从 NXP 网站手动下载适用于 Windows 10 的 MCU-LINK 驱动程序安装程序,但仍然没有成功。 请问有什么建议吗?这是一台比较新的笔记本电脑,我预计它的资源不会不足。 非常感谢 -缺口 Re: MCU-LINK not working 你好, 我发现自己也遇到了完全相同的问题。 我刚刚成功解决了这个问题,希望对大家有所帮助。我做了以下事情: 正在前往C:\nxp\LinkServer_26.6.137\MCU-LINK_installer\scripts点击“ program_CMSIS ”,然后按照命令面板上的说明进行操作(即,短接 MCU-link 的跳线 J3 -> 通过 USB 连接 MCU-link -> 按空格键)。 (或者,您也可以尝试在 Windows 搜索栏中输入“CMSIS”或搜索“Program MCU-Link CMSIS-DAP”来直接找到该文件)。 完成上述操作后,计算机的设备管理器能够正确识别该设备,且没有出现任何警告,我得以成功调试我的板。 不确定是否相关,或者是否有助于正常工作(也许并非必需),但在对 MCU-Link 进行固件更新之前,我做了以下操作: 1- 已将“Windows 安全中心”->“应用和浏览器控制”->“智能应用控制设置”->关闭。 2- 我重新安装了 LinkServer 安装程序,您可以在 nxp 网站上的“LinkServer for Microcontrollers”中找到它。 此外,在进行固件更新后: 1- 以“管理员身份运行”打开 mcuxpresso IDE,然后在项目资源管理器中,打开项目文件夹,并在底部删除文件夹“(*项目名称*)_LinkServer Debug.launch”;在调试代码之前。 对我来说,这种方法很有效。希望对其他人也有帮助。 祝好,堪萨斯。 Re: MCU-LINK not working 您好,我也在使用 MCU-Link,它直接连接到笔记本电脑的 USB 端口时工作正常。但是,当我使用 USB 集线器并通过集线器连接 MCU-Link 时,调试就无法工作,并会报错。请问如何解决这个问题?我的笔记本电脑只有一个 USB 端口,所以必须通过集线器连接。 Re: MCU-LINK not working 我还能想到另外两种替代方案: 首先要确保您的防病毒软件没有将 MCU-LINK 检测为威胁,为了安全起见,最好将其禁用。 第二种方法是换一台电脑试试。如果换一台机器也出现同样的问题,那么我们有理由相信问题可能与 MCU-LINK 有关。否则,我认为问题很可能与操作系统或数据线有关。 希望这能帮到你。 Re: MCU-LINK not working 谢谢@EdwinHz 是的,我们从那个位置下载了驱动程序。 我们没有使用 USB 集线器,这是直接连接。 我会试试换根USB线,但这似乎不太可能。 还有其他建议吗?谢谢!   Re: MCU-LINK not working 嗨@nickwallis , 您手动安装的驱动程序是否来自 MCU-Link Debug Probe 网站底部的“MCU-Link Windows 10 安装程序”软件?如果不行,我建议使用此安装程序重新安装驱动程序。 检查与MCU-LINK的连接。如果它连接到了 USB 集线器,请尝试将其直接连接到机器。也可以尝试使用不同的USB数据线。 此致, 埃德温。
View full article
マーキング仕様書の依頼 - PN# MFS2633HMDA0AD 拝啓 部品番号MFS2633HMDA0ADを受け取りました。入荷部品の検証に必要なチップマーキング情報を取得できません。この部品のマーキング仕様書の提供を手伝ってもらえますか? 皆様のご支援をいただけると大変ありがたいです。 よろしくお願いいたします。 ジョーイ
View full article
MCXN547 SC Timer0 SDKドライバーの問題 私はMCUとSDK MCXN547VKLバージョン26.06.00を使っています。 コンテキスト: 私は SCT タイマー 0 を使用して、スプリット モードの COUNTER を使用して 2 つの異なる PWM 波形を生成しています。CONFIG[UNIFY] = 0、つまり COUNT_L を 1 つの PWM ジェネレーターに、COUNT_H を別の PWM ジェネレーターに使用しています。 問題はこうです:ドライバーAPI「SCTIMER_SetCOUNTValue(SCT0,kSCTIMER_Counter_H,0U)」でCOUNTER_Hを読み込むと、バスフォールトが発生します。 問題の原因をSDKのドライバーコードに突き止めました。ドライバコードはCOUNT_H単独で16ビットの書き込みではなく、COUNT_HとCOUNT_Lの両方を32ビット書き込みで行います。COUNT_H が書き込まれている間に COUNT_L が実行されていたため、バス障害が発生しました。SDKのドライバーコードを16ビット書き込みに変更したところ、バスの故障は発生しませんでした。ドライバーコードを添付し、問題の原因となったコードラインと修正方法を色で示しました。もし本当にこれが問題なら、SDKドライバーを更新できます。- ありがとう /*! * @brief カウンターの値を設定します。 * * この機能は、カウントレジスタの値を設定することであり、COUNT_L、COUNT_H、または統合レジスタに書き込みます。 * は、対応するカウンタが停止しているとき(CTRL レジスタの HALT ビットが 1 に設定されているとき)にのみ許可されます。 * * @param base SCTimer ペリフェラル ベースアドレス * @param whichCounter SCTimer カウンターを使います。16ビットモードでは、Counter_LとCounter_Hを選択できます。 * 32ビットモードではCounter_Uを選択できます。 * @Param value COUNTレジスタへのカウンタ値の更新。 */ static inline void SCTIMER_SetCOUNTValue ( SCT_Type *base, sctimer_counter_t whichCounter, uint32_t value) { SCTIMER_StopTimer(base, ( uint32_t )whichCounter); スイッチ (whichCounter) { case kSCTIMER_Counter_L: assert(value <= 0xFFFFU); assert(0U == (base-> CONFIG & SCT_CONFIG_UNIFY_MASK)); /* ユーザーがLowカウンターを設定したいときにビットCounter_Lを使います */ base-> COUNT_ACCESS16BIT.COUNTL = ( uint16_t ) value; 壊す; case kSCTIMER_Counter_H: assert(value <= 0xFFFFU); assert(0U == (base-> CONFIG & SCT_CONFIG_UNIFY_MASK)); /* ユーザーがHighカウンターを設定したいときにCounter_Hビットを使う */ // base->COUNT = (uint32_t)base->COUNT_ACCESS16BIT.COUNTL | SCT_COUNT_CTR_H(value); base- > COUNT_ACCESS16BIT.COUNTH = ( uint16_t )value; //修正 壊す; CASE kSCTIMER_Counter_U: assert(1U == (base-> CONFIG & SCT_CONFIG_UNIFY_MASK)); /* カウンタが 32 ビットモードで動作している場合 (カウンタを統合する場合) は、Counter_L ビットと Counter_H ビットの両方を使用します。*/ base-> COUNT = value; 壊す; デフォルト: /* MISRA C-2012 問題ルール 16.4 を修正します。*/ 壊す; } SCTIMER_StartTimer(base, ( uint32_t )whichCounter); } クロック|タイマー Re: MCXN547 SC Timer0 SDK driver Issue こんにちは、 @JawaharA さん。 ご意見ありがとうございます。バス障害の原因に関するあなたの分析は正しいです。COUNT_H の更新には COUNT レジスタへの 32 ビット書き込みが使用されますが、現在の関数は H カウンタのみを停止します。Lカウンタがまだ動作している場合、この書き込みアクセスはSCTバスエラーを引き起こします。 しかし、COUNTHへの16ビット書き込みへのアクセス変更はSCTハードウェアアクセス要件に適合しません。なぜなら、COUNT_HはCOUNT_L と一緒にワードとして書かなければならないからです。正しいソフトウェアの解決策は、32ビットのCOUNTへの書き込みを行う前にLとHの両方のカウンターを停止し、その後に以前の実行状態を復元することです。別途16ビットの書き込みを使わずにSDKをレビューし、適切に更新することを推奨COUNT_H。 BR ハリー Re: MCXN547 SC Timer0 SDK driver Issue こんにちは、ハリーさん。 迅速なご対応ありがとうございます。 ご回答で参照されたマニュアルページによると、CONFIG[UNIFY] = 0の場合、COUNT_LレジスタとCOUNT_Hレジスタの両方をそれぞれカウンタが動作していない間に個別に読み書きできます。SDKはレジスタに16ビット書き込みCOUNT_L使っています。COUNT_HレジスタはCONFIG[UNIFY]の設定に関係なく32ビット書き込みで書き込む必要がありますが、これは非公式な条件でしょうか? ありがとう - ジャワハル
View full article
标记规范请求 - PN# MFS2633HMDA0AD 尊敬的先生/女士, 我们已收到零件号为MFS2633HMDA0AD的零件。我们无法获取进货零件验证所需的芯片标记信息。请问您能否提供该零件的标记规范文件? 非常感谢您的支持。 顺祝商祺! 乔伊
View full article
i.MX RT1176 – FlexIO2 并行接收:可实现的最大时钟移位是多少?仅达到约 48 MSPS iMXR1176 SDK 25.09.00 清单 3.15.0 目标 我正在从 i.MX RT1176 上的 LTC2164 16 位 ADC 获取数据。数据路径为: LTC2164(全速率CMOS输出)→ FlexIO2(并行接收)→ eDMA → 外部同步动态随机存取存储器(SDRAM) 硬件设置 LTC2164 配置为全速率 CMOS 输出模式,由外部 100 MHz 振荡器提供时钟信号(即 100 MSPS,16 位并行)。 ADC 数据输出 D0–D15 连接到 GPIO_AD_00 … GPIO_AD_15。 ADC CLKOUT+ 连接到 GPIO_AD_30,用作 FlexIO 定时器时钟(外部引脚时钟源)。 软件设置 FlexIO2 配置为并行接收器,数据锁存到移位器 7;移位器 7->0 串联起来,以便在 DMA 请求钳位之前缓冲 32 字节。 eDMA 由 kDmaRequestMuxFlexIO2Request0Request1 触发,使用两个 TCD 以乒乓(分散/聚集)模式运行。每次主循环完成时都会引发中断,即每 16384 个样本一次。 FlexIO2 功能时钟:120 MHz。 总线时钟(eDMA / SEMC 侧):240 MHz。 问题 在 100 MSPS 下,采集 16384 个样本需要163.84 µs 。通过测量两个连续 DMA 中断之间的时间(GPIO 切换 + 示波器),我始终得到338 µs ,即 ~2.06 倍。 这相当于大约48 MSPS的有效持续速率,这表明瓶颈在于 FlexIO 端,而不是 ADC 或 SDRAM。 问题 RT1176 上 FlexIO 在并行接收模式下是否有记录在案的最大移位时钟频率?我在参考手册或数据表中都找不到这样的数据。 当定时器时钟源为外部引脚时,FlexIO 功能时钟与外部移位时钟之间所需的比率是多少?我的 FlexIO 时钟 (120 MHz) 只是输入 100 MHz 时钟的 1.2 倍——这足够吗?还是输入同步逻辑需要 2 倍或 4 倍? 鉴于我观察到的几乎精确的 ×2 比率,这是否可能是由于 FlexIO 定时器在时钟的两个边沿递减(TIMCMP 约定)造成的,这意味着我的定时器比较值实际上将吞吐量减半? 任何关于 FlexIO + eDMA 在此部分上的最大实际持续吞吐量的指导都将非常有帮助,因为这决定了我是否需要迁移到不同的外设或外部 FIFO。 先行致谢。 通信与控制(I3C | I2C | SPI | FlexCAN | 以太网 | FlexIO) Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached 您好,谢谢您的回复。我确实达到了预期的性能,但这仅仅是通过超过 Flexio 外设的最大推荐时钟频率来实现的;具体来说,要达到 100 MSps 的采集速率,需要将时钟频率配置为 200 MHz 以上,而不是 120 MHz,而 120 MHz 的配置会导致时钟边沿丢失。问题是,即使它在 200 MHz 下工作(尽管参考手册规定最大频率为 120 MHz),我也无法保证在不同的温度条件下或不同生产批次之间可靠运行。 Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached 你好@azed38 , 请注意,当使用外部引脚作为时钟源时,会引入较小的同步延迟。根据 RM 第 67.3.3.2 节,此延迟范围为 0.5 至 1.5 个 FlexIO 时钟周期: Habib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.png 关于 FlexIO 和 DMA 可达到的最大吞吐量,目前还没有针对 FlexIO 和 DMA 的性能测试。不过,您可能会发现AN12686很有用,因为它演示了使用 FlexIO 和 DMA 的并行通信实现,这可能会为您的用例提供相关指导。 BR 哈比卜 Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached 你好@azed38 , 我注意到您已经通过其他渠道获得了关于此主题的支持,因此我们将继续通过该渠道提供支持,以保持所有沟通的集中化。我只想补充一点,如果 FlexIO 的运行频率超过其最大规格,可能会导致意外行为,从而影响您的最终应用程序。根据 RM 表 15-4“时钟根”中提供的信息,我建议使用最大频率 120 MHz。 BR 哈比卜 Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached 您好, 这个问题很可能是由于第 67.3.3.2 节中描述的引脚同步延迟造成的。参考手册中的“引脚同步”部分。 考虑到前面提到的设置,问题的根本原因是输入数据频率与 FlexIO 上的工作时钟频率之间的比率,这是由于该模块前面提到的引脚同步延迟造成的。 例如,由于存在引脚同步延迟,FlexIO 模拟外设(如 SPI 主控)只能以 FlexIO 工作时钟频率的四分之一的最大波特率运行。如 RM 第 67.4.3 节所述:“由于同步延迟,串行输入数据的建立时间为 1.5 个 FlexIO 时钟周期,因此最大波特率除以 FlexIO 时钟频率的 4。” 在这种情况下,吞吐量预计会降低,而且由于引脚同步延迟是 FlexIO 模块固有的特性,因此没有解决办法。 因此,为了确保正常运行,FlexIO 模块的最大工作频率为 120MHz,RT1170 无法达到预期的 100MSPS。 BR 哈比卜 Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached 鉴于我观察到的几乎精确的 ×2 比率,这是否可能是由于 FlexIO 定时器在时钟的两个边沿递减(TIMCMP 约定)造成的,这意味着我的定时器比较值实际上使吞吐量减半? 我只是想提一下,是的,FlexIO 定时器在由引脚或触发信号驱动时,对双边沿敏感。因此,如果你的外部信号包含一个上升沿和一个下降沿,你的定时器就会对其比较值进行两次计数。 另外,根据我目前使用 FlexIO 的经验,我猜测你只能处理频率不超过 FlexIO 时钟频率一半的外部信号。除此之外,它还能如何感知双面边缘?为了检测边沿,它需要在每个时钟周期内对外部引脚进行两次采样。
View full article
Where are Bluetooth Channel Sounding Examples for the KW47-EVK board Where are Bluetooth Channel Sounding Examples for the KW47-EVK board with the daughter card (KW47-001-M10)?  I've looked in the repos at https://github.com/nxp-mcuxpresso/ but cannot find any specific examples for the KW47-EVK board. I've also found a Channel Sounding example for the FRDM-MCXW72 FRDM-MCXW72: Hands-On 8: Channel Sounding FRDM to Phone.  I also used the NXP AI help, but it came up with links that did not exist. I have the Eclipse based MCUXpresso installed along with the SDKs for the KW47-EVK board with the daughter card (KW47-001-M10). Thanks in advance! --Paul Re: Where are Bluetooth Channel Sounding Examples for the KW47-EVK board Hello, Hope you are doing well. Thanks for reaching out. To access the Channel Sounding examples for the KW47-EVK, the recommended approach is to use the MCUXpresso for VS Code extension along with the MCUXpresso SDK GitHub repository, rather than browsing the repos manually. Here are the steps: Install the MCUXpresso for VS Code extension Download and install it from the VS Code Marketplace or from the NXP page: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-for-visual-studio-code:MCUXPRESSO-VSC Import the SDK from the repository In VS Code, open the MCUXpresso Quickstart Panel, click "Import example from Repository", and select the KW47-EVK board. The extension will pull the SDK directly from the GitHub repository. Use SDK version 26.06.00 (LTS) We recommend using SDK version 26.06.00, which is the current LTS release and includes the latest BLE stack updates for the KW47, including Channel Sounding support.   Specifically, I would recommend checking this documentation: Running the Bluetooth Low Energy Localization Scenario — MCUXpresso SDK Documentation Hope this helps! Best Regards, Ricardo Re: Where are Bluetooth Channel Sounding Examples for the KW47-EVK board Thanks Ricardo! That worked and I was able to import the mcxw72evk_loc_reader_bm using the Visual Studio Code Extension.
View full article
i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached iMXR1176 SDK 25.09.00 Manifest 3.15.0 Goal I am acquiring data from an LTC2164 16-bit ADC on an i.MX RT1176. The data path is: LTC2164 (full-rate CMOS output) → FlexIO2 (parallel RX) → eDMA → external SDRAM Hardware setup LTC2164 configured in full-rate CMOS output mode, clocked by an external 100 MHz oscillator (so 100 MSPS, 16-bit parallel). ADC data outputs D0–D15 connected to GPIO_AD_00 … GPIO_AD_15. ADC CLKOUT+ connected to GPIO_AD_30, used as the FlexIO timer clock (external pin clock source). Software setup FlexIO2 configured as a parallel receiver, data latched into shifter 7; shifters 7->0 are chained so that 32 bytes are buffered before the DMA request is asserted. eDMA triggered by kDmaRequestMuxFlexIO2Request0Request1, using two TCDs in ping-pong (scatter/gather) mode. An interrupt is raised on each major loop completion, i.e. every 16384 samples. FlexIO2 functional clock: 120 MHz. Bus clock (eDMA / SEMC side): 240 MHz. Problem At 100 MSPS, 16384 samples should take 163.84 µs. Measuring the time between two consecutive DMA interrupts (GPIO toggle + scope), I consistently get 338 µs, i.e. a factor of ~2.06. This corresponds to an effective sustained rate of about 48 MSPS, which suggests the bottleneck is on the FlexIO side rather than the ADC or the SDRAM. Questions Is there a documented maximum shift clock frequency for FlexIO in parallel receive mode on the RT1176? I could not find any such figure in the RM or the datasheet. When the timer clock source is an external pin, what is the required ratio between the FlexIO functional clock and the external shift clock? My FlexIO clock (120 MHz) is only 1.2× the incoming 100 MHz clock — is that sufficient, or does the input synchronization logic require 2× or 4×? Given the almost exact ×2 ratio I observe, could this come from the FlexIO timer decrementing on both edges of the clock (TIMCMP convention), meaning my timer compare value effectively halves the throughput? Any guidance on the maximum realistic sustained throughput of FlexIO + eDMA on this part would be very helpful, since this determines whether I need to move to a different peripheral or an external FIFO. Thanks in advance. Communication & Control(I3C | I2C | SPI | FlexCAN | Ethernet | FlexIO) Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached Hello, thank you for your reply. I was indeed able to achieve the desired performance, but only by exceeding the maximum recommended clock frequency for the Flexio peripheral; specifically, instead of configuring the clock at 120 MHz, a clock speed greater than 200 MHz is required to achieve 100 MSps acquisition, whereas a 120 MHz configuration results in missed clock edges. The problem is that, even though it works at 200 MHz (despite the Reference Manual specifying a 120 MHz maximum), I have no guarantee of reliable operation under varying temperature conditions or across different production batches. Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached Hello @azed38,   Please keep in mind that when an external pin is used as the clock source, a small synchronization latency is introduced. According to Section 67.3.3.2 of the RM, this latency can range from 0.5 to 1.5 FlexIO clock cycles: Habib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.pngHabib_MS_1-1788818202534.png Regarding the maximum throughput achievable with FlexIO and DMA, there is not a performance test for the FlexIO  and DMA. However, you may find the AN12686 useful, as it demonstrates a parallel communication implementation using FlexIO and DMA, this may provide guidance relevant to your use case. BR Habib Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached Hello @azed38, I noticed that you are already receiving support through another channel regarding this topic, so the support will continue there to keep all communication centralized. I would only like to add that operating FlexIO beyond its maximum frequency specifications could cause unexpected behaviors affecting your end application. Based on the information provided in Table 15-4 "Clock Roots" of the RM, I recommend using a maximum frequency of 120 MHz. BR Habib Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached Hi, The issue is likely due to the pin synchronization delays that are described on section "67.3.3.2 Pin Synchronization" of the Reference Manual. Considering the setup mentioned before, the root cause of the issue is the ratio between the incoming data frequency, and the operating clock frequency on the FlexIO, from the aforementioned pin synchronization delays of this module. For example, because of the pin synchronization delays that exists, the FlexIO emulated peripherals like SPI Master can only operate at a maximum baud rate of one fourth of the FlexIO operating clock frequency. As noted on the RM on section 67.4.3: "Due to synchronization delays, the setup time for the serial input data is 1.5 FlexIO clock cycles, so the maximum baud rate is divided by 4 of the FlexIO clock frequency." In this case, the throughput is expected to be decremented, and as the pin synchronization delays are an inherent behavior of the FlexIO module, there is no workaround. Because of this, combined with the maximum operating frequency of the FlexIO module of 120MHz to ensure proper operation, an expected 100MSPS will not be possible on the RT1170. BR Habib Re: i.MX RT1176 – FlexIO2 parallel receive: maximum achievable shift clock? Only ~48 MSPS reached > Given the almost exact ×2 ratio I observe, could this come from the FlexIO timer decrementing on both edges of the clock (TIMCMP convention), meaning my timer compare value effectively halves the throughput? Just wanted to mention that yes, FlexIO timers are dual-edge sensitive when clocked from a Pin or Trigger. So, if your external signal makes one rising and one falling edge, your timer will count twice towards its compare value.  Also, based on my general experience with FlexIO so far, I'd guess that you can only work with external signals up to half the FlexIO clock rate. How else could it sense dual edges? It has to sample the external pin twice per clock period in order to detect the edge.
View full article
KW47-EVKボードのBluetoothチャンネルサウンディング例はどこにありますか? daughterカード(KW47-001-M10)を搭載したKW47-EVKボードのBluetoothチャンネルサウンディング例はどこにありますか? https://github.com/nxp-mcuxpresso/ のリポジトリを調べましたが、KW47-EVKボードの具体的な例は見つかりませんでした。また、FRDM-MCXW72FRDM-MCXW72のチャネルサウンディングの例も見つけました:実践形式 8: チャネルサウンディング FRDMから電話への対応。   NXP AIのヘルプも利用してみましたが、存在しないリンクが表示されました。 私はEclipseベースのMCUXpressoと、d8terカード(KW47-001-M10)のKW47-EVKボード用SDKをインストールしています。 前もって感謝します!--ポール Re: Where are Bluetooth Channel Sounding Examples for the KW47-EVK board こんにちは、 あなたの調子が良いといいのですが。ご連絡ありがとうございます。KW47-EVKのチャンネルサウンディング例にアクセスするには、手動でリポジトリを閲覧するのではなく、MCUXpresso for VS Code拡張機能とMCUXpresso SDKのGitHubリポジトリを併用することが推奨されます。 手順は以下の通りです。 MCUXpressoのVS Code拡張機能をダウンロードしてVS CodeマーケットプレイスまたはNXPページからインストールしてください: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-for-visual-studio-code:MCUXPRESSO-VSC リポジトリからSDKをインポートしてください VS Codeで、MCUXpressoクイックスタートパネルを開き、「リポジトリからサンプルをインポート」をクリックし、KW47-EVKボードを選択します。拡張機能はGitHubリポジトリからSDKを直接取得します。 SDKバージョン26.06.00(LTS)の使用を推奨します。これは現在のLTSリリースで、KW47向けの最新のBLEスタックアップデート(チャネルサウンディングサポートを含む)を含んでいます。   具体的には、以下のドキュメントを確認することをお勧めします: Bluetooth Low Energy Localization Scenarioの実行 — MCUXpresso SDK ドキュメント お役に立てば幸いです! よろしくお願いいたします。 リカルド Re: Where are Bluetooth Channel Sounding Examples for the KW47-EVK board リカルドさん、ありがとう!うまくいき、Visual Studio Code拡張機能を使用してmcxw72evk_loc_reader_bmをインポートすることができました。
View full article
LX2160ARDB SD卡启动,LSDK FitImage 您好, 我已经安装了 LSDK 21.08,并且 atf、rcw、u-boot、ddr-phy 文件夹都已存在,但是为什么源代码不在其中,而需要为每个源代码进行 git clone 操作? 为了实现完整的 SD 卡启动,我已将以下文件部署到下面提到的区块中。 1. bl2_sd.pbl - 0x8 2. fip.bin - 0x800 3. fip_ddr_all.bin - 0x4000 4. mc_lx2160a_10.40.0.itb - 0x5000 5. dpc-usxgmii.dtb - 0x7000 6. fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin - 0x8000 我已在 SD 卡(64GB)上创建了如下分区。 1. /dev/mmcblk0p1 - 扇区 409600 至扇区 42352640 2. /dev/mmcblk0p2 - 扇区 42352640 至扇区 121534463 并使用 u-boot 的 bootargs 命令将根文件系统“fsl-image-networking-full-lx2160ardb-rev2-20260310091147.rootfs.tar.gz”挂载到 /dev/mmcblk0p1 分区。 -> setenv bootcmd 'setenv bootargs root=/dev/mmcblk0p1 rw rootwait console=ttyAMA0,115200; mmc dev 0; mmc read 0x90000000 0x8000 0x14000; bootm 0x90000000' 这样做对吗?请提出任何更好的方法。 在 LSDK 中,如何为内核和 dtb 生成 fitImage 二进制文件,就像 LSDK 中 distro/build_lx2160ardb-rev2/tmp/deploy/images/lx2160ardb-rev2/ 目录下的 fitImage 文件一样,例如 fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin。 Re: LX2160ARDB SD Card Booting, LSDK FitImage 您好, 感谢您的详细解释。 我们按照 UG10374 中给出的 Yocto 项目构建了 LSDK 环境。 1.对于 SD 卡启动,在我们遵循的步骤中,我们创建了分区并提取了您提到的 rootfs,其中包含有效的 /sbin/init。通过在 emmc 闪存中创建分区 (/dev/mmcblk1p1)、提取根文件系统并能够将系统挂载到其分区中,但无法将其挂载到 SD 卡中,也验证了这一点。 能否通过将启动映像以块写入方式加载到 SD 卡,并将根文件系统挂载到分区(/dev/mmcblk0p1)上来实现启动? 因为在 SD 卡分区挂载失败后,从 qspi 启动后使用 lsblk 命令检查分区时,不会列出这些分区。 2. 实际的 fitImage 二进制文件大小约为 16MB,块大小为 0x8000……但启动时的日志如下: => setenv bootcmd 'setenv bootargs root=/dev/mmcblk1p1 rw rootwait console=ttyAMA0,115200; mmc dev 0; mmc read 90000000 8000 8800; bootm 90000000' => => => 启动 切换到分区 #0,成功 mmc0 是当前设备 MMC 读取:设备 # 0,块 # 32768,计数 35000 ... 已读取 35000 个块:成功 ## Loading kernel from FIT Image at 90000000 ... Using 'conf-freescale_fsl-lx2160a-rdb.dtb' configuration Trying 'kernel-1' kernel subimage Description: Linux kernel Created: 2023-02-08 3:38:28 UTC Type: Kernel Image Compression: gzip compressed Data Start: 0x90000114 Data Size: 16608244 Bytes = 15.8 MiB Architecture: AArch64 OS: Linux Load Address: 0x80080000 Entry Point: 0x80080000 Hash algo: sha256 Hash value: 59af2bda187c7e19bd0a37818f1c22c24d30562979041f7bee01288661ae5bee Verifying Hash Integrity ... sha256+ OK ##从位于 90000000 的 FIT 图像加载 fdt... 使用“conf-freescale_fsl-lx2160a-rdb.dtb”配置 尝试使用 'fdt-freescale_fsl-lx2160a-rdb.dtb' fdt 子映像 描述:扁平化的设备树斑点 创建时间:2023年2月8日 3:38:28 UTC 类型:扁平设备树 压缩:未压缩 数据起始地址:0x90fd6e28 数据大小:33857 字节 = 33.1 KiB 建筑:AArch64 哈希算法:sha256 哈希值:32858f2c5f385a1a4410b8d4bff2414b1c4d36a13493cc8242eab6464e8d1d82 正在验证哈希完整性……sha256+ 通过 使用位于 0x90fd6e28 的 fdt blob 启动 解压缩内核图像 正在加载设备树至 000000009fff4000,结束于 000000009ffff440 ... 成功 fsl-mc:DPL 未部署,DPAA2 以太网无法工作 正在启动内核... “同步中止”处理程序,esr 0x02000000 elr: 000000000636a000 lr: 0000000082005fd0 (重定位) elr: 0000000080080000 lr: 00000000fbd1bfd0 x0 : 000000009fff4000 x1 : 0000000000000000 x2 : 0000000000000000 x3 : 0000000000000000 x4:0000000080080000 x5:0000000000000001 x6 : 0000000000000008 x7 : 0000000000000000 x8:00000000fbb0e7c8 x9:0000010000000000 x10: 000000000a200023 x11: 0000000000000002 x12: 0000000000000002 x13: 00000000fbdfffff x14: 000000009fff4000 x15: 00000000fbd18be8 x16: 00000000fbd52f58 x17: 00000000fbb31560 x18: 00000000fbb11d90 x19: 00000000fbde6c98 x20: 0000000000000000 x21: 0000000000000400 x22: 0000000000000001 x23: 00000000fbb16538 x24: 00000000fbb16538 x25: 00000000fbdd1978 x26: 0000000000000000 x27: 00000000fbd1bff8 x28: 0000000090000114 x29: 00000000fbd1bf98 代码:00000000 00000000 00000000 00000000 (00000000) 正在重置CPU... ### ERROR ### Please RESET the 板 ### 3. 将检查 sd_bootcmd 序列,并尝试通过生成的固件映像启动。 4. 根据 TRM 中 Flash 布局表中提到的位置加载 fip.bin 和 fip_ddr_all.bin。 感谢您提供生成 FIT 图像的步骤。 Re: LX2160ARDB SD Card Booting, LSDK FitImage 你好, 你的方法并非 LSDK 推荐的方法。单个原始映像可以使用,但您还必须为 LX2160A 重现完整的 U-Boot 环境和启动顺序。更安全的方法是生成并刷写复合固件镜像: flex-builder -i mkfw -m lx2160ardb_rev2 -b sd     这将生成: build/images/firmware_lx2160ardb_rev2_sdboot.img     然后将其写入SD卡: sudo flex-installer -f firmware_lx2160ardb_rev2_sdboot.img -d /dev/mmcblk0     备选: sudo dd if=firmware_lx2160ardb_rev2_sdboot.img \ of=/dev/mmcblk0 bs=1k seek=4 conv=fsync   所提程序存在的问题 只有当分区 1 包含提取的 Linux 根文件系统时, root=/dev/mmcblk0p1 才有效。 .tar.gz 文件本身并不是已挂载的根文件系统;它必须被解压到分区中: sudo mkfs.ext4 /dev/mmcblk0p1 sudo mount /dev/mmcblk0p1 /mnt sudo tar -xpf fsl-image-networking-full-lx2160ardb-rev2-*.rootfs.tar.gz \ -C /mnt sudo umount /mnt 狂欢   该命令假定 FIT 图像正好占用 0x14000 个块: mmc read 0x90000000 0x8000 0x14000     该大小必须与实际的 FIT 文件大小相符,向上取整到 512 字节扇区。否则,U-Boot 可能会读取的数据过少或覆盖相邻的内存。 你绕过了正常的 sd_bootcmd 序列。标准序列还会加载管理复合体固件、DPC 和其他所需元器件。LSDK 指南定义了复合 SD 卡布局,并建议通过生成的固件映像启动,而不是手动放置每个组件。 您的 fip.bin 和 fip_ddr_all.bin 条目不应视为可以互换。它们正确的位置和加载命令取决于生成的 U-Boot 环境和固件布局。 安装复合镜像后,更好的手动启动测试方法是: => run sd_bootcmd     或者直接重置电路板,并将启动开关配置为 SD 卡启动。 为什么源目录为空 LSDK 包将构建框架与组件源代码树分离。 components/firmware 目录下可能包含清单、配置、配方或参考资料,而实际的 ATF、U-Boot、RCW、DDR PHY 和 Linux 源代码是根据 LSDK 清单/配置获取的。因此,从源代码构建时,需要克隆组件存储库。请使用 LSDK 版本中指定的精确修订版本,而不是任意上游分支。 例如,使用 Flexbuild 进行构建,而不是独立克隆和构建每个元器件: flex-builder -c atf -m lx2160ardb_rev2 -b sd flex-builder -c linux -m lx2160ardb_rev2 flex-builder -i mkfw -m lx2160ardb_rev2 -b sd     对于生产环境版本,请使用官方的 flexbuild_lsdk2108.tgz 归档文件,因为它包含与版本匹配的配置和元器件修订。 生成 FIT 图像 使用 U-Boot 的 mkimage 工具,根据 ITS 描述生成 FIT 镜像: mkimage -f lx2160.its lx2160.fit     ITS 文件描述了内核、设备树、可选的 initramfs、加载地址、压缩、哈希和配置。LSDK 指南对此过程进行了详细记录,并给出了上述命令格式。 一个最小的内核加 DTB 示例是: /dts-v1/; / { description = "LX2160A kernel and device tree FIT"; #address-cells = <1>; images { kernel { description = "Linux kernel"; data = /incbin/("Image"); type = "kernel"; arch = "arm64"; os = "linux"; compression = "none"; load = <0x81080000>; entry = <0x81080000>; hash-1 { algo = "sha256"; }; }; fdt { description = "LX2160ARDB Rev2 device tree"; data = /incbin/("fsl-lx2160a-rdb.dtb"); type = "flat_dt"; arch = "arm64"; compression = "none"; load = <0x90000000>; hash-1 { algo = "sha256"; }; }; }; configurations { default = "conf"; conf { kernel = "kernel"; fdt = "fdt"; }; }; };     使用 LSDK U-Boot 工具提供的 mkimage 构建它: mkimage -f lx2160.its fitImage     对于压缩内核,请使用 Image.gz 并进行如下设置: compression = "gzip";     确保内核、FDT、initramfs 和 U-Boot 加载区域不重叠。 tmp/deploy/images/.../fitImage-*.bin 中生成的文件通常是 Yocto 生成的 FIT 工件;其时间戳和 Git 哈希值是打包元数据,而不是特殊的二进制格式。FIT 格式本身是由 mkimage 生成的。 最后,请注意,文档中记录的 LSDK 21.08 FIT 示例包括 initramfs/rootfs 以及内核和 DTB。如果使用 root=/dev/mmcblk0p1 启动,则可以省略 initramfs,但必须正确提取根文件系统并包含有效的 /sbin/init 。 此致
View full article
LX2160ARDB SD Card Booting, LSDK FitImage Hi, I have installed the LSDK 21.08 and the atf, rcw, u-boot, ddr-phy folders are already available but why the source isn't available in it and have to git clone for each source? For complete SD card booting, i have deployed the following files at blocks mentioned below 1. bl2_sd.pbl - 0x8 2. fip.bin - 0x800 3. fip_ddr_all.bin - 0x4000 4. mc_lx2160a_10.40.0.itb - 0x5000 5. dpc-usxgmii.dtb - 0x7000 6. fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin - 0x8000 And I have made partitions in SD card(64GB) as below 1. /dev/mmcblk0p1 - sector 409600 to sector 42352640 2. /dev/mmcblk0p2 - sector 42352640 to sector 121534463 and mounting the rootfs "fsl-image-networking-full-lx2160ardb-rev2-20260310091147.rootfs.tar.gz" on /dev/mmcblk0p1 partition using the bootargs command at u-boot as => setenv bootcmd 'setenv bootargs root=/dev/mmcblk0p1 rw rootwait console=ttyAMA0,115200; mmc dev 0; mmc read 0x90000000 0x8000 0x14000; bootm 0x90000000' is this the right approach do it?? Please suggest any better approach that can be done. And in LSDK how to generate the fitImage binary file for kernel and dtb, like the fitImages present in the LSDK under distro/build_lx2160ardb-rev2/tmp/deploy/images/lx2160ardb-rev2/ directory like fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin. Re: LX2160ARDB SD Card Booting, LSDK FitImage Hi, Thanks for the detailed explanation. We have build the LSDK setup using yocto project as given in UG10374 1. For SD card booting, in the procedure we followed we have created the partition and extracted the rootfs as mentioned by you and contains a valid /sbin/init. This was also verfied by making partition(/dev/mmcblk1p1) in emmc flash, extracting the rootfs and able to mount the system in its partition but not getting when its in SD. Is the booting possible by loading the boot images through block write into SD card and mounting rootfs on the partition(/dev/mmcblk0p1)?? Because after the mounting on SD card partition gets failed, the partitions are not listed when checked by the command lsblk after booting from qspi. 2. The actual file size fitImage binary is around 16MB and block size of 0x8000...but the log is as follows when booted => setenv bootcmd 'setenv bootargs root=/dev/mmcblk1p1 rw rootwait console=ttyAMA0,115200; mmc dev 0; mmc read 90000000 8000 8800; bootm 90000000' => => => boot switch to partitions #0, OK mmc0 is current device MMC read: dev # 0, block # 32768, count 35000 ... 35000 blocks read: OK ## Loading kernel from FIT Image at 90000000 ... Using 'conf-freescale_fsl-lx2160a-rdb.dtb' configuration Trying 'kernel-1' kernel subimage Description: Linux kernel Created: 2023-02-08 3:38:28 UTC Type: Kernel Image Compression: gzip compressed Data Start: 0x90000114 Data Size: 16608244 Bytes = 15.8 MiB Architecture: AArch64 OS: Linux Load Address: 0x80080000 Entry Point: 0x80080000 Hash algo: sha256 Hash value: 59af2bda187c7e19bd0a37818f1c22c24d30562979041f7bee01288661ae5bee Verifying Hash Integrity ... sha256+ OK ## Loading fdt from FIT Image at 90000000 ... Using 'conf-freescale_fsl-lx2160a-rdb.dtb' configuration Trying 'fdt-freescale_fsl-lx2160a-rdb.dtb' fdt subimage Description: Flattened Device Tree blob Created: 2023-02-08 3:38:28 UTC Type: Flat Device Tree Compression: uncompressed Data Start: 0x90fd6e28 Data Size: 33857 Bytes = 33.1 KiB Architecture: AArch64 Hash algo: sha256 Hash value: 32858f2c5f385a1a4410b8d4bff2414b1c4d36a13493cc8242eab6464e8d1d82 Verifying Hash Integrity ... sha256+ OK Booting using the fdt blob at 0x90fd6e28 Uncompressing Kernel Image Loading Device Tree to 000000009fff4000, end 000000009ffff440 ... OK fsl-mc: DPL not deployed, DPAA2 ethernet not work Starting kernel ... "Synchronous Abort" handler, esr 0x02000000 elr: 000000000636a000 lr : 0000000082005fd0 (reloc) elr: 0000000080080000 lr : 00000000fbd1bfd0 x0 : 000000009fff4000 x1 : 0000000000000000 x2 : 0000000000000000 x3 : 0000000000000000 x4 : 0000000080080000 x5 : 0000000000000001 x6 : 0000000000000008 x7 : 0000000000000000 x8 : 00000000fbb0e7c8 x9 : 0000010000000000 x10: 000000000a200023 x11: 0000000000000002 x12: 0000000000000002 x13: 00000000fbdfffff x14: 000000009fff4000 x15: 00000000fbd18be8 x16: 00000000fbd52f58 x17: 00000000fbb31560 x18: 00000000fbb11d90 x19: 00000000fbde6c98 x20: 0000000000000000 x21: 0000000000000400 x22: 0000000000000001 x23: 00000000fbb16538 x24: 00000000fbb16538 x25: 00000000fbdd1978 x26: 0000000000000000 x27: 00000000fbd1bff8 x28: 0000000090000114 x29: 00000000fbd1bf98 Code: 00000000 00000000 00000000 00000000 (00000000) Resetting CPU ... ### ERROR ### Please RESET the board ### 3. Once will check the sd_bootcmd sequence and try to boot through the generated firmware image 4. fip.bin and fip_ddr_all.bin are loaded according to the locations mentioned in the Flash layout table in TRM. Thanks for providing the procedure for generating a FIT image. Re: LX2160ARDB SD Card Booting, LSDK FitImage Hello, Your approach is not the recommended LSDK method. The individual raw images can work, but you must also reproduce the complete U-Boot environment and boot sequence for LX2160A. The safer method is to generate and flash the composite firmware image: flex-builder -i mkfw -m lx2160ardb_rev2 -b sd     This generates: build/images/firmware_lx2160ardb_rev2_sdboot.img     Then write it to the SD card: sudo flex-installer -f firmware_lx2160ardb_rev2_sdboot.img -d /dev/mmcblk0     Alternatively: sudo dd if=firmware_lx2160ardb_rev2_sdboot.img \ of=/dev/mmcblk0 bs=1k seek=4 conv=fsync   Problems in the proposed procedure root=/dev/mmcblk0p1 is valid only if partition 1 contains an extracted Linux root filesystem. A .tar.gz file itself is not a mounted root filesystem; it must be extracted into the partition: sudo mkfs.ext4 /dev/mmcblk0p1 sudo mount /dev/mmcblk0p1 /mnt sudo tar -xpf fsl-image-networking-full-lx2160ardb-rev2-*.rootfs.tar.gz \ -C /mnt sudo umount /mnt bash   This command assumes that the FIT image occupies exactly 0x14000 blocks: mmc read 0x90000000 0x8000 0x14000     That size must match the actual FIT file size, rounded up to 512-byte sectors. Otherwise, U-Boot may read too little or overwrite adjacent memory. You are bypassing the normal sd_bootcmd sequence. The standard sequence also loads the Management Complex firmware, DPC, and other required components. The LSDK guide defines a composite SD layout and recommends booting through the generated firmware image rather than manually placing each component. Your fip.bin and fip_ddr_all.bin entries should not be treated as interchangeable. Their correct locations and loading commands depend on the generated U-Boot environment and firmware layout. A better manual boot test, after the composite image is installed, is: => run sd_bootcmd     or simply reset the board with the boot switches configured for SD boot. Why source directories are empty The LSDK package separates the build framework from component source trees. The directories under components/firmware may contain manifests, configuration, recipes, or references, while the actual ATF, U-Boot, RCW, DDR PHY, and Linux sources are fetched according to the LSDK manifest/configuration. Therefore, cloning the component repositories is expected when building from source. Use the exact revisions specified by the LSDK release rather than arbitrary upstream branches. For example, build through Flexbuild instead of independently cloning and building each component: flex-builder -c atf -m lx2160ardb_rev2 -b sd flex-builder -c linux -m lx2160ardb_rev2 flex-builder -i mkfw -m lx2160ardb_rev2 -b sd     For a production build, use the official flexbuild_lsdk2108.tgz archive because it contains the release-matched configuration and component revisions. Generating a FIT image A FIT image is generated from an ITS description using U-Boot’s mkimage utility: mkimage -f lx2160.its lx2160.fit     The ITS file describes the kernel, device tree, optional initramfs, load addresses, compression, hashes, and configuration. The LSDK guide explicitly documents this process and gives the command format above. A minimal kernel-plus-DTB example is: /dts-v1/; / { description = "LX2160A kernel and device tree FIT"; #address-cells = <1>; images { kernel { description = "Linux kernel"; data = /incbin/("Image"); type = "kernel"; arch = "arm64"; os = "linux"; compression = "none"; load = <0x81080000>; entry = <0x81080000>; hash-1 { algo = "sha256"; }; }; fdt { description = "LX2160ARDB Rev2 device tree"; data = /incbin/("fsl-lx2160a-rdb.dtb"); type = "flat_dt"; arch = "arm64"; compression = "none"; load = <0x90000000>; hash-1 { algo = "sha256"; }; }; }; configurations { default = "conf"; conf { kernel = "kernel"; fdt = "fdt"; }; }; };     Build it with the mkimage supplied by the LSDK U-Boot tools: mkimage -f lx2160.its fitImage     For a compressed kernel, use Image.gz and set: compression = "gzip";     Ensure that the kernel, FDT, initramfs, and U-Boot load regions do not overlap. The generated file in tmp/deploy/images/.../fitImage-*.bin is normally a Yocto-generated FIT artifact; its timestamp and Git hash are packaging metadata, not a special binary format. The FIT format itself is produced by mkimage . Finally, note that the documented LSDK 21.08 FIT example includes an initramfs/rootfs as well as kernel and DTB. If you boot with root=/dev/mmcblk0p1 , you can omit the initramfs, but the root filesystem must be properly extracted and contain a valid /sbin/init . Regards
View full article