Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
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
RDBESSK358BMU 以太网配置 我目前正在开发恩智浦的 RDBESSK358BMU,该主板有 S32K358 和 GMAC 连接到 Marvell Alaska 88e1510 收发器,还有一个以太网千兆端口(附有硬件方案)。 我想知道,在这种配置下,我是否可以使用带有 lwip_baremetal 示例的 tcpip 协议栈。 使用 Gmac_Loopback 的示例起作用了,但是 lwip_baremetal_example 在 Gmac_initDMA 上失败了,就像我在其他文章中看到的那样,这是一个时钟参考问题,但我正在使用的主板上有外部时钟,所以我不明白如何使这个示例适应我的硬件。有人能提供帮助吗?谢谢! Screenshot 2026-04-22 103818.png   Re: RDBESSK358BMU Ethernet configuration 你好@gferretts、 是的,我就是这么发现的。你更快 您可以从 RTD 5.0.0 复制缺失的定义: #define DCM_GPR_DCMRWF1_MAC_TX_RMII_CLK_LPBCK_EN_MASK (0x80000000U) #define DCM_GPR_DCMRWF1_MAC_TX_RMII_CLK_LPBCK_EN_SHIFT (31U) #defineDCM_GPR_DCMRWF1_MAC_TX_RMII_CLK_LPBCK_EN_WIDTH (1U) #define DCM_GPR_DCMRWF1_MAC_TX_RMII_CLK_LPBCK_EN(x) (((uint32_t)(((uint32_t)(x)))) << dcm_gpr_dcmrwf1_mac_tx_rmii_clk_lpbck_en_shift)) & dcm_gpr_dcmrwf1_mac_tx_rmii_clk_lpbck_en_mask) ......只是注意到 RTD 的解决方法使用了 |= 关于 Eth_T_InitPhys()--是的,这也是正确的模式--这个例程值得深入检查。 顺祝商祺! 帕维尔 Re: RDBESSK358BMU Ethernet configuration 非常感谢@PavelL!我注意到 GMAC 速度仍为 100 米,因此将其设置为 1G,以匹配 125MHz 时钟,现在它可以在端口 7 上正常 ping 和 TCP echo! 我还注释了"Eth_T_InitPhys();" ,因为我的 PHY 不在 PHY 列表中,它是通过频带配置的。 Screenshot 2026-04-24 121606.png   Screenshot 2026-04-24 121640.png   Re: RDBESSK358BMU Ethernet configuration 你好@PavelL,感谢您的回复。我在使用 lwip 时仍然遇到问题,我也有 s32k3x8evb-q289 但我没有 TJA 子板所以我需要在 S32K358BMU 上测试以太网。 我使用的是"TCPIP STACK 1.0.3 版 RTD3.0.0D2306", 我附上我的 .mex我尝试复制你显示的内容(时钟配置、GMAC 外设和引脚排列)的配置文件和 " 设备.c "用引脚上的 ETH_RESET。 因为我的 RTD 没有环回定义,所以我也尝试手动复制您的 RTD 回转: void device_init(void) { uint16 pitPeriod; /* 为 DCM 模块中的 EMAC 设置 RMII 配置 */ //ip_dcm_gpr->dcmrwf1 = (ip_dcm_gpr->dcmrwf1& ~dcm_gpr_dcmrwf1_emac_conf_sel_mask) | dcm_gpr_dcmrwf1_emac_conf_sel(1u); /* 手动 RTD 转换 */ IP_DCM_GPR->DCMRWF1 = 0x80000040; IP_DCM_GPR->DCMRWF3 = 0x2000; ....}   在这种配置下,示例能够在不超时的情况下实现 Gmac_Ip_InitDMA,并到达主环路,但从我的电脑上 ping 192.168.0.200 结果却是无法连接主机和 ping 超时。 我用示波器验证了 RXC 的存在(当 Phy 协商 100Mbps 时为 25MHz 或 1Gbps 时为 125MHz),因此有一些流量来自 ETH 端口。同时在 TXC 上我现在也能看见 125MHz 但是 TXD0,1 从未被触发。 我希望你们能找到问题所在。   Re: RDBESSK358BMU Ethernet configuration 你好@gferretts、 对于延迟回复,我深表歉意。 遗憾的是,我没有 RD-BESSK358BMU,因此无法为您改编 lwip 示例。总之,我为 S32K358EVB-Q289 和 RGMII 100Mbps 修改了 lwip 示例,没有出现任何问题。让我分享一下我在采用过程中使用的基本步骤(请注意,某些细节可能与 S32K3 RTD / TCPIP 版本有关): 配置工具 - 引脚 采用引脚来适应板的接线 将回转速率设置为最快设置(如适用 应为 RGMII 输出 TX_CLK 配置工具 - 时钟 GMAC 时钟应该是这样的(注意 GMAC 1Gbps:25MHz -> 125MHz;50MHz -> 250MHz)。 PavelL_0-1777015189023.png 配置工具 - GMAC 驱动程序 ETH_MAC_LAYE_TYPE_XGMII, REDUCED, 设置正确的速度 ETH_MAC_LAYER_SPEED_xxx 源代码-设备.c 在 device_init() 的第一行添加 RTD 解决方法 /* 设置 DCM 模块中 GMAC0 的 RGMII 模式配置 */ IP_DCM_GPR->DCMRWF1 |= DCM_GPR_DCMRWF1_MAC_CONF_SEL(0x01) | DCM_GPR_DCMRWF1_MAC_TX_RMII_CLK_LPBCK_EN_MASK; /* 设置 RGMII RX_CLK 直接从 DCM 模块中 GMAC 的 RX_CLK 引脚到达 */ IP_DCM_GPR->DCMRWF3 |= DCM_GPR_DCMRWF3_MAC_RX_CLK_MUX_BYPASS(0x01); 源代码 - test.c 或者,注释掉在一段时间后关闭 TCP/IP 协议栈的部分 这部分比较简单。 从原理图上看,您需要定义 GPIO PTC1 以向 PHY 提供有效的 RESET 脉冲信号,并等待一段时间再初始化 GMAC。PHY 通常在非托管模式下独立工作,只是通过引脚绑扎进行配置。有时,PHY 需要通过 SMI 进行管理。 您使用的是哪个版本的 S32K3 RTD 和哪个版本的 TCP/IP 协议栈? 顺祝商祺! 帕维尔
View full article
S32K148 FlexCAN2が動作しない こんにちは、 Eclipse OpenBSWプロジェクトを使用しながら、S32K148でFlexCAN2を有効にしようとしています。 FlexCAN0は正常に動作していますが、FlexCAN2は有効なフレームを送信しません。 構成: MCU: S32K148 CANインスタンス: FlexCAN2 ピン: PB12 → CAN2_RX (ALT4) PB13 → CAN2_TX (ALT4) 外部トランシーバ:MCP2551(5V電源) バス終端:合計約60Ω ビットレート:500 kbps(従来型CAN) 観察された行動: バス上ではエラーフレームのみが観測される ビットスタッフィングエラーが発生する ACKは受信されませんでした。 質問: MCP2551(5Vトランシーバ)は、S32K148 FlexCANのI/Oレベルと互換性がありますか? PB12/PB13のALT4はFlexCAN2の正しいピンですか? FlexCAN0とFlexCAN2の間には、考慮すべき特定のクロックまたは構成上の違いはありますか? どのようなご指導もいただければ幸いです。 よろしくお願いします。 Re: S32K148 FlexCAN2 not working こんにちは、 @sousou54 さん。 1.MCP2551との互換性に問題は見当たりません。 2. はい。 3. 追加の設定は不要です。CAN0/1/2は同じクロックで動作します。 ノードのテストを段階的に試してみてください... トランシーバを使わずにTX/RXピン同士を接続してメッセージを送信してみてください。ACKが欠落しているため、メッセージが繰り返し表示されるはずです。TXエラーカウンタは0x80で、モジュールはエラーパッシブ状態です。それ以外の表示が出た場合は、PIN設定が間違っています。 TX/RXピンをトランシーバに通常通り接続し、バスからは切り離してください。メッセージを送る。上記と同じ画面が表示されるはずです。そうでない場合、トランシーバが無効になっているか、または終了していない可能性があります。 MCP2551のデータシートを見ると、RsピンをVssに接続して高速モードを選択する必要があることがわかります。 トランシーバを他のノード(例:CANツール)、メッセージの送受信。エラーが検出された場合、おそらくCANビットのタイミングが正しくないと考えられます。すべてのノードが同じビットレートとサンプルポイントを使用していることを確認してください。 以下のツールを使用できます: MPC5xxx/S32Kxx/LPCxxxx: CAN / CAN FD ビットタイミング計算。 最後に、これはカスタムボードですか、それともS32K148EVBを使用していますか?カスタムボードの場合は、 AN5426「S32K1xxのハードウェア設計ガイドライン」に記載されている接続を確認してください。 よろしくお願いします、 ジュリアン
View full article
RDMMA845X issues with Win 7 Pro. As a retired electronics man (but total newbie with PC + dev. boards) I hope this isn't too much of a stupid question. I have bought the above board. It works great on a Win 8.1 PC, but not on the Win 7 Pro PC - which is a shame because that's the one in my hobby lab! Win 7 finds the USB device and the Demo Screen correctly identifies the chip in use, etc. But hitting any of the 'lit' buttons just generates an Exception Handler window and I can go no further than that. I don't know what Ex Handler means so am at a loss! Wisdom greatfully accepted. Tks. John Accelerometers Re: RDMMA845X issues with Win 7 Pro. As an addition to my original post I should say that the exception window calls this an "unhandled exception". After some internet research I updated the .net framework to the latest ver (4.6.2) in case that was the cause. But it is not! Tks. J 
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
RT1040 ADCの問題 IMXRT1040RMに従い、ADC入力信号のGPIOキーパーを無効にします。 ADC 入力 gpio が NC の場合、ADC 読み取り値は異常であり、NC 入力ピンはマルチメーターで測定して 0V になります。 NTC 温度センサにコネクテッドされた別の ADC チャネルがあります。ADC 読み取り値は正常です。 ADC GPIOピン構成をデフォルトに設定すると( IOMUXC_SetPinConfig(ADC_PIN、0x10B0U))、これはキーパー有効をデフォルトで設定し、NC である入力チャネルの ADC 読み取り値はほぼゼロになります。今回は仕事です。 SO、ADC 入力信号の GPIO の Keeper 機能を無効にする必要がありますか? アナログ(ADC、CMP、DAC、オペアンプ) Re: RT1040 ADC issues こんにちは、メイ: モジュールがコネクテッドではない場合、ADC はフローティングになるように設計されています。モジュールはオプションです。 「ECKMIMXRT1040_ADC_12B1MSPS_SAR_POLLING」に従って、GPIO_AD_B1_04 の ADC 入力ピンをキーパー機能が無効に設定されます。 NC ADC 入力ピンは 0V として測定されますが、キーパーが無効になっている場合、ADC 読み取り値は 0.6 または 0.7V になります。 キーパーがデフォルトで有効になっている場合、ADC の読み取り値はほぼ 0V になります。この方法により、ADCの読み取り値をモジュール検出として使用することができます。 では、キーパーを有効にするとどのような副作用があるのでしょうか。 オプション モジュールの自動検出が必要なので、NC である ADC 入力ピンを読み取るにはどうすればよいですか? Re: RT1040 ADC issues こんにちは@Xiao_Liuさん 弊社の製品にご興味をお持ちいただき、またコミュニティをご利用いただき誠にありがとうございます。 ご質問に関してですが、   はい。ADC 入力ピンの場合、キーパー機能を無効にする必要があります。 NXP SDK デモ PIN 設定を参照してください。   ADC チャネルは浮いたままにしないでください。ピンが NC の場合、変換結果は未定義になります。 キーパーを有効にすると、読み取りが安定しているように見えますが、信頼できる解決策ではなく、推奨される解決策でもありません。   お役に立てれば幸いです よろしくお願いいたします。 メイリュー Re: RT1040 ADC issues こんにちは@Xiao_Liuさん 最新情報をありがとうございます。 ADC ピンでキーパーを有効にすることはお勧めしません。キーパーは最後の状態を保持するため、ADC の読み取りが不正確になり、モジュール検出の信頼性が低下する可能性があります。 安定した正確な結果を得るには、ADC が接続されていないときに明確なデフォルト レベルを設定するために外部抵抗を追加することをお勧めします。 よろしくお願いいたします。 メイリュー Re: RT1040 ADC issues こんにちは、メイ わかった。ADC が接続されていない場合は外部プルアップを使用します。 ご協力いただきありがとうございます。 Re: RT1040 ADC issues こんにちは@Xiao_Liuさん 最新情報をありがとうございます。 この投稿があなたの質問への回答である場合は、「解決策として承認」ボタンをクリックしてください。ありがとう! よろしくお願いいたします。 メイリュー
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
IMX8M PLUS LPDDR4 2G互換性 ISSI IS43LQ32512A-046BLI 2GB RAM を実装してみます。キャリブレーション後、2000MHz に設定されたmemcpy SSN armv8_x32 テスト中に RAM が失敗します。 RAM を 1500MHz に設定すると、すべてのテストに合格します。 この LPDDR4 RAM を実装した人はいますか?IMX8M PLUSと全般的に互換性がありますか? i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M ミニ | i.MX 8M ナノ Re: IMX8M PLUS LPDDR4 2G compatibility こんにちは@TMpieye DDR 構成ツールを使用してキャリブレーションを実行していますか?はい、そうであれば。設定ページと失敗ログファイルを共有してください。 BR Re: IMX8M PLUS LPDDR4 2G compatibility IS43LQ32512A-046BLI (ISSI 2GB LPDDR4X SDRAM) は、LPDDR4/LPDDR4X メモリの JEDEC 標準に準拠している限り、 NXP i.MX 8M Plus プロセッサと一般的に互換性があります。ただし、memcpy SSN armv8_x32 テストが 2000 MHz で失敗する (ただし 1500 MHz では成功する) という問題は珍しくなく、根本的な非互換性の問題ではなく、構成、ボード設計、またはキャリブレーションの課題から生じている可能性があります。 互換性確認 i.MX 8M Plus は、最大 4266 MT/s (2133MHz クロック) の LPDDR4/LPDDR4X メモリをサポートし、IS43LQ32512A-046BLI は NXP の仕様に準拠した最大 2133MHz (4266 MT/s データ レート) で動作します。 NXP のコミュニティ フォーラムでは、同様の ISSI LPDDR4X 部品 (例: ご使用のモデルのオートモーティブ バリアントである IS46LQ32512A-046BLA2) が、JEDEC 仕様に準拠している限り、i.MX 8M Plus と互換性があることが確認されています。ユーザーは、適切に構成されていれば問題なく実装できました。 2000MHzでのテスト失敗の潜在的な理由 NXP および組み込みフォーラムでの同様のレポートに基づきます。 タイミング/構成の不一致: i.MX 8M Plus DDR コントローラでは、RAM の SPD/データシートからの正確なタイミング パラメータ (CAS レイテンシ、tRCD、tRP など) が必要です。2000MHz では、キャリブレーションによって ISSI 部品の仕様が完全に最適化されない可能性があります (たとえば、高速では CL=32、RL=14)。1500MHz に下げるとストレスが軽減されて合格しますが、これは最適ではないチューニングを示します。 ボードデザインの問題: トレース長の不一致、インピーダンス エラー、不十分な電力デカップリングなどの信号整合性の問題により、高速動作時に障害が発生する可能性があります。オシロスコープを使用して、DQ/DQS ライン上の反射やノイズを確認します。 キャリブレーションの制限: i.MX 8M Plus は、キャリブレーションに NXP の DDR ツールを使用します。スクリプトまたは設定が Micron/Samsung 参照 (EVK で一般的) に基づいている場合、ISSI の特性と一致しない可能性があります。ISSI 固有のパラメータを使用してキャリブレーションを再実行します。 電力/温度: 2000MHz では、電流消費量が多くなると電圧低下や過熱が発生し、memcpy テスト (連続読み取り/書き込みに負荷をかける) に失敗する可能性があります。 この RAM を実装した人はいますか? はい、文書化された実装があります。 NXPコミュニティ スレッドでは、ユーザーが同様の ISSI LPDDR4X (IS46LQ シリーズなど) をインダストリアル アプリケーション用のカスタム i.MX 8M Plus ボードに統合し、微調整後に最大 2133MHz までの安定した動作を実現しています。 組み込み Linux/BSP 開発者は、Yocto ベースのビルドで ISSI パーツを使用した成功を報告していますが、512M x 32 構成 (16Gbit 密度) を処理するためにカスタム DDR init スクリプトを使用することが多いようです。 問題を解決するための推奨事項 データシートの配置を確認する: ISSI データシート (IS43/46LQ32512A シリーズ) をダウンロードし、タイミング パラメータを NXP の i.MX 8M Plus RM (リファレンス マニュアル、セクション 13.5 DDR コントローラ) と比較します。 RAM の主な仕様: 最大クロック 2133MHz、LVSTL インターフェース、1G x 16 構成 (デュアル チャネル合計 x32)。 キャリブレーションの再実行: ISSI 固有のストレス テストでは、NXP のDDR テスト ツールまたはSCFW DDR 構成ツールを使用します。 1600MHz から開始し、アイ ダイアグラムを監視しながら徐々に 2000MHz まで上げます。 U-Boot/Linux を使用している場合は、正しいタイミングでデバイス ツリー (.dtb) を更新します (例: mx8mp-ddrc-devfreq.dtsi)。 取締役会レベルのチェック: VDDQ = 1.1Vであることを確認する。VDD2 = 0.6V、クリーンなデカップリング(コンデンサをピンの近くに配置) 信号整合性シミュレータ (HyperLynx など) を使用してトレースを確認します。 熱スロットリングを排除するために、より低い温度またはより優れた冷却でテストします。 それでも失敗する場合は: コミュニティまたはチケット システムを通じて NXP サポートに連絡し、キャリブレーション ログとボードの回路図を提供してください。 比較のために、Micron MT53E512M32D2NP (NXP EVK デフォルト) などの検証済み RAM に切り替えることを検討してください。 全体的に RAMは互換性がありますが、2000MHz の障害はセットアップの問題である可能性があります。さらに詳しい情報(キャリブレーション ログやボードの回路図スニペットなど)を共有していただければ、さらにトラブルシューティングをお手伝いできます。 メッセージング アプリ経由で +8526583 (7594) に連絡し、彼から EOL ドキュメントを入手してから推奨事項を作成することをお勧めします。彼はあなたを助けることができます Re: IMX8M PLUS LPDDR4 2G compatibility ご対応ありがとうございます。 添付ファイルで設定.xlsを送信しますそしてテストログ。 Re: IMX8M PLUS LPDDR4 2G compatibility 使用済みのボードでは、3GB (MT53E768M32D2ZW-046 WTC) と 4GB (MT53E1G32D2FW-046 AAT:B) を正常に動作させています。 2000MHz の Micron LPDDR4。 Re: IMX8M PLUS LPDDR4 2G compatibility こんにちは@pengyong_zhangさん 構成ツール V 13.1 でも同じ結果になります。IS43LQ32512A-046BLIの設定が間違っているのでしょうか?正しい設定ファイル(*.dsファイル)をご提供いただけますか?当社のハードウェア設計は、LPDDR4 インターフェースに関する評価ボードの 1:1 コピーです。 敬具 トビアス Re: IMX8M PLUS LPDDR4 2G compatibility こんにちは@TMpieye 以下のリンクを使用して DDR 構成ツールをダウンロードし、2GB DRAM を構成して DDR テストを実行してください。 https://www.nxp.com/design/design-center/development-boards-and-designs/i-mx-evaluation-and-development-boards/config-tools-for-i-mx-applications-processors:CONFIG-TOOLS-IMX BR Re: IMX8M PLUS LPDDR4 2G compatibility こんにちは@TMpieye 以下の設定を使用して DDR テストを実行してください。 pengyong_zhang_0-1769394027487.png BR Re: IMX8M PLUS LPDDR4 2G compatibility 設定例をありがとうございます。すでにこの RAM で試しましたが、まだエラーが発生します。 Re: IMX8M PLUS LPDDR4 2G compatibility こんにちは@TMpieye 不思議ですね。DDR Config Tool v25.12 の失敗ログを共有してください BR Re: IMX8M PLUS LPDDR4 2G compatibility こんにちは@TMpieye DDR Config Tool を使用してストレス テストを実行しましたか?ログ ファイルから見ると、これは Config Tool の出力ではないようです。また、最新のツール バージョン v25.12 を使用してください。 BR Re: IMX8M PLUS LPDDR4 2G compatibility こんにちは@pengyong_zhang ストレステストには、Mscale DDR Tool 3.31 を使用します。他の設定ツールでやってみます Re: IMX8M PLUS LPDDR4 2G compatibility こんにちは@pengyong_zhangさん ストレステストのログはこちらです。4GB ISSI IS43LQ32K01S2A-046BLI でも同じ問題が発生します。 Re: IMX8M PLUS LPDDR4 2G compatibility こんにちは@pengyong_zhangさん 構成ツールでテストを実行すると、合格しました。SO、これは MSCALER ツールのツール問題のようです。多大なるサポートをいただき誠にありがとうございます!
View full article
McuPGOOD_POLARITYControl Configuration Error Reported When EB Updates RTD 7.0.0_QLP03 This McuPGOOD_POLARITYControl configuration item is not found under this path WeiCh_0-1768130067532.png Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh I'm not sure if you can download it, you can try it, if not, contact your agent or FAE for evaluation access. https://www.nxp.com/design/design-center/software/automotive-software-and-tools/real-time-drivers-rtd:AUTOMOTIVE-RTD Senlent_0-1768200790023.png Senlent_1-1768200797066.png Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Where can I download 30.0.0?Will 30.0.0 open a 29.0.0 project? Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh I see that the version of EB Tresos that this version adapts to should be 30.0.0, not the version you are using. Senlent_0-1768199372924.png Senlent_1-1768199522861.png Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh In the download screen there is this hint that you have to change the suffix Senlent_0-1768283803016.png Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 It's already working, thanks! Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 This is the 30.0.0 interface, which still doesn't seem to have this configuration item. WeiCh_0-1768274791066.png Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh The style of your interface is not right, the style of the new version is totally different from the old one. Senlent_0-1768279446361.png Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 There seems to be a bit of a problem, running setup prompts that there is no installer, you can unzip EBtresosStudio_EBtresosStudio.zip and open the app directly, but the app interface is still old: WeiCh_0-1768283416600.jpeg Re: EB更新RTD 7.0.0_QLP03时报告McuPGOOD_POLARITYControl配置错误 Hi@WeiCh Okay, you're welcome.
View full article
Linux 中的 SJA1105,通过 PHY 接口连接所有 5 个端口? 您好, 我正在开发一个基于 SMARC 格式计算机模块的项目,该模块配备了 Rockchip RK3399 CPU。在同一块主板上,我们有一个 SJA1105 开关。CPU 运行 Linux (5.4),使用 NET_DSA_SJA1105 驱动程序。 我们的 CPU 需要通过以太网与其他设备通信,因此 CPU 需要连接到交换机。 在 SJA1105 数据表和 Linux 内核设备树示例中,主机 CPU 始终作为固定链路直接通过 XMiI 连接到交换机。(https://www.kernel.org/doc/Documentation/devicetree/bindings/net/dsa/sja1105.txt) 我们无法做到这一点,因为我们的 SMARC 模块只能提供来自 RK3399 以太网集成 PHY 的引脚输出,我们无法直接物理访问 CPU 上的 xMII 接口,无论我们多么希望这样做。 在 SJA1105 数据表中也有如下说明: " 请注意,只有当系统必须支持 AVB 操作或其他网桥管理协议(如 STP/RSTP)时,才需要与主机处理器建立以太网连接。如果不需要此类操作,所有端口都可用于数据流量。" 由于我们不需要 AVB 或 STP/RSTP,而且我们也无法访问 CPU xMII 接口,因此我们决定将交换机用作一个普通的 5 端口交换机,每个端口都有 PHY 接口。4 个端口,PHY 实际连接到真正的 RJ45 连接器,另一个端口将 PHY 硬接入电路板中,连接到我们从 SMARC 板上的 CPU 获得的 PHY。这将为我们提供一个看起来像这样的 Linux 设备树: (仅显示与 SJA1105 相关的部分,粘贴到此处时缩进也变拧了) &spi2 { status ="okay"; #address-cells =<1>; #size-cells =<0> ; num-cs =<2>; cs-gpios =<& gpio2 RK_PB4 GPIO_ACTIVE_LOW>,<& gpio1 RK_PA3 GPIO_ACTIVE_LOW> ; sja1105_1: sja1105@1 { status ="okay"; reg =<1>; #address-cells =<1>; #size-cells =<0>; clocks =<& ethswitch_osc>; compatible ="nxp,sja1105t"; spi-max-frequency =<25000000> ; fsl,spi-cs-sck-delay =<1000> ; fsl,spi-sck-cs-delay =<1000> ;spi-cpha;pinctrl-names = " 默认 ";pinctrl-0 = < & et hswitch_pins >;reset-gpios = < & gpio4 RK_PC5 GPIO_ACTIVE_HIGH >; 端口 { #address-cells<1> =; #size-cells =;-cells =<0> 0; port@0 { /* 隐含"sja1105,role-mac;" */ label ="eth0"; phy-handle =<& rmii_phy0>; phy-mode ="rmii"; reg =<0>; }; port@1 { /* 隐含"sja1105,role-mac;" */ label ="lan1"; phy-handle =<& rmii_phy1>; phy-mode ="rmii"; reg =<1>; }; port@2 { /* 隐含"sja1105,role-mac;" */ label ="lan2"; phy-handle =<& rmii_phy2>; phy-mode ="rmii"; reg =<2>; }; port@3 { /* 隐含"sja1105,role-mac;" */ phy-handle =<& rmii_phy3> ; label ="lan3"; phy-mode ="rmii"; reg =<3>; }; port@4 { /* Imlicit"sja1105,role-mac;" */ phy-handle =<& rmii_phy4>; label ="lan4"; phy-mode ="rmii"; reg =<4>; }; }; }; }; 这个 devicetree 是有效的,可以编译,但在探测过程中 NET_DSA_SJA1105 却失败了,因为它找不到 HOST CPU 端口(因为我们没有指定)。该错误来自 net/dsa/dsa2.c*dsa_tree_find_first_cpu(struct dsa_switch_tree *dst),因此它并不是驱动程序的 sja1105 部分所特有的,而是 Linux 分布式交换架构中更深层次的部分。 在所有 devicetree 示例中,总有一个端口配置为主机 CPU,通过 xMII 与固定链路连接,例如像这样: port@4 { /* 连接到 eth2 的内部端口 */ ethernet =<& enet2>; phy-mode ="rgmii"; reg =<4>; /* 隐含"sja1105,role-phy;" */ fixed-link { speed =<1000>; full-duplex; }; }; 如果我尝试修改我的设备树以使端口看起来更像这样: 端口 { #address-cells =<1>; #size-cells =<0>; port@0 { /* 隐含"sja1105,role-phy;" */ ethernet =<& gmac>; phy-mode ="rmii"; reg =<0>; fixed-link { speed =<100>; full-duplex; }; }; port@1 { /* 隐含"sja1105,role-mac;" */ label ="lan1"; phy-handle =<& rmii_phy1>; phy-mode ="rmii"; reg =<1>; }; port@2 { /* 隐含"sja1105,role-mac;" */ label ="lan2"; phy-handle =<& rmii_phy2>; phy-mode ="rmii"; reg =<2>; }; port@3 { /* 隐含"sja1105,role-mac;" */ phy-handle =<& rmii_phy3> ; label ="lan3"; phy-mode ="rmii"; reg =<3>; }; port@4 { /* Imlicit"sja1105,role-mac;" */ phy-handle =<& rmii_phy4>; label ="lan4"; phy-mode ="rmii"; reg =<4>; }; }; 然后,驱动程序感到满意,成功地进行了探测并设置了 SJA1105 交换机。端口 1-4 可以工作 ,但端口 0(CPU 通过 PHY 连接)当然不能工作,因为它现在被配置为 xMII 直接连接,而实际上我们在 SJA1105 和主机 CPU 之间有一个 PHY。 这是否是 DSA SJA1105 Linux 驱动程序的限制,即必须始终通过 xMII 配置固定链路?我能否以某种方式直接从设备树中配置我根本不希望有专用的 cpu 主机端口,而是只有 5 个普通端口(其中一个恰好是通过 PHY 连接到 CPU...)或者我能否将 CPU 主机端口配置为固定链路,但明确指定那里实际上也有 PHY,而不是 XMiI 接口?我已经尝试了几十种组合,但仍然没有找到任何配置方法,使其能够与我们本应非常简单的设置配合使用。我是不是漏掉了什么非常简单的东西?有什么好办法吗?还是 Linux DSA SJA1105 驱动程序无法做到这一点? 祝好 Re: SJA1105 in Linux, all 5 ports through PHY interfaces? @kalamata @Sabeur你能解决这个问题吗?我在使用 Toradex imx8mp SoM 时也遇到了类似的情况。 Re: SJA1105 in Linux, all 5 ports through PHY interfaces? @kalamata @Sabeur你找到解决这个问题的办法了吗?我也遇到了类似的问题,但使用的是 Toradex Verdin IMx8mp SoM。 Re: SJA1105 in Linux, all 5 ports through PHY interfaces? 你好、 我看到 端口 0 的 phy-mode 和 phy-handle: port@0 { /* 隐含"sja1105,role-mac;" */ ethernet =<& gmac>; label ="eth0"; phy-handle =<& rmii_phy0>; phy-mode ="rmii"; reg =<0>; }; 设备树应该是这样的。 此外,gmac 节点应包含 &gmac { phy-handle =<& rmii_gmac_phy>; phy-mode ="rmii"; }; 顺祝商祺! Sabeur Re: SJA1105 in Linux, all 5 ports through PHY interfaces? 你好,卡拉马塔 、 感谢您提供的详细信息。 所以我的假设是正确的。 您应该能够为连接的 MAC 接口指定 phy-handle 和 phy 模式。它是经过虚拟测试的,这意味着 MAC-> PHY->---<-PHY <-5.3 内核版本的 MAC。(参见 0e27921816ad99f78140e0e0c61ddf2bc515cc7e22)。 因此 ,这是在设备树中描述这种硬件连接的正确方法。 Regards, Sabeur Re: SJA1105 in Linux, all 5 ports through PHY interfaces? 你好,Sabeur, 感谢您的答复! 在您的设置中,上述数据路径可行吗? 是的,我们使用的正是这种设置:(CPU)Mac - Phy - Phy - Switch Mac (见附件) Rockchip RK3399 CPU 是否具有内部 PHY? 是的,它有一个内部 PHY,我们只能使用这个内部 PHY,因为它是从 CPU 所在的研华 ROM-5780 SMARC 模块中唯一输出的,所以即使我们想直接使用 CPU MAC 接口也不行。 我们的设置与 SJA1105 数据表建议的典型设置有何不同,请参阅附图。 我们有一款采用 SMARC 格式封装的研华 ROM-5780 片上计算机模块(即瑞芯微 RK3399 CPU)。Rockchip RK3399 集成了 PHY 接口,我们可以通过 SMARC 模块上的输出引脚访问该接口。我们无法实际访问 RK3399 以太网控制器的 MAC 引脚,因为它们不是通过 SMARC 模块输出的,所以我们只能使用 RK3399 PHY 接口。因此,在我们打算连接 CPU 的 SJA1105 的第 5 个端口上,我们有一个 PHY 控制器(就像在第 1-4 个端口上一样),该 PHY 控制器与 RK3399 CPU 的 PHY 控制器永久连接。 sja1105_1.png sja1105_2.png Kalamata Re: SJA1105 in Linux, all 5 ports through PHY interfaces? 您好, 理论上是可行的,但由于预期的设置是直接链接,因此我无法立即投入使用。 可以工作的数据路径是Mac - Phy - Phy - Switch Mac。 在这种情况下,您需要修改 DSA 内核,并为 CPU Mac 和 Switch Mac 指定 Phy 句柄和 Phy 模式。 现在的问题是:上述数据路径在您的设置中可行吗?Rockchip RK3399 CPU 有内置 PHY 吗? 致以最崇高的敬意, Sabeur Re: SJA1105 in Linux, all 5 ports through PHY interfaces? 可以实现 PHY 对 PHY 的背靠背连接。您必须使用 phy-handle 属性。您还可以绕过自动协商,在 devicetree 绑定中使用"fixed-link" 属性设置固定速度。如果出现问题,并怀疑 devicetree 配置正确,请检查控制路径接口(SPI/I2C/MDIO)。
View full article
如何在S32DS中快速设置S32K1 SDK 本文以中文撰写。主要针对中国本土的地区及大众市场客户。对于刚接触S32K1的开发者很有用,会帮助他们安装S32K1的几个软件,否则可能会浪费很多时间。 S32DS中快速搭建S32K1的开发环境 一.背景 我最近换装了新电脑,需要重新安装S32DS,发现存在很多问题。尤其是对比之前的安装过程,发现官网的很多链接已经失效,甚至有一定的迷惑性。 最新的S32K1安装包比较隐蔽,而且安装存在前后依赖,对于刚接触NXP S32系列的新手非常不友好,所以写这篇文档总结一下典型的问题和解决方法。 同时也希望提供一个check的思路和步骤,在后续新版本发布时,升级IDE的时候更方便找到合适的安装包。 二.S32DS中各个包依赖关系解析 在S32DS中,每一个系列的MCU,总共需要安装两个插件包,一个是基础依赖包,一个是SDK(也叫RTD,同一个意思)。 1.基础依赖包 这个包对应S32DS版本,比如当前的3.4.3,官网可以下载离线版,一般大小在3GB左右,会更新S32DS中的很多组件,如下图1所示: LiekLi_9-1655884629244.png            图1 尤其需要关注图1中红框的内容,没有这个development package的话,是无法进行对应MCU的debug。 图1中安装的包,对应到S32DS中安装的内容如图2所示: LiekLi_10-1655884629307.png            图2 2.RTD安装包(与SDK同义) 这个包对应于RTD版本,也会标识AutoSAR的版本,比如最新的2.0.0,AutoSar 4.4,如图3所示: LiekLi_11-1655884629325.png           图3 基础依赖包与RTD安装包存在前后依赖关系,如果不安装基础依赖包直接安装RTD,在安装时会报错。另外,我们下载的RTD包,即使写明是K3,里面也会包含K1的RTD,这点需要注意。如果此时还没有装K1的development package,就会出错。 三.S32K1开发环境搭建 官网对于S32K3的软件划分为standard software和reference software,其中S32DS和基础依赖包在standard software中,可以很方便的找到。 但S32K1的官网却仅有一个reference software,页面也只能找到几个RTD(或SDK)链接:                                                  LiekLi_18-1655885108165.png                            图4 这里面所有的链接都不是我们需要的,全是RTD。问题就出在这里,K1的网页中没有K1的基础依赖包!而前面讲过,缺基础依赖包会导致RTD也无法安装。经过我研究,K1的基础依赖包隐藏的非常深,可以通过两个方法找到: 从S32K1的参考软件进去,然后重新点击产品列表,如下图5所 LiekLi_15-1655884629434.png              图5         进入如下页面,如图6所示,这里最能看出来,针对K1的界面很不友好,需要点最底下的NXP Software. LiekLi_16-1655884629503.png              图6 在NXP.com官网首页搜索栏直接搜S32DS,找到S32 Design Studio for S32 Platform(注意不要选成for ARM或或者for PowerPC),从S32DS的主界面进入,然后一直下拉,找到S32DS service pack 1,这个才是K1的,如图7所示: LiekLi_17-1655884629606.png                 图7 这个链接更加隐蔽,要在40多个选项里挨个找。 经过上面两个方法,都可以进入图8所示的界面,然后再按图8所示操作: LiekLi_19-1655885288458.png              图8 这回终于到了最终可以下载S32K1基础依赖包的地方,如图9所示。我们需要重点关注一下命名,SW32开头的,会包含所有S32的development package,包括K1,K3,G;SW32K1开头的,仅有K1,同理如果你在K3的界面中,可以看到SW32K3开头的。 LiekLi_20-1655885302790.png            图9 下载最新版本的S32K1基础依赖包,然后再安装RTD,大功告成。
View full article
Kinetis K40DN512 の USB CDC デュアル VCOM および MSC こんにちは、 私は、K40DN512 ボード上で FatFS アプリケーションを使用してデュアル VCOM および MSC を作成しようと取り組んでいます。 デバイス スタック上のデュアル VCOM と SD ディスクを使用した FatFS の動作は確認できましたが、MSC の実装は困難でした。デバイス構成ツールを使用して一部の USB コンポーネントを構成する人がいるのを見たことがありますが、私のプロセッサはこれをサポートしていません。 適切なエンドポイントやその他の記述子情報を構成するために、何らかの形式のウィザードを使用して USB デバイス記述子を構成するより簡単な方法はありますか? そうでない場合、これまでに USB デバイス スタック経由でデュアル CDC VCOM および MSC w/ FatFS システムを動作させることに成功した人はいますか?もしSOなら、どのような構成を使用しましたか? ヒントやガイダンスがあれば歓迎します。 Kinetis KシリーズMCU USB Re: USB CDC Dual VCOM and MSC on Kinetis K40DN512 こんにちは@tbryant 要件に最も近い SDK デモ(例: usb_device_composite_cdc_msc_disk )を選択することをお勧めします。まず、ボード上で正常に動作することを確認し、次を参照して 2 番目の CDC インターフェースを追加します。 Re: 複合USBデュアルCDCデバイス - NXPコミュニティ ありがとう。 BR アリス
View full article
报告 K5 RTD 引脚配置 嗨,团队 我有一份报告与 K5 引脚配置有关。(0.8.0 CD3) GPIO 258 需要一些限制。 所以我用了下面的方法。 我认为这与下文有关。 顺便说一下,如果我使用 MCAL,它看起来会正常工作... 谢谢。 RTD 来源:恩智浦内部来源:恩智浦内部 Re: Report K5 RTD pin configuration 嗨,@Luke_Chun、 如果使用 Dio_WriteChannel 向 GPIO258 写入数据,则该函数将通过 GPDO 寄存器向 GPIO258 写入数据。 但 Siul2_Dio_Ip_WritePins() 函数将写入 PGPDO 寄存器。GPIO258 相当于 PGPDO16 寄存器,但硬件不包含该寄存器。因此,这可能是硬件问题,用户不能使用 Siul2_Dio_Ip_WritePins() 函数向 GPIO258 写入数据。在 Siul2_Ip 层中,我建议你可以使用 siul2_dio_IP_setGPDO 或 siul2_dio_IP_ClearGPDO 函数在 u8siul2Instance = 3 和 gpdoNum = 258 的情况下设置/清除 GPIO258(取自 RTD_DIO_UM.pdf 文件中的图 3.1 GPIO 分配)。 目前,RTD 驱动程序尚未通过有关此解决方法的验证,但我认为你可以尝试这样做 。 顺祝商祺! 丹
View full article
TWR-KV58 硬故障 早上好 我在 TWR 板上犯了一个明显的错误。我以前在同样的状态下使用这个板,它能正常工作,它在那里停了一会儿,现在我直接从硬故障开始。 我使用的是连接了 JTAG 电缆的 Multilink。我以前是这样做的。我直接从硬故障开始。 这是屏幕截图 pietrodicastri_0-1765878099381.png 跳线 J19 和 J20 打开,以便使用 JTAG。应该够了。 请提出建议。我只能假设它坏了 谢谢大家 Pietro Re: TWR-KV58 Hard Fault 早安 请支持我。我已经订购了一个新的作为备用解决方案,但我需要帮助才能继续。 谢谢 Re: TWR-KV58 Hard Fault 你好@pietrodicastri、 谢谢您的帖子。 为帮助确定这是否是软件问题,请检查在运行 SDK 中包含的演示程序(如 "Hello World "演示程序)时是否仍会出现 HardFault? SDK 链接:选择板 | MCUXpresso SDK 生成器 如需了解更多详情,请参阅https://www.keil.com/appnotes/files/apnt209.pdf。 Celeste_Liu_0-1766030502918.png BR 西莱斯特 Re: TWR-KV58 Hard Fault 你好 板现在正在工作...我很感激你的支持。 我现在要发表一些其他内容。 谢谢 Pietro
View full article
ヘルプが必要です: RT1189 上の FlexSPI2 QSPI フラッシュからの起動 カスタム ハードウェア上でユーザー アプリケーションを起動しようとしています。このカスタム ハードウェアには、ポート A のプライマリ ピン グループを使用してコネクテッドされた FlexSPI2 QSPI フラッシュのみがあります。フラッシュ デバイスは、Micron MT25QU256ABA です。RT1189 (RT1189CVM8C) に搭載されたブート ROM がメモリを正しく構成せず、ブートに失敗します。ただし、NXP セキュア プロビジョニング ツールは、これに正常に読み取りと書き込みを行うことがCANできます。 フラッシュ構成ブロック (FCB) は、セキュア プロビジョニング ツールを使用して作成されました。 scarrion_0-1765406289715.png XIP ブート ヘッダーはイメージのコンパイル自体で無効化されました。代わりに、セキュア プロビジョニング ツールは、上記のスクリーンショットに示されている設定とまったく同じ設定を使用して、簡略化された UI から生成された FCB を使用するように構成されました。上記のスクリーンショットには表示されていませんが、「テスト接続」は成功しています。 さらに、セキュア プロビジョニング ツール (以下、「SPT」と呼びます) から外部メモリを構成するように要求された場合、FlexSPI2 メモリはプロセッサとツールによって正常に読み取ることができます。これを以下に図示します。 ユーザーがフラッシュ プログラマ ツールを開き、ポップアップで「はい」をクリックするか、「外部メモリの構成」ボタンをクリックすると、SPT は上記のフラッシュ構成ブロック設定を使用して、FlexSPI2 フラッシュ メモリをプログラミング用に初期化します。 scarrion_2-1765407298704.png 以下のスクリーンショットは、完全なアプリケーション イメージ (FCB はオフセット 0x400、ユーザー アプリケーションはオフセット 0x1000) をフラッシュした後にキャプチャされたものです。 scarrion_1-1765406856412.png これにより、フラッシュ構成ブロックが正しいと考えられます。 RT1180 で次のヒューズ ビットが焼損しました。その他のヒューズビットはすべてデフォルトです。 BOOT_CFG0[6] (BT_FUSE_SEL) -> 1b、ヒューズからのブートを有効にする BOOT_CFG2[7] (FLEXSPI_INSTANCE) -> 1b、FlexSPI2を選択する(デフォルトはFlexSPI1) BOOT_MODE ピンを 000b (内部ヒューズからのブート) に設定すると、RT1189 は何もアクティビティを行いません。再度通信できるようにするには、「無限ループ」モードで起動し、その後シリアル ダウンローダー モードに戻す必要がありました。 BOOT_MODE ピンを 100b (「FlexSPI からのブート」) に設定すると、RT1189 は「スタック」したままになりますが、JLink デバッグ プローブによって停止できます。 BOOT_MODE 100b を使用して FlexSPI から起動しようとした後に停止すると、FlexSPI2 のメモリ領域を調べるとすべてゼロが表示されます。 scarrion_3-1765408423980.png ここで興味深いのは、「すべてゼロ」が RT1189 の FlexSPI2 メモリ領域のデフォルト状態と一致しないことです。次のスクリーンショットは、外部メモリを構成せずにシリアル ダウンローダー モードで起動した後にキャプチャされたものです。 scarrion_4-1765408718291.png 最後にもう 1 つ: ユーザー アプリケーションの MCUXpresso サンプルのリンカー スクリプトが、FlexSPI2 から起動するように変更されました。 scarrion_5-1765408996269.png 注意: スクリーンショットのキャプションには「0x14000000」と表示されていますが、コードで実際に使用されている値は「0x04000000」です。これはタイプミスです これは SPT に反映されています。 scarrion_6-1765409102906.png これらすべてを念頭に置いて、私の現在の理解は次のとおりです。 FCB は正しくなければなりません。そうでないと、SPT は FlexSPI2 バンク A に接続された外部フラッシュと対話できません。 ROM 自体は、起動時に、SPT とは異なる何らかの方法でこの外部メモリを初期化しようとしているはずです。RT1189 ブート ROM のソース コードがなければ、リバース エンジニアリングを行わずにデバッグを続けることはできませんが、NXP のお客様として、リバース エンジニアリングを行うつもりはありません。 私の質問: この動作を引き起こす設定の何が問題なのでしょうか? フラッシュの初期化に失敗する理由を理解するためにブート ROM をデバッグする方法はありますか? ありがとう!! Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 数週間の努力の末、XIP ではなく ITCM (0xFFE00000) にリンクすることでプロセッサを起動することができました。ただし、このThreadはまだ関連性があります - FlexSPI2 上の XIP が正しく動作しないのはなぜですか? Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 @Sam_Gao 、 ご返信ありがとうございます。 元の投稿で述べたように: ブートインスタンスの選択は、コメントとAN14589で指定されているものとまったく同じです。BOOT_CFG2[7]はFlexSPI2を選択するために書き込まれます。 アプリケーション コードは、指定どおりに FlexSPI2 メモリ マップ領域 (0x04000000) にリンクされます (m_start_flash が 0x04000000 に変更されます)。返信ではこれを「0x40000000」としていますが、これは上記のアプリケーション ノートや RT1189 のリファレンス マニュアルに記載されているとおり正しくありません。 scarrion_0-1765993718911.png FCB は予想されるオフセットに存在します。フラッシュ チップを動作中の MIMXRT1180EVK のものと交換してみましたが、それでもまだ動作しません。 ロジック アナライザを使用して、フラッシュ構成ブロックがブート ROM によって読み取られている可能性が高いことを判断できました。クロック速度はすぐに 30 MHz から 125 MHz に変化し、読み取りデータは SPI データ ラインを介して送信されます。 ブート ROM またはブート シーケンスをさらにデバッグできるメカニズムはありますか? Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 こんにちは、 RT1189 のようなデバイス上の FlexSPI2 QSPI フラッシュからの起動に失敗する原因は、通常、いくつかの一般的な構成領域にあるようです。ここでは、潜在的な問題の詳細と、ブート ROM プロセスをデバッグして根本原因を特定する方法について説明します。 AN14589 を参照: https://www.nxp.com/docs/en/application-note/AN14589.pdf 1. ブートインスタンスの選択を確認する: ブートROMに、デフォルトのFlexSPI1ではなくFlexSPI2を使用するように明示的に指示する必要があります。これは BOOT_CFG2[7] によって制御されます。 ヒューズまたはピン。BOOT_CFG2 BOOT_CFG2[7] が 1 に設定されている FlexSPI2 を選択する ブートインスタンスとして 。プライマリブートモードピン( BOOT_MODE[2:0] )シリアルNORフラッシュからブートするには、正しく設定する必要があります(例: '100') 2. アプリケーション リンカー アドレス: FlexSPI2 のブート可能なイメージをビルディングする場合、アプリケーション コードを FlexSPI2 メモリ マップから実行するようにリンクする必要があります。FlexSPI2 の開始アドレスは 0x40000000 です。プロジェクトのリンカー ファイルを変更して、フラッシュ開始アドレス ( m_flash_start ) を 0x40000000 に設定する必要があります (参照: AN14589 の 7 ページ)。 3. FCB: ブートROMには、外部QSPIデバイスを正しく初期化するために、フラッシュメモリの先頭(通常はオフセット 0x400 )に有効な512バイトの構成ブロックが必要です。このブロックが欠落しているか、破損しているか、使用している特定のフラッシュ チップと一致していない場合、ブート ROM はフラッシュとの通信に失敗します。詳細については、 https://docs.mcuxpresso.nxp.com/secure/latest/06_processor_specific_workflow.html#preparing-source-image-for-rt118x-devicesをご覧ください。 Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 問題はないようです。 ブート ROM とブート シーケンスの詳細については、 https://www.nxp.com/docs/en/application-note/AN14589.pdfを参照してください。 デバイスが「スタック」している場合は、リセットしないでください。JLink/デバッガーを使用して実行中のカーネルに直接アタッチし、次のレジスタの状態を確認します。例: プログラムカウンタ(PC): PC が 0x2xxxxxxx (ROM 領域) にある場合、ROM はまだ実行中であるか、無限ループに陥っています (たとえば、ペリフェラルの応答を待機している)。 PC が 0x002xxxxx (OCRAM) または別の RAM 領域を指している場合、ROM はジャンプを試みたものの、アプリケーションがクラッシュした可能性があります。 PC が 0x4000xxxx (FlexSPI2 AMBA 領域) を指していて、すべてゼロまたはバス エラーとして読み取られた場合、ジャンプは発生しましたが、XIP アクセスは失敗しました。
View full article
S32K 入力キャプチャ こんにちは、チーム S32K146 マイクロコントローラを使用していますが、入力キャプチャピンとしていずれかの入力ピンが必要です。どのモジュールで構成すればよいか教えていただけますか? FTM を信号測定として使用した場合、入力キャプチャ機能を実現できますか?それともic_pal機能を使うべきでしょうか? サポートをお願いします ありがとう シュルティ C Re: S32K Input Capture こんにちは、ペトルさん。 INT_SYS_InstallHandler(FTM0_Ch0_Ch1_IRQn, PWM_InputCapture_IRQHandler, NULL);関数はデフォルトのハンドラーを取得しており、このハンドラーFTM0_Ch0_Ch1_IRQnを取得していないため、使用できません。 私の設定は /* flexTimer_ic_1 InitConfig のグローバル設定 */ ftm_user_config_t flexTimer_ic_1_InitConfig = {     {         true , /* ソフトウェアトリガー状態 */         false , /* ハードウェアトリガー1の状態 */         false , /* ハードウェアトリガー2の状態 */         false , /* ハードウェアトリガー3の状態 */         false , /* 最大積載ポイント状態 */         false , /* 最小積載ポイント状態 */ FTM_SYSTEM_CLOCK、 /* INVCTRLレジスタの更新モード */ FTM_SYSTEM_CLOCK、 /* SWOCTRLレジスタの更新モード */ FTM_SYSTEM_CLOCK, /* OUTMASKレジスタの更新モード */ FTM_SYSTEM_CLOCK, /* CNTINレジスタの更新モード */         false , /* トリガーの自動クリア */ FTM_UPDATE_NOW, /* 同期ポイント */ }, FTM_MODE_INPUT_CAPTURE, /* FTMの動作モード */ FTM_CLOCK_DIVID_BY_1, /* FTMクロックプリスケーラ */ FTM_CLOCK_SOURCE_SYSTEMCLK, /* FTMクロックソース */ FTM_BDM_MODE_11, /* FTMデバッグモード */         false , /* 割り込み状態 */         false /* 初期化トリガー */ }; /* flexTimer_ic_1 の入力キャプチャ設定 */ ftm_input_param_t flexTimer_ic_1_InputCaptureConfig = {     1U , /* チャネル構成の数 */     65535U , /* 最大カウント値 */     flexTimer_ic_1_InputCaptureChannelConfig /* チャンネル設定*/ }; /* flexTimer_ic_1 入力キャプチャのチャネル構成構造体 */ ftm_input_ch_param_t flexTimer_ic_1_InputCaptureChannelConfig [ 1 ] = {     {         0U , /* チャネルID */ FTM_SIGNAL_MEASUREMENT, /* 入力キャプチャ操作モード */ FTM_RISING_EDGE, /* エッジアライメントモード */ FTM_FALLING_EDGE_PERIOD_MEASUREMENT, /* 信号測定操作タイプ */         0U , /* フィルター値 */         false , /* フィルターの状態(有効/無効) */         true , /* 連続測定状態 */         NULL, /* チャネルイベント情報のコールバックパラメータのベクトル */         NULL /* チャネルイベント情報のコールバックのベクター */    } }; Re: S32K Input Capture こんにちは、 はい、それらの機能で十分なはずです。SDK ドライバは FTM チャネル割り込みを有効にするので、起動時から適切なハンドラーを割り当てる必要があると思います。正しくない場合、ハンドラーは FTM0_Ch0_Ch1_IRQHandler になります。 キャプチャされた値を取得するには、FTM_DRV_GetInputCaptureMeasurement が呼び出されます。 BR、ペトル Re: S32K Input Capture こんにちは、ペトルさん。   分かりやすく説明していただき、ありがとうございます。   これらの関数を使用してFTMピンを入力キャプチャとして初期化できますか? `FTM_DRV_Init()` `FTM_DRV_InitInputCapture()`   パルス発生を捕捉するためのIRQハンドラをインストールする `INT_SYS_InstallHandler(FTM0_Ch0_Ch1_IRQn, PWM_InputCapture_IRQHandler, NULL)`     サポートをお願いします   ありがとう シュルティ C Re: S32K Input Capture こんにちは、 最も一般的で効率的な方法は、FTM を入力キャプチャ モードで設定し、FTM 機能を持つピンを使用することです。各 FTM チャネルは入力キャプチャ モードに設定でき、入力信号のエッジ (立ち上がり、立ち下がり、またはその両方) でタイマー値をキャプチャします。これは通常、信号周期、パルス幅、周波数の測定に使用されます。 IC PAL ドライバを使用すると、入力信号を検出し、チャネル入力信号のパルス幅または周期を測定できます。FTM、eMIOS、FLEXPWM、ETIMER をサポートするすべてのプラットフォームと IP 間でポータブルになるように設計されています。 SO、完全な制御とパフォーマンスが必要な場合は、FTM を直接使用してください。よりシンプルなコードと移植性が必要な場合は、IC PAL を使用してください。 BR、ペトル Re: S32K Input Capture こんにちは、 直接参照できる SDKs の例があります (ftm_signal_measurement)。 または、問題を示す簡略化されたプロジェクトを共有します。 BR、ペトル Re: S32K Input Capture こんにちは、 SDK の例では、直接参照しました (ftm_signal_measurement)。 この例では割り込み方法は使用されず、ポーリング方法が使用され、その後FTM_DRV_GetInputCaptureMeasurementが呼び出されました。 割り込みによる FTM 信号測定を探しています。入力キャプチャが信号を認識すると、割り込みがトリガーされ、 ISR で FTM_DRV_GetInputCaptureMeasurement 関数が呼び出されます。 これのコードを提供してもらえますか ありがとう シュルティ C Re: S32K Input Capture こんにちは、 ハンドラーを再度インストールする必要がある場合は、 外部void FTM0_Ch0_Ch1_IRQHandler(void); INT_SYS_InstallHandler(FTM0_Ch0_Ch1_IRQn、FTM0_Ch0_Ch1_IRQHandler、NULL); BR、ペトル Re: S32K Input Capture こんにちは、 はい、その関数は定義されていますが、その後関数呼び出しは無限ループに入り、さらに実行されます。 Shruthi_C_0-1764752920959.png システム全体が機能しなくなる、 ありがとう シュルティ C Re: S32K Input Capture こんにちは、 サポートありがとうございます。コードスニペットも確認させていただきます。 T&R、 シュルティ C Re: S32K Input Capture こんにちは、 割り込み対応FTMピンへの入力を入力キャプチャとして取得できますか? よろしくお願いします。 シュルティ C Re: S32K Input Capture こんにちは、 ドライバはキャプチャ イベント情報に割り込みを使用していますが、例では直接示されていません。 FTM IC 設定を変更して、ワンショット モードを使用し、ドライバ割り込みから呼び出されるコールバックを追加しました。 PetrS_0-1764845224420.png ftm_signal_measurement_s32k146 デモの変更された main.c については、添付ファイルを参照してください。 BR、ペトル
View full article
Zephyr:Booting DSP from MCU in Zephyr Hello, I am currently working on a project using the RT595 with the Zephyr RTOS, and I want to know how to start the DSP from the MCU. According to section 4.7 of the official documentation (IMXRT595-EVK-UG), by setting DSP_IMAGE_COPY_TO_RAM=1in the IDE, it is possible to achieve "program once, and the ARM core automatically wakes up the DSP". Now that the project has fully transitioned to the Zephyr build system, I would like to know the specific steps to launch the DSP application and how it should be configured. Thank you for your help. Evaluation Board Re: Zephyr:Booting DSP from MCU in Zephyr @jingqi  General Steps: To launch the DSP from the MCU in a Zephyr project, you should first build the DSP binary with Xtensa Xplorer, then integrate that binary into your Zephyr build via CMake, and finally call the  BOARD_DSP_Init()  function from your application to handle the startup sequence. You need to complete the functionality using the official documentation (MCUXpresso + EVK) and you need to have the ability to develop Zephry before you can complete the migration. Refernce: 1. Build the DSP Firmware: Getting Started with Xplorer for EVK- MIMXRT595 Typically, you will get two output files, such as dsp_text_release.bin and dsp_data_release.bin. These are the firmware images that the Cortex-M33 core will load into the DSP's RAM 2. Integrate the DSP Binary into the Zephyr Build:  the Zephyr build system requires you to explicitly include these binary files in your Cortex-M33 application. You can do this by modifying the CMakeLists.txt file for your Zephyr application. You may need to use Zephyr's build system features (like zephyr_file_copy or by defining them as a binary blob) to place the files in a known location in the final firmware image. 3. The MCUXpresso SDK for the i.MX RT595 provides a driver (  fsl_dsp.c  /  .h  ) to manage the DSP lifecycle. Zephyr for NXP devices includes this SDK, so you can call these functions directly from your Zephyr application code. Details can be found from '3.3 DSP Core Initialization' of Getting Started with Xplorer for EVK- MIMXRT595
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を利用します。 01.png fmacaddress.png この記事では、SGMII.m1をユーザーケースとして検討します。次に、SGMIIはフレームマネージャのMAC1に配置されます。 SerDesのレーン割り当てを確認して、SerDesのレーンを確認してください。SGMII.m1の場合、特定のレーンピン名はSD1_TX3P/NとSD1_RX3P/Nで、レーン3として認識されます。 MAC番号はSerdesのレーン番号とは関係ありません。ピンを入手するには特定の表を確認する必要があります。 lane.png このイーサネットを使用したハードウェアテストは、ピンに関連している必要があります。以下のコンポーネントのピン番号を参照してください。 pins.png このレーンのRXピンのアイダイアグラムをテストすると、周波数が正しいかどうかを確認できます。このレーンをSGMII 1.25Gに設定すると、アイダイアグラムで速度が正しく設定されていることを確認できます。 eyediagram.png 上のアイダイアグラムは、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 CDR.png PCSリンクアップを確認する方法 MACおよびPHYレジスタは、T1024DPAArm、QorIQ T1024 データ・パス・アクセラレーション・アーキテクチャ (DPAA) リファレンス・マニュアルから詳細を取得する必要があります。 DPAARMでオフセットアドレスを見つけてください。 FMAC2.png 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 メモリマップ/レジスタ定義にレジスタ定義が見つかります 重要なビットは以下の通りです。 STATUSREG.png STATUSREG2.png こちらがユーザーケースの結果です: 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
IMX415 相机移植 imx8mplus 您好, 我正在将索尼 IMX415 摄像头传感器移植到恩智浦 i.MX8M Plus (IMX8MP) 平台上。 在移植过程中,一些参考提到了通过 ISP 调整工具生成 XML 文件。 我的问题是 我真的需要生成 XML 文件才能让 IMX415 在 IMX8M Plus 上运行吗? 这些 XML 文件是否必须用于基本的传感器调试(通过 V4L2 / ISI 进行流式传输)? IMX8MPLUS Re: IMX415 camera porting imx8mplus 这是一个好问题。 仍然需要 xml 配置/校准文件,请参见此处: -AN13712: 800 万像素 ISP OS08A20 传感器 -AN13713: 800 万像素 ISP 新相机移植 我不知道为什么恩智浦最近删除了这个文件。 Re: IMX415 camera porting imx8mplus 我认为您需要 xml 文件。您可以先使用分辨率相同的设备,然后再进行微调。 另见: https://community.nxp.com/t5/i-MX-Processors/IMX8M-Plus-ISP/m-p/2220156/emcs_t/S2h8ZW1haWx8dG9waWNfc3Vic2NyaXB0aW9ufE1JN0JJTUJFRVZXMTA2fDIyMjAxNTZ8U1VCU0NSSVBUSU9OU3xoSw#M242307 Re: IMX415 camera porting imx8mplus 你好, ,关于 XML 文件,我还有一个疑问。 目前,我有用于相机传感器 OS08A20 的 XML 文件,能否将相同的 XML 文件用于 imx415 传感器? Re: IMX415 camera porting imx8mplus 感谢您的回复,但您说从最近的 isp-imx 项目中删除 xml 文件是什么意思?在移植新相机传感器时是否不再需要它们? Re: IMX415 camera porting imx8mplus 他们删除了近期 isp-imx 项目中的 xml 文件,但您可以从早期项目中获取这些文件: ,将 xx 替换为以前的版本: isp-imx-4.2.2.xx.0.bin 例如检查: https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/isp-imx-4.2.2.18.0.bin https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/isp-imx-4.2.2.20.0.bin 等... Re: IMX415 camera porting imx8mplus 如何获取 XML 文件?如果你有任何想法,请告诉我。对于 OS08A20,我看到一个文件名为"Sensor0_Entry_os08a20.cfg" 的文件,文件中包含: name="os08a20" drv ="os08a20.drv" mode= 0 [mode.0] xml ="OS08a20_8M_10_1080p_linear.xml" dwe ="dewarp_config/sensor_dwe_bypass_1080P_config.json" [模式.1] xml ="OS08a20_8M_10_1080p_hdr.xml" dwe ="dewarp_config/sensor_dwe_bypass_1080P_config.json" [模式.2] xml ="OS08a20_8M_10_4k_linear.xml" dwe ="dewarp_config/sensor_dwe_bypass_4K_config.json" [模式.3] xml ="OS08a20_8M_10_4k_hdr.xml" dwe ="dewarp_config/sensor_dwe_bypass_4K_config.json 我的疑问是,这些 json 文件有必要吗? Re: IMX415 camera porting imx8mplus PS:还需要相应的 json 文件,因为无论如何都需要配置广角鱼眼畸变校正模块,即使你将其设置为绕过也是如此。
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板上为你进行了测试吗? Sam_Gao_0-1764230819640.png
View full article