Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
TEA2017 27-30V 550W 设计,PFC Mosfet 在 DCM/QR/CCM 模式下迅速发热。 你好我正在处理一个客户项目,该项目采用 TEA2017 PFC 和 LLC 设计,电压为 27-30V,功率为 550W。 最初,我们使用固定频率 55khz 的 PFC,mosfets 的温度比平时高,但仍可通过散热片控制,但现在我们正试图提高 PFC 的效率。因此采用 DCM/QR/CCM 模式。遗憾的是,在我们的设计中,在 DCM/QR/CCM 模式下,mosfets 的温度会迅速升高到失效温度。 我们尝试过但没有成功的方法: 1:使用晶体管作为栅极驱动器来驱动 Pfc 栅极 2:确认我们的开关是在振荡周期之后和 DrainPFC 下降时进行的。 3.禁用 LLC 并将负载直接连接到 Vboost,以测试/调整 PFC(结果:茶水没有切换 PFC,Vboost 保持在 327V(SNSBoost 为 2V)) 我们的设计或 TEA 设置没有太大变化,因为我们正在尝试测试 DCM/QR/CCM。任何正确方向的帮助/线索都将非常有用。 我已经公布了原理图的 PFC 部分,我们使用的是 CONFIG_D。 Re: TEA2017 27-30V 550W Design, PFC Mosfet rapidly getting hot with DCM/QR/CCM Mode. HI 1:您应该确认哪个元器件变热了电感器或其他元器件,然后提供散热解决方案。 2: 您也可以按照所附的 excel 计算表配置电路,然后更新原理图。
View full article
i.MX93 RGMII connection PHY and MAC to MAC connection tips This article describe i.M93 RGMII to PHY connection, delay adding tips. i.MX93 don't support delay in both FEC and QOS port in i.MX93 side. It also provide solution on i.MX93 how to connect MAC to MAC in HW & SW. Thanks! 
View full article
コミュニティガイドライン NXPコミュニティへようこそ  NXPコミュニティ は 、NXPのお客様、パートナー、および従業員が、 組み込み設計のトピック や 技術的な質問 について 、アイデアや ヒントを共有したり、質問 したり、協力 したり、意見を受け取ったりする機会を提供します 。 当社の コミュニティ は 、コミュニケーション、コンテンツ作成、アイデアの共有、問題解決のためのこの包括的なコラボレーション環境を使用して 、お客様が 設計プロセスを迅速かつ効率的に革新 し、進める のを支援します 。 開発者コミュニティから専門家のアドバイスを受けることができます。 NXPサポート チームは 、 これらのフォーラムを監視して回答を提供し、 フィードバック に耳を傾け ます 。誰でもメッセージを読むことができますが、 質問 、体験 、回答 を 投稿できるのは、登録 されたメンバー nxp.com のみです 。   進行状況を追跡する バッジ:バッジは、さまざまな種類の個々の行動や活動についてメンバーを表彰します。多くのバッジは簡単に獲得でき、メンバーが参加を開始するとすぐに授与されます。バッジは、メンバーがコミュニティにもたらす特定のスキルセットを識別するのに役立ちます。  ランク: ランクは 、複数の異なる、しばしば無関係なアクションを完了したメンバーを表彰します。 メンバーは 複数のバッジを取得できますが、 メンバーは 一度に保持できるランクは1つだけです。メンバーのランクは、 コミュニティにおける メンバー の全体的なステータス を示す n 指標 です 。 カテゴリーエキスパート: 誰でもカテゴリーエキスパートになれる ので 、 メンバー は引き続き 参加して他の人を助ける こと を奨励し 。E xperts は、 特定のカテゴリまたはボードへの参加に基づいています 。 重複する投稿を作成する空白:   B 新しい質問やアイデアを投稿する前に 、メンバーにグローバル検索バーを使用して、その質問やアイデアがすでに他のユーザーによって投稿されているかどうかを確認することをお勧めします。 既存の質問やアイデアを見つけた場合は、この投稿にコメントを追加して、同じまたは類似の質問やアイデアがあることをコミュニティメンバーに知らせることをお勧めします。     新しい投稿の作成: 質問やアイデアを投稿するときは、できるだけ多くの情報を提供してください。 投稿の件名に問題を記載する場合は特に注意してください。「助けてください」や「これは機能しません」などの件名は曖昧すぎます。「USBが NXP製品 で動作しない」などの件名 は、問題に精通している人の注意を引き付ける可能性が高くなります。 投稿を追加すべき 適切なフォーラムを特定します 。彼は 、他のメンバーがこの投稿で協力するのを助け ます 。 スマートタグとラベルを 投稿に含めると、検索エンジンで簡単に見つけることができます 。 すべての コラボレーションは他の人を助けることができる ことを忘れないでください 。   投稿が解決した ことを確認する p ost s ha は 、それが解決された場合に表示する機能と 回答へのクイックリンク を持っています 、新しい投稿がある場合は、問題をトラックに追 って、 答えがあなたのものであっても 、 回答 で 返信 をマーク してください。 すべてのコラボレーションは 、バッジとランクに直接反映 されることを忘れないでください。 プロフィール で 進行状況を追跡します 。   Reportの不適切なコンテンツ  コミュニティのメンバーとして、コミュニティを有機的で清潔に保つために、あなたは私たちが協力することができます。  コミュニティに関係のないトピックを投稿または返信している他のユーザーを見つけた場合は、他のユーザーからこれらの不正行為を報告できます。 (報告された不正使用は、NXPサポートチームによって監視されます)。    他のメンバーを尊重し、問題を避けてください  「礼儀正しく、皆さん!」。  コミュニティや機能を悪用することを 禁止 されることを避け てください コミュニティのモデレーターは、コンテンツを継続的にレビューしています 。違反内容にもよりますが 、 当サイトからのストライキ や 永久 追放 は避け てください。 例: 2人のユーザー 間で kudo を 磨く 。   NXPコミュニティでは、このサイトの尊重と良好な使用を保証したいと考えています。  コミュニティ違反の例:  スタッフや他のコミュニティメンバーになりすまそうとする行為  暴力の脅威  ヘイトまたは人種差別的な発言  違法または有害と見なされるJavaScript、アクティブコード、データ、テキスト、ファイル、リンク、ソフトウェア、チャット、通信、またはその他の資料(以下「コンテンツ」)を送信すること  議論の流れを乱すことを目的とした反復的なスレッドやスパム    FAQサイトをご覧ください 
View full article
无线充电让您摆脱电线的束缚! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 如果您的智能手机、平板电脑或数字智能手表的电池可能会没电,或者您的床头柜或办公桌上的充电线可能缠绕不住您,那么无线充电器的简便性将使您的梦想成真!但无线充电器需要很多技术,而且并不是都一样。NXP 的发射器和接收器组件系列为 Qi 和 Rezence 标准提供解决方案。我们对这两者进行了研究,并提供了一些实用的硬件解决方案来切断这种联系。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 如果您的智能手机、平板电脑或数字智能手表的电池可能会没电,或者您的床头柜或办公桌上的充电线可能缠绕不住您,那么无线充电器的简便性将使您的梦想成真!但无线充电器需要很多技术,而且并不是都一样。NXP 的发射器和接收器组件系列为 Qi 和 Rezence 标准提供解决方案。我们对这两者进行了研究,并提供了一些实用的硬件解决方案来切断这种联系。
View full article
i.MX6 上的高保证启动 (HAB) <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 抽象的 安全是我们日常生活中不可避免的一个词。对于我们许多人来说,没有安全性的技术就是没有“信任”的技术。我们都知道,从工作场所到社交聊天,安全在我们的生活中扮演着重要的角色。即使是嵌入式系统也应该实施安全措施,以防止未经授权访问敏感数据。我们如何确保 i.MX6 平台只能使用授权图像启动?让我们来看看名为高保证启动 (HAB) 的酷东西,它使启动映像变得安全而简单。 介绍 数字安全自诞生以来就成为我们生活中不可避免的一部分。对于任何嵌入式系统来说,这种情况都没有什么不同,特别是在处理敏感数据时。许多用于银行交易、国防、医疗、工业和汽车领域的嵌入式设备都严格执行安全规定。 几乎所有嵌入式系统都是根据闪存图像给出的特定指令来工作的。想象一下,如果黑客可以将自己的指令刷入嵌入式设备,那么他就可以完全控制该设备需要执行的操作。如果该设备用于银行目的,那么黑客将获得包括密码在内的所有详细信息!如果该设备用于国防或医疗领域,这种情况会变得更加糟糕。我们如何才能防止这种情况发生?嗯,答案并不那么简单! 嵌入式系统操作系统映像可以从不同的介质(例如 MMC、SD 卡、SATA、以太网等)闪存。由于 SD 卡等介质可以轻松地从一个介质替换到另一个介质,因此在介质上实施安全检查将很困难。此外,人们可以在将操作系统映像刷入这些介质后对其进行更改。因此,仅在刷新图像之前实施安全检查不足以解决这个问题。那么我们如何实施安全检查以确保我们的操作系统映像是安全的?答案是 HAB(高保证靴)。 飞思卡尔在 i.MX6Q 处理器中提供了 HABv4(最新 HAB 版本 4)作为可选功能。HAB 是飞思卡尔安全模块的一部分,可以与 CAAM 和 TrustZone 等其他安全功能协同工作。 使用HAB的优点包括但不限于以下几点: HABv4 实现了启动 ROM 级别的安全性,一旦融合就无法改变。 高效的。 图像控制系统之前的安全检查。 允许多个根密钥。 利用数字签名——保护操作系统映像的最有效方法。 将安全性直接附加到操作系统映像,而不会影响操作系统映像的功能。 通过操作系统映像验证的处理器级别检查可以完全确保安全启动。 HAB 如何运作? HAB基于数字签名的原理。数字签名通过对内容上下文进行签名,使得内容变得安全。该签名过程应包含多种安全算法,以加强最终结果。 HAB 数字签名是 open-ssl 认证、MD5 哈希和 RSA-AES-DES 公钥和私钥检查的组合。 HAB 通过将引导加载程序(u-boot)和操作系统映像(uImage)制作成签名映像来确保安全性。这些签名的图像包含正常的图像内容和安全指令。这些图像也包含公钥和私钥。在HAB过程中,组合得到的公钥哈希码将融合到i.MX6处理器的启动ROM代码中。这种融合使得平台更加安全并且以后无法更改。 在启动过程中,首先启动过程的初始参数应从闪存介质(例如 SD 卡)中获取启动 ROM 代码。然后,HAB 指令将检查启动 ROM 和签名图像中的哈希值。当这两个哈希值匹配时,HAB 进程允许平台启动映像。否则系统将停止所有进程并等待授权图像。 这样,系统就可以防止未经授权的访问,即使有人在后期更改了签名的图像(这最终会改变图像的哈希值,因此在运行时检查期间失败)。 iWave 已成功在我们的i.MX6Q iW-RainboW-G15D-Q7 Linux 平台上实现 HAB,并验证了 HAB 如何保护平台安全。然而,HAB 并非开发平台或模块购买时提供的标准 BSP 的一部分。仅应特殊要求提供。 结论 HAB 是防止未经授权访问操作系统映像的最佳解决方案之一。处理敏感数据(银行、国防等)的嵌入式系统应集成 HAB,以防止外部来源控制整个系统。虽然 HAB 在 i.MX6 平台中是可选功能,但为了确保启动过程更安全,建议集成 HAB。 参考: AN4581_HAB_Application_Note.pdf - 使用 HABv4 在 i.MX50、i.MX53 和 i.MX 6 系列上进行安全启动的应用说明 i.MX_6_Linux_High_Assurance_Boot_(HAB)_User's_Guide.pdf - i.MX 6 Linux 高保证启动 (HAB) 用户指南 概述
View full article
i.mx6 HabV4 启动失败:在生产板上成功加载 USB 后出现 “j4 错误” **目标:** 我们的目标是使用 `imx_usb` 加载程序绕过 eMMC 将我们的主板直接启动到 RAM 中。这是我们进行故障分析的关键一步。我们已经物理断开了生产板上的 eMMC 连接,以确保我们只测试 USB 启动路径。 **Board States:** 1. **开发板:** 熔丝未熔断。SoC 报告说它处于**开发模式**。 2。**制作板:** 熔丝已熔断,可安全启动。系统芯片报告已进入**生产模式**。 **结果摘要:*** 在使用 `imx_usb` 工具时,我们观察到两种不同的结果。 **1.成功:开发板** 在我们的开发板 上,有一个未签名的 `u-boot.imx`加载并完美执行。日志确认二进制文件已加载并且 SoC 跳转到入口点。 * 命令:** `sudo ./imx_usbu-boot.imx` ** 主要日志输出(`development.txt`):** ``` HAB 安全状态:开发模式 (0x56787856)... 加载二进制文件 (u-boot.imx)到 877ff400,skip=0,fsize=5faa4 type=aa 成功(状态 0x88888888)跳转到 0x877ff400 ```*(结果:主板启动到 U-Boot 提示符)* **2.故障:制作板** 在我们的制作板 上,我们使用**签名的 `u-boot.imx``**由我们的制造团队提供,使用相同的密钥签名,其哈希值在 SoC 中融合。`imx_usb`工具报告说 DCD 和二进制文件已成功加载。但是,最后的跳转命令失败了。 * 命令:** `sudo ./imx_usbu-boot-signed.imx` ** 关键日志输出(`production.txt`):** ``` HAB 安全状态:生产模式 (0x12343412)... 正在加载二进制文件 (u-boot.imx)到 877ff400,skip=0,fsize=5faa4 type=aa 成功(状态 0x88888888)在 err=0 中 跳到 0x8 77ff400 j4,last_trans=64 33 18 c0 00 ```*(结果:板无法启动。 无控制台输出)* **分析和关键问题:*** 关键区别在于 "跳转到 0x877ff400 "命令的结果。在生产板上,在映像成功传输到RAM之后,该过程在此时刻失败。这强烈表明 SoC 的启动 ROM 在*执行之前,正在对 RAM 中的映像执行**HABv4 签名验证**,但该验证失败了。 j4 err` 不是标准 USB 错误;它似乎是与跳转命令有关的 `imx_usb` 工具的内部状态代码。核心问题是跳跃不成功。 1。**HAB 身份验证失败:** “j4 错误”(或随后的无法启动)是否表示 HAB 身份验证失败?启动 ROM 成功接受了该映像,但似乎拒绝运行该映像。 2。**USB 启动的映像签名:** 对打算通过 USB 串行下载协议加载的 U-Boot 映像进行签名是否有特定的要求或格式?我们正在使用签名的 eMMC 启动镜像。预期的 IVT(图像矢量表)结构或其他元数据是否存在差异,导致 HAB 在以 `0x877ff400` 加载图像时拒绝图像? 3.**加载地址:** 图像正在加载到 `0x877ff400`。这是安全 i.MX6 上 USB 加载映像的正确地址吗?启动 ROM 是否期望映像在 RAM 中的不同位置进行身份验证? Re: i.MX6 HABv4 Boot Failure: `j4 err` After Successful USB Load on Production Board 你好 您的签名映像是为eMMC启动而构建的吗? 错误显示加载到 RAM 的步骤已成功,但由于一个 HAB 验证失败。 Re: i.MX6 HABv4 Boot Failure: `j4 err` After Successful USB Load on Production Board 使用 imx_usb_loader(串行下载协议),我们成功地从 RAM 完全启动 U-Boot 和 Linux。从那次 U-Boot 实时会话中,我们将以下镜像写入了 eMMC: # U-Boot IVT 强制位于 1 KiB 硬件偏移处 mmc dev 1 0 mmc 写入 0x82000000 0x2 0x400 # 将镜像适配到活动分区之外的原始扇区 mmc 写入 0x80800000 0x66000 0x3000 # 启动环境 setenv bootargs "console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw" setenv loadfit "mmc dev 1 0; mmc read 0x80800000 0x66000 0x3000" setenv bootcmd "run loadfit; bootz 0x808000e8 - 0x80da4bc0" saveenv 从 U-Boot 提示符手动执行 run boot 命令可以正常工作——Linux 可以启动并挂载 /dev/mmcblk1p2,没有任何问题。邮件中附有工作日志。 故障状态: 在任何冷启动或硬件复位时,即使 USB OTG 电缆物理断开,电路板也不会产生任何 UART 输出,并且会静默地重新进入 USB 串行下载模式。ROM 似乎从未到达 eMMC。 Re: i.MX6 HABv4 Boot Failure: `j4 err` After Successful USB Load on Production Board 大家好,请问这个工单目前状态如何?如何才能推进进度?是否需要进行面对面(现场)会议? Re: i.MX6 HABv4 Boot Failure: `j4 err` After Successful USB Load on Production Board 你好 是的,镜像已签名,可用于emmc启动。在内存中运行完美,但无法刷入 eMMC。
View full article
[入門] Yocto Linux BSPのビルド方法 - i.MX FRDMボード編 (日本語ブログ) *i.MX FRDMボードをベースに、Yocto Linuxのビルド方法を紹介します。 本記事ではFRDM-IMX93をベースに紹介しますが、他のi.MX FRDMボードでも同じ手順でビルドすることができます。 Yocto Linux BSPは、「Linux 6.12.49_2.2.0 (Yocto 5.2 “Walnascar”)」を例に記載しています。   Q: i.MX FRDMボードとは?   A: i.MX FRDMボードは、NXPが提供するフル機能のEVKボードに比べて、機能を絞り込み、より低価格かつコンパクトに設計された開発ボードです。基本的な評価やプロトタイプ作成を手軽に行えることを目的としています。 1. 環境&事前準備 1.1. 環境 大項目 小項目 内容 備考 Document - IMX_YOCTO_PROJECT_USERS_GUIDE.pdf (主に使用します。BSPをビルドするための手順を記載) i.MX Linux® Release Notes  (サポート機能を一覧で確認できます) i.MX Porting Guide (実際に実装する際の注意点のまとめ) Yocto Linux全般資料のダウンロードはこちら Hardware FRDMボード FRDM-IMX8MPLUS FRDM-IMX91S FRDM-IMX91 FRDM-IMX93 FRDM-IMX95  本章では、FRDM-IMX93をベースに説明します Host PC Ubuntu環境 ・VMWare/Virtual Box等(on Windows) ・Native Linux のどちらか 推奨:Ubuntu22.04以上 SDカード+リーダライタ 16GB以上のもの推奨   Hardware (Option) MIPI-Camera (Option) BSP対応のMIPIカメラ ( i.MX Linux® Release Notes参照) USBカメラでも代替可(遅延が発生する可能性があります) Display (Option) 表示用ディスプレイ   USB Device (Option) USBマウス、USBメモリ   Headphone (Option) 3.5mm イヤホン マイク付きイヤホン(旧iphone付属のイヤホン等)だとベター Software Yocto環境 Linux BSP (今回はLinux 6.12.49_2.2.0 (Yocto 5.2 “Walnascar”) を使用) インストール方法含め、本記事で説明します 1.2. 凡例 コマンド・プロンプトの凡例 =>           u-bootプロンプト $            BSPがインストールされているLinux PCのプロンプト 2. ホストマシン Ubuntu 22.04 Desktopを推奨します。 実運用上、ある程度快適なホストマシンのスペックは8スレッド、16GB以上です。 必要なストレージはターゲットとするレシピで変わってきますが、 小さいプロジェクトで50GB、大きなもので500GBほどかかります。 2.1. Yoctoに必要なパッケージ 以下の手順にて必要なパッケージをインストールしてください。 $ sudo apt-get install build-essential chrpath cpio debianutils diffstat file gawk gcc git iputils-ping libacl1 liblz4-tool locales python3 python3-git python3- jinja2 python3-pexpect python3-pip python3-subunit socat texinfo unzip wget xzutils zstd efitools curl 注釈 IMX_YOCTO_PROJECT_USERS_GUIDE.pdf に記載されている内容に加えて curl を追記しています。 2.2. スワップファイルの設定 32GBのスワップファイルを設定する場合の例です。 $ sudo fallocate -l 32G /swapfile $ sudo chmod 600 /swapfile $ sudo mkswap /swapfile $ sudo swapon /swapfile 注釈 すでに/swapfileが存在する場合は1行目のコマンドがFailします。サイズを変えて設定したい場合は、以下を実行してから再度上のコマンドを実行してください。 $ sudo swapoff /swapfile $ sudo rm /swapfile ホストマシンの起動時にスワップファイルを自動的にマウントさせるには、以下の行を/etc/fstabに追加してください。 /swapfile none swap sw 0 0 3. Yocto Linux BSP nxp.jpのEmbedded Linux for i.MX Applications Processorsから必要なLinux BSPのVersionを選択して、i.MX Yocto Project User's Guideを入手してください。 i.MX Yocto Project User's Guide (IMXLXYOCTOUG) の「4 Yocto Project Setup」の手順に沿ってイメージを作成します。 この資料は、以下の設定で生成されるイメージを前提として書いています。  DISTRO = fsl-imx-xwayland  MACHINE = imx93-11x11-lpddr4x-frdm 3.1. Yocto BSPのセットアップとビルド ホストマシンのセットアップは 2. ホストマシン を参照ください。 3.1.1. repoユーティリティのインストール $ mkdir ~/bin $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo 3.1.2. repoのPATHを通す 以下の行を$HOME/.bashrcに追加します。   export PATH=~/bin:$PATH 3.1.3. Gitのセットアップ $ git config --global user.name "Your Name" $ git config --global user.email "Your Email" $ git config --list 3.1.4. Yocto BSPのセットアップ $ mkdir imx-yocto-bsp $ cd imx-yocto-bsp $ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-walnascar -m imx-6.12.49-2.2.0.xml $ repo sync 3.1.5. ビルドターゲットの設定、ビルド $ MACHINE=imx93-11x11-lpddr4x-frdm DISTRO=fsl-imx-xwayland source ./imx-setup-release.sh -b build $ bitbake imx-image-full *ここでビルドが終了しますと、Linuxイメージが生成されます。 *生成されたイメージの書き込み方法については、以下ご使用のFRDMボードに合わせたスタート・ガイドのステップ1、2をご参考ください。 FRDM-IMX8MPLUSのスタート・ガイド FRDM-IMX91のスタート・ガイド FRDM-IMX91Sのスタート・ガイド FRDM-IMX93のスタート・ガイド FRDM-IMX95のスタート・ガイド 注釈 他のFRDMボード向けにLinux BSPをビルドしたい場合は、上記コマンドの"MACHINE="の部分を以下の名前に置き換えてください。 imx8mp-lpddr4-frdm   (FRDM-IMX8MPLUS) imx91-11x11-lpddr4-frdm   (FRDM-IMX91) imx91-11x11-lpddr4-frdm-imx91s   (FRDM-IMX91S) imx93-11x11-lpddr4x-frdm   (FRDM-IMX93) imx95-15x15-lpddr4x-frdm   (FRDM-IMX95) 注釈 グラフィック機能についても上記コマンドの"DISTRO="の部分にて、ディストリビューションを選択できます。 fsl-imx-wayland   (Wayland) fsl-imx-xwayland   (Wayland & X11 *EGLを使用するX11アプリには対応していません) 注釈 imx-setup-release.shスクリプトを使うセットアップは、プロジェクト1つに対して1回のみです。既存のプロジェクトに対して行うと、conf/local.confなどのファイルが新規で生成されるので、これまで設定した内容が失われます。既存プロジェクトを再度使う場合は 3.3.1. 既存のビルド・ディレクトリから作業を再開する を参照ください。 注釈 ホストマシンのスペックによりますが、ビルドには数十時間かかることも想定されます。またストレージも4~500GB消費することも想定してください。 注釈 マルチコア・マルチスレッドでのホストマシンでビルドを行う際、スレッド数に対してメモリが足りない場合にスワップが発生します スレッド数を制限するのは 3.4.2. ビルド時に走るスレッド数を制限する を参照ください。 注釈 Ubuntu22.04の初期状態だとスワップが設定されていないケースがあり、その場合は極端に遅くなったりクラッシュしたりします。スワップファイルの設定は 2.2. スワップファイルの設定 を参照ください。 *ここから先は参考用です。 3.2. ツールチェインのビルド、インストール クロスコンパイラなどのツールチェインをビルド、インストールすることができます。 ここで生成されるスクリプトを使うことで、クロスコンパイルのときにありがちなインクルードファイルやリンクさせるライブラリが見つからない、といった問題を避けることができます。 3.2.1. ツールチェインのビルド $ bitbake imx-image-full -c populate_sdk 3.2.2. インストール $ tmp/deploy/sdk/fsl-imx-xwayland-glibc-x86_64-imx-image-full-armv8a-imx93-11x11-lpddr4x-pf0900-evk-toolchain-6.12-walnascar.sh ツールチェインの使い方については、ここでは説明しません。 3.3. よく使うYocto bitbakeコマンド、設定 3.3.1. 既存のビルド・ディレクトリから作業を再開する $ cd /path/to/imx-yocto-bsp $ source ./setup-environment build 注釈 ここでのパス、ディレクトリは 3.1.4. Yocto BSPのセットアップ 、 3.1.5. ビルドターゲットの設定、ビルド で設定したものです。 以下ではlinux-imxを例として、いくつかのコマンド例を挙げていきます。 "linux-imx"を別のパッケージ名にすれば、そのパッケージ毎に同様のことが可能です。 3.3.2. パッケージの再ビルド $ bitbake -c compile linux-imx -f $ bitbake -c install linux-imx $ bitbake -c deploy linux-imx 注釈 -fを付けない場合と手順がスキップされる可能性があります。 注釈 -c deployがエラーになるパッケージもありますが、ほとんどの場合はdo_deployコマンドが用意されていないだけですので、エラーは無視して構いません。 3.3.3. パッケージを消す あるパッケージで本来発生しないであろうエラーが発生する場合に、以下のコマンドでパッケージを消してやり直してみるとエラーが解消することがあります。 (ダウンロード時にパッケージが破損したり、ビルドを途中で強制的に終了した場合にゴミデータが残ったりしている場合があるためです。) $ bitbake -c cleansstate linux-imx 注釈 展開したソースコードごと削除されますので、編集しているファイルなどがある場合はご注意ください。 3.3.4. パッケージの展開 パッケージの展開だけを行い、コンパイルなどはまだやりたくない場合 $ bitbake -c patch linux-imx 3.3.5. configファイルの変更を反映させる configファイル(arch/arm64/configs/imx_v8_defconfigなど)を変更し、それを反映させたい場合 $ bitbake -c configure linux-imx $ bitbake -c compile linux-imx -f 3.3.6. linux-imx menuconfigを行う Linuxカーネルのビルドオプションを変更する場合 $ bitbake -c menuconfig linux-imx このようなウィンドウが起動するので、必要な変更を加えてSaveします。(十字カーソルキーで対象を選択し、スペースキーで決定) ビルド時のTIPSについては、以下の記事を併せてご参考ください。 Yocto Linux BSPのビルド時におけるTIPS集 - i.MX 8M Plus編 ========================= 本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。 お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」をご参照ください。 (既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。) お手頃な値段で、コンパクトに組み込みLinuxを開始できるFRDM(フリーダム)ボードを用いて、Linux BSPのビルド手順を紹介します。 本記事ではFRDM-IMX93をベースに紹介しますが、他のi.MX FRDMボードでも同じ手順でビルドすることができます。 Yocto Linux BSPは、「Linux 6.12.49_2.2.0 (Yocto 5.0.4)」を例に記載しています。 i.MX Processors SW | Downloads 日本語ブログ
View full article
CAN based WakeUp Transrecevier TJA1465 Hi  I am using TJA1465 CAN SIC transceiver with partial networking for CAN Based Wake up i have configure this with 500kbs bitrate and ID 0x18ff21b1 for CAN wake up using partial networking using SPI. But transreceiver wake ups for other bitrate also which is not configured in the Partial networking data rate and filter configuration register (address 031h). why does transreciever wake up for bitrate also other than configured.  below is the sample code   static void tja1465_configure_can_wakeup_ext_dlc0(void) { uint8_t mode_stat,sys_stat; printf("CAN Wakeup Config Enter \n" ); tja1465_read(REG_MODE_STATUS, &mode_stat); printf("Mode Status (0x070) = 0x%02X (%s)\n",mode_stat, mode_str(mode_stat)); tja1465_write(0x031, 0x14); /* WUF ID = 0x18FF21B1 *//*0x18FF0180* MASK 0x0000304D*/ tja1465_write(0x020, 0xB1); tja1465_write(0x021, 0x21); tja1465_write(0x022, 0xFF); tja1465_write(0x023, 0x18); /* WUF ID mask (match full 29-bit ID) */ tja1465_write(0x024, 0x00); tja1465_write(0x025, 0x00); tja1465_write(0x026, 0x00); tja1465_write(0x027, 0x00); tja1465_write(0x028, 0x05); tja1465_write(0x029, 0x00); tja1465_write(0x02A, 0x00); tja1465_write(0x02B, 0x00); tja1465_write(0x02C, 0x00); tja1465_write(0x02D, 0x00); tja1465_write(0x02E, 0x00); tja1465_write(0x02F, 0x00); tja1465_write(0x030, 0xC8); tja1465_write(0x011, 0x00); tja1465_write( 0x060, 0xFF); tja1465_write( 0x061, 0xFF); tja1465_write( 0x062, 0x04); tja1465_write(0x032, 0x03); uint8_t pn_status_reg; tja1465_read(0x073, &pn_status_reg); tja1465_read(0x071, &sys_stat); printf("PN Status (0x073) = 0x%02X (CPNS: %s),CPNERRS :0x%02X\n", pn_status_reg, (pn_status_reg & 0x20) ? "OK" : "Error",(pn_status_reg & 0x40)); printf("System Status(0x071) = 0x%02X\n", sys_stat); tja1465_write(REG_MODE_CTRL, MODE_SLEEP); usleep(3000); tja1465_read(REG_MODE_STATUS, &mode_stat); printf("Mode Status (0x070) = 0x%02X (%s)\n", mode_stat, mode_str(mode_stat)); tja1465_read(REG_SYS_STATUS, &sys_stat); printf("System Status(0x071) = 0x%02X\n", sys_stat); printf("CAN Wakeup Config Exit \n" ); } Re: CAN based WakeUp Transrecevier TJA1465 Hello Vivekananda Good day! I'm going to run tests to find the error and I'll get back to you as soon as I have an answer. Have a great day and best of luck. Re: CAN based WakeUp Transrecevier TJA1465 Hello Vivekananda Can you clarify what they mean with below green sentence on ‘other bitrates’, is this about CAN FD frames? But transreceiver wake ups for other bitrate also which is not configured in the Partial networking data rate and filter configuration register (address 031h). If it’s indeed CAN FD frames, then after the wake-up please check if PNFDER =1. If so, try changing below yellow line to: tja1465_write(0x032, 0x07). This will set PNECC = 1 and CAN FD frames would not increase the error counter anymore, PNFDER should stay 0 and the device does not wake up. The Application Notes (AN14388, which can be downloaded on our page) are showing an example SPI sequence for a PN configuration for your reference (section 4.2, pages 23-24). Please take a look. I hope this information has helped you, please let me know if you need help with anything else. Have a great day and best of luck.
View full article
[RTD600 IP] S32K3X4EVB-T172 GPIO 唤醒 本示例项目将向用户展示如何使用和配置 WKPU + SIUL2 (GPIO) 的基本功能。 ------------------------------------------------------------------------------ * 测试硬件:S32K3X4EVB-T172 (SCH-53148 REV B2) * MCU:S32K344 * IDE:S32DS v3.5& S32DS v3.6.x * SDK 发布版本:RTD 6.0.0 * 调试器:PE Micro * 目标: internal_FLASH ------------------------------------------------------------------------------ 该示例例程将 WKPU 配置为 GPIO 中断唤醒。这是最简单的 WKPU 例子。引脚 PTB19(WKPU42)配置为唤醒。 例程等待按下SW5,然后关闭绿色 LED,并进入 Wkpu_EnterStandby() 函数: 将核心时钟切换到 FIRC。 初始化 WKPU 实例。 配置 WKPU42 (PTB19)。 进入待机(或快速待机)状态。 按下 SW6 后,MCU 将唤醒、RESET 并轮询以再次按下 S W5。 本示例按原样提供,不提供任何保证和支持。
View full article
T4240から間違ったIDCODEを読み取ったため、USB-TAP経由でダウンロードできません T4240 (T4240RDB に類似) をベースにしたボードをデバッグしています。私の問題は、Codewarrior で USB-TAP 経由でコードをダウンロードできないことです。 1.ハードコードされた RCW をテストしたところ、T4240 は電源投入後約 10 ミリ秒以内に RESET_REQ をアサートすることがわかりました。 2. Codewarrior によって「JTAG チェーンを正しく構成できませんでした」というエラー メッセージが表示され、コンソールに表示されるチップ IDCODE は、QorIQ T4240 リファレンス マニュアルに記載されている 0x0022001d ではなく、0x1022001d になります。 3. Codewarrior のコンソールの出力メッセージには、「エラー メッセージ: T4240: トランザクション中に HRESET が発生しました」と表示されました (以下に添付)。 4. 電源とクロックをすべて測定しましたが、問題ないようです。 誰かこの問題を解決するのを手伝ってくれませんか? ---------------------------------------------------------------------------- ccs_open ipaddr = 127.0.0.1 ポート = 41475 タイムアウト = 15 サーバーh = 0 ccs_open; ccs_error = 0 ccs_get_connection_count サーバーh = 0 カウント = 1 ccs_get_connection_count; ccs_error = 0 ccs_available_connections サーバーh = 0 カウント = 1 ccs_available_connections; ccs_error = 0 ccs_available_connections サーバーh = 0 カウント = 1 ccs_available_connections; ccs_error = 0 ccs_cc_バージョン サーバーh = 0 cc = 0 バージョン.メジャー = 1 バージョン.マイナー = 3 ccs_cc_version; ccs_error = 0 ccs_set_timeout サーバーh = 0 タイムアウト = 15 ccs_set_timeout; ccs_error = 0 ccs_available_connections サーバーh = 0 カウント = 1 ccs_available_connections; ccs_error = 0 ccs_config_server サーバーh = 0 cc = 0 サーバー構成 = 0 値 = 4040 ccs_config_server; ccs_error = 0 ccs_config_chain サーバーh = 0 cc = 0 device_list: (サイズ = 1) デバイス[0]:: core_type=テストコア(20) ccs_config_chain; ccs_error = 0 ccs_jtag_ロック サーバーh = 0 cc = 0 ccs_jtag_lock; ccs_error = 0 JTAG診断   プローブ テスト時の始動電力... テスト結果: 合格   IR スキャン テストを開始しています... テスト結果: 合格   バイパス スキャン テストを開始しています... テスト結果: 合格   任意の TAP 状態移動テストを開始しています... テスト結果: 合格   検出されたJTAG IDコード: OK デバイス0 IDコード: 0x1022001D   ccs_jtag_unlock サーバーh = 0 cc = 0 ccs_jtag_unlock; ccs_error = 0 ccs_config_chain サーバーh = 0 cc = 0 device_list: (サイズ = 1) デバイス[0]:: core_type=T4240(206) ccs_config_chain; ccs_error = 39 エラーメッセージ: T4240: トランザクション中に HRESET が発生しました ccs_get_subcore_error サーバーh = 0 cc = 0 エラー = 60 チェーン位置 = 0 ccs_get_subcore_error; ccs_error = 0; 期間=2ミリ秒 ccs_close サーバーh = 0 ccs_close; ccs_error = 0 Re: Wrong IDCODE read from T4240 and cannot download via USB-TAP こんにちは、 CW の問題のスクリーンショットを共有してください。RCW が間違っている可能性があります。RCWは SB_EN ビットが設定されたターゲットにロードされましたか? 他のボードでもこの問題は発生しますか? WCTAP が他のデバイスで正しく動作していることを確認できますか? Re: Wrong IDCODE read from T4240 and cannot download via USB-TAP サポートありがとうございます。スクリーンショットを以下に添付します。ハードコードされた RCW を使用しており、この場合 SB_EN は無効になっています。私は 5 つのボードを持っていますが、すべて同じ問題で動作しています。現時点では、USB-TAP をテストできるリファレンス ボードがありません。 Re: Wrong IDCODE read from T4240 and cannot download via USB-TAP こんにちは、 RCW が有効でないか、JTAG クロック速度が速いことが原因である可能性があります。JTAGクロック速度を下げて試してください。
View full article
TMU 导致 LS1046a CPU 在 -40C 的低温室下 RESET 我们有一块基于 LS4046a 的板正在零下40摄氏度的温度箱中进行测试,系统已关闭,报告“温度过高”,如下所示。我在散热驱动器中添加了日志代码来报告关机时的确切温度,关机温度为 101 度,这让我们感到困惑,板的低温室低于 -40 摄氏度,为什么 TMU 报告了临界高温? [2025-12-23 15:41:31.267] root@E7-2:~# [ 2435.041159] thermal thermal_zone0: ddr-controller:达到临界温度十六进制 0x18a88,十进制 101000,无符号 101000,正在关闭。 [2025-12-23 15:46:04.940] [ 2435.053636] 重新启动:硬件保护关闭(温度过高) Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber 我与 AE 团队讨论了这个问题,请参阅他们的以下更新。 TMU 的指定测量范围为 0~110C。-40℃超出范围,寄存器值可能会被软件误读。 客户可参阅 AN12310 和 LSDK 用户指南第 11.3 章。 Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber 我还编写了一个脚本,在 -40C 环境下轮询温度寄存器(TRITSR0 - TRITSR4),大部分时间 V 位为 0(无效),但不时 V 位设置为 1(有效),当 V 位为 1 时,TEMP 字段显示高温,见下图,温度寄存器报告 0x65000080,其中 0x80 表示 V 位为 1,0x65 是温度值,十进制为 101 度。 temp_val=0x65000080, (temp_val& 0xff000000)=0x65000000, (temp_val& 0x000000ff)=0x00000080 为什么 TRITSR 寄存器的 V 位被设置为 -40C 下有效,从而误导软件读取无效温度? Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber 请参阅 AE 团队提供的以下信息。 这不是错误,而是预期行为。 LS1046A TMU 的指定测量温度范围有限(约 0 °C 至 110 °C)。在 -40 °C 时,TMU 的工作温度超出其有效范围。 当温度超出范围时,TMU 仍会偶尔断言 V(有效)位,这意味着转换已完成,尽管转换结果没有物理意义。 与此同时,TMU 状态寄存器(TSR)中的 ORL(低电平超出范围)标志也会被确认。 如果软件仅检查 V=1 而忽略 ORL=1,它可能会将该值误解为正常温度(例如,0x65 → 101 °C),并触发错误的超温关机。 建议 在使用 TRITSR 温度值之前,请务必检查 ORL 标志。 如果 ORL=1,则将温度读数视为无效,与 V 位无关。 或者,推迟启用 TMU 监控,直到 SoC 温度恢复到有效范围内(≥0 °C)。 Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber 我检查了 ORL 位,似乎该位在检测超出范围的低温时并不可靠,如下所示 我的显卡在室温下运行,TMU 的温度约为 58 摄氏度。 root@E7-2:~# cat /sys/class/thermal/thermal_zone0/temp 58000 root@E7-2:~# cat /sys/class/thermal/thermal_zone1/temp 59000 读取 TMU 模式寄存器 (TMR) 和 TMU 状态寄存器 (TSR),启用 TMU 模式并钳位 ORL root@E7-2:~# devmem 0x1f00000 w 0xFFFF008C root@E7-2:~# devmem 0x1f00004 w 0x000000A0 然后我禁用了 TMU 监控模式,发现 ORL 已被清除 root@E7-2:~# devmem 0x1f00000 w 0xFFFF008C root@E7-2:~# devmem 0x1f00000 w 0xFFFF000C #disable the monitoring mode root@E7-2:~# devmem 0x1f00000 w 0xFFFF000C root@E7-2:~# devmem 0x1f00004 w #ORL bit was cleared 0x00000020 然后我重新启用了 TMU 监控模式,ORL 位又被钳位 root@E7-2:~# devmem 0x1f00000 w 0xFFFF008C root@E7-2:~# devmem 0x1f00004 w 0x000000A0 Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber TMU 温度测量范围为 0-125°C。 RM 表示寄存器 ORL - 检测到超出范围的低温测量值。温度传感器检测到的温度读数低于 0 摄氏度的最低可测量温度。TMU监控(重新)启用后,该位将自动清零。 Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber 该卡处于室温下而不是环境低于 0 摄氏度,TMU 报告 56 摄氏度,而 ORL 仍然钳位 ORL 表明低温超出范围,这没有道理,为什么即使卡在室温下也钳位 ORL 位?如前面的评论所示,我重新启用了 TMU 监控,重新启用 TMU 监控模式后,ORL 位仍处于钳位状态。 Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber 这个问题有什么新进展吗? 上周,我们在另一种具有相同 CPU 的显卡上发现了同样的问题,我们想知道是否有解决方法,谢谢。 Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber 请参考我在 LS1046ARDB u-boot 上的验证结果。 => mw 0x1f000000x00F8000C => mw 0x1f000000x00F8008C => md 0x1f00100 1 01f00100:25000080...% => md 0x1f00004 1 01f00004:00000000.... = md 0x1f00004 1 01f00004:00000000.... => Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber 请使用以下值配置寄存器0x1f00000。 => mw 0x1f00000 0x00F8000C => mw 0x1f00000 0x00F8008C Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber 将 TMU 寄存器的 RESERVED 位(bits21 ~ bit31)设置为 0 似乎可以清除我的卡上的 ORL 位。如果这些保留位为 1,则无法清除 ORL,不知道为什么。总之,我会在 TMU 驱动程序中将这些位初始化为 0,然后在读取温度之前检查 ORL 位。谢谢 Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber 是的,谢谢,我做到了,而且将再次进行 -40C 下的热测试,以检验代码的更改,希望它能通过测试。 Re: TMU caused LS1046a CPU reset at a -40C low temperature chamber root@LG871:~# devmem 0x1f00000 w 0x00F8008C //保留位为 0,则未钳位 ORL 位 root@LG871:~# devmem 0x1f00004 w 0x00000080 root@LG871:~# root@LG871:~# devmem 0x1f00000 w 0xFFF8008C //保留位为 1,然后 ORL 位钳位为 root@LG871:~# devmem 0x1f00004 w 0x000000A0
View full article
CANFDにおける二次サンプリングポイントオフセット(SSPオフセット)の設定について ISO 11898-1 2015では、SSP(サンプリングポイント)を通常のサンプリングポイント(SP)の前に配置することが要求されています。しかし、当社の仕様ではSSPオフセットをTSEG1と等しく定義しており、SSPとSPは同じ位置にあります。これにより、SSPの迅速なエラー検出機能が損なわれます。仕様におけるこのSSPオフセットの固定は妥当でしょうか? たとえば、仕様では、SSP オフセット = TSEG1 となる CANFD サンプリング ポイント構成の推奨が必要です。   Re: 关于CANFD中二次采样点偏移SSP Offset的设置问题 こんにちは、 ISO 11898-1 2015 の正確な文言はわかりませんし、写真の出所もわかりません。おそらくそれはすべて単なる誤解です。 ISO 準拠の CAN FD コントローラは、TDC を使用してループ遅延を測定し、設定可能な SSP を採用することで、トランスミッタがより高いデータ レートでデータ エラーを適切に検出できるようにします。TDC/SSP を省略するとこのメカニズムが無効になり、エラー検出の堅牢性が低下します。 図が示すもの: TX 出力: コントローラから送信された CAN FD ビットを表します。 RX 入力: トランシーバ遅延後の受信ビットを表します。 TDC 測定: コントローラは TX と RX 間のループ遅延を測定します。 TDC オフセット: 測定された遅延に追加される、ユーザーが設定可能な値。 SSP 位置: SSP = TDC 測定値 + TDC オフセットとして計算されます。 SSP は、TX ドメイン内のメイン SP の前に配置されるものではありません。代わりに、RX 信号をサンプリングするときに、トランシーバの遅延を考慮した後に正しいビット センターに揃うように配置されます。TX の観点から見ると、物理的な遅延により RX 信号が TX より遅れるため、SSP は通常の SP よりも遅く表示されます。TDC オフセットを公称 SP と同じに設定すると、RX サンプリング ポイントが受信ビットと同じ時間になることが保証されますが、ビットの中央など自由に設定できるため、エラー検出とデータの整合性にとって最適になります。 ISO 11898‑1 では、TX ドメインでの早期エラー検出ではなく、トランスミッタの遅延補正に SSP が必要です。目標は、遅延後にトランスミッタが自身のビットを正しく検証できるようにすることです。 BR、ペトル Re: 关于CANFD中二次采样点偏移SSP Offset的设置问题 感谢回复
View full article
无 PHY 的 IMX8MP RGMII 连接 您好, 我正试图在不使用物理层的情况下建立与交换机的以太网 RGMII 连接。根据其他帖子,我将我的设备树配置如下: &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_fec>, <&pinctrl_fec_phy>; phy-mode = "rgmii"; status = "okay"; fixed-link { speed = <1000>; full-duplex; }; }; pinctrl_fec: fecgrp { fsl,pins = , , , , , , , , , , , , , ; }; pinctrl_fec_phy: fecphygrp { fsl,pins = , ; }; ethtool 显示检测到链接:是,ifconfig 显示已分配 IP 地址。但是我无法 ping 到板或从板上执行 ping 操作。您能确认针脚的设置是否正确吗?谢谢。 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus Re: IMX8MP RGMII Connection with No PHY 谢谢您的答复,我已经看过那份文件,它帮我走到了今天。不过,我仍然需要进一步的帮助,才能让事情顺利进行。 Re: IMX8MP RGMII Connection with No PHY 请参阅所附文件,该文件对您的情况非常有用 Re: IMX8MP RGMII Connection with No PHY 对于 RGMII,当前电路板支持包默认支持此功能,你可以参考 https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm64/boot/dts/freescale/imx8mp-evk.dts#L390
View full article
FS26 无法 RESET S32K3 我正在使用 RTD 层在带有 FS26 的 S32K314 上进行开发。 目前,我遇到 FS26 无法 RESET MCU 的问题。 FS26 成功进入正常状态,但是当我故意停止为看门狗供电时,RSTB 引脚没有被拉至低电平,也没有 RESET MCU。 您能帮我检查一下可能出了什么问题吗?谢谢。 有关我的配置设置和初始化步骤,请参阅所附的图片。 Re: FS26 CAN'T NOT RESET S32K3 嗨,彼得、 感谢您的回复。 我正在定制板上开发,我可以确认硬件已经退出调试模式。 我尝试刷新一个没有进行任何 FS26 初始化的版本,在那个版本中,FS26 会持续 RESET MCU。 但是,当我闪回我提供给你的版本(包含 FS26 初始化的软件)时,FS26 不再 RESET MCU。 此外,你还可以看到我的配置,如附件所示,我选择了调试模式退出。 请帮助检查 FS26 初始化过程中是否有任何错误。谢谢。 Re: FS26 CAN'T NOT RESET S32K3 你好 你能分享一下你使用的是恩智浦评估板还是定制主板吗? 确保 FS26 未处于调试模式。在这种情况下,WDOG 将被禁用,超时时不会有任何反应。 顺祝商祺! Peter Re: FS26 CAN'T NOT RESET S32K3 你好 好的,谢谢你的解释。 此外,你还可以看到我的配置,如附件所示,我选择了调试模式退出。 好的,这只是配置图形用户界面中的复选框。 如果从 FS26 读回,它真的处于正常模式吗? 我尝试刷新一个没有进行任何 FS26 初始化的版本,在那个版本中,FS26 会持续 RESET MCU。 如果 FS26 未初始化,WDOG 将发出 RESET 命令,RESET 阶段将自动重新开始。 初始化阶段必须在 256 毫秒超时前通过良好的看门狗刷新关闭。如果在初始化阶段没有发送监视器刷新或监视程序不正确,则会生成 RSTB 脉冲,故障错误计数器将增加 1。当 RSTB 版本发布时,新的初始化阶段会自动启动。 但调试模式也是通过调试引脚激活来保持的。但是由于RESET是在没有完成初始化的情况下进行的,我预计你没有激活调试引脚。 但是,当我闪回我提供给你的版本(包含 FS26 初始化的软件)时,FS26 不再 RESET MCU。 因此,在我看来,这与代码直接相关。 因此,我认为可能只有两种选择。 1. 您的 WDOG 未激活 2. 您已进入调试模式。 否则,FS26 将发出 RESET。 可以添加 FS26 模式调试模式检测检查,以确保 SBC 启动后不处于调试模式。 同时检查 FS_I_WD_CFG 顺祝商祺! Peter Re: FS26 CAN'T NOT RESET S32K3 嗨,彼得、 请看我蓝色字体的回复。谢谢。 仍未找到监视程序未触发信号 MCU RESET 的根本原因。 如果从 FS26 读回,它真的处于正常模式吗? Wade : 是的,我通过 spi 读取了 FS_STATES,它返回 1011(正常)。 1. 您的 WDOG 未激活 韦德:我用 spi读取了FS_I_WD_CFG 并返回了 0101 1010 0001 0000,与我的配置相同。 2. 您已进入调试模式。 Wade : 没有,我通过 spi 读取 FS_STATES,它返回 1011(不在 DEBUG 模式下)。 Re: FS26 CAN'T NOT RESET S32K3 嗨,彼得、 我在上一篇文章中漏掉了一张图片。 请一并参阅。谢谢。 Re: FS26 CAN'T NOT RESET S32K3 你好 这就奇怪了。 我检查过你们的登记簿: 如果从 FS26 读回,它真的处于正常模式吗? Wade : 是的,我通过 spi 读取了 FS_STATES,它返回 1011(正常)。 1. 您的 WDOG 未激活 韦德:我用 spi读取了FS_I_WD_CFG 并返回了 0101 1010 0001 0000,与我的配置相同。 wd_fs_reaction[1:0] 如果设备未处于调试模式,则此类配置将触发信号RESET。 2. 您已进入调试模式。 Wade : 没有,我通过 spi 读取 FS_STATES,它返回 1011(不在 DEBUG 模式下)。 这说明是正常模式。 我不清楚你那边发生了什么。 你能不能通过示波器检查RESET线,看看RESET没有被拉出。另外,你在恩智浦评估板上看到同样的行为吗? 那调试引脚呢,不是激活的吗? 默认情况下,在没有任何SBC配置的情况下,RESET会被触发信号,因此您的SBC配置中必须有一些内容,防止从SBC向uC执行RESET。 您是否尝试过 RTD 软件包提供的 FS26 示例软件? 顺祝商祺! Peter
View full article
HSEコンセプト こんにちは、NXPさん M7 と A53 から HSE に並行してアクセスするために、内部で同期が行われますでしょうか?完全に分離されていますか? M7 で SHE 仕様に従って HSE が使用され、A53 で pkcs11 に従って HSE が使用される場合、理論的にはそれらは互いのキーにアクセスできますか (一部の暗号化に同じキーを使用)?SHE でキーをプロビジョニングして、それを他のパーティションで使用することはできますか? s32g274を使用したカスタムボード よろしくお願いいたします。 あんぱ Re: HSE concept こんにちは、 @anpa711 ご投稿ありがとうございます。 1. 通常、M7 部分は 1 つの MU を介して HSE にアクセスしますが、A53 部分は別の MU を介して並行して HSE にアクセスする場合があり、HSE は内部ロジックに基づいてこれらの要件を処理し、ユーザーには透過的です。 2. HSE では、SHE キーは HSE_KEY_TYPE_SHE であり、共通操作は HSE_KEY_TYPE_AES である可能性がありますが、これらは HSE では異なるタイプであり、SHE 操作は SHE サービス経由でのみプロビジョニングできるため、 HSE_KEY_TYPE_SHE タイプのキーをエクスポートすることはできません。 BR チェイン Re: HSE concept こんにちは、 @anpa711 ご返信ありがとうございます。 はい、可能です。 BR チェイン Re: HSE concept こんにちは、 @anpa711 ご返信ありがとうございます。 1. S32G の観点からは、HSE_DEMOAPP に含まれる SHE ベースのセキュア ブート デモのみが提供されています。これは、NXP アカウントの HSE FW ダウンロード ページから入手できます。 2. S32K の部分については、あまり詳しくないので申し訳ありませんが、返信は、この掲示板に返信した同僚によって提供されるはずです: https://community.nxp.com/t5/S32K/bd-p/S32K BR チェイン Re: HSE concept こんにちは、 chenyin_hさん ありがとう、これは良さそうです。 s32K および s32g の MCAL には、SHE 仕様 (EB Autosar スタックと MCAL を使用しています) に従って、または他の形式で、いくつかのキー プロビジョニング デモ/テストが付属していますか? よろしくお願いいたします。 あんぱ Re: HSE concept こんにちは、 chenyin_h さん 回答ありがとうございます。 1. わかりました。同期は必要ないようですね。 2. キーを抽出するつもりはなく、次のUSE CASEを意味しました。SHE 仕様では、AES キーをスロット 8 にプロビジョニングします。このキーが存在する場合、A53 側でこのキーを使用して pkcs11 を使用して復号化/暗号化します。これは可能ですか? よろしくお願いいたします。 あんぱ
View full article
Imx95 verdin EVK、Aquantia10gbpsインターフェースはudpで1.2gbpsに制限されています こんにちは、 私は、Aquantia 10 Gbps インターフェースを介して、2 つの Imx95 verdin EVK A1 シリコン バージョン ボード間の通信を確立しようとしています。両方のボードは、nxp インストーラー (aquantia-firmware-utility/aq_api_2_9_7 at master · nxp-qoriq/aquantia-firmware-utility · GitHub) を使用して適切にインストールされた aquantia10 G ファームウェア (AQR-G4_v5.6.D-AQR_Marvell_NoSwap_XFI_ID44834_VER2068.cld) とともに Debian 12 (Linux カーネル 6.12.3 ) を実行しています。これらは Cat6a イーサネット ケーブルを使用して物理的にコネクテッドされます。 iperf3 を使用してパフォーマンス テストを実行すると、ターゲット帯域幅を 7 Gbps に指定した場合でも、TCP で約 5 Gbps、UDP で約 1.2 Gbps が得られ、損失は 0% になります。 # TCPテスト 最初のボードで iperf3 -s # iperf3 -c -t 30 # 2番目のボード # UDPテスト iperf3 -s iperf3 -c -u -b 7G -t 30 ip link set dev enp1s0 mtu 9000 でジャンボ フレームを有効にしようとすると、制限を超えたというエラーが発生します (10Gbps インターフェースがジャンボ フレームを受け入れないのは奇妙です) また、UDPバッファサイズを増やそうとしましたが、同じビットフレームが発生します 両側でiperf3を実行してもCPU負荷は40%を超えません 最大スループット (10 Gbps 近く) を達成するために、適用する特定の n 構成やインストールする追加ツールはありますか? Aquantia FW バージョンは適切ですか? Linux カーネルのバージョンは適切ですか? FW インストーラーのバージョンは適切ですか? 誰かがすでにこのターゲットで 10Gbps インターフェースを使用しようとしましたか? よろしくお願いいたします。 アブデルモナエム Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp 1. 両方のシステムで次の設定を構成してみます。 cpufreq-set -g パフォーマンス sysctl -w net.core.rmem_max=26214400 sysctl -w net.core.wmem_max=26214400 sysctl -w net.core.netdev_max_backlog=250000 sysctl -w net.ipv4.tcp_rmem='409687380 16777216' sysctl -w net.ipv4.tcp_wmem='409665536 16777216' 2. 可能であれば、iperfサーバーとは異なる参照システムを使用します(例:インテル Xeon 3. iperf3 自体はテスト ストリームごとにシングル Thread なので、-P オプションを使用してみてください。 例えばiperf3 -c -u -b 10G -t 30 -P 6 (6つのストリーム) 4. 順方向と逆方向の両方のストリームをチェックする(-R) iperf3 -c 192.168.1.1 -t 10 -b 10G -u -R Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp こんにちは、 ご意見ありがとうございます。 設定を適用します: cpufreq-set -g パフォーマンス sysctl -w net.core.rmem_max=26214400 sysctl -w net.core.wmem_max=26214400 sysctl -w net.core.netdev_max_backlog=250000 sysctl -w net.ipv4.tcp_rmem='409687380 16777216' sysctl -w net.ipv4.tcp_wmem='409665536 16777216' 現在、送信側のみで10Gbps、時には8、8または9、8Gbpsを達成でき、iperfのみでiperf3は使用していません。レシーバ側では、フレーム損失が36%で5.59Gbpsしか達成できません。この問題を解決するのを手伝っていただけますか? Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp 6.12.49へのマイナーバージョンアップグレードとなります ところで、スループットを向上させるために、DPDK または AF_XDP も検討してみてはいかがでしょうか? Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp => TCPとUDPの送信パフォーマンス iperf3 を使用して TCP パケットを送信する場合、各 TCP パケットは 128 KB であり、パケットは ENETC ハードウェアの LSO 機能によって断片化されます。SO、TCP 転送パフォーマンスが向上します。 iperf3 は、UDP ソケットを作成するときに UDP_SEGMENT を有効にしません。したがって: - 各 UDP パケットのサイズは、およそ MTU サイズ (≈1500 バイト) です。 - 同じデータ サイズの場合、UDP は TCP よりも多くのパケットを送信する必要があります。 パケット数の増加 → カーネルプロセッシングの増加 → LSO を使用した TCP と比較してパフォーマンスの低下。 => TCP の場合、受信が送信に比べて大幅に低いのはなぜですか? - Linux カーネルでは TX パスと RX パスが対称ではないため、カーネル内の各 RX パケットと各 TX パケットのプロセッシング時間は異なります。また、TCP は送信時に LSO オフロードを使用しています。 - RSC はカーネル内でデフォルトで有効になっていません。ENETC の RSC が適切に動作するように、TCP タイムスタンプを無効にする必要があります。現在、i.MX95 の RSC はデフォルトで無効になっています。 a) i.MX95(レシーバ)のRSCを有効にする: ethtool -K eth1 大容量受信オフロードオン b) TCPタイムスタンプを無効にする(送信側): sysctl -w net.ipv4.tcp_timestamps=0 sysctl -p /etc/sysctl.conf RSC を有効にすると、レシーバの TCP パフォーマンスが向上します。 さらに、より高いスループットを得るためにジャンボ フレームを使用することもできます。(最新リリースを実行していることを願います)。 # 両側のMTUを9000に変更します IPリンク設定 dev eth1 mtu 9000 # イーサネット ドライバの RX バッファの長さを変更します。 ethtool -G eth1 受信バッファ長 16384 マルチストリーム モードでは、8 ~ 10 Gbps の UDP RX/TX が確認できます。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp こんにちは、 私は今のところUDPだけに興味があり、TCPには興味がありません。そして、オフロードは メカニズムはUDPには適用されません MTU を 9000 に設定してジャンボ フレームを有効にしようとしましたが、制限の 1500 を超えたというエラーが表示されます (カーネル バージョン 6.12.3 を使用しています) よろしくお願いいたします。 アブデルモナエム Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp RSC 設定により UDP パフォーマンスも向上します。 ENETC のジャンボ フレームの変更/修正は、2 週間以内にリリースされる LF-Q4 で利用可能になる予定です。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp わかりました、これを試してみます、そして結果がどうなったかお伝えします、 LF-Q4 の Linux カーネル バージョンを詳しく教えていただけますか?先ほど言ったように、私は 6.12.3 を使っていますが、シリコン リビジョンが A1 なので上位バージョンに移行できません。B0 リビジョンにアップグレードする必要があるかどうかを知る必要があります。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp 問題はありません。iperf で 1 つのフローだけで 5Gbps の並列フローで 9、8Bps で 10Gbps まで行くことができますが、大きな問題は UDP です。モノフローでは 2Gbps でフレーム損失はなく問題ありませんが、並列フローでは 5、5Gbps で 42% の損失があります。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp AF_XDP や DPDK が 46% の損失を 0% に減らすのに役立つとは思えません。また、IRQ の親和性も検証したところ、10G インターフェースには 6 つの IRQ があり、それぞれが CPU に影響を与えていることがわかりました。テスト中に CPU 負荷の問題は発生しませんでした。1 つの CPU の最大 CPU 負荷は 40% です。フレームが失われ続ける理由がまだわかりません。使用しているカーネル バージョンがジャンボ フレームをサポートしていないことが原因かもしれません。 あなたの側(NXP)で10Gインターフェースのパフォーマンステストは実施しましたか?あなたの側でテストして、私と同じ問題があるかどうかを確認する必要があると思います。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp AF_XDP または DPDK はカーネル ネットワーク スタックを使用しません。 DPDK には特別なドライバがあり、ユーザー空間でのみ動作します。ネットワークとパケットプロセッシングに高度に最適化されています。すべての IP パケットに対して非常に高速なパフォーマンスをCANで提供できます。以下のサイトで確認することができます。 第10章: https://www.nxp.com/docs/en/reference-manual/RM00293.pdf Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp このテストは、シリコン リビジョン A1 または B0 で実行されます。 このテストに使用されたカーネル バージョン 6.12.49 が B0 にのみ適用可能か、それとも A1 にも適用可能かを確認しますか? このカーネル バージョンは BSP 配信には表示されません。最新のものは 6.12.34 ですhttps://www.nxp.com/pages/alpha-beta-bsps-for-microprocessors:IMXPRERELEASES Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp 新しいカーネル ツリーと変更は次の場所で入手できます。 https://github.com/nxp-imx/linux-imx/commits/lf-6.12.49-2.2.0 新しい LF リリースでは A1 サポートが削除されました。 次のオプションがあります。 1. カーネルを個別にビルドし、ビルド内のカーネルのみを置き換えます。(うまくいくかもしれない) 2. マーケティングお問い合わせにボードを B0 に交換してもらい、LF-Q4'2025 リリースを実行できるように SO CAN します。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp これらの行からは理解できません: 単一 UDP ストリーム送信 (1500 MTU): 2 Gbps (単一ストリームで MTU 1500 の送信では 2 Gbps になるようです) マルチ UDP ストリーム送信 (1500 MTU): 10 Gbps (これは、マルチ ストリームで MTU 1500 の送信では 10 Gbps になるようです) 単一 UDP ストリーム送信 (9000 MTU): 8.2 Gbps (単一ストリームで MTU 900 の送信では 8.2 Gbps になるようです) 単一 UDP ストリーム受信 (9000 MTU): 3.9 Gbps (単一ストリームで MTU 9000 の Rx では 3.9 Gbps になるようです) マルチ UDP ストリーム受信 (9000 MTU): 10Gbps (マルチストリームの MTU 9000 の Rx では 2Gbps になるようです) 私には見えません: 単一UDPストリーム受信(1500 MTU) マルチUDPストリーム受信(1500 MTU) Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp わかりました。念のため、受信側で MTU = 1500 でテストを行ってください。この新しいバージョンで私と同じ結果が得られるか知りたいです。また、テストでは送信を 1500、受信を 9000 に設定していますが、これでは何も変わりません。両側で 1500 になっているようなものです。ジャンボ フレームをテストする必要がある場合は、両側で 9000 にする必要があります。次の構成でテストをやり直してください。 1- モノおよびマルチストリームで両側に MTU = 1500 の RX/TX 2- モノおよびマルチストリームで両側に MTU = 9000 の RX/TX よろしくお願いします Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp はい、このようにして結果がテストされました。 MTU はすべてのCASEで両側で同じでした (両方とも 1500 または両方とも 9000) Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp 添付資料参照 また、A1 SOCでも実行していることにも注意してください。 UBOOT ログ: - U-Boot 2025.04-g8c1de2e1deca(2025年5月9日 - 15:29:26 +0000) CPU: i.MX95 rev1.1(1800MHz) CPU: オートモーティブ温度グレード (-40℃~125℃)、30℃ LM ブート理由: sw、オリジン: 2、エラー: 1 LM シャットダウン理由: sw、発生元: 2、エラー: 1 モデル: NXP i.MX95 19X19 ボード DRAM: 15.8ギブ --- SMログ >$ 情報 SM バージョン = ビルド 633、コミット c37b26da SM 構成 = mx95evk、mSel=0 ボード = i.MX95 EVK、属性 = 0x00000000 シリコン = i.MX95 A1 ブートモード = 通常 ブートデバイス = MMC1 ブートステージ = プライマリ ブートセット = 1 ECID = 0x6E5F04BA0000000500041D0899123F81 PMIC 0 (0x08) = 0x20、0x09、0x10、0x00、0x01 PMIC 1 (0x2A) = 0x54, 0x22, 0x00, 0x0B PMIC 2 (0x29) = 0x55, 0x22, 0x00, 0x0A コンパイラ = gcc 14.2.1 20241119
View full article
为什么在 S32K3 模块中添加 EMCEM 会导致硬故障处理程序? 我想在当前代码中添加 EMCEM,但添加后发现它要进入硬故障处理程序。但是,如果我删除 EMCEM,我的代码就会恢复工作状态。 我试着关闭故障组和 DCM 故障,看看问题是否是由 EMCEM 的检测引起的,但还是不行。 我尝试调整 FREERTOS 的 TOTAL HEAP SIZE = 32768、TIMER TASK STACK DEPTH = 2048 和 QUEUE REGISTRY SIZE = 10,但都不起作用。 消息显示 " 总线故障," 但是在我添加 EMCEM 模块之前,所有功能都运行良好,没有总线故障。我不知道为什么要这么说。 Re: Why does adding EMCEM to the S32K3 module cause a hard fault handler? 配置 EMCEM 时,我没有配置时钟。我只添加了 EMCEM 模块,并添加了 `eMcem_Init(&eMcem_Config_0)`。不过,我检查了时钟配置,显示 "ERM0_CLK = 40 MHz"。这样做对吗? 然后我发现问题出在 `eMcem_Erm_Init` 的 `SAFETYBASE_REG_WRITE32( addr, ERM_SR_CLEAR_VAL_U32 );` 操作中。如果我注释了 `SAFETYBASE_REG_WRITE32( addr, ERM_SR_CLEAR_VAL_U32 );` ,就不会出现 `HARD FAULT HANDLER` 错误。但是,这是 RTD 驱动程序,我认为我不应该修改它。 Re: Why does adding EMCEM to the S32K3 module cause a hard fault handler? 嗨,@Allen_863、 故障似乎发生在 ERM 初始化过程中。能否确认 ERM 时钟是否被禁用? 如果时钟已启用,请提供有关故障的其他详细信息,以便我们进一步调查。 https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K312-HARDFAULT-Handling-Interrupt-DS3-5-RTD300/ta-p/1806259   https://community.nxp.com/t5/S32K-Knowledge-Base/How-To-Debug-A-Fault-Exception-On-ARM-Cortex-M-V7M-MCU-S32K3XX/ta-p/1595570   https://community.nxp.com/t5/S32K-Knowledge-Base/Fault-handling-on-S32K14x/ta-p/1114447 BR,丹尼尔 Re: Why does adding EMCEM to the S32K3 module cause a hard fault handler? 我检查了 MC_ME PRTN1_COFB0_STAT 的第 23 位,发现它为 0,然后找到了 PRTN1_COFB0_REQ23 的开关。 感谢您的帮助。 Re: Why does adding EMCEM to the S32K3 module cause a hard fault handler? 嗨,@Allen_863、 在 eMCEM 和 ERM 初始化之前,能否在 MC_ME PRTN1_COFB0_STAT 寄存器中检查 ERM 时钟是否运行? 谢谢! BR,丹尼尔
View full article
T1024 PCSリンクアップデバッグ この記事では、お客様のイーサネットPCSがリンクアップできなかった場合に、T1024に基づいて段階的にデバッグする方法を説明します。 多くのイーサネットはSerDesによって設定されるため、リンクエラーの原因がSerDesまたはPCS自体であるかを確認するにはどうすればよいでしょうか。この記事ではいくつかのヒントを提供します。 SerDesレーン&ピンズ まず、使用しているSerDesレーンを確認してください。SerDesレーンを確認するには、QorIQ T1024リファレンス・マニュアルを参照してください。以下の設定のように、ユーザーケースがRCW[128:136]にSRDS_PRCTL_S1=0x05Bと設定される場合、アプリケーションはSGMII.m1とSGMII.m2を利用します。 この記事では、SGMII.m1をユーザーケースとして検討します。次に、SGMIIはフレームマネージャのMAC1に配置されます。 SerDesのレーン割り当てを確認して、SerDesのレーンを確認してください。SGMII.m1の場合、特定のレーンピン名はSD1_TX3P/NとSD1_RX3P/Nで、レーン3として認識されます。 MAC番号はSerdesのレーン番号とは関係ありません。ピンを入手するには特定の表を確認する必要があります。 このイーサネットを使用したハードウェアテストは、ピンに関連している必要があります。以下のコンポーネントのピン番号を参照してください。 このレーンのRXピンのアイダイアグラムをテストすると、周波数が正しいかどうかを確認できます。このレーンをSGMII 1.25Gに設定すると、アイダイアグラムで速度が正しく設定されていることを確認できます。 上のアイダイアグラムは、SerDesの速度を示しています。 ループバックを正しく行うことは非常に重要ですが、他のデバイスに接続することも可能です。 SerDesのリンクアップを確認する方法 以下のQorIQ T1024リファレンス・マニュアルでレーンレジスタをご確認ください。 このユーザーケースはレーン3となるため、レーン3のレジスターを読み出して、SerDesレーン3が正常に動作するかどうかを確認してください。以下のように。 # レーン 3 md.l 0xFFE0EA8C0 1 - aa611080 # LN3GCR0 md.l 0xFFE0EA8C4 1 - 101c4019 # LN3GCR1 md.l 0xFFE0EA8CC 1 - 00002800 # LN3SSCR0 md.l 0xFFE0EA8D0 1 - 0f0fc01f # LN3RECR0 md.l 0xFFE0EA8D4 1 - 0f0f0fa8 # LN3RECR1 md.l 0xFFE0EA8D8 1 - 00003006 # LN3TECR0 md.l 0xFFE0EA8E0 1 - 39000400 # LN3TTLCR0 md.l 0xFFE0EA8E4 1 - 00000000 # LN3TTLCR1 md.l 0xFFE0EA8F4 1 - 00000000 # LN3TCSR1 md.l 0xFFE0EA8FC 1 - 04000000 # LN3TCSR3 SerDes_LNnTCSR3は重要なデバッグテストレジスタであり、CDR_LCKはCDRがロックされているかどうかを確認するためのものです。 CDR_LCK=0は、有効なビットストリームが検出されないことを意味します。テストとして、レーンをループバックモードLN2TCSR3[LPBK_EN]=01に設定できます。CDRはデジタルループバックモード(内部ループバック)でロックされる必要があります。そうでない場合、デバイス自体に問題がある可能性があります。 そのため、LPBK-ENを「01」ループバックモードに設定できれば、SerDes自身のTX信号とRX信号がループバックモードに設定され、外部信号が除外されます。CDR_LCKが1の場合は、SerDes自体が正常に機能します。とにかく、CDR_LCKは常に設定されているはずです。 "md.l 0xFFE0EA8FC 1 - 04000000 # LN3TCSR3"では、CDR_LCK=0となっており、SerDesレベルの問題が疑われます。 通常の状態では、以下の通りである必要があります: => md fe0ea8fc 1 fe0ea8fc: 08000000 PCSリンクアップを確認する方法 MACおよびPHYレジスタは、T1024DPAArm、QorIQ T1024 データ・パス・アクセラレーション・アーキテクチャ (DPAA) リファレンス・マニュアルから詳細を取得する必要があります。 DPAARMでオフセットアドレスを見つけてください。 SGMIIのMACアドレスはオフセット+0x1000でなければなりません。 T1024DPAARMの6.5.4 MDIOイーサネット管理インターフェイス に従って、MDIOレジスタを読み取ってください。 このアプリケーションでは、SGMII1、MAC1のMAC1アドレスはFM1_mEMAC1: 4E_0000であり、したがってFM1_mEMAC1 MDIOレジスタは4E_1000hになります。 ユーザーケースでは、プロトコルはSGMIIで、T1024DPAARMの6.5.4.3 22条項読み取りフローに従う必要があります。 6.5.4.3 第22条 読み出しフロー 1) MDIO_CFG[BSY] = 0になるまで待ちます。 2) MDIO_CTLに適切なPHY_ADDRとREGISTER_ADDRを設定し、ビット16をセットして書き込んでください。 3) MDIO_CFG[BSY] = 0になるまで待ちます。 もしアドレスされた PHY が応答しなければ、MDIO_CFG[MDIO_RD_ER]が設定されます。 それ以外の場合は、MDIO_DATAの値を読み取ってください。 このユーザーケースでは、MDIO_SGMII_SRを読むと、QorIQ T1024リファレンス・マニュアルの30.5.5 1000Base-KX PCS MDIO メモリマップ/レジスタ定義にレジスタ定義が見つかります 重要なビットは以下の通りです。 こちらがユーザーケースの結果です: MDIO_SGMII_SRを読み取る際は、遅延時間の要件を満たすことができる手動入力を使用してください。 手動で入力できない場合は、フローに従い、「MDIO_CFG[BSY] = 0」を待ってから、MDIO_DATAの値を読み取ってください。 SGMII1 MDIOレジスタを読み取ってください === セルデステスト1 ===。 0xFFE0EA8FC 値: 0x08000000 PCS0レジスタ 0xFFE4E1030-0xFFE4E103Cをダンプしてください: 0x40001408 0x00000000 0x00001340 0x00001340 0x8002、devmem 0xFFE4E1034 32 0x8002を選択 読み取り:0x00000083 0x8003, devmem 0xFFE4E1034 32 0x8003を選択 読み取り:0x0000E400 0x8001、devmem 0xFFE4E1034 32 0x8001を選択 Serdes0 ステータス: 0x00000029 0x8001 devmem 0xFFE4E1034 32 0x8001を選択 Serdes0 ステータス: 0x0000002D 0x8001, devmem 0xFFE4E1034 32 0x8001を選択 Serdes0 ステータス: 0x0000002D 最初はリンクされておらず、LINK_STATは0(0x00000029)で、次に1(0x0000002D)に変わります。 これで、PCSリンクが確立され、HWループバックチェックが完了しました。
View full article
RT1021:使用 ROM_FLEXSPI_NorFlash_Erase() 擦除闪存扇区 你好 在 EVK 上,我试用了 SDK 25.03.00 中的 evkmimxrt1020_fsl_romapi 示例,它工作正常。 然后,我自己在另一个项目中进行了尝试。它失败了。 ROM_FLEXSPI_NorFlash_Erase() 返回 6001,表示 kStatus_ROM_FLEXSPI_InvalidSequence。 我不知道是哪个顺序。 这两个项目使用完全相同的结构: config->memConfig.tag = FLEXSPI_CFG_BLK_TAG; config->memConfig.version = FLEXSPI_CFG_BLK_VERSION; config->memConfig.readSampleClksrc=kFLEXSPIReadSampleClk_LoopbackInternally; config->memConfig.serialClkFreq = kFLEXSPISerialClk_30MHz; /* Serial Flash Frequencey.See System Boot Chapter for more details */ config->memConfig.sflashA1Size = FLASH_SIZE; config->memConfig.csHoldTime = 3U; /* Data hold time, default value: 3 */ config->memConfig.csSetupTime = 3U; /* Date setup time, default value: 3 */ config->memConfig.deviceType = kFLEXSPIDeviceType_SerialNOR; /* Flash device type default type: Serial NOR */ config->memConfig.deviceModeType = kDeviceConfigCmdType_Generic; config->memConfig.columnAddressWidth = 0U; config->memConfig.deviceModeCfgEnable = 0U; config->memConfig.waitTimeCfgCommands = 0U; config->memConfig.configCmdEnable = 0U; /* Always enable Safe configuration Frequency */ config->memConfig.controllerMiscOption = FSL_ROM_FLEXSPI_BITMASK(kFLEXSPIMiscOffset_SafeConfigFreqEnable); config->memConfig.sflashPadType = kSerialFlash_4Pads; /* Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal */ config->pageSize = FLASH_PAGE_SIZE; config->sectorSize = FLASH_SECTOR_SIZE; config->blockSize = FLASH_BLOCK_SIZE; config->ipcmdSerialClkFreq = kFLEXSPISerialClk_30MHz; /* Clock frequency for IP command */ /* Fast Read Quad I/O */ config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_READ + 0U] = FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xebU, RADDR_SDR, FLEXSPI_4PAD, 0x18U); config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_READ + 1U] = FSL_ROM_FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06U, READ_SDR, FLEXSPI_4PAD, 0x4U); /* Read Status */ config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_READSTATUS] = FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05U, READ_SDR, FLEXSPI_1PAD, 0x1U); /* Write Enable */ config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_WRITEENABLE] = FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06U, STOP, FLEXSPI_1PAD, 0x0U); /* Page Program - quad mode */ config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM + 0U] = FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x32U, RADDR_SDR, FLEXSPI_1PAD, 0x18U); config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM + 1U] = FSL_ROM_FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_4PAD, 0x04U, STOP, FLEXSPI_1PAD, 0x0U); /* Sector Erase */ config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_ERASESECTOR] = FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD7U, RADDR_SDR, FLEXSPI_1PAD, 0x18U); /* Block Erase */ config->memConfig.lookupTable[4U * NOR_CMD_LUT_SEQ_IDX_ERASEBLOCK] = FSL_ROM_FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8U, RADDR_SDR, FLEXSPI_1PAD, 0x18U); 此外,在这两个项目中,我在调用 ROM_FLEXSPI_NorFlash_Erase() 之前立即验证了 LUT。这些值完全匹配(我还打印了未打包的值): 0: a1804eb - 1 0 eb - 2 2 18 1: 26043206 - c 2 6 - 9 2 4 2: 0 - 0 0 0 - 0 0 0 3: 0 - 0 0 0 - 0 0 0 4: 406 - 1 0 6 - 0 0 0 5: 0 - 0 0 0 - 0 0 0 6: 0 - 0 0 0 - 0 0 0 7: 0 - 0 0 0 - 0 0 0 8: d33e7f5c - 1f 3 5c - 34 3 3e 9: 450ef151 - 3c 1 51 - 11 1 e 10: 46d155d4 - 15 1 d4 - 11 2 d1 11: 73a1e822 - 3a 0 22 - 1c 3 a1 12: 47bf75f6 - 1d 1 f6 - 11 3 bf 13: a1f5786b - 1e 0 6b - 28 1 f5 14: ed50a7ab - 29 3 ab - 3b 1 50 15: fdf85725 - 15 3 25 - 3f 1 f8 16: 3de09612 - 25 2 12 - f 1 e0 17: 73b47a1d - 1e 2 1d - 1c 3 b4 18: 5cd51237 - 4 2 37 - 17 0 d5 19: 86c0494b - 12 1 4b - 21 2 c0 20: 36343fa5 - f 3 a5 - d 2 34 21: 60d6ddf4 - 37 1 f4 - 18 0 d6 22: fa5745bf - 11 1 bf - 3e 2 57 23: 45fbf74d - 3d 3 4d - 11 1 fb 24: 755471dc - 1c 1 dc - 1d 1 54 25: d5a578c4 - 1e 0 c4 - 35 1 a5 26: 11330943 - 2 1 43 - 4 1 33 27: de5431f6 - c 1 f6 - 37 2 54 28: 2404049f - 1 0 9f - 9 0 4 29: 0 - 0 0 0 - 0 0 0 30: 0 - 0 0 0 - 0 0 0 31: 0 - 0 0 0 - 0 0 0 32: 81750f57 - 3 3 57 - 20 1 75 33: c25ccbf0 - 32 3 f0 - 30 2 5c 34: 8235cd11 - 33 1 11 - 20 2 35 35: 107dccd7 - 33 0 d7 - 4 0 7d 36: c3dde31f - 38 3 1f - 30 3 dd 37: 52185d05 - 17 1 5 - 14 2 18 38: c558911f - 24 1 1f - 31 1 58 39: 6d076d06 - 1b 1 6 - 1b 1 7 40: ad5b6f74 - 1b 3 74 - 2b 1 5b 41: c5d5fe5e - 3f 2 5e - 31 1 d5 42: 80654f09 - 13 3 9 - 20 0 65 43: 407951c6 - 14 1 c6 - 10 0 79 44: b456e9a3 - 3a 1 a3 - 2d 0 56 45: 41a8df34 - 37 3 34 - 10 1 a8 46: f31f6b95 - 1a 3 95 - 3c 3 1f 47: 87dddb44 - 36 3 44 - 21 3 dd 48: 3d917153 - 1c 1 53 - f 1 91 49: 1d205437 - 15 0 37 - 7 1 20 50: 48256685 - 19 2 85 - 12 0 25 51: 546d7544 - 1d 1 44 - 15 0 6d 52: 75741a5c - 6 2 5c - 1d 1 74 53: 7115f5fd - 3d 1 fd - 1c 1 15 54: 4cdff553 - 3d 1 53 - 13 0 df 55: 27c647eb - 11 3 eb - 9 3 c6 56: 7e4c0413 - 1 0 13 - 1f 2 4c 57: 303f0784 - 1 3 84 - c 0 3f 58: 25f045b8 - 11 1 b8 - 9 1 f0 59: a5898157 - 20 1 57 - 29 1 89 60: 4715e747 - 39 3 47 - 11 3 15 61: 554858c4 - 16 0 c4 - 15 1 48 62: cd44c644 - 31 2 44 - 33 1 44 63: 50597dd9 - 1f 1 d9 - 14 0 59 我深信一定存在差异,但我已不知道该去哪里寻找。 两个项目都在 RAM 中运行,时钟配置完全相同。 我应该把问题的重点放在哪里? 此致问候 最大值 i.MX RT102x Re: RT1021: Erasing flash sector using ROM_FLEXSPI_NorFlash_Erase() 您好@Sam_Gao 我解决了它。问题出在错误的擦除地址上,但错误代码kStatus_ROM_FLEXSPI_InvalidSequence却让我想到了一个完全不同类型的问题,因此我在相当长的一段时间里都把注意力放在了错误的事情上。 顺祝商祺! 最大值 Re: RT1021: Erasing flash sector using ROM_FLEXSPI_NorFlash_Erase() @mastupristi https://mcuxpresso.nxp.com/api_doc/dev/4490/a00017.html#ga05dc3f1fb8704a958f48f18ad04c2f0f 这似乎是无效序列中的一些问题。我能知道这两个项目是否都来自恩智浦的官方示例,并在同一个EVK板上为你进行了测试吗?
View full article
S32K322 で can1 を core1 に割り当てる方法 こんにちはNXPサポーター、 現在、MCALでS32K322を使用していますが、Core0でCAN0を、Core1でCAN1を実行したいと考えています。 私が理解している限りでは、まず EB で CAN と Platform の両方の MultiCore サポートを有効にし、EcucPartition 関連のモジュールを適切に構成する必要があります。 実行時に、Core1 の main 関数で Platform_Init() と Can_43_FLEXCAN_Init() を呼び出します。 Core1 で CAN1 を実行するにはこれで十分ですか、それとも CAN1 を Core1 に適切に割り当てるために他に何かする必要がありますか? ありがとうございます! よろしくお願いいたします クーパー24025
View full article