Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
デュアルコアの問題: Cortex-M7 は安定しているが、Cortex-M4 は イーサネット 通信中にハングする (Whitebeet/Codi こんにちは、皆さん 私たちは、[IMXRT-1176-EVKB]とイーサネット通信用のWhitebeet Codicoボードを使用してデュアルコアアプリケーションを開発しています。 特定のボトルネックが発生しました。ファームウェアは、Cortex-M7 コアで実行すると完璧に動作します。ただし、同じロジックを Cortex-M4 コアで実行すると、アプリケーションはハングする前に短時間動作します。このハングは最終的にノード側で配列バッファ オーバーフローを引き起こします。 トラブルシューティングに関する詳細: 時計: 時計の設定を確認しました。CM4 で部分的/初期通信が実現できたため、基本的なクロック設定エラーは除外されました。 症状: ハングはタイミングが一貫していませんが、結果は一貫しており、通信フローが停止し、ノードのバッファがオーバーフローします。 Whitebeet モジュールとインターフェイスする際に、CM7 と CM4 の間でパフォーマンスまたはタイミングの不一致に遭遇した人はいますか? 次にどこを探せばよいかについての洞察や提案があれば、ぜひお聞かせください。 Re: Dual-core Issue: Cortex-M7 stable, but Cortex-M4 hangs during Ethernet communication (Whitebeet/ はい、OCRAM、SRAM_ITC_cm4、DTCM などのさまざまな RAM セクションを移動しようとしましたが、コードをビルドすると、そのセクションが最低 250% オーバーフローし、サイズが約 505 KB になります。 Re: Dual-core Issue: Cortex-M7 stable, but Cortex-M4 hangs during Ethernet communication (Whitebeet/ こんにちは@techexplorer_139さん、 情報ありがとうございます!M4 コードが SDRAM で実行されていることに気づきましたが、M4 のみを SRAM に再配置することは可能ですか?そうすればパフォーマンスが大幅に向上します。 すてきな一日を、 カン --------------------------------------------------------------------------------- 注記: - この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう! - スレッドは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。 後ほど関連する質問がある場合は、新しいスレッドを開いて、閉じたスレッドを参照してください。 --------------------------------------------------------------------------------- Re: Dual-core Issue: Cortex-M7 stable, but Cortex-M4 hangs during Ethernet communication (Whitebeet/ CM4 でアプリケーションを実行すると、CM7 には、helloworld_cm7 の例に示されているように、CM4 の起動を開始する小さなコードのみが含まれます。 データ セクションの配置については、メモリ マップとリンカー GUI のスクリーンショットを共有しました。 現在、CM4 のコードを最適化して CM7 と同じように動作するように取り組んでいます。 Re: Dual-core Issue: Cortex-M7 stable, but Cortex-M4 hangs during Ethernet communication (Whitebeet/ こんにちは@techexplorer_139 、 M4 でアプリケーションを実行すると、M7 でも実行するコードがありましたか?M4のデータセクションはどこに配置しましたか?M7とM4で共有されている場所ですか?それともM4だけが所有している場所ですか?M4コードの最適化オプションを強化しましたか?何か違いはあるのでしょうか?ご説明をよろしくお願いいたします。 すてきな一日を、 カン --------------------------------------------------------------------------------- 注記: - この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう! - スレッドは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。 後ほど関連する質問がある場合は、新しいスレッドを開いて、閉じたスレッドを参照してください。 --------------------------------------------------------------------------------- Re: Dual-core Issue: Cortex-M7 stable, but Cortex-M4 hangs during Ethernet communication (Whitebeet/ こんにちは@techexplorer_139さん、 M4 のデータセクションのみを SRAM に再配置してみましたか?何か違いはありましたか? すてきな一日を、 カン --------------------------------------------------------------------------------- 注記: - この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう! - スレッドは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。 後ほど関連する質問がある場合は、新しいスレッドを開いて、閉じたスレッドを参照してください。 --------------------------------------------------------------------------------- Re: Dual-core Issue: Cortex-M7 stable, but Cortex-M4 hangs during Ethernet communication (Whitebeet/ はい、データセクションを SRAM_OC、SRAM_ITC_cm4、SRAM_DTCM などの SRAM のさまざまな部分に移動してみましたが、唯一の違いは、すべての部分で使用量がオーバーフローされていたことです。 Re: Dual-core Issue: Cortex-M7 stable, but Cortex-M4 hangs during Ethernet communication (Whitebeet/ こんにちは@techexplorer_139さん、 M4 コードをフラッシュで実行し、データ セクションをSRAM_ITC_cm4 などの RAM スペースに割り当てるのはどうでしょうか? すてきな一日を、 カン --------------------------------------------------------------------------------- 注記: - この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう! - スレッドは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。 後ほど関連する質問がある場合は、新しいスレッドを開いて、閉じたスレッドを参照してください。 --------------------------------------------------------------------------------- Re: Dual-core Issue: Cortex-M7 stable, but Cortex-M4 hangs during Ethernet communication (Whitebeet/ あなたの提案どおりに実行してみましたが、CM7 コアは起動しますが、CM4 コアはメインで停止せず、スクリーンショットに記載されているようにコードでエラーが発生します。また、CM7 メイン関数で CM4 のブート アドレスを board_flash アドレスに変更しました。 Re: Dual-core Issue: Cortex-M7 stable, but Cortex-M4 hangs during Ethernet communication (Whitebeet/ こんにちは、 @techexplorer_139 さん。 スレーブコアプロジェクトをXIPターゲットとして実行する方法に関するドキュメントを提供しています。詳細については、 https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/RT1170-How-to-make-a-slave-core-project-as-a-XIP-target/ta-p/2193296を参照してください。 お役に立てれば幸いです。 すてきな一日を、 カン --------------------------------------------------------------------------------- 注記: - この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう! - スレッドは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。 後ほど関連する質問がある場合は、新しいスレッドを開いて、閉じたスレッドを参照してください。 --------------------------------------------------------------------------------- Re: Dual-core Issue: Cortex-M7 stable, but Cortex-M4 hangs during Ethernet communication (Whitebeet/ リンク先に記載されている手順を試してみましたが、今度は2つ目のコアが起動しなくなりました。
View full article
NXP Android 15.0.0_2.0.0 NFC PN7160 Hi, I am trying to add NFC PN7160 to NXP Android 15.0.0_2.0.0 and have followed the NXP Android 15 porting guide and also the followed the guide "PN7160 PN7220 Android 15 Porting to i.MX8MN EVK". The PN7160 is successfully probed. But when making the changes in the guides i get the following build error: FAILED: out/soong/.intermediates/hardware/nxp/nfc/intf/nxpnfc/aidl/vendor.nxp.nxpnfc_aidl_interface/checkhash_2.timestamp if [ $(cd 'hardware/nxp/nfc/intf/nxpnfc/aidl/aidl_api/vendor.nxp.nxpnfc_aidl/2' && { find ./ -name "*.aidl" -print0 | LC_ALL=C sort -z | xargs -0 sha1sum && echo 1; } | sha1sum | cut -d " " -f 1) = $(tail -1 'hardware/nxp/nfc/intf/nxpnfc/aidl/ai dl_api/vendor.nxp.nxpnfc_aidl/2/.hash') ]; then touch out/soong/.intermediates/hardware/nxp/nfc/intf/nxpnfc/aidl/vendor.nxp.nxpnfc_aidl_interface/checkhash_2.timestamp; else cat 'system/tools/aidl/build/message_check_integrity.txt' && exit 1; fi ############################################################################### # ERROR: Modification detected of stable AIDL API file # ############################################################################### Above AIDL file(s) has changed, resulting in a different hash. Hash values may be checked at runtime to verify interface stability. If a device is shipped with this change by ignoring this message, it has a high risk of breaking later when a module using the interface is updated, e.g., Mainline modules. 08:55:05 ninja failed with: exit status 1 Re: NXP Android 15.0.0_2.0.0 NFC PN7160 In the error message, there is the linux commands in the condition of "if... then".  You could run the same command to get the new hash value and then put it to the checkhash file.
View full article
低电压检测:数据表与参考手册 大家好 我正在尝试实现 MCXA156 控制器的低压检测 (LVD) 功能。数据手册》定义 VLVDH_VDD 阈值为 2.619V(典型值),VLVDL_VDD 阈值为 1.651V(典型值)。VLVDH临界值正是我想要的。但是默认情况下只配置了 VLVD L(而且在检测 低压检测 时会出现几次间歇性翻转 RESET 信号的不良行为,正如我使用示波器看到的那样 —— 迟滞太低了!) 此外,参考手册说:" 低压检测 RESET 所处的电压阈值是可编程的 ",而 VD_SYS_CFG 寄存器的描述是 "... 配置低压触发点..." 到目前为止还不错。 现在的问题是,VD_SYS_CFG 寄存器只有 RM 中记录的以下位: LOCK HVDIE - 启用 HVD 中断 HVDRE-启用 HVD RESET LVDIE-低压检测 中断启用 低压检测RE-启用 低压检测 RESET 这些都不能用来设置阈值。 问题:我应该如何配置低压检测阈值? 顺祝商祺! 韦伯 核心与内存 MCXA 电源 Re: Low-voltage detect: Datasheet vs. Reference Manual 让我补充一点,在 RM 中,VD_SYS_CFG 的 LOCK 位注释为"允许写入 LVDRE、HVDRE 和 LVSEL 字段" 。但没有在任何地方定义 LVSEL 位。 此外,还有一个 SDK 函数"SPC_SetSystemVDDLowVoltageLevel" ,它指向 SPC_VD_SYS_CFG_LVSEL(第 8 位),其中😎相关代码已注释。非常奇怪... 您有什么建议吗? Re: Low-voltage detect: Datasheet vs. Reference Manual 亲爱的韦伯 对于迟到的回复,我深表歉意;参见《参考手册》第 25.7.17 章VD_SYS_CFG 配置中,显示为保留的 8 位是"LVSEL" ,这应该对用户开放,我们正在为 RM 进行修改。 在写入该字段之前,必须将 LOCK 写为 0。 如果要更改 LVSEL,则必须在禁用 LVD RESET 和中断后执行此操作。否则,由于 LVSEL 的变化,SPC 可能会生成低压检测。 LVSEL 的配置: 0b-正常 1b-安全 在 MCXA156 的 SDK 示例中,您可以在文件 fsl_spc.h中的 spc_low_voltage_level_select函数。 由于要使用高范围 低压检测 阈值,因此需要使用 [ksPC_LowVoltageHighRange] entering Normal level [0b] in spc_low_voltage_level_select 让我知道这是否适合你。 最诚挚的问候,路易斯
View full article
MIMXRT595S 上 Zephyr 中的 I3C1 你好 我目前正在尝试使用 Zephyr 让 I3C1 在自定义主板上以 I2C 模式运行。自定义板使用 MIMXRT595SFFOC。如果我为 Flexcomm0 配置与 I2C 相同的引脚(PIO3_1 和 PIO3_2),则总线工作正常,带有 ST zephyr 驱动器的传感器(LPS22HH)会成功响应。当我将相同的传感器连接到 I3C0 总线并像这样在 Zephyr 中对其进行配置时,它也可以正常工作: sensor_i3c: &i3c0 { status = "okay"; pinctrl-0 = <&pinmux_i3c0>; pinctrl-names = "default"; i2c-scl-hz = <400000>; i3c-scl-hz = <8250000>; i3c-od-scl-hz = <2500000>; zephyr,disabling-power-states = <&suspend>; lps22hh: lps22hh@5c0000000000000050 { compatible = "st,lps22hh"; status = "okay"; reg = <0x5c 0x0 0x50>; odr = ; }; }; pinmux 看起来是这样的 pinmux_i3c0: pinmux_i3c0 { group0 { pinmux = , ; input-enable; slew-rate = "normal"; drive-strength = "high"; }; }; 设置成功后,我再次将同一个传感器连接到 I3C1 引脚上(配置为 Flexcomm0 时,它能成功工作)。然后我将此配置添加到设备树中: &peripheral { i3c1: i3c@37000 { compatible = "nxp,mcux-i3c"; reg = <0x37000 0x1000>; interrupts = <67 0>; clocks = <&clkctl1 MCUX_I3C_CLK>; clk-divider = <2>; clk-divider-slow = <1>; clk-divider-tc = <1>; status = "disabled"; #address-cells = <3>; #size-cells = <0>; }; }; sensor_i3c1: &i3c1 { status = "okay"; pinctrl-0 = <&pinmux_i3c1>; pinctrl-names = "default"; i2c-scl-hz = <400000>; i3c-scl-hz = <8250000>; i3c-od-scl-hz = <2500000>; zephyr,disabling-power-states = <&suspend>; lps22hh: lps22hh@5c0000000000000050 { compatible = "st,lps22hh"; status = "okay"; reg = <0x5c 0x0 0x50>; odr = ; }; }; Pinmux: pinmux_i3c1: pinmux_i3c1 { group0 { pinmux = , ; input-enable; slew-rate = "normal"; drive-strength = "high"; }; }; 使用这种配置,传感器仍在总线上响应,如示波器所示: 但是,尽管有来自传感器的响应,但I3C1外设在总线上不接收任何字节。这导致 mcux_i3c_doo_one_xfer_read 超时,因为 RXPEND 中断没有触发。 我已经做了哪些调试工作? 我检查了 I3C1 IRQ 的 NVIC 配置。这是正确的,因为在 I3C 驱动程序初始化过程中,由于 MERRWARN OREAD 标志的存在,ISR 被多次调用。 在启动、写入和读取过程中,我检查了所有相关的 I3C1 寄存器(MCONFIG、MCTRL、MSTATUS、MINTSET、MERRWARN、MDMACTRL)。传感器工作时与 I3C0 上的显示相同。未使用 DMA,因此接收的字节应在外围设备 FIFO 中可用。 我还使用了 SKEW 设置,因为ERRATA 提到在某些情况下 I2C 可能需要它。 我还检查了两个引脚的 IOPCTL 寄存器,以确保它们是正确的。看起来也和 I3C1 上的一模一样。 然后我想,如果中断无论如何都不起作用呢?因此,我修改了 i3c_mcux.c像这样的驾驶员这样,它就不会使用中断进行接收,而只是读取 FIFO 中的内容。没有收到任何字节。 static int mcux_i3c_do_one_xfer_read(I3C_Type *base, struct mcux_i3c_data *data, uint8_t *buf, uint8_t buf_sz, bool ibi) { int ret = 0; int offset = 0; while (offset < buf_sz) { /* * Transfer data from FIFO into buffer. Read * in a loop until data is unavailable in the FIFO. */ uint16_t count = 0; while (offset < buf_sz && mcux_i3c_fifo_rx_count_get(base) == 0) { k_usleep(10); count++; if (count > 500) { ret = -ETIMEDOUT; break; } } buf[offset++] = (uint8_t)base->MRDATAB; /* * If timed out, we abort the transaction. */ if ((mcux_i3c_has_error(data) & I3C_MERRWARN_TIMEOUT_MASK) || ret) { ret = -ETIMEDOUT; /* for ibi, ignore timeout err if any bytes were * read, since the code doesn't know how many * bytes will be sent by device. */ if (ibi && offset) { ret = offset; } else { LOG_ERR("Timeout error"); } break; } } /* If no errors, then return the number of bytes read */ if (ret > 0) { ret = offset; } return ret; } 由于所有这些都是在传感器驱动程序的初始化过程中发生的,我也没有在 UART 上看到任何日志,因为此时日志模块尚未初始化。然而,调试器显示它只是在循环中空转,直到因为计数变量过高而中断。我还验证了 I3C0 上驱动程序的更改,以确保它能继续工作。 因此,目前在我看来,I3C1外围设备显然没有接收任何字节到FIFO,我不知道为什么。示波器上的信号看起来不错,与 I3C0 上的信号相似。但是,I3C0 上的每个字节之间存在一些小延迟,这在 I3C1 上不存在。 我希望你知道什么会阻止 I3C1 外设在总线信号看起来正确的情况下接收字节。 顺祝商祺! mhummels 通信& 控制(I3C | I2C | SPI | FlexCAN | 以太网 | FlexIO) Re: I3C1 in Zephyr on MIMXRT595S 我又对这个问题进行了深入调查。我开始尝试在 EVK 上使用 MCUXpresso SDK,看看 I3C1 是否能在那里工作。使用 100kBaud 时,I3C1 执行正常的 I2C,传感器有响应,I3C1 能够正常读取。然后,当它起作用时,我使用 I3C1 构建了一个最小的 Zephyr 示例,以便在 EVK 上运行。令人惊讶的是,它还能以 100000 kHz 的波特率工作。因此,我采取了下一步行动,在自定义板上运行了这个示例。Tada -> 传感器在 I3C1 上工作和接收已不成问题。 当我试图将频率调回 400kHz 时,它突然停止读取数据,尽管传感器的回答是正确的,如示波器图像所示。为什么 I3C1 外设跟不上 I2C 模式 400k 的读取速度? Re: I3C1 in Zephyr on MIMXRT595S 你好,@mhummels、 I3C 外设存在一个已知勘误 (ERR051617),会影响 I2C 操作。请确保在 I3C1 实例中应用所需的解决方法;本页将介绍该解决方法。 此外,为了帮助确定问题是否与 Zephyr 配置有关,您能否重复之前在 MCUxpresso 中进行的相同测试,但使用 400 kHz I2C 频率? 最后,RM 提供了 I3C 外围设备的详细信息。第 52.3.2.1 节解释了读写 I2C 报文的标准方法。我强烈建议查看这部分内容,以便更好地了解模块的运行情况,并找出任何潜在的配置问题。 BR Habib Re: I3C1 in Zephyr on MIMXRT595S 解决方法是将 SKEW 配置为 1,我之前已经试过了。这并没有奏效。 最后我多玩了时钟分频器和波特率分频器。看来,I3C1 对 400 千赫以上的频率更为敏感。我之前的分频器的频率为 412.5kHz,在 I3C0 上可用,但在 I3C1 上不起作用。现在我更换了分频器,使其达到精确的400kHz,现在两者都运行良好。
View full article
安全启动流程中对 VDD_EFUSE 加速时间的要求 你好,专家 客户报告说,当集成了 BIST 和 HSE 时,MU GSR 寄存器为 0xB7880001。经过一番调查,发现VDD_EFUSE的上升时间似乎太长(13毫秒),因此客户绕过其板上的MOSFET,时间减少到1.5毫秒。通过进行此修改,HSE 运行良好。 因此,客户询问了安全启动流程中VDD_EFUSE的启动时间要求。 HSE_FW 优先级:中等 资料来源直接客户 Re: The requirement of VDD_EFUSE ramp-up time in secure boot flow HSE_H 高级版还是标准版? Re: The requirement of VDD_EFUSE ramp-up time in secure boot flow 你好@Crisnoo_Yi_Yang、 我正在分析这个问题,很快就会给出答复。 同时,请提供您使用的芯片、HSE 变体(B/M/H)和版本、客户和项目名称。 我看到此主题已升级,也请与我分享该邮件中的信息。 谢谢, Marian Vilau Re: The requirement of VDD_EFUSE ramp-up time in secure boot flow 你好 玛丽安 请参阅以下所需信息: 芯片:芯片:S32G399A;HSE 变体:HSE_H;客户名称:AEV;项目名称:CCU。 而升级通知的电子邮件是由社区系统自动发送的,因此无法附加这些信息。 Re: The requirement of VDD_EFUSE ramp-up time in secure boot flow 你好,玛丽安 HSE 版本为rev1.1_s32g3xx_hse_fw_0.20.0_2.51.0_pb240404.bin.pink Re: The requirement of VDD_EFUSE ramp-up time in secure boot flow 您好, 另外,在这种情况下,AEV 没有 BSSM,我将就此联系销售团队。 致以最诚挚的问候, Marian Re: The requirement of VDD_EFUSE ramp-up time in secure boot flow 你好@Crisno_Yi_Yang, 我目前正在研究这个问题,想确认一下我的理解。您说的旁路 MOSFET 是指移除 MOSFET 并直接提供 1.8 V 电源吗?请告诉我我的理解是否正确。 敬上, Himanshu Kumar Re: The requirement of VDD_EFUSE ramp-up time in secure boot flow 你好,希曼舒 你的理解是正确的。 Re: The requirement of VDD_EFUSE ramp-up time in secure boot flow 您好@Crisnoo_Yi_Yang, AEV 没有 BSSM,销售团队已经证实了这一点。因此,客户需要购买 BSSM 才能获得对该问题的支持。 敬上, Himanshu Kumar
View full article
DMA割込み DMA 割り込み機能を設定した後、この割り込みを入力できないことがわかりました。検査の結果、チャネル INT が 0 のままであることが判明しました。元のアドレスのデータが宛先アドレスに送信され、結果が得られなかったときに問題が発生しました。(PWM は ADC サンプリングをトリガーします)私のプログラムを見て、DMA 割り込みに入ることができない理由を教えてください。 void Dma0_IrqHandler ( void ) { IP_TCD_0 -> CH7_INT = 1 ; } Re: DMA interrupt こんにちは@xingyunさん あなたのプログラムを見ることはできませんが、DMA 割り込みを設定するには、DMA「割り込みコールバック」が宣言され、IntCtrl ドライバが割り込みハンドラーと優先度を正しく設定していることを確認してください。 よろしくお願いします、 ジュリアン
View full article
Upgrading firmware in an old JB16 USBDM Hi, I have an old Chinese JB16 I bought years ago and never got around to using, however I tried it recently again and had some trouble - if I try and connect to a target with UsbdmScript.exe I get "No BDM Tx routine was found". It reports firmware 4.10.2 so I thought I would upgrade it, however when I run FirmwareChanger.exe it does not like the USBDM_JB16.s19 file, nor any of the .s19 files in that directory. The error is "Flash image is invalid. File is incorrect or corrupt?". I traced this through the code but unfortunately extra information is hidden behind a logging #ifdef which I don't believe is on and I don't know how to rebuild the code. It does load any other firmware file, although I note those are .sx rather than .s19, obviously I can't flash those on a JB16 though 🙂 I tried a wild stab in the dark copying USBDM_JB16.s19 to USBDM_JB16.sx but it wstill rejected it. FWIW I have tested my setup with a newer JS16 unit and it works so if it's a write off it's no big deal but if possible I would like to fix it as a spare. Thanks. Re: Upgrading firmware in an old JB16 USBDM Dear pgo I'm very sorry, last year's work was too busy. I have time to look here today; I found that after being acquired by NXP, many attachments cannot be downloaded. What is going on? The USBDM_JB16 project compilation error is caused by the CW version issue; however, I don't know exactly which version it is. But it's okay, I have defined TBDML to correspond with my BDM schematic. Why aren't the historical versions of this link complete? https://sourceforge.net/projects/usbdm/files/ V3V2 where did they go? Thansks, Re: Upgrading firmware in an old JB16 USBDM Dear pgo, I am trying to rebuild USBDM_JB16source in CW6.3 so that it can be used on USB3.0. I have released the line # include "TBDML_JB16. h"//TBDML - Minimum JB16 version - see TBDML_JB16_SOIC28.pdf in the Configure. h file. Without any other changes occurring, make encountered the following situation: Error : C20085: Not a valid constant bdm.c line 2414 Error : C18101: Object is not a field bdm.c line 2422 Error : C18110: Comma expected bdm.c line 2422 Error : C18123: end of line expected bdm.c line 2422 Error : C18101: Object is not a field bdm.c line 2428 Error : C18110: Comma expected bdm.c line 2428 Error : C18123: end of line expected bdm.c line 2428 Error : C18101: Object is not a field bdm.c line 2434 Error : C18110: Comma expected bdm.c line 2434 Error : C18123: end of line expected bdm.c line 2434 Error : C18101: Object is not a field bdm.c line 2440 Error : C18110: Comma expected bdm.c line 2440 Error : C18123: end of line expected bdm.c line 2440 Error : C18101: Object is not a field bdm.c line 2446 Error : C18110: Comma expected bdm.c line 2446 Error : C18123: end of line expected bdm.c line 2446 Error : C18101: Object is not a field bdm.c line 2452 Error : C18110: Comma expected bdm.c line 2452 Error : C18123: end of line expected bdm.c line 2452 Error : C18101: Object is not a field bdm.c line 2458 Error : C18110: Comma expected bdm.c line 2458 Error : C18123: end of line expected bdm.c line 2458 Error : C18000: Label not set bdm.c line 2422 Error : Compile failed Is it CW6.3 version incorrect? I want to know in which CW environment was this source program created? I tried to include some header files again, but this error is still pure! I am lost in myself! Best regards! //==================================== // Configure.h //==================================== //================================================================================= // Debugging options // #define DEBUG_COMMANDS (1<<0) // Debugging command interface #define STACK_DEBUG (1<<1) // Measurement of stack size #define ACK_DEBUG (1<<2) // Debug pin active during ACK code #define SYNC_DEBUG (1<<3) // Debug pin active during SYNC code #define RESET_DEBUG (1<<4) // Debug pin active during Reset sequence #define CYCLE_DEBUG (1<<5) // Debug pin active during Vdd cycling #define COMMAND_DEBUG (1<<6) // Use debug version of commandExec #define DEBUG (DEBUG_COMMANDS|ACK_DEBUG|SYNC_DEBUG|RESET_DEBUG|COMMAND_DEBUG) // Change to enable some debugging code //===================================================================================== // Uncomment one of the following lines to choose a configuration // // If creating a new configuration copy one of the existing configurations (USBDM) to // a new file and add below //===================================================================================== //#include "USBDM_JB16.h" // USBDM - Universal TBDML/OSBDM - see USBDM_JB16_SOIC.pdf #include "TBDML_JB16.h" // TBDML - Minimal JB16 version - see TBDML_JB16_SOIC28.pdf //#include "OSBDM_JB16.h" // OSBDM - Basic OSBDM hardware - see OSBDM.pdf schematic, 21/12/2005 //#include "WTBDM_JB16.h" // WTBDM08 - Wiztronics BDMS08 - see WTBDMS08.pdf schematic 27/6/2007 //#include "OSBDME_JB16.h" // OSBDM+E - OSBDM+Flash supply - see OSBDM08+e.pdf schematic, 30/12/2006 //#include "USBDM_JM60.h" // USBDM - Universal TBDML/OSBDM - see schematic provided Re: Upgrading firmware in an old JB16 USBDM Dear pgo, Thank you for your support! I have replaced the MCU and plan to test it again in the future (1 If IRQ=VTST: - External clock on OSC1 is 12MHz - PTA3=high - PTE3=high. I have found and tested the Winxp driver for TBDML_JB16. abs. s19&TBDML_JB16-SOIC28 [Minimum]. pdf, which can be downloaded using CW5.1 connection to XD256, and can also be used by WIN7. I am very happy! But it cannot be used on USB3.0 WIN7 and WIN10 systems. I tested the TBDML_. s19 generated by USBDM_JB16_V4_10 and downloaded it to TBDML_JB16_SOIC28 [Minimum]. pdf hardware. In the WIN7 environment, CW displayed the discovery of a bdm device, but CW5.1 indicated that it was not connected to the target board. I think maybe I didn't define the successful bdm signal pin or BDM * * * DLL version mismatch or other issues. I will continue to work hard to test with your support, and I believe I will succeed! Best regards! Re: Upgrading firmware in an old JB16 USBDM I have not used a JB16 for a very long time and remember little directly. I have checked the reference manual and found that for the ROM monitor to be entered there are two possible methods: 1. If IRQ = VTST: – External clock on OSC1 is 12MHz – PTA3 = high – PTE3 = high 2. If $FFFE & $FFFF is blank (contains $FF): – External clock on OSC1 is 12MHz – IRQ = VDD – PTE3 = high For the usual USB in-circuit-programming of the  MC908JB16 option 2 is usual so it is necessary that the reset vector be erased (0xFFFF) so that the on-chip ROM monitor is active. Since you have programmed the chip this will not be the case and ICP is not available. Please refer to the reference manual: Section: 9.4.1 Entering Monitor Mode bye Re: Upgrading firmware in an old JB16 USBDM Hello, I also love TBDML because I started learning from MC9S12XD256. A while ago, I suddenly wanted to try making a TBDML, so I used TBDML_JB16-SOIC28 [Minimal]. pdf to complete the hardware. But I tested all the firmware and couldn't correctly install the drivers inside the sub folder of the USBDM_JB16-Distribution folder. I was planning to modify the VID&PID (modification date 12062008) corresponding to the driver in TBDML_JB16.abs.19, but I foolishly used ICP mode to upgrade USBDL_CF_JMxx ABS S19, from now on, JB16-PIN27 grounding can no longer activate ICP mode. I think it was based on MCU's s19 file that different ICP rewritten ICP's own Flash code space code? Can't ICP protect its own code space? This is a very magical process, and I am preparing to replace a JB16 to verify again. At the same time, I also want to know which driver (winXP) or win7 environment was used in the original TBDML. I am really confused! Thank you for maintaining these massive codes! Thank you again! Best Regards! Re: Upgrading firmware in an old JB16 USBDM Hi, I built the code under Linux and used JB16_Bootloader to flash it to both 4.10.0 and 4.10.2 but I get "Target BDM Enable failed" so I guess either the programmer is busted or incompatible. My earlier comment about FirmwareChanger was wrong - I was confused by the error message and didn't realise it doesn't support JB16s (realised it after debugging how the s19 load process works..) Thanks for your prompt and comprehensive reply, it has been very helpful, and thanks for maintaining the software! Re: Upgrading firmware in an old JB16 USBDM Hi, The first issue was that FirmwareUpdater.exe wouldn't load the .s19 file - it didn't even get to switching to ICP mode. I was trying it under a Windows VM (on OSX) but I'll try Linux VM and see but if I can't then in the bin it goes 🙂 Re: Upgrading firmware in an old JB16 USBDM Hi, I was able to find an old witztronics (sp?) JB16 BDM. This worked fine under Linux with a HCS12 target (programmer+memory dump).  I was also able to update the firmware without any problems (to V4.10.0). Under a Windows VM I was able to use the BDM with the HCS programmer and Memory Dump but the JB16_Boot-loader failed when doing the ICP reboot - the device failed to detect as a USB device.  This was expected as described earlier. So it doesn't look like you can upgrade under Windows. I do not have an explanation for the JB_16 boot-loader problems with opening the firmware file.  The auto-detect work OK for me and I was able to explicitly open a suitable firmware file from the JB16 firmware directory under both windows and Linux. The above was with the current USBDM version. bye Re: Upgrading firmware in an old JB16 USBDM Yeah I understand it's not supported but it does seem strange that the firmware loader can't even load the .s19 file for it - seems like a different issue. Re: Upgrading firmware in an old JB16 USBDM Hi, I'm sorry the JB16 version has been unsupported for a long while. See comments here: http://usbdm.sourceforge.net/USBDM_V4.12/html/index.html Basically the bootloader that is built in to the chip doesn't meet the USB standards properly and doesn't work with Windows 7 onwards. Mind you I haven't tried it since then. If I can find a JB16 BDM I will check this. bye Re: Upgrading firmware in an old JB16 USBDM Hi, I'm uncertain what link you are referring to. The most current version of the software (including firmware and schematic for JB16) is included in: https://sourceforge.net/projects/usbdm/files/Version%204.12.1/Software/USBDM_4_12_1_340_Win.msi/download Source code is on GitHub:  https://github.com/podonoghue/usbdm-firmware/tree/master/USBDM_JB16_V4_10 However - I really don't recommend the JB16 version bye Re: Upgrading firmware in an old JB16 USBDM Dear pgo; Thank you for your suggestion. I understand that JMXX is a fully functional BDM, and in the future, I am considering creating a JM version of BDM; So, now I just want to test what I initially encountered and used TBDML corresponds to that version of firmware, although it no longer supports WIN10 well; I just want to test it out, and now my TBDML hardware has become Operates on firmware version 4.12 of USB The connection I mentioned is that the attachment here cannot be downloaded: https://community.nxp.com/t5/OSBDM-and-TBDML/USBDM-Version-2-JB16-Version/m-p/151757#M726 Best regards! Re: Upgrading firmware in an old JB16 USBDM Dear pgo; Thank you for your suggestion. I understand that JMXX is a fully functional BDM, and in the future, I am considering creating a JM version of BDM; So, now I just want to test what I initially encountered and used TBDML corresponds to that version of firmware, although it no longer supports WIN10 well; I just want to test it out, and now my TBDML hardware has become Operates on firmware version 4.12 of USB The connection I mentioned is that the attachment here cannot be downloaded: https://community.nxp.com/t5/OSBDM-and-TBDML/USBDM-Version-2-JB16- Version/m-p/151757#M726 (USBDM_V2); Best regards!
View full article
Cannot step through debugging on PN7642 (PNEV7642A) Hi, I'm trying to debug a PCSC fw based on example UsbCcid_Freertos_Pub, running on an evaluation kit board PN7642 (PNEV7642A) I've followed instrucctions from FREERTOS Debug Document. UG10059 - MCUXpresso IDE 25.06 FreeRTOS Debug Guide. From what I can see in logs, FreeRTOS Thread awareness should be OK, but it is not fully working. I have a list of thread in Debug, but Thread states de RTOS has not been detected. Debug statusDebug statusDebug statusDebug status Using an MCULink, I can step over until after launching the thread scheduler with phOsal_StartScheduler(); After that, a breakpoint in the working thread stops it, but I cannot step over or step out. I got messages in Disassembly that could be relate to the problem. 0020ae54: Failed to execute MI command: -data-disassemble -s 2141780 -e 2141824 -- 3 Error message from debugger back end: Cannot access memory at address 0x20ae54 Can someone give me some pointers? Regards, Re: Cannot step through debugging on PN7642 (PNEV7642A) Hi @EduardoZamora , check_nxpfw_update demo reports FW as 02.02, and 02.02 for SDK as well. Returns STATUS_FW_SAME_VERSION. I'll try to find a JLink to further testing, but I adquired a brand new MCULink just for debugging this board. As for the OS... Do you mean the HOST OS? I'm using ubuntu 22.04.5 LTS: Regards, Regards, Re: Cannot step through debugging on PN7642 (PNEV7642A) Hello @V_Palacio,. Hope you are doing well. An SDK is bound to a certain firmware version. If FW version of PN7642 does not match the FW used by the SDK, some issues and unexpected behaviors can occur. Please make sure you are using the latest firmware version available; you can run the check_nxpfw_update demo from PN7642 SDK, and if PN7642 and SDK firmware versions do not match, this demo will help you updating the FW. You can also try deleting the debug configuration (*.launch file that is generated for the debugging) and start the debugging session again. If possible, please do some tests using J-Link firmware for your debugger. Still, the behavior you observe during debugging should be related to the OS, and as you pointed out, it would be expected after the Scheduler starts running. To debug, please consider setting a breakpoint, reach it, disable it, and run until the next one. Regards, Eduardo. Re: Cannot step through debugging on PN7642 (PNEV7642A) Correction: RTOS not detected comes from Azure RTOS. FREERTOS Task shows 3 Task: -IDLE -ClTaskEvent -Tmr Svc Re: Cannot step through debugging on PN7642 (PNEV7642A) Hi, Please use the latest versions of PN7642 SDK and Firmware available on PN7642 product page, "Software" section. You can also try updating CMSIS-DAP firmware of your MCULink. Regards, Eduardo. Re: Cannot step through debugging on PN7642 (PNEV7642A) With latest SDK (2.15) and launch debug config as "All Stop", now I can manage myself to debug.
View full article
无法步进调试 PN7642 (PNEV7642A) 您好, 我正在尝试根据示例 USBCCID_FreeRTOS_PUB 调试 PCSC 固件,运行在评估套件板 PN7642 (PNEV7642A) 上,我已经按照了 FREERTOS 调试文档中的说明进行操作。 UG10059 - MCUXpresso IDE 25.06 FreeRTOS 调试指南。 从日志中可以看出,FreeRTOS 线程感知应该没问题,但并没有完全正常工作。 我在调试程序中有一个线程列表,但线程状态为未检测到 RTOS。 Debug statusDebug statusDebug status调试状态 使用 MCULink,在使用phOsal_StartScheduler(); 启动线程调度器之前,我可以跨步,之后,工作线程中的断点会停止工作线程,但我无法跨步或跨出。 我在反汇编中找到了可能与问题有关的信息。 0020ae54: 执行 MI 命令失败: -data-disassemble -s 2141780 -e 2141824 -- 3 来自调试器后端的错误信息: 无法访问地址为 0x20ae54 的内存 谁能给我指点一下? 此致, Re: Cannot step through debugging on PN7642 (PNEV7642A) 你好@EduardoZamora、 check_nxpfw_update 演示报告 FW 为 02.02,SDK 也是 02.02。 返回STATUS_FW_SAME_VERSION。 我会尝试找到一个 jLink 进行进一步测试,但我购买了一个全新的 McULink 只是为了调试这个板。 至于操作系统...你是指主机操作系统吗?我使用的是 ubuntu 22.04.5 LTS: 此致, 此致, Re: Cannot step through debugging on PN7642 (PNEV7642A) 你好@V_Palacio,. 希望你一切顺利。 SDK 与某个固件版本绑定。如果 PN7642 的 FW 版本与 SDK 使用的 FW 版本不一致,可能会出现一些问题和意外行为。请确保您使用的是最新版本的固件;您可以运行 PN7642 SDK 中的 check_nxpfw_update 演示,如果 PN7642 和 SDK 固件版本不匹配,该演示将帮助您更新固件。 您也可以尝试删除调试配置(为调试生成的*.launch 文件),然后重新启动调试会话。如果可能,请使用调试器的 J-Link 固件进行一些测试。 不过,您在调试过程中观察到的行为应该与操作系统有关,而且正如您所指出的那样,在计划程序开始运行后出现这种情况也是意料之中的。要进行调试,请考虑设置一个断点,达到断点后禁用断点,然后运行到下一个断点。 Eduardo。 Re: Cannot step through debugging on PN7642 (PNEV7642A) 更正:未检测到的 RTOS 来自 Azure RTOS。 FREERTOS 任务显示 3 任务: -IDLE -ClTaskEvent -Tmr Svc Re: Cannot step through debugging on PN7642 (PNEV7642A) 您好, 请使用 PN7642 产品页面 "Software" 部分提供的最新版本 PN7642 SDK 和固件。 您也可以尝试更新 MCULink 的 CMSIS-DAP 固件。 Eduardo。 Re: Cannot step through debugging on PN7642 (PNEV7642A) 有了最新的 SDK (2.15) 并以 " All Stop " 的身份启动调试配置,现在我可以自己进行调试了。
View full article
RGMII Late Peer Power-Up: Reliable Verification of Actual Communication Health In an RGMII deployment, when the peer device is powered on later than the switch, communication may remain abnormal even though no MAC errors are reported. After manually reconfiguring RXC_DELAY and RXC_PD, communication returns to normal. Could you recommend a reliable approach to determine whether end-to-end peer communication is truly operational, rather than relying only on basic status indications? SJA1105PQRS  Re: RGMII Late Peer Power-Up: Reliable Verification of Actual Communication Health System Configuration: | Port | Connection | Mode | |--------|------------|---------| | Port 0 | SOC | MAC-MAC | | Port 4 | MCU | MAC-MAC | | Port 1 | PHY | MAC-PHY | Initialization Sequence: 1. MCU boots and initializes Switch/PHY configurations 2. SOC completes initialization ~10 seconds later 3. Ethernet device visible via ifconfig, but communication fails 4. RXC must be manually controlled to restore communication Problem: No error notification mechanism to determine SOC boot completion or when to trigger RXC for recovery. Port 1 and Port 4 remain operational during this issue. Observed Symptoms: |                    Scenario                                  |     MACERR                      |                  Recovery Method               | |------------------------------------  |----------------------|---------------------------------| | SOC online at normal temperature       | Reported (Runt+SOF) | Reconfigure RXC_BYPASS + RXC_PD | | SOC powered on at high temperature | NOT detected              | Reconfigure RXC_BYPASS + RXC_PD | Additional Issue (possibly unrelated): During normal operation, Port 0 may occasionally go offline with low probability. When this occurs, no MACERR is reported and communication cannot be restored. Best regards, __shiyi Re: RGMII Late Peer Power-Up: Reliable Verification of Actual Communication Health Hello @__shiyi , Which PHY device are you using on the RGMII interface? When you mention the peer device, do you refer to the link partner of your PHY or another MCU MAC, switch or SoC? Does the issue require a manual reconfiguration of RXC_DELAY / RXC_PD only after the initial power‑up or does it also occur after a normal link down / link up cycle? The standard link status (PHY link up, MAC no error counters) only confirms signal‑level integrity. Reliable confirmation requires checks at higher OSI layers, e.g. TCP/IP. Best regards, Pavel Re: RGMII Late Peer Power-Up: Reliable Verification of Actual Communication Health Hello @__shiyi , Thank you for detailed description. It appears that this behavior is described in UM11040, Software user manual for SJA1105P, SJA1105Q, SJA1105R, SJA1105S,  Rev. 3, Table 123. Registers CFG_PAD_MIIx_ID . Please check that out. Best regards, Pavel
View full article
[iMX93] ADC 校准失败 您好,NXP团队: 我只是在我们的设备树中启用了 “adc1”,但是系统响应校准失败了。 原因何在? &adc1 { vref-supply = <&reg_vref_1v8>; status = "okay"; }; root@imx93afee320a1:/sys/bus/iio/devices# dmesg| grep adc [ 1.565952] Bluetooth: HCI UART protocol Broadcom registered [ 1.719162] imx93-adc 44530000.adc: ADC calibration failed! [ 1.724775] imx93-adc: probe of 44530000.adc failed with error -11 [ 1.842125] can: broadcast manager protocol Re: [iMX93] ADC calibration failed 你好,你找到解决办法了吗?我的 i.MX93 也遇到了同样的问题。 Re: [iMX93] ADC calibration failed 你好,恩智浦团队。我也遇到了同样的问题。我的 IMX93 ADC 也显示错误 "imx93-adc 44530000.adc":ADC 校准失败!"和 "imx93-adc: probe of 44530000.adc failed with error -11"。我正在使用研华的 IMX93ROM-2820A1 核心板。 Re: [iMX93] ADC calibration failed 你使用的是哪个版本的电路板支持包?你在使用恩智浦 93EVK 板吗?
View full article
S32G399 + SJA1110 首先,感谢您的回答,但我现在看的是 s32g339-rd3 的电路图,现在我通过 GMAC0 将 s32g339a 连接到 KSZ9031 RJ45,但这并没有连接到 ETH_SWITCH SJA1110? 那么,如果我现在想使用框架优先权,是否不能通过 SJA1110,而只能直接在 GMAC 使用? Re: S32G399 + SJA1110 你好,东民 我正在看 s32g339-rd3 的电路图。 >>>请参阅此链接:S32G-VNP-RDB3 设计文件 我通过 GMAC0 将 s32g339a 连接到 KSZ9031 RJ45,但它没有连接到 ETH_SWITCH SJA1110? >>>是的,SJA1110 无法连接RDB3 上的 GMAC0。对于 S32G3 的 SJA1110,它支持 Qav、Qbv,但不连接 RDB3 上的 GMAC0。 那么,如果我现在想使用框架优先权,是否不能通过 SJA1110,而只能直接在 GMAC 使用? >>>是的您可以使用 GMAC 支持帧抢占(IEEE 802.1Qbu),以实现时间敏感型联网。SJA1110 不连接 RDB3 上的 GMAC0。 BR 乔伊
View full article
MX8QM hi team, i am ordering MCIMX8QM-CPU i need to beingup Android and Freertos  do we need Jailhouse hypervisor here and how to download android source to compile and flash? Re: MX8QM @Manuel_Salas this info I am aware but requirement is to run Android and freertos on top of hypervisor. MCIMX8QM-CPU -soc  Not possible? Re: MX8QM Hello @Shivu_Guru_24  As you can see in the i.MX8QM datasheet:     It has 2 Cortex M4 processors. So, you can run heterogeneous processing, running Linux in Cortex A, and run RTOS in Cortex M, in an independent way. So, you do not need to use any hypervisor. Best regards, Salas. Re: MX8QM Hello @Shivu_Guru_24  This is "Technically" possible, but we have not any examples of how to do it. You can refer to the HARPOON as starter point. Best regards, Salas. Re: MX8QM On last kernel is just supported Jailhouse for i.MX8QM. https://github.com/nxp-imx/imx-jailhouse/blob/lf-6.12.49_2.2.0/configs/arm64/imx8qm.c Best regards, Salas. Re: MX8QM @Manuel_Salas  which Hypervisor is best for latest kernal? Xen or jailhouse?
View full article
Test Ram on iMX93 Hi all, We are using BSP 1.5.2 on the i.MX93 with Windows IoT. Is there an integrated RAM test included in the BSP that is executed on every boot? i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Windows Windows 10 IoT Enterprise Re: Test Ram on iMX93 Thanks you Chavira, only to understand better your answare. Is it technically impossible or has it not been implemented? thanks, Fabio Re: Test Ram on iMX93 Hi @FabioDF_86, Thank you for contacting NXP Support!  Unfortunately that is not possible.
View full article
i.MX 93 LPUART RS-485 — TXRTSE 有効時の TE 0→1 遷移時のスプリアス約 3 ミリ秒 RTS パルス NXPサポートチーム様 当社は i.MX LPUART ペリフェラルを RS-485 モードで使用しており、RTS 信号に影響するハードウェア レベルの問題を特定しました。私たちはその根本的な原因を理解し、利用可能な緩和策について話し合いたいと思っています。 --- ハードウェアコンテキスト --- 私たちの設計では、LPUART RTS ピンは RS-485 トランシーバの送信イネーブル (DE) 入力に直接接続されています。TXRTSE ハードウェア機能は、LPUART が送信している間のみ RTS/DE ラインが自動的にアサートされ、最後のストップ ビットの直後にアサート解除されるように使用され、ソフトウェア オーバーヘッドなしで適切な半二重 RS-485 バス方向制御が可能になります。 この直接的な電気的接続のため、ドライバーの初期化中であっても RTS ピンの誤ったアサーションにより RS-485 トランシーバーが有効になり、バスが駆動され、他のバス参加者からの進行中の通信が破損する可能性があります。 --- デバイスツリー構成 --- 以下は、i.MX93 上の影響を受ける LPUART インスタンスの DTS 構成です。RTS_B パッドは、ハードウェア LPUART RTS 機能に多重化され、RS-485 トランシーバーの DE ピンにルーティングされます。RE (レシーバ有効化、アクティブ ロー) は、rs485-rx-during-tx-gpios を使用して別の GPIO 経由で制御されます。 &lpuartX { ステータス = "正常"; pinctrl-0 = <&pinctrl_lpuart_rs485_0>; uart-has-rtscts; linux、起動時に rs485 を有効化; rs485-rx-during-tx-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>; }; &lpuartY { ステータス = "正常"; ピンコントロール-0 = <&ピンコントロール_lpuart_rs485_1>; uart-has-rtscts; linux、起動時に rs485 を有効化; rs485-rx-during-tx-gpios = <&gpio2 14 GPIO_ACTIVE_LOW>; }; pinctrl_lpuart_rs485_0: lpuart_rs485_grp0 { fsl、ピン = < MX93_PAD_GPIO_IO05__LPUART6_RX 0x31e MX93_PAD_GPIO_IO04__LPUART6_TX 0x31e MX93_PAD_GPIO_IO07__LPUART6_RTS_B 0x31e MX93_PAD_GPIO_IO06__GPIO2_IO06 0x31e >; }; pinctrl_lpuart_rs485_1: lpuart_rs485_grp1 { fsl、ピン = < MX93_PAD_GPIO_IO13__LPUART8_RX 0x31e MX93_PAD_GPIO_IO12__LPUART8_TX 0x31e MX93_PAD_GPIO_IO15__LPUART8_RTS_B 0x31e MX93_PAD_GPIO_IO14__GPIO2_IO14 0x31e >; }; この設定では、Linux,rs485-enabled-at-boot-time により、ポートの起動時に RS-485 モード (および TXRTSE) がアクティブ化され、システムの起動時またはポートのオープン イベントごとにスプリアス RTS パルスが発生します。 --- 観察された行動 --- UARTMODIR レジスタの TXRTSE ビット (トランスミッタ送信要求有効化) が設定され、UARTCTRL のトランスミッタ有効化ビット (TE) が 0 から 1 に遷移すると、その時点ではデータが送信されていないにもかかわらず、RTS/DE ラインには約 3 ミリ秒続くスプリアス パルスが表示されます。 この動作は、アップストリームのNXP Linuxカーネルドライバ(drivers/tty/serial/fsl_lpuart.c)で明確に確認できます。ここで、lpuart32_setup_watermark_enable() には次のコメントと回避策があります。 /* * RS-485 がアクティブな場合、TE の有効化を start_tx まで延期します。 * TXRTSE が設定された TE 0->1 により、約 3 ミリ秒の RTS パルスが発生します (シリコンの癖)。 * TEを最初の実際の送信まで延期することで、RTS * アサーションは、ネットワーク上の実際のデータと一致します。 */ if (!sport->rs485_te_deferred) ctrl |= UARTCTRL_TE; 回避策では、TE の有効化を start_tx() まで延期し、実際のデータが送信されているときにのみ RTS/DE アサーションが発生するようにします。 --- 根本原因 — 段階的なメカニズム --- スプリアスパルスを生成する内部シーケンスについては次のように理解しています。 1. lpuart_config_rs485() が呼び出され、UARTMODIR で TXRTSE=1 が設定され、TE=0 のままになります。RTS は低いです。 2. ポートオープン中に lpuart32_setup_watermark_enable() が呼び出され、UARTCTRL に TE=1 が書き込まれます。この時点では TX FIFO は空です。 3. LPUART ハードウェアは、TXRTSE = 1 のときに TE 0 -> 1 遷移を検出します。 4. シリコンの癖: TX FIFO が空であるにもかかわらず、ハードウェアは送信が開始されたかのように直ちに RTS HIGH をアサートします。 5.約 3 ミリ秒後、ハードウェアは TC (送信完了) を認識し、送信するものがないと判断し、RTS LOW をアサート解除します。 タイミング図: 時間 ──────────────────────────────────────────────► config_rs485 open() 約3ミリ秒後 │ │ │ ▼ ▼ ▼ TXRTSE=1 TE: 0→1 TC 認識 TE=0 TXRTSE=1 FIFO が空です! │ │ RTS: ─── 低 ─────────┤ 高 ├──────────┤── 低 ─── │←─ 約3ミリ秒 ──→│ RTS 上のこの誤った HIGH パルスは、RS-485 トランシーバの DE 入力を約 3 ms 間直接有効にし、有効なデータなしでバスを駆動します。 --- 信号キャプチャ --- RTS (DE) 信号と TXD 信号は、ロジック アナライザーを使用して RS-485 トランシーバ入力でキャプチャされました。2 つのテスト シナリオが表示されます。 --- キャプチャ 1 --- UART を開いてすぐに送信 --- テスト アプリケーションは UART ポートを開き、遅延なくすぐに「Hello World」を書き込みます。 fd = open("/dev/ttyLPx", O_RDWR); 書き込み(fd, "Hello World", 11); TE 0->1でスプリアスRTSパルスは依然として発生しますが、実際の送信はTE 0->1で発生するため、 マイクロ秒単位で、奇妙なパルスと正当な RTS アサーションが 1 つの連続したパルスに結合されます。 最初の部分の偽りの性質はキャプチャでは確認できません。 --- キャプチャ 2 --- UART を開き、約 3 ミリ秒以上待ってから送信します --- テストアプリケーションはUARTポートを開き、Quirk期間(約3ミリ秒)よりも長くスリープします。 そして、その後に「Hello World」と書き込みます。 fd = open("/dev/ttyLPx", O_RDWR); usleep(3000); /* > ~3ms、スプリアスパルスの持続時間よりも長い */ 書き込み(fd, "Hello World", 11); 遅延がクワーク持続時間を超えるため、スプリアスパルスはデータが完全に送信される前に完了します。 と書かれています。これにより、バグが明確に明らかになります。 - open() のとき: RTS は対応する TXD アクティビティなしで HIGH をアサートします (スプリアス パルス、約 3 ms) - TC が認識されると RTS は LOW をアサート解除します (TX FIFO はずっと空でした) - スリープ後: アプリケーションがデータを送信し、RTSが再びHIGHをアサートし、TXDが「Hello World」ペイロードを伝送します。 2つのRTSパルス間のギャップにより、最初のパルスが原因ではないことが明白になる。 いかなるデータ送信によっても。   --- 質問 --- 1. この動作は、影響を受ける i.MX SoC の公式エラッタまたはテクニカル ノートに記載されていますか?もしそうなら、ドキュメント参照と影響を受けるデバイスのリストを提供していただけますか? 2. 影響を受ける i.MX SoC バリアント (例: i.MX7ULP、i.MX8ULP、i.MX8QXP、i.MX93、その他) はどれですか? 3. どのシリコン リビジョンでもハードウェア レベルの修正は利用可能でしょうか。それともソフトウェアによる回避策 (TE の延期) が唯一推奨される緩和策でしょうか。 4. 約 3 ミリ秒の持続時間はデターミニスティックですか (IDLECFG 設定またはボー レートに結びついています)、それともシリコン サンプル/リビジョンによって異なりますか? 5. 特に RS-485 モードでポートが繰り返し開閉される場合、遅延 TE 回避策で注意すべき副作用はありますか? - - 環境 - - - SoC: i.MX93 - カーネル: Linux (NXP ダウンストリームフォーク、lf-6.12.49-2.2.0 ベース) - ドライバ: fsl_lpuart.c - モード: RS-485、TXRTSE 有効、RTS_B パッドを RS-485 トランシーバ DE 入力に接続 ご協力ありがとうございます。 Re: i.MX 93 LPUART RS-485 — Spurious ~3ms RTS Pulse on TE 0→1 Transition with TXRTSE Enabled こんにちは、 @tapio_reijonen さん。 使用しているBSPのバージョンは何ですか? それらのコメントが表示されているコードの具体的な箇所を教えていただけますか? サードパーティ製の改造ドライバを使用しているかどうかは分かりませんが、UART IPには既知のバグがいくつかありますが、それらは既に公式のBSPリリースでソフトウェア的に修正されています。 弊社の公式Linuxディストリビューションをお試しください。 https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/drivers/tty/serial/fsl_lpuart.c 引き続きサポートを提供するため、追加情報をお寄せください。 よろしくお願いします、 チャビラ Re: i.MX 93 LPUART RS-485 — Spurious ~3ms RTS Pulse on TE 0→1 Transition with TXRTSE Enabled こんにちは、 @Chaviraさん BSPバージョン: NXP公式BSP lf-6.12.y(Linux 6.12.49、リリースlf-6.12.49-2.2.0)。 ドライバ: NXP 公式リポジトリhttps://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/drivers/tty/serial/fsl_lpuart.cから変更されていない drivers/tty/serial/fsl_lpuart.c 。 この問題は、変更を加えていない公式のNXP BSPでも再現可能です。i.MX93で標準ドライバをRS-485モード(linux、rs485-enabled-at-boot-time、uart-has-rtscts、TXRTSE enabled)で使用すると、シリアルポートを開くと約3msの不要なRTSパルスが発生します。TE 0→1遷移は、TXRTSEが設定されている間、送信機プリアンブルをトリガーし、RS-485バス上でRTS/DEをアサートしますが、データは送信されません。 Re: i.MX 93 LPUART RS-485 — Spurious ~3ms RTS Pulse on TE 0→1 Transition with TXRTSE Enabled こんにちは、 @tapio_reijonen さん。 返信が遅くなり申し訳ありません。 私の方でも同様の現象を再現できたので、以下の結論に至りました。 この問題の根本原因は、LPUART IPの内部ステートマシンのシリコンレベルでの設計にある。RS-485モードを設定する際、UARTMODIRレジスタのTXRTSEビットを設定することで、RTSピンの物理的な制御をハードウェアに直接委ねることができます。その瞬間から、シリコンはUARTCTRLレジスタのTE(トランスミッタ・イネーブル)ビットの0から1への遷移に無条件で反応するようにハードワイヤリングされる。この遷移により、論理ゲートが作動し、RTSピンが即座にHIGHになり、Linuxカーネルからの制御がバイパスされます。 トランスミッタを有効にすると、ハードウェアは送信が間近であると判断し、プリアンブルを送信しようとしますが、送信バッファ(TX FIFO)が空であることが判明します。ステートマシンは既にRTS信号を発信しているため、データのシリアル化を待機している間、停止状態になります。処理すべきバイトがないため、ハードウェアが非アクティブ状態を理由に「送信完了」(TC)状態を独自に認識するまでに約3ミリ秒が経過し、その時点でようやくRTS信号をLOW状態に戻します。 公式のfsl_lpuart.cに含まれる回避策ドライバはこの電気的挙動を完全に排除するのではなく、単に時系列的に隠蔽するだけです。カーネルの戦略は、ポートの初期化(open())中はTEビットを無効にし、write()関数が呼び出され、start_tx()が実行されるまで、そのビットを1に遷移させることです。しかし、TXピンからデータを出力するには、TEビットを必ず1に設定する必要があります。この場合、ハードウェアは最初に発生した誤ったパルスを再び注入します。しかし、その直後に実際のデータペイロードが続くため、不規則なパルスは正当なRTSアサーションとほとんど知覚できないほどに融合してしまう。 Re: i.MX 93 LPUART RS-485 — Spurious ~3ms RTS Pulse on TE 0→1 Transition with TXRTSE Enabled @tapio_reijonen デバイスツリーで`uart-has-rtscts`が使用されている場合、「このプロパティが存在するということは、UARTに専用ラインがあることを示しています」。つまり、制御にはGPIOではなく、iMX93の専用ピンが使用されるということです。 `fsl_lpuart.c` が確認できます。関連する`serial_mctrl_gpio`コードが欠落しています。たとえLinuxレベルでGPIOを制御できたとしても、このシリアルポートモジュールの状態遷移とは一致しないだろう。そして、運転手を混乱させる可能性もある。 別のシリアルポートドライバ(`drivers/tty/serial/imx.c`)と比較すると、`serial_mctrl_gpio`というコードが見つかります。 https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/Documentation/devicetree/bindings/serial/serial.yaml uart-has-rtscts: $ref: /schemas/types.yaml#/definitions/flag description: The presence of this property indicates that the UART has dedicated lines for RTS/CTS hardware flow control, and that they are available for use (wired and enabled by pinmux configuration). This depends on both the UART hardware and the board wiring. https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/drivers/tty/serial/imx.c #include "serial_mctrl_gpio.h" struct imx_port { struct uart_port port; struct timer_list timer; unsigned int old_status; unsigned int have_rtscts:1; unsigned int have_rtsgpio:1; unsigned int dte_mode:1; unsigned int inverted_tx:1; unsigned int inverted_rx:1; struct clk *clk_ipg; struct clk *clk_per; const struct imx_uart_data *devdata; struct mctrl_gpios *gpios; /* counter to stop 0xff flood */ int idle_counter;
View full article
一次可以写入多少字节? 我使用的是 s32ds,rtd 版本是 4.0.0,mcu 是 s32k314。 一次可以写入多少字节? 示例设置为 128 字节。当我设置超过 128 字节时,效果不佳... (t_BufferSize 为 128U)。 1. 最大写入字节数是 128 字节吗? 2. 如果最大写入字节数为 128 字节,我在哪里可以找到这方面的文档或数据表? 感谢帮助。 Re: How many bytes can be written at a time? 你好@rlaxortn API 的说明中对此有明确解释。
View full article
ASL2507SHN のソフトウェアガイドライン こんにちは、 新しいプロジェクトでは、ASL2507SHN を使用したいと考えています。S32K146で制御する予定です。残念ながら、データシートには、どのレジスタを必ずどのような順序で書き込む必要があるかが明確に示されていません。 これに関するより詳細なドキュメントやコード例はありますか? ASL250ySHN よろしくお願いいたします。 サンドラ Re: Software Guidline for ASL2507SHN こんにちはサンドラさん 正確なレジスタプログラミング順序と動作するリファレンスコードを取得するには、製品ページのソフトウェアセクションで入手できる SSL_Reference_SW パッケージをダウンロードすることをお勧めします: https://www.nxp.com/products/ASL250ySHN ファイルは「安全 (NDA が必要)」としてマークされていることに注意してください。 BRs、トーマス
View full article
如何定义 i2s dma 段落 您好,NXP团队: #define demo_i2s_tx_instance_index (7U) #define demo_dma_instance_index (0U) #define demo_i2s_tx_channel (19) #define demo_i2s_master_clock_frequency(24576000)   上述定义使用 DMA 传输 I2S TX (I2S7)。现在我想使用 I2S6 进行 I2S DMA 接收。我应该如何配置这些值? 上面这些定义是使用 DMA 传输 I2S TX (I2S7), 我现在要使用 I2S6 做 I2S DMA RX。改如何配置这几个值呢? #define demo_i2s_rx_instance_index (????) #define demo_rx_dma_instance_index (????) #define demo_i2s_rx_channel (????)   谢谢! 哈利 Re: HOW TO DEFINE I2S DMA PARA 你好@harry3 请问您使用的是哪种芯片? BR 哈利
View full article
LX2080 能否提供 LX2080 的热模拟模型? Re: LX2080 您需要就所需信息签署保密协议。 请从https://support.nxp.com/s/?language=en_US创建内部票据
View full article
eFlexPWM波形生成の問題 6チャネルPWM相補波生成を実現したいのですが、以下の構成ではチップ上の6本のピンをすべて接続しても波形出力がありません。 PWM を有効にすると、ボード上の出力は完全にノイズフリーになります。私の問題がどこにあるのかを特定するのを手伝っていただけますか?皆様本当にありがとうございました。 画像が表示されない理由が分かりません。まず私の設定について説明させてください。 PwmChannel には 3 つのサブチャネル (0/1/2) があります。FlexPwmSubModules のクロック ソース選択はすべて FLEXPWM_IP_CLKSOURCE_PERIPHERAL_CLK に設定されています。初期化制御の選択は、それぞれ MASTER_RELOAD、MASTER_SYNC、MASTER_SYNC です。ソース選択の再ロードとソース選択の強制は両方とも MASTER に設定されています。 各サブには、PWMA (位相加重振幅) とエッジ対称モードのみがあります。 各サブには、PWMA (位相加重振幅) とエッジ対称モードのみがあります。障害、停止、デバッグ モードのチャネル出力は LOGIC_0 です。「FaultSettings」で、0 から 3 までのすべてのオプションを選択します。Fault0 から Fault3 の障害レベルはすべて LOW です。 チップ領域で波が生成されない理由を解明する手助けをお願いします。 Re: eFlexPWM waveform generation issue こんにちは、 ここに問題は見当たりません。設定あり     Re: eFlexPWM waveform generation issue ご返信ありがとうございます。電波を送信できるようになりました。しかし、現時点ではまだ問題が 1 つ残っています。デフォルトの期間は 16000、クロック CORE_CLK は 160 MHz、エッジ トリガー モードになっています。周波数 10K の PWM を取得したかったのですが、実際に得られたのは 2.4KHz でした。 Re: eFlexPWM waveform generation issue こんにちは、 利用可能な「FlexPWM_Pwm_Ip_Example_S32K396」RTD デモ例から始めることをお勧めします。単一のサブモジュール上の FlexPWM の独立した構成を示していますが、複数のサブモジュール上の補完的な機能に簡単に変更できます。これは、サブモジュール 0 と 1 を追加して、PWMA/PWMB 出力に補完信号を生成するために使用した設定です。 以下はFlexPwm_Ip_Initが呼び出された後のそれぞれの出力信号です。 別のピンとサブモジュールを追加し、それに応じてサブモジュール1に設定することができます。 お役に立てれば幸いです。 BR、ペトル
View full article