Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
[ABB] [SE050C] [纳米软件包] [Zephyr] 设置 PlatformsCP 你好 客户 ABB 正在通过 nRF5340 + Zephyr 使用 SE050C1,他正在集成我们的纳米软件包 MW。 在 SCP03 中进行通信需要它 我想,第一步是编译相应的纳米包库,我相信在这一阶段会涉及到一个独特的定义,即 CONFIG_PLUGANDTRUST_SCP03 ,我能问一下如何配置/定义它吗?是否需要将预处理器定义传递给 CMake? 此外,我还发现还有一个定义 PLUGANDTRUST_SE05X_AUTH 需要设置为 PlatformSCP03 ,这个定义与 CONFIG_PLUGANDTRUST_SCP03 有什么关系? 谢谢, Mehdi Re: [ABB] [SE050C][Nano-package][Zephyr] setting PlatformSCP 谢谢 Michael 正确的编译流程 会是什么样子吗? 第 1 步——一方面,使用 CMake 构建 mw 库(在 Cmake 选项中定义了 CONFIG_PLUGANDTRUST_SCP03) 第 2 步 — 在 .proj 中使用 config_plugandtrust_scp03=Y 编译 Zephyr 示例文件 我的理解是,只有 CONFIG_PLUGANDTRUST_SCP3 需要在 proj 文件中声明,而 CONFIG_PLUGANDTRUST_SCP03 是一个 Cmake 选项,对吗? 迈赫迪 Re: [ABB] [SE050C][Nano-package][Zephyr] setting PlatformSCP 你好,迈赫迪 的定义: CONFIG_PLUGANDTRUST_SCP03 : 在编译版本中启用 SCP03 代码/库(包括 SCP03 源文件、加密依赖关系) PLUGANDTRUST_SE05X_AUTH=PlatformSCP03 :告诉运行时代码在与 SE050 通信时实际使用 SCP03 身份验证 两者都必须设置,SCP03 才能正常工作。 对于 zephyr 编译,可在 zephyr prj.conf 文件中设置定义,默认情况下全部关闭: config_plugandtrust_scp03=n config_plugandtrust_eckey=n config_plugandtrust_eckey_scp03=n config_plugandtrust_sm_apdu_mutex=n   这样就无需更改 cmake 配置。   KInd regards, Michael Re: [ABB] [SE050C][Nano-package][Zephyr] setting PlatformSCP 你好,迈赫迪 使用平台 scp 需要做的唯一一件事是 在 prj.conf 文件中设置CONFIG_PLUGANDTRUST_SCP03=y 我用 zephyr 测试了纳米软件包: 1. 在示例文件夹内的 prj.conf 文件(示例:.\workspace\modules\crypto\nxp-plugandtrust\examples\se05x_GetInfo\zephyr\prj.conf)中,只需设置以下内容:CONFIG_PLUGANDTRUST_SCP03=y 2. 版本示例:> west 版本-b frdm_k64f 模块/crypto/nxp-plugandTrust/examples/se05x_getinfo/Zephyr--pristine 3. flash 二进制文件:C:\nxp\workspace\build\zephyr\zephyr.bin 到 k64 而且很有效。 此致敬礼, Parth
記事全体を表示
Doing I/O from an interrupt handler The relevant parameters for this question are as follows: 1. IDE: S32 DS for ARM v 2.2 (Yes, I know this is old, but so is the product in question; we need to support the existing code) 2. Chip: S32K148 3. OS: Windows 11 4. System OS: Bare metal Attempting to do any kind of SPI Master transfer in an ISR hangs, and usually the API that was interrupted is a blocking I/O (I2C or SPI) call. On a blocking call (to LPSPI_DRV_MasterTransferBlocking() ), the call hangs because sysTick interrupts do not seem to be happening, so the MCU does not get a sense of elapsing time. On a non-blocking call (LPSPI_DRV_MasterTransfer() followed by LPSPI_DRV_MasterGetTransferStatus(SPI1, &byte_remaining) ), byte_remaining stays at the original value. I have attempted to add a call to  LPSPI_DRV_MasterAbortTransfer(SPI1) before calling LPSPI_DRV_MasterTransfer() for the async transfer, but the result is the same. On a semi-related question, what triggers the SysTick_Handler() ? My intuition says it should be running all the time increasing the tick count every 1ms, but putting a break point in the body of it seems to hit only some time. Strangely, it is sometimes not hit even when a blocking SPI transfer is successful, which should be arming the system timer if it was unarmed before. Another semi-related question is that in the S32 Cookbook example code for SPI, there are no use of the SDK provided APIs; the examples do all the register bit banging directly. Are there any examples that are closer to production worthy code, in that they at least call the NXP APIs instead of re-inventing the wheel? Re: Doing I/O from an interrupt handler Hello @PetrS  Thank you very much. The interrupt priority indeed solved the problem. However, I do have a question: I agree that blocking inside an ISR is not a good idea, but what is the alternative in a single threaded application? I could spin in the application context until the SPI transfer is done. That will allow other I/O interrupts to happen (my understanding is that negative priority interrupts will fire anyway; they are not disabled when a positive priority ISR is entered). But in my situation doing overlapping I/O is neither possible nor desirable. 1. It is not possible because the S32K148 is the bus master for all the buses. So if it is doing a SPI transfer in an ISR, it cannot possibly drive another I/O bus and therefore cannot trigger interrupts. 2. It is not desirable because there could be shared globals between the ISRs, so I don't want to start a new I/O until the current one is complete. For a single threaded bare metal application, what would be your recommendation to handle this situation? Re: Doing I/O from an interrupt handler Hi, OK, then simply interrupts priorities could cause this behavior. The blocking API hangs simply because the LPSPI ISR cannot run while the GPIO ISR is active if both interrupts have the same priority. The blocking call waits for the ISR to finish the transfer and post the semaphore - but that ISR never gets CPU time until the GPIO ISR exits. The SDK’s driver indeed finishes transfers in the LPSPI interrupt, and only then posts the semaphore to release the blocking call, so equal‑priority ISRs will deadlock the transfer this way.  The non‑blocking API behaves the same: if called from a GPIO ISR of equal priority, the LPSPI ISR cannot preempt it, so byte_remaining never changes because the driver state machine is never serviced by the LPSPI IRQ. Only after raising LPSPI to a higher priority (numerically lower value) will the LPSPI interrupt fire immediately, complete the transfer, and allow both blocking and non‑blocking APIs to work as expected. Try  /* Smaller number = higher priority on Cortex-M */ INT_SYS_SetPriority(SysTick_IRQn, 0);     // if you rely on tick timeouts INT_SYS_SetPriority(LPSPI1_IRQn, 1);      // must be higher than GPIO INT_SYS_SetPriority(PORTC_IRQn, 2);       // your button’s PORTx IRQ   Note: regardless of the priority fix, it’s still advisable not to use the blocking SPI API inside an ISR, and likewise not to wait inside an ISR for a non‑blocking transfer to finish. The S32K LPSPI driver progresses transfers in its interrupt handler, and long ISRs can prevent other interrupts from running.   BR, Petr Re: Doing I/O from an interrupt handler Hello @PetrS  Thank you for your response, but I am afraid I don't really understand it. What you seem to be saying is that doing blocking I/O inside an ISR is a bad idea, and I agree. But why should it not work? The tick counter increments in an interrupt handler that priority -1, that is higher than any I/O interrupt priority. And I am not changing any interrupt mask in my code; does the driver change it under the hood? Our application is bare metal (single threaded), so waiting in an ISR context and application context is pretty much the same thing. The only difference is that in an ISR context, other I/O interrupts will be blocked. But this is exactly what I want anyway. The timer ISR, however, should not be blocked because of the higher priority. I have tried adding a call to ENABLE_INTERRPUTS() on the first line of the ISR, but it made no difference. I have tried the non-blocking version also, and that also hangs, in a different way. On a non-blocking call (LPSPI_DRV_MasterTransfer() followed by LPSPI_DRV_MasterGetTransferStatus(SPI1, &byte_remaining) ), byte_remaining stays at the original value. I have attempted to add a call to  LPSPI_DRV_MasterAbortTransfer(SPI1) before calling LPSPI_DRV_MasterTransfer() for the async transfer, but the result is the same. Both of the above API calls are made from the ISR. The use case is that if the user presses a button, a GPIO interrupt is fired and it wants to read a value over SPI. One thing worth pointing out again is that the API that the ISR is interrupting is a blocking SPI transfer. Adding a call to LPSPI_DRV_MasterAbortTransfer() in the ISR before starting the new transfer also did not help. I am on a very tight deadline on this issue; any help is greatly appreciated. Re: Doing I/O from an interrupt handler Hi, Blocking I/O from an ISR won’t work with the S32K1 SDK. LPSPI_DRV_MasterTransferBlocking() waits on an OSIF semaphore; in ISR context there’s no place to block and no tick/time base to advance, so it hangs. Use the non‑blocking API (LPSPI_DRV_MasterTransfer) and complete the transfer in the LPSPI ISR/callback, then signal a task/main loop. Also, SysTick fires on timer wrap, but its handler only runs when not masked and with sufficient NVIC priority—so if PRIMASK is set or you’re in a higher‑priority ISR, it will be deferred.  The cookbook projects are deliberately lightweight, showing peripheral use directly without the higher‑level driver abstractions; they’re intended as learning starting points, not production usage. If you want NXP driver‑style examples, look to SDK, or rather RTD driver/example projects rather than the cookbook.   BR, Petr Re: Doing I/O from an interrupt handler Hi, even though it now “works” you should still discourage doing the SPI transfer inside the ISR.  If you ever change priorities later, or add another peripheral, you can easily re‑create the deadlock condition you just diagnosed. The safest design would be always to keep ISRs short and defer real work to the main loop. Use the ISR only as a trigger; perform the SPI transfer synchronously in main() or as a non‑blocking transfer initiated in the ISR but completed by the LPSPI ISR, and main waits for the completion flag. BR, Petr
記事全体を表示
弗劳恩霍夫 IIS 将主办 2014 年飞思卡尔®杯欧洲、中东和非洲地区面向有志工程师的决赛 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 位于德国埃尔兰根的弗劳恩霍夫集成电路研究所(与汤姆逊合作)发明了我们目前在智能手机和媒体播放器中广泛使用的 MP3 文件。他们拥有超过 20,000 名研究人员,是德国乃至全球研发界的一支力量。 该学院将于2014年4月29日至30日举办飞思卡尔杯2014年欧洲、中东和非洲地区决赛。 对于参加活动的学生团队来说,这是一个绝佳的机会,可以一睹工程研发的最佳成果,并与塑造未来世界的弗劳恩霍夫研究所的优秀工程师进行交流。 请参阅新闻稿20130715_Freescale_2014 - 弗劳恩霍夫集成电路研究所 IIS 飞思卡尔杯内容
記事全体を表示
How to refund a wrong transaction How do I get a refund from Phone, for wrong transaction?076995-95414 - If you mistakenly sent money to the wrong number on Phone it is generally ... Functional Safety
記事全体を表示
发送时 CAN 忙 嗨,恩智浦社区、 我重定向了 CanIf_RxIndication 函数。当将 CAN 模块设置为环回模式时,测试成功,发送和接收的数据一致。 然而,当我退出环回模式时,却无法发送报文,Can_43_FLEXCAN_Write 函数返回 0x02(忙)。 MCU 的 tx 引脚与 rx 引脚数据同步,而不是预期发送的数据。Rx 数据比 tx 数据慢约 130ns,而且是连续发生的(大约每秒发送一帧)。 收发器是 TJA1043。我已将 STB 和 EN 引脚设置为高电平。CANH 和 CANL 保持不变。 下面是 ESR 寄存器的信息。请帮助排除可能的原因。 非常感谢! Johnson97_2-1767016016038.png Johnson97_3-1767016132618.png Re: CAN is busy when transmit Hi@Johnson97 在你提供的项目中,你的时钟配置完全错误。 您的 FXOSC 时钟为 20MHz Senlent_0-1767076783748.png 您设置的 MFI 为 120,ODIV2 为 4,超出了 PLL VCO 输出频率(240)的范围。 Senlent_3-1767076930306.png Senlent_2-1767076869206.png 您必须遵循参考手册中的要求: Senlent_4-1767077918366.png 供你参考: Senlent_5-1767077948858.png Senlent_6-1767077983979.png Senlent_7-1767078011090.png 最后,不要忘记重新配置 FlexCan 的波特率设置。 Re: CAN is busy when transmit 抱歉,为该项目购买的 Autosar 软件包已指定使用此版本的 RTD。 因此,我需要根据该版本配置 mcal,并验证其是否无误。 您能安装这个版本并帮我排除故障吗? Re: CAN is busy when transmit Hi@Johnson97 您能否将 RTD 更新到新版本,或者修改 S32 DS 上的测试例程,以便我为您进行检查?(我还没有安装 RTD 版本)。 Re: CAN is busy when transmit 请查看随附的文件。RTD 软件包的版本是 sw32k3_s32m27x_rtd_rtd_r21-11_4.0.0_p19_d2403 Re: CAN is busy when transmit Hi@Johnson97 请分享您的项目,我将花一些时间为您进行审查。 Re: CAN is busy when transmit 非常感谢。问题已经解决。 除上述问题外,CAN 波特率相关寄存器的配置也与手册中规定的有效值不符。 微控制器 tx 引脚的波形符合预期。随后的问题应与收发器有关。 再次感谢您!
記事全体を表示
MCU-Linkデバッグプローブツールを使用してフラッシュロックされたLPC4088を一括消去する方法 こんにちは、 MCU-Link デバッグ プローブを使用して、外部フラッシュを備えた LPC4088 マイクロコントローラをプログラムしています。「LinkServer.exe」を使用して正常にフラッシュできましたMCU-Link デバッグ プローブ SWD インターフェイスを介したコマンド ツール。LPC4088にリリース(ロック)バージョンのファームウェアをフラッシュした後、「LinkServer.exe」経由でMCU-Linkデバッグプローブを使用してロック解除または一括消去することができませんでした。ソフトウェア。UART ブートローダー モードで Magic ソフトウェアを使用してロックを解除しました。しかし、MCU-Link デバッグ プローブは使用できませんでした。 MCU-Link デバッグ プローブ SWD インターフェイスを使用して LPC4088 のロックを解除する方法を教えてください。 ありがとうございます。 Re: How to mass erase flash locked LPC4088 using MCU-Link Debug Probe tool こんにちは@asanga_viraj LPC についてまだ質問がある場合は、LPC 製品フォーラムでチケットを作成してください。あなたの質問はすぐにそこにCAN表示されます。 この問題に関して、まだ解決していない場合は、フラッシュのリリースバージョンをロックする方法をお知らせください。   よろしくお願いします。 BR アリス Re: How to mass erase flash locked LPC4088 using MCU-Link Debug Probe tool こんにちは、アリス。 SWD インターフェースを使用して CP2 レベルロックされた LPC4088 のロックを解除する方法を説明していただけますか? ありがとうございます。
記事全体を表示
S32K344 FlexCAN 示例 CAN FD 正常模式:CAN0_Tx 和 Rx 上无信号 大家好 我正在使用 S32 Design Studio 3.6.5 和 FlexCAN IP 示例处理 S32K344 MCU。 我能够在内部环回模式下成功运行 FlexCAN 示例(并验证 Rx 缓冲区上的数据),但当我将其配置为用户/正常模式时,在物理 CAN 引脚(CAN0 TX/RX)上看不到任何活动。此外,生成的代码中还存在语法错误。 问题 生成代码后: 文件 generate/src/Siul2_Ip_Port_PBcfg.c 包含语法错误 即使我手动修复了语法错误以允许项目构建,但仍然没有使用逻辑分析器在CAN0 TX/RX引脚上观察到任何CAN活动。 以下是我的设置详情以及我迄今为止所做的尝试。 外设视图中的 FlexCAN 配置 FlexCAN 实例:CAN0 模式:启用 BRS 的 CAN FD 标称比特率500 kbps 数据比特率: 2 Mbps 时钟源: 24MHz 轮询模式(无中断) 尝试引脚配置 我尝试对 CAN0 引脚进行如下明确配置: PTA27 PTA28 PTD13 PTD14 采取的措施 通过 管理 SDK 元器件 添加了 Pins 和 Ports 元器件 为外围元器件添加了 Siul2_Port 使用 MSCR(FlexCAN 的 ALT 功能)配置上述引脚 再生代码 如果能就正确的 CAN 实例、引脚复用或已知的工具问题提供指导,我们将不胜感激。 Re: S32K344 FlexCAN example CAN FD normal mode: no signals on CAN0_Tx and Rx 更新:通过在外围设备 > 元器件中添加端口,并将引脚添加为 MSCR 索引,我得以生成正确的代码。 但在 PTA27 引脚上无法获得 CAN0 Tx 信号的问题依然存在。我用 Dio GPIO 示例切换了 PTA27,效果很好,但在 CAN FD 上却没有显示任何信号。 PFA 更新项目 zip。 Re: S32K344 FlexCAN example CAN FD normal mode: no signals on CAN0_Tx and Rx 嗨@pariks_hit 请参阅附件中的演示,RTD 为 3.0.0和 S32K3X4EVB。 Re: S32K344 FlexCAN example CAN FD normal mode: no signals on CAN0_Tx and Rx HI 谢谢你的压缩包,我使用了中断,并像你的主文件那样初始化了 STB 和 EN 引脚,现在我可以看到 Tx 引脚上有东西了。不过,我发现它的 CAN ERROR 信号多于 Saleae 中的实际 CAN 信号(截图附后)。我尝试使用传统 CAN 而不是 CAN FD(在这种情况下,我只能看到 CAN ERROR 信号,而看不到其他信号)。在 CAN FD 中,改变有效载荷大小也无济于事。我还尝试像您的项目那样配置引脚 PTA6 和 PTA7,而不是 PTA27 和 PTA28,但两者的 CAN0_Tx 波形相同,因此我认为这不是引脚问题。我还附上了我的项目压缩包,以备不时之需。 请帮帮我。 image (2).png image (1).jpg Re: S32K344 FlexCAN example CAN FD normal mode: no signals on CAN0_Tx and Rx 您好, 感谢您的确认,看来问题出在我在 Saleae 逻辑分析仪上设置的比特率上,我将其设置为 500k,现在我可以看到 CAN 帧了。
記事全体を表示
S32K358 多核调试器 我 按照文件 S32K32X_Multicore_Project_Quick_Start_Guide.pdf 中的说明 删除了 路径 C:\NXP\S32DS.3.6.0\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_5.9.2.202409131555\supportFiles_ARM\NXP\S32K3xx 中的 s32K358.mac 文件 ,但 core2 仍然无法调试。能否请您帮助排除故障并找出问题所在? 回复: S32K358 multicore Debug 您能帮我调试一下项目吗? 回复: S32K358 multicore Debug 已经解决了,是启动文件错了
記事全体を表示
有关 FS32K144HAT0MMHT 功能安全外设驱动器 (SPD) 的询问——可用性和免费来源 队员们好 我们正在使用 FS32K144HAT0MMHT 微控制器启动一个新的 ISO 26262 (ASIL-B) 项目,并想了解功能安全外设驱动器 (SPD) 的工作原理。 我们在哪里可以下载 SPD 软件包,我们是否需要特定的软件包名称,如 NXP 软件许可证 & 支持门户中的 SW32K1-SPD-D? SPD 是免费的还是包含在标准 RTD/SDK 下载中,还是需要单独的许可证? 是否有研究 SPD 早期发展驱动因素的范例或免费资料? 如能就查找 SPD 或相关资源提供指导,将不胜感激。 谢谢! Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc 你好,@KAVINKUMAR7、 S32K1 — 功能安全外设驱动器 (SPD) 仅包含以下驱动程序: 适用于 S32K1 的 扩展 MCEM 驱动程序 ,版本 1.0.1 https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=SW32K1-SPD-D&_gl=1*ao7djc*_ga*M.... 该驱动程序包含在 S32K1xx 标准软件包中,该软件包免费提供。 它兼容 S32K1/S32M24x 实时驱动程序,ASR R21-11,版本 2.0.0 P04。 不过,该驱动程序没有提供功能示例。 此致, 丹尼尔 Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc 您好, 本 SPD 支持生产。请确认是否适合在生产环境中使用? Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc 你好,@KAVINKUMAR7、 是的,确实如此。请参阅版本说明。 此版本为 RTM(准备生产)级别。 danielmartynek_0-1766921833541.png 此致, 丹尼尔 Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc 你好, 感谢您的回复。 我已经安装了最新的 S32 Design Studio IDE,并使用了版本说明中提到的 RTM(准备制造)RTD SDK。CAN 示例项目是使用提供的 SDK 和配置工具直接生成的。 但是,即使使用了这个设置,我仍然面临以下版本错误: 致命错误:port_ci_port_port_IP_TYPES.H:以下位置不会出现此类文件或目录 错误: board/port_ci_port_IP_CFG.c: 56 #include " port_ci_port_port_port_IP_TYPES .H " Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc 你好,@KAVINKUMAR7、 看来这是一个兼容性问题。 在正确的 S32DS IDE 版本中,只能安装 SPD 发行说明中指定的兼容的 RTD 和 SPD。不应存在其他 RTD 版本。如果需要多个 RTD 版本,建议安装单独的 IDE 实例。 由于您的后续问题不再与 SPD 有关,如果您需要进一步帮助,请创建一个新的主题。 此致, 丹尼尔
記事全体を表示
NFC 天线设计(材料) 国家: 德国德国 说明你好,恩智浦、 我叫马库斯-施耐德。 鉴于你在NFC控制器方面的专业知识,我对NFC天线的设计,特别是这些天线中使用的材料有疑问。 你推荐由 ITO 层制成的 NFC 天线,还是这不是最好的解决方案? 控制器可能使用 PN5180。
記事全体を表示
i.MX6ULL:BT+WiFi 芯片(高通 QCA9377)的 132MHz sdio 时钟输出问题 恩智浦社区成员,你们好、 我有一块装有 IMX6ULL 和高通 BT+WiFi 组合芯片的定制板。 该项目基于 Yocto kirkstone、linux-imx 5.15.71 内核版本。 mx6ull 和 qca9377 之间的通信方式是 sdio。 关于 mx6ull 和 qca9377 之间的 sdio 通信过程中偶尔出现的通信错误,我有几个问题。 1. 将 dts 设置为使用 132MHz 的 sdio 时钟速度 imx6ul-14x14-evk.dtsi &usdhc1 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc1>; pinctrl-1 = <&pinctrl_usdhc1_100mhz>; pinctrl-2 = <&pinctrl_usdhc1_200mhz>; bus-width = <4>; vmmc-supply = <&reg_sd1_vmmc>; pm-ignore-notify; keep-power-in-suspend; non-removable; status = "okay"; }; &iomuxc { pinctrl_usdhc1: usdhc1grp { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x17059 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x10071 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x17059 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059 MX6UL_PAD_GPIO1_IO00__GPIO1_IO00 0x130b0 >; }; pinctrl_usdhc1_100mhz: usdhc1grp100mhz { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170b9 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100b9 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170b9 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170b9 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170b9 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170b9 >; }; pinctrl_usdhc1_200mhz: usdhc1grp200mhz { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170f9 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100f9 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170f9 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170f9 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170f9 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170f9 >; }; }; mmc0 信息 # cat /sys/kernel/debug/mmc0/ios clock: 132000000 Hz actual clock: 132000000 Hz vdd: 21 (3.3 ~ 3.4 V) bus mode: 2 (push-pull) chip select: 0 (don't care) power mode: 2 (on) bus width: 2 (4 bits) timing spec: 6 (sd uhs SDR104) signal voltage: 1 (1.80 V) driver type: 0 (driver type B) 3. 有时会打印出如下 sdio 通信错误日志 AR6000: SDIO bus operation failed! MMC stack returned : -84 __HIFReadWrite, addr:0X001000, len:00000256, Read , Sync Debug Assert Caught, File /usr/src/debug/kernel-module-qca9377/3.1-r0/git/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c, Line: 1459, Test:status == A_OK || status == A_ECANCELED "Change sdio clock speed (132MHz -> 50MHz)" 1. 将 DTS 设置为使用 sdio 时钟速度为 50MHz。 imx6ul-14x14-evk.dtsi &usdhc1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc1>; bus-width = <4>; vmmc-supply = <&reg_sd1_vmmc>; pm-ignore-notify; keep-power-in-suspend; non-removable; status = "okay"; }; mmc0 信息 # cat /sys/kernel/debug/mmc0/ios clock: 50000000 Hz actual clock: 44000000 Hz vdd: 21 (3.3 ~ 3.4 V) bus mode: 2 (push-pull) chip select: 0 (don't care) power mode: 2 (on) bus width: 2 (4 bits) timing spec: 2 (sd high-speed) signal voltage: 0 (3.30 V) driver type: 0 (driver type B) 不显示 sdio 通信错误日志。 1.当 sdio 时钟设置为 132MHz 时,mx6ull 和 qca9377 之间的 sdio 通信似乎不稳定。有没有办法通过修改 dts 值来改进它? 2.如果不可能,您建议使用什么值作为 sdio 时钟值? 提前谢谢您。 致以最诚挚的问候 i.MX6 全部 i.MX6UL Linux Yocto Project Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 请参阅数据表,SDR104/SDR50 模式的信号电平为 1.8 V。请检查您的硬件并仔细确认这一点 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的谢琼 感谢您的快速回复。   让我再解释一下。   <HW> - Soc 是 NXP mx6ull 处理器 (MCIMX6Y2DVM09AB) - mmc0 连接到高通 BT/WiFi Combo 芯片(sdio 连接) -> 132MHz,1.8V - mmc1 连接到 8G eMMC -> 132MHz,1.8V   <mmc0> # cat /sys/kernel/debug/mmc0/ios 时钟:132000000 赫兹 实际时钟:132000000 赫兹 Vdd:21(3.3 ~ 3.4 V) 总线模式:2(推拉) 芯片选择: 0(无所谓) 电源模式:2(开启) 总线宽度:2(4 位) 定时规格 6(SD UHS SDR104) 信号电压: 1 (1.80 V) 驱动器类型: 0(驱动程序类型 B)   <mmc1> # cat /sys/kernel/debug/mmc1/ios 时钟:132000000 赫兹 Vdd:21(3.3 ~ 3.4 V) 总线模式:2(推拉) 芯片选择: 0(无所谓) 电源模式:2(开启) 总线宽度:3(8 位) 定时规格 9 (mmc HS200) 信号电压: 1 (1.80 V) 驱动器类型: 0(驱动程序类型 B)   <说明> - 与连接到 mmc1 的 eMMC 的通信以 132MHz 和 1.8V 电压运行,没有任何问题。 - 与连接到 mmc0 的 BT/WiFi 芯片的 sdio 通信也是以 132MHz 和 1.8V 电压驱动的,但会出现间歇性的 sdio 通信错误。   更多问题见下文: 1.对于 eMMC(mmc1),HS200(132MHz/1.8V)似乎是有保证的、但对于 SDIO(mmc0),在 SDR104 模式下似乎只能保证高达 104MHz 的频率。请检查? 2.如果是,mx6ull 芯片是否能保证最高 104MHz 的 sdio 时钟速度? (我想确认一下 MX6ULL 芯片能否保证 SDIO 132MHz 的时钟速度)。 gnani4080_0-1766369476736.png Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 感谢您的快速回复。 关于问题 1,我想我大错特错了。很抱歉。 我检查了你提到的如下内容 ""SD/SDIO UHS-I 模式(SDR 模式下最高 208 MHz,DDR 模式下最高 50 MHz)" gnani4080_0-1766477971673.png 因此,如果我们在 mmc0 中使用 sdr104,最大时钟频率为 208MHz,那么有可能保证 132MHz 的时钟频率吗? Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 1.对于 eMMC(mmc1),HS200(132MHz/1.8V)似乎是有保证的、但对于 SDIO(mmc0),在 SDR104 模式下似乎只能保证高达 104MHz 的频率。请检查? >请参阅数据表,最高可达 UHS-I SDR104 模式 104MB/s,不是 104Mhz max,请参阅 RM:SD/SDIO UHS-I 模式(SDR 模式下最高 208MHz,DDR 模式下最高 50MHz) 2. (我想确认 MX6ULL 芯片是否能保证 SDIO 132MHz 的时钟速度)。 >您可以参阅数据表,对于 SDR104,频率最高可达 200Mhz,我们已经在 mmc0 上测试了 SDR104,频率最高可达 198Mhz,参阅您的日志,似乎您的 mmc1 可以在 HS200 下工作? Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 是的,您可以参考默认设置为 132M 的 dtsi 文件,也可以转储时钟树来检查时钟是否为 132Mhz Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 谢谢 joanxie、 我会再检查一下,看看是否真的是时钟速度问题,然后再问。 谢谢。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 我在 SW 中调试了上述内容。 请在确认细节后回答我的问题。 1.芯片勘误表 芯片勘误表i.MX 6ULL "ERR010450 MMC:EMMC 只能在低于或等于 150 MHz 的频率下运行" https://www.nxp.com/docs/en/errata/IMX6ULLCE.pdf      ghkim_sj_0-1766996300598.png   2.SW 调试 1) 误差值定义 incl@@ ud e/ uapi / asm -generic / errno.h: 67: #define EILSEQ 84 /* 非法字节序列 */ 2) EILSEQ 设置位置 -cmd 司机/mmc/主机/sdhci.c: sdhci_cmd_irq() 如果如果 &(sdhci_int_timeout |SDHCI_INT_CRC |sdhci_int_end_bit |sdhci_int_index)){ 如果(intmask &sdhci_int_timeout) 主机->cmd->错误 = -ETIMEDOUT; 不然 主机->cmd->错误 = -EILSEQ;                     -数据 司机/mmc/主机/sdhci.c: sdhci_data_irq() 如果(intmask &sdhci_int_data_timeout) 主机->数据->错误 = -ETIMEDOUT; 否则 如果(intmask &sdhci_int_data_end_bit) 主机->数据->错误 = -EILSEQ; 3) 对数 [418.109795][sdhci_cmd_irq()] intmask = 0xa0001 [418.114178][sdhci_data_irq()] intmask = 0x200002 [ 418.118999] AR6000:S DIO 总线操作失败! 返回的 MMC 堆栈:-8 4 [418.125847]__HIFReadWrite, addr:0X000800, len:00000044, 读 , 同步 [418.144284]调试断言捕获,文件 /usr/src/调试/内核-模块-qca9377/3.1-r0/git/核心/服务/HIF/sdio/linux/native_sdio/src/hif.c, 行: 1459, 测试:状态 ==A_OK ||状态 ==A_ECANCELED 3.SDHCI 寄存器 1) sdhci_cmd_irq() 的掩码值为 0xa0001 位 0 (0x00001)😞 sdhci_int_response -> 命令响应 OK 位 17 (0x20000)😞 SDHCI_INT_INDEX -> 命令索引错误 位 19 (0x80000)😞 SDHCI_INT_CRC -> 命令 CRC 错误 2)的内屏蔽值 的掩码值是() 的掩码值为 0x200002 位 1 (0x00002)😞 sdhci_int_data_end -> 数据确定 位 21 (0x200000)😞 SDHCI_INT_DATA_CRC -> 数据 CRC 错误 4.猜谜 根据 imx6ull 勘误表 ERR010450、 "1.8 V 的 SDR104 只能在低于或等于 150 MHz 的频率下工作。" 如果它的工作频率高达 150MHz看来 cmd/数据 CRC 错误将在 132MHz 时在 132MHz 频率下,由于温度/时间差/电压波动等因素造成的时序余量。 5.问题 目前,我们无法通过硬件调整来调整数值,必须通过软件来响应。 降低 sdio 时钟值似乎可以减少或消除 CRC 错误率。 率。恩智浦有什么看法? 谢谢。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的 joanxie 根据您提供的信息,我使用下面的寄存器进行了测试。 sdhci-esdhc-imx.c #define ESDHC_MIX_CTRL_SMPCLK_SEL (1<< 23) #define ESDHC_MIX_CTRL_AUTO_TUNE_EN (1<< 24) #define ESDHC_MIX_CTRL_FBCLK_SEL (1<< 25) SMPCLK_SEL 0 AUTO_TUNE_EN 1 FBCLK_SEL 1 1. 测试 1) 设置 AUTO_TUNE_EN 1-> 0 2) 日志 [39.150703] AR6000:取消向总线驱动程序 注册 3) wlan0 注册失败 $ ifconfig wlan0 up ifconfig:SIOCGIFFLAGS:没有这样的设备 2. 测试 2 1) 设置 FBCLK_SEL 1-> 0 2) 日志 [39.160750] AR6000:取消向总线驱动程序注册 3) wlan0 注册也失败 $ ifconfig wlan0 up ifconfig:SIOCGIFFLAGS:没有这样的设备 3. 测试 3 1) 设置 AUTO_TUNE_EN 1-> 0 & & FBCLK_SEL 1-> 0 2) 系统在启动时死机,如下面的日志所示 [18.834619] wlan:加载驱动程序 v4.5.25.65 [ 18.894917] hifDeviceInserted:Dumping clocks (50000000,132000000) 我试着参考恩智浦社区的文章对其进行修改和测试,但结果并不令人满意。 请注意 感谢您的帮助 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的 joanxie, 感谢您的快速回复。 在参考您的指南后,我会告诉您的。 祝你今天和周末愉快 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 我咨询了无线团队,他们已经通过 usdhc 验证了 imx6ull 的 WIFI,并且可以设置最大时钟频率为 150Mhz,因此对于 imx6ull 端,可以支持这一点,而且我发现一些 WIFI 芯片会影响自动运行,因此我建议您可以禁用这些寄存器来检查,如果这些不是根本原因,我建议您需要检查您的硬件和 PCB 设计,如果您无法确认这一点,您可以提交票据进行 SCHEMATIC 审核。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 我咨询了无线团队,他们已经通过 usdhc 验证了 imx6ull 的 WIFI,并且可以设置最大时钟频率为 150Mhz,因此对于 imx6ull 端,可以支持这一点,而且我发现一些 WIFI 芯片会影响自动运行,因此我建议您可以禁用这些寄存器来检查,如果这些不是根本原因,我建议您需要检查您的硬件和 PCB 设计,如果您无法确认这一点,您可以提交票据进行 SCHEMATIC 审核。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 这就是我之前谈到的,关于自动调谐影响故障的详细信息 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/uSDHC-auto-tuning-and-possible-SDIO-failures/ta-p/1352855 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 很高兴听到这些补丁起作用了,但事实上新的 电路板支持包 已经合并了,据我所知,我没听见 imx6ull 和 wifi 芯片之间存在任何其他问题 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的 joanxie 感谢您的友好指导。 我参照您提供的链接调试了这个问题。 1. 补丁 1 1) 参考您提供的链接使用补丁 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/uSDHC-auto-tuning-and-possible-SDIO-failures/ta-p/1352855 2. 补丁 2 1) 在 dts 文件上添加"fsl,sdio-async-interrupt-enabled" imx6ul-14x14-evk.dtsi: &usdhc1 { fsl,sdio-async-interrupt-enabled; //add this line 2) 以下部分已启用 sdhci-esdhc-imx.c: usdhc_auto_tuning_mode_sel() /* * If sdio device use async interrupt, it will use DAT[1] to signal * the device's interrupt asynchronous when use 4 data lines. * Then hardware auto tuning circuit MUST NOT check the DAT[1] line, * otherwise auto tuning will be impacted by this async interrupt, * and change the delay cell incorrectly, which then cause data/cmd * errors. * This is the hardware auto tuning circuit limitation. */ if (imx_data->boarddata.sdio_async_interrupt_enabled) auto_tune_buswidth = ESDHC_VEND_SPEC2_AUTO_TUNE_1BIT_EN; 打上上述补丁后,通过调试,问题没有再出现。 (sdio 时钟变化测试(50MHz->100MHz->132MHz)、ping 测试、iperf3 测试等)。 再问一个问题,确认一下你们的补丁指南。 如果我打上这个补丁,问题就会得到解决、 但它是否有可能对 mx6ull 和 wifi 芯片之间的 sdio 通信产生其他影响?   感谢您的支持。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 谢谢 joanxie、 我还检查了另一个 yocto 版本(imx-6.6.52、fslc-6.1.72) 我在 yocto scarthgap imx-6.6.52 版本上找到了类似的补丁,如下所示 /* * For USDHC, auto tuning circuit can not handle the async sdio * device interrupt correctly. When sdio device use 4 data lines, * async sdio interrupt will use the shared DAT[1], if enable auto * tuning circuit check these 4 data lines, include the DAT[1], * this circuit will detect this interrupt, take this as a data on * DAT[1], and adjust the delay cell wrongly. * This is the hardware design limitation, to avoid this, for sdio * device, config the auto tuning circuit only check DAT[0] and CMD * line. */ if (imx_data->init_card_type == MMC_TYPE_SDIO) auto_tune_buswidth = ESDHC_VEND_SPEC2_AUTO_TUNE_1BIT_EN; esdhc_clrset_le(host, ESDHC_VEND_SPEC2_AUTO_TUNE_MODE_MASK, auto_tune_buswidth | ESDHC_VEND_SPEC2_AUTO_TUNE_CMD_EN, ESDHC_VEND_SPEC2); 但未在 yocto scarthgap fslc-6.1.72 上打补丁版本。 我将根据您的指导检查其他 yocto 版本。 感谢您的支持。
記事全体を表示
为 S32G3 启用多 A53 内核 您好, 目前,我正在使用 S32DS 创建一个 C 语言项目,以启用多个 A53 内核。启动过程完成后,我的活跃核心将是 M7_0(不是 HSE 内核)从这里开始我想启用 A53 内核。由于 S32G3 有 8 个 A53 内核,我想启用所有内核。这是否可以纯粹用 C 语言(而不是 linux)完成? 谢谢。
記事全体を表示
RT1062 ユーザー定義クラス (0xFF) USB HOST の例 こんにちは、コミュニティの皆さん! i.MX RT1062 MCU に「ユーザー定義」( USB.orgではベンダー クラスとして知られています) クラス 0xFF USB ホスト (ベア メタル) を実装する方法を学習したいと思います。 私たちの目標は、これを、Zephyr RTOS を実行する可能性のある別の i.MX RT MCU である「デバイス」に接続することです。 私の知る限り、現時点では、このニーズを満たす NXP SDK Builder サイトからの直接的なサンプル プロジェクトはありません。 どなたか私に教えていただけませんか、あるいはそのような例を教えていただけませんか?それが存在しない場合、このユーザー定義クラス ホストに適応するために使用する最適なサンプル プロジェクトは何ですか? ご返信よろしくお願いします。 i.MXRT 106x Re: RT1062 User-Defined Class (0xFF) USB HOST Example @kennethkong852 、 これがあなたをCAN助けるかどうかはわかりませんが、私はこのコードを作成し、106x のプロジェクトで積極的に使用しています。 https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Working-Custom-USB-example-using-Bulk-transfer-incl-code/mp/1260056#M13727 Re: RT1062 User-Defined Class (0xFF) USB HOST Example こんにちは、 carstengroenさん 参考資料ありがとうございます! 106x にデバイスを実装していたようです。 106x 上で実行されるホストの実装に興味があります。 ただし、あなたの作業はデバイス側からの理解に非常に役立ち、私もそれを開発するのに役立ちます。 あなたのガイドに大いに感謝します! よろしくお願いいたします。 ケン Re: RT1062 User-Defined Class (0xFF) USB HOST Example こんにちは@Sam_Gaoさん、 ご参考とご提案誠にありがとうございます。 RT106x 用のユーザー定義ベンダー クラス ホストを実装するための適切なスケルトン/テンプレートとして機能する正確なサンプル プロジェクト (MCUXpresso IDE) をエンジニアリング チームが提供することを検討することはどの程度可能でしょうか? 本当に感謝しています! ケン Re: RT1062 User-Defined Class (0xFF) USB HOST Example MCUXpresso SDKs に直接的な例がないのは正しいです。ただし、SDK には、参照用の USB ホスト スタックといくつかの標準クラスの例が用意されています。 適切な出発点は、次のようなベアメタルHIDホストの例の1つです。  host_hid_mouse_bm   または  usb_host_hid_mouse_keyboard  。 https://mcuxpresso.nxp.com/mcuxsdk/latest/html/examples/usb_examples/index.html Re: RT1062 User-Defined Class (0xFF) USB HOST Example こんにちは@kennethkong852 現時点ではこの例専用の実装の予定はありません。 ちなみに、 AN14169「i.MX RT チップに基づいてユーザー定義クラスの USB デバイスを生成する方法」を参照してください。 https://www.nxp.com/docs/en/application-note/AN14169.pdf
記事全体を表示
i.mx8mm QSPI 启动和分区 您好, 我们有基于 imx8mm-EVK 的自定义板, 我们更换了 Qspi 内存芯片 mt25qu02g。在 u-boot 和 linux 中进行检测时没有问题。 我们正在尝试移植镜像并从 QSPI 启动,请参考下面的图片。 Re: i.MX8MM QSPI booting and partition 你好@Dhruvit、 我们使用的是 i.MX8M Plus EVK,它有 32 MB QSPI 闪存。 我们的目标是完全从 QSPI 闪存启动 U-Boot、Linux 内核、设备树和 initramfs (rootfs.img)。 我们能够成功启动: U-Boot(来自 flash.bin) Linux 内核(Image.gz) 设备树 (imx8mp-evk.dtb) 但是,我们在从 QSPI 闪存加载和使用 initramfs/rootfs 映像时遇到了问题。内核启动成功,但内核在 Waiting for removable media(等待可移动媒体)处挂起....,请参阅下面附带的日志。 -----Flash 布局和图像大小---------------- QSPI 闪存大小:32 MB flash.bin (U-Boot + SPL) ~2.3 MB Image.gz (内核) ~13.5 MB imx8mp-evk.dtb ~86 KB rootfs.img ~12.6 MB ----QSPI 偏移布局---------- flash.bin @ 0x00000000 Image.gz @ 0x00240000 imx8mp-evk.dtb @ 0x01000000 rootfs.img @ 0x01080000 ------ 将文件编入 QSPI(来自 SD 卡)--------- sf probe 0 sf erase 0x0 0x2000000 fatload mmc 1${loadaddr} flash.bin sf 写${loadaddr} 0x0${filesize} fatload mmc 1${loadaddr} Image.gz sf 写${loadaddr} 0x240000${filesize} fatload mmc 1${loadaddr} imx8mp-evk.dtb sf 写${loadaddr} 0x1000000${filesize} fatload mmc 1${loadaddr} rootfs.img # initramfs (cpio.gz) sf 写${loadaddr} 0x1080000${filesize} ------闪烁后,重启板------------------ 从 u-boot 启动后,为 Linux 内核 (Image.gz)、设备设置环境变量树 (imx8mp-evk.dtb),rootfs.img。 sf probe 0 setenv loadaddr 0x40480000 // 核心 setenv fdt_addr 0x43000000 //dtb setenv initrd_addr 0x43800000 //rootfs setenvkernel_comp_addr_r 0x50000000 setenv kernel_comp_size 0x04000000 sf read${loadaddr} 0x240000 0xCD3CE2 sf read${fdt_addr} 0x1000000 0x14360 sf read${initrd_addr} 0x1080000 0xC04DB0 setenv bootargs"console=ttymxc1,115200 root=/dev/ram0 rw" setenv bootcmd 'sf probe 0; sf read${loadaddr} 0x240000 0xCD3CE2; sf read${fdt_addr} 0x1000000 0x14360; sf read${initrd_addr} 0x1080000 0xC04DB0; booti${loadaddr} ${initrd_addr} ${fdt_addr} ' saveenv ----------------------------------------------------------------------- 1. 使用 SD 卡 Wic 文件在分区(启动/根目录)上运行良好。 2.We genarated Two yocto images ==> 1.bitbake core-image-minimal-initramfs (generated initramfs.cpio.gz)这个 cpio.gx 使用这个 cmd mkimage-A arm-O linux-T ramdisk-d (来自 linux 用户指南)== > 2. 还从 yocto 中生成了使用 bitbake core-image-tiny 生成的微小 rootfs。 core-image-tiny-imx8mp-evk.tar.zst,该 tar 已解压缩到 SD 卡中的 EXT4 分区,并成功加载了微小的 rootfs。 3.但正如第二点所说,rootfs.img 也被放入了 SD 卡的 EXT4 根分区,但却无法加载 rootfs。 ------------------------------------------------------------------------------------------- 1. 这是启动 initramfs (rootfs.img) 的正确方法吗从 QSPI 直接连接 i.MX8M Plus EVK? ----------------------------------------------------------------------------------------------- 3. 有没有推荐的恩智浦参考镜像用于在 i.MX8MP(Linux 内核 (Image.gz)、设备上完全从 QSPI 启动内核和 initramfs树 (imx8mp-evk.dtb),rootfs.img)? 谢谢! Re: i.MX8MM QSPI booting and partition 你好@德鲁维特 感谢您的支持。 Re: i.MX8MM QSPI booting and partition 嗨,@vignesh-baskaran、 希望你一切都好。 很高兴知道这个问题已经解决了。 我可以将此案标记为 "接近 "吗? 感谢& , Dhruvit Vasavada。 Re: i.MX8MM QSPI booting and partition 你好@Dhruvit、 谢谢您的建议。它对我们有用。 如果有人面临同样的问题。这是因为在 Sf 探测期间选择了 SPI 模式。 谢谢。 Re: i.MX8MM QSPI booting and partition 嗨,@Dhruvit、 我们认为 sf 读取和 sf 写入没有按照我们的预期运行。 我们将图像从 SD 加载到 RAM,然后检查 => fdt addr${fdt_addr} => fdt print${fdt_addr}. 它工作得非常好。 但当我们尝试从 QSPI 加载到 RAM 时 我们收到错误信息 libfdt fdt_check_header(): FDT_ERR_BADMAGIC 我们认为这可能是装载尺寸的问题。我们进行了交叉验证,这不是问题所在。 注:我们在写入 sf 之前尝试了擦除操作。 你能与我们联系这个问题吗? Re: i.MX8MM QSPI booting and partition 嗨,@vignesh-baskaran、 希望你一切都好。 可以按照以下步骤在 u-boot 中将图像加载到 QSPI 闪存中。 1.使用 fatload 命令将 Image 和 dtb 载入 RAM。 #fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} #fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile} 2.使用 sf write 在闪存中闪存映像和 dtb。 #sf write ${loadaddr} # sf write ${fdt_addr_r} - 在将 Image 和 dtb 写入闪存& 时,请确保使用正确的偏移量和长度,确保它们不会互相覆盖。 使用以下命令可以找到正确的长度(尺寸 # fatls mmc ${mmcdev}:${mmcpart} 请分享上述命令的输出结果。 请擦除闪存后再试。 感谢& , Dhruvit Vasavada。 Re: i.MX8MM QSPI booting and partition 嗨,@Dhruvit、 1) 请参考附件中的printenv . 2) u-boot=> fdt addr ${fdt_addr_r} libfdt fdt_check_header(): FDT_ERR_BADMAGIC u-boot=> fdt print No FDT memory address configured. Please configure the FDT address via "fdt addr " command. Aborting! 3) 可以在 u-boot 中使用写入命令刷新 Image 和 fdt,而不是使用 dd。 你建议用 Sf write 写入 qspi、 假设我有 SD 卡中的图像,并想复制到 QSPi,我该如何操作? 请与我们联系,告诉我们该怎么做。会有帮助的。 谢谢! Re: i.MX8MM QSPI booting and partition 嗨,@vignesh-baskaran、 希望你一切都好。 所附图像中的错误表明设备树未正确加载。请确保您使用了正确的偏移量和尺寸。 可以在 u-boot 中使用写入命令刷新 Image 和 fdt,而不是使用 dd。 请提供printenv命令的输出结果。 加载设备树后,请共享以下命令的输出(使用 sf read) => FDT Addr${fdt_addr_r} => fdt 打印 感谢& , Dhruvit Vasavada。 Re: i.MX8MM QSPI booting and partition 您好, 谁能调查一下这个问题?
記事全体を表示
在 i.MX7ULP 上使用篡改引脚 我在内核中启用了 SECVIO,以便使用 i.MX7ULP 上的篡改引脚处理篡改事件。 我是否还需要修改设备树 (DTS) 或 U-Boot 中的任何内容才能正确配置和检测篡改引脚? 此外,是否有任何可访问的示例或应用程序来演示如何在用户空间使用篡改处理程序? i.MX 7ULP 安全 Re: Using Tamper Pin on i.MX7ULP 你好 要在 i.MX7ULP 上进行正确的防盗引脚配置和检测:1. 设备树配置:当内核中已启用 SECVIO 时, 您不一定需要专门针对篡改功能修改设备树 (DTS)。篡改引脚通常由 SNVS(安全非易失性存储)模块及其驱动程序处理,而不是通过设备树中的标准 GPIO 配置进行处理。 2. U-Boot 配置: 如果你还打算在 U-Boot 中使用篡改检测,则需要在 U-Boot defconfig 中添加 "CONFIG_IMX_TAMPER=y" 并进行重建。 3. 用户空间中的篡改处理程序: 对于用户空间应用,没有专门针对 i.MX7ULP 的标准化示例应用。不过,您可以调整类似平台(如 i.MX6UL 或 i.MX7D)的实现,因为这些平台的篡改机制基本相似。 有关实施指南,请参阅: -i.MX7 参考手册中的第 3.1.4.2 节(篡改检测) -应用笔记 " i.mx7dsabresd " (AN12210.pdf) 的篡改应用程序 内核中的 SECVIO 驱动程序应处理篡改事件,并且可以配置为在检测到篡改时触发信号相应的网络安全措施。您可以通过 SNVS_LP 状态寄存器 (LPSR) 监测这些事件,并通过 SNVS_LP 防篡改探测器配置寄存器 (LPTDCR) 对其进行管理。 此致
記事全体を表示
如何选择"语言标准" <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好 如果我创建一个新的 SDK 项目(从 SDK 项目向导中),在选择板和其他配置(设备代码包、项目类型、元器件...)后,我会得到 "高级项目设置" 屏幕,我可以在其中选择 MCU C 编译器。默认情况下," 语言标准 " 指向 " 编译器的默认值 ",但我可以选择是否想要 " GNU C90 (-std=gnu90)。 但是,如果我创建一个新的 C 项目(非 SDK),就看不到这个屏幕,也无法选择"语言标准" 。 我该如何改变这种状况? 谢谢。 Re: How select "Language standard" 关于选择正确语言标准的精彩分析--你的解释确实澄清了我在这个问题上看到的很多困惑。在尝试不同的设置时,我偶然发现了一些精灵语翻译技巧,这让测试字符集变得更有趣了。有趣的是,调整标准会以微妙的方式改变编译器的行为。期待更多这样的帖子! Re: How select "Language standard" <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,ptcaos、 如果你在项目中右键点击属性-> C/C++ 版本-> 设置-> MCU C 编译器-> Dialect 你可以选择语言: 最美好的祝愿, Alexis Andalon
記事全体を表示
后台调试模式驱动代码包 CPU16/32 培训人员/开发人员,你们好、 我和我的学生一起开始了一个项目,用 Arduino IDE 设计一个 BDM 接口 (USB-> BDM),以(简单)监测 Wurz 的 SBC EC376。我们找到了文档 AN1230/D,但找不到第 5 页上叫的 "BDM 软件包" (BDMVx-y.ZIP)。 您能帮助我们吗? 谢谢并致以问候... 维纳德-奈斯 Re: Background Debugging Mode Driver Package 你好@Wijnand、 谢谢您的帖子。AN1230 太旧了,我找不到相关的 BDM 软件包。 虽然我找到了以下链接供你参考,其中提供了 BDM 驱动程序和相关信息。 这不是恩智浦(摩托罗拉)官方版本的私人博客。 BDM Interface for Motorola 683xx MCU\ 使用 GDB 调试器 希望对您有所帮助。 BR 西莱斯特 ----------------------------------------------------------------------------------------------------------------- 注:如果本帖回答了您的问题,请点击"ACCEPT AS SOLUTION" 按钮。Thank you! ----------------------------------------------------------------------------------------------------------------- Re: Background Debugging Mode Driver Package 你好,塞莱斯特、 感谢您的努力。我们将探讨部分资源(BDM 元器件)是否对我们的项目有用。我们的目标是设计一个简单的监控程序,例如用于向目标上传 s 记录。 敬上,Wijnand... Re: Background Debugging Mode Driver Package 你好,塞莱斯特、 感谢您的努力。我们将探讨部分资源(BDM 元器件)是否对我们的项目有用。我们的目标是设计一个简单的监控程序,例如用于向目标上传 s 记录。 敬上,Wijnand... Re: Background Debugging Mode Driver Package 你好 Wijnand, AN1230 文件可以在这里找到: http://archive.retro.co.za/archive/computers/Motorola/freeware.aus.sps.mot.com/mcu332/BDM-V090.ZIP 我在找板附带的软盘上的文件(" ec376 软件包 "/“ec376 SWP”)和其他随附文档。如果有任何问题,请告诉我。 谢谢。
記事全体を表示
MCUExpresso 安装程序 GPU 故障 - 如何修复? verbose:{" os ": " win_x64 ", " 版本 ": " Windows 11 企业版 "," 发行版 ": " 10.0.22631 " " arch ": " x64 ", " 型号 ": " 第 12 代英特尔 (R) 酷睿 (TM) i9-12950HX "} 详细:安装程序版本: v25.09 b179 详细:安装程序版本:v25.09 b179 详细:安装程序位置: C:\Users\TL32835\AppData\Local\Programs\MCUXpressoInstaller verbose:创建文件夹 C:\Users\TL32835\AppData\Local\Programs\MCUXpressoInstaller\ .cache 信息:文件夹 C:\Users\TL32835\AppData\Local\Programs\MCUXpressoInstaller\ .cache 成功创建详细:创建文件夹\ .mcuxpress otools 信息:文件夹\\ .mcuxpressotools 成功 创建 [59972:1209 /183408.766: 错误:内容\ brows er\ gpu_process_host.cc: 958] GP U 进程启动失败:错误_ C:\Users\TL32835 C:\Users\TL32835code=18 错误:未发现拒绝原因是:错误:ERR_FAILED (-2) 正在加载 'file:///C:\Users\TL32835\AppData\Local\Programs\MCUXpressoInstaller\resources\app\index.html '{" errno ": -2," 代码 ": " ERR_FAILED ", " url ":" 文件:///C:\\ Users\\ TL32835\\ AppData\\ Local\\ Programs\\ mcuxPressoInstaller\\ 资源\\ app\\ index.html "} [59972:1209 /183410.364: 错误:内容\ 浏览器\ gpu\ gpu_process_host.cc: 958] GPU 进程上市失败:error_code=18 [59972:1209 /183413.176: 错误:内容\ 浏览器\ gpu\ gpu_process_host.cc: 958] GPU 进程上市失败:error_code=18 [599713.176: 错误:内容\ 浏览器\ gpu_process_host.cc: 958] GPU 进程上市失败:error_code=18 [599713.176 1209 /183414.225:错误:内容\ 浏览器\ gpu\ gpu_process_host.cc: 958] GPU 进程上市失败:error_code=18[59972:1209 /183415.832:错误:内容\ 浏览器\ gpu\ gpu_process_host.cc: 958] GPU 进程上市失败:error _code=18[59972:1209 /183417.040: 错误:内容\ 浏览器\ gpu\ gpu_process_host.cc: 958] GPU 进程上市失败:error_code=18 [59972:1209 /183417.040: Fatal: Content\ browser\ gpu_data_manager_imprivate.cc: 415] GPU 进程 不可用。 再见。 Re: MCUExpresso installer GPU fault - how to fix? HI 我正在运行 MCUXpressoInstaller.exe。我将它设置为以管理员身份运行,因为它在尝试安装新版本时出现了其他故障,而且它不支持参数 --no-sandbox --disable-gpu-sandbox Re: MCUExpresso installer GPU fault - how to fix? 你好,@_ThomasLorenz_、 这个问题似乎与 VSCode 有关,特别是在以管理员权限运行时。请参阅以下帖子: VSCode 无法使用管理员权限用上市。- 问题 #181617 - microsoft/vscode VS Code 1.79:用上市失败,错误代码:'18' · 问题 #184888 · 微软/vscode Visual Studio Code 1.79.1 在管理模式下启动失败,代码 18 - Stack Overflow Re: MCUExpresso installer GPU fault - how to fix? 今天,我从 cmd 启动安装程序时再次出现错误。 但我还有其他一些安装问题 从软件包中安装组件:McuxPresso 配置工具 [信息] 正在检查文件的哈希值...mcuxpresso_config_tools_v25.09_x64.exe... [错误] 安装 MCUXpresso 配置工具时出错:无法获取本地颁发者证书。跳转... *** 安装错误 *** Re: MCUExpresso installer GPU fault - how to fix? 你好,@_ThomasLorenz_、 我很高兴你能解决最初的问题。另外,感谢您分享解决方案,因为它可能为将来其他开发人员提供很好的参考。 关于通过MCUXpresso安装程序安装ConfigTools的问题,这与你下载并使用实际的ConfigTools安装向导进行安装完全一样:MCUXpresso配置工具 | 恩智浦微控制器(MCU)的软件开发| 恩智浦半导体 请尝试通过该下载链接安装它,MCUXpresso 扩展将看到它已安装,以备您在 VSCode 中使用 ConfigTools。 BR, Edwin.
記事全体を表示
需要指导:NNStreamer (i.MX8MP) 上的 YOLOv8 输出形状不匹配 + 管道设计问题(微型 硬件和软件详情 i.mx8mPlus 和 Linux 电路板支持包 LF6.12.34_2.1.0 目标 我正在i.MX8MP 上构建一个命令行流水线(无图形用户界面),其中推理、叠加和显示均在 GStreamer 和 NNStreamer 中运行。 当前实验(命令行) 我试过这个管道:       gst_debug=gstreamer: 4、tensor_filter: 6、tensor_transform: 6、tensor_decoder: 7\ gst-launch-1.0--no-position\ v4l2src 设备=/dev/video4 num-buffers=200!\ video/x-raw,width=1920,height=1080,format=NV12,framerate=30/1 !\ imxvideoconvert_g2d !\ video/x-raw,width=320,height=320,format=RGBA !\ videoconvert !\ video/x-raw,width=320,height=320,format=BGR !\ tensor_converter !\ tensor_transform mode=arithmetic option=typecast:int8,add:-128 !\ tensor_filter framework=tensorflow-lite model=${MODEL}custom=Delegate:External,ExtDelegateLib:${VX_LIB}!\ tensor_transform mode=arithmetic option=typecast:float32,add:128.0,mul:0.004982381127774715!\ tensor_transform mode=transpose option=1:0:2 !\ tensor_decoder mode=bounding_boxes option1=yolov8 option2=${LABELS}option3=0 option4=1920:1080 option5=320:320 !\ cairooverlay name=overlay !\ videoconvert !\ autovideosink log file link LINK  ❗ 问题 我的 YOLOv8 TFLite 模型输出(1、7、2100),但 i.MX8MP 上的 NNStreamer 却显示7 × 2100 × 1。 我收到了这样的解释: YOLOv8 TFLite 型号的输出为(1,7,2100),而 NNStreamer 的 i.MX8MP YOLOv8 解码器的输出为 7×2100×1。此电路板支持包版本仅支持对四维张量进行转置,因此模型输出需要去量化,重塑为 (1,7,2100,1),然后进行转置。 输入: int8 [1, 320, 320, 3] 输出:int8 [1, 7, 2100] 刻度/零点 输出正确包含 3 个类别 + 4 个 bbox 值 ⚙️ 当前(缓慢)的方法 现在的申请流程是 GStreamer → BGR → OpenCV NPU 推断 OpenCV 后处理 返回 RTSP 管道 这会导致多个软件视频转换,在理想条件下,我们只能达到约 20 FPS,尽管模型本身可以运行 60 多 FPS。 🔄 建议的新方法 我想把管道分开: 路径 A - 推断 仅在此处转换 NV12 → BGR 运行 NNStreamer 路径 B - 叠加 + 显示 保留原始 NV12/YUY2 框架 直接在 NV12 上绘制边界框(最好使用硬件) → 将 NV12 送入编码器/RTSP → 完全避免软件视频转换 我首先想使用纯粹的 gst-launch 来制作这个原型,然后在 Python 中应用这种方法(可能使用 OpenGL 来实现 NV12 叠加层)。 🙏 我需要帮助 如何在 i.MX8MP 上将(1,7,2100) TFLite 输出重塑/转换为 NNStreamer 的 YOLOv8 解码器所需的格式 有只使用张量滤波器/变换/解码器的工作示例吗? 有没有解决三维输出问题的方法? 在 NV12/YUY2 上叠加的最佳做法 有什么 NNStreamer 友好的方法可以直接在 NV12 上绘制方框吗? 推荐元素(NV12 上的 cairooverlay?OpenGL?v4l2convert?imxvideoconvert_g2d 重叠?) 一般建议:在 i.MX8MP 上,分割管道(BGR 上的推理,NV12 上的叠加)是合理的架构方向吗? i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: Need guidance: YOLOv8 output shape mismatch on NNStreamer (i.MX8MP) + pipeline design question ( 感谢您的快速回复,我之前曾尝试在 tensor_transform 中使用重塑,但返回错误。 root@imx8mpevk:~# export MODEL=/root/rtsp/testing1/saved_model_Triding_320.tflite root@imx8mpevk:~# export LABELS=/root/rtsp/testing1/labels.txt root@imx8mpevk:~# gst-用上市-1.0 --no-position v4l2src 设备=/dev/video4!video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 !imxvideoconvert_g2d !video/x-raw,width=320,height=320,format=RGBA !视频转换 !video/x-raw,width=320,height=320,format=BGR !张量转换器 !tensor_transform mode=arithmetic option=typecast:int8,add:-128 !tensor_filter framework=tensorflow-lite model=${MODEL} !tensor_transform mode=arithmetic option=typecast:float32,add:128.0,mul:0.004982381!tensor_transform mode=reshape option=1:7:2100:1 !tensor_transform mode=transpose option=1:0:2:3 !tensor_decoder mode=bounding_boxes option1=yolov8 option2=${LABELS} option3=0 option4=1920:1080 option5=320:320 !cairooverlay name=overlay !视频转换 !autovideosink ** 消息:14:56:17.877:accl = cpu **(gst-launch-1.0:1335):CRITICAL **:14:56:17.931:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32' 失败 ** (gst-launch-1.0:1335):CRITICAL **:14:56:17.931:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32' 失败 ** (gst-launch-1.0:1335):CRITICAL **:14:56:17.931:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32' 失败 ** (gst-launch-1.0:1335):CRITICAL **:14:56:17.935:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32' 失败 ** (gst-launch-1.0:1335):CRITICAL **:14:56:17.938:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32' 失败 ** (gst-launch-1.0:1335):CRITICAL **:14:56:17.939:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32'失败 警告:流水线错误:无法在元素"tensor_transform" 中设置属性"mode" ,以"重塑" root@imx8mpevk:~# 您能否建议修改流水线,以符合预期格式,并覆盖到 nv12 上。 或者我需要降级或升级我的 linux 电路板支持包 版本才能匹配它们。 如果可能,请测试管道并提供反馈。 感谢并问候 S Vishnu Re: Need guidance: YOLOv8 output shape mismatch on NNStreamer (i.MX8MP) + pipeline design question ( 你好 问题源于您的 YOLOv8 TFLite 模型输出形状(1,7,2100)与 i.MX8MP 上 NNStreamer 的 YOLOv8 解码器所期望的格式(7×2100×1)不匹配。出现这种情况的原因是: 1.您当前的电路板支持包版本 (LF6.12.34_2.1.0)仅支持 4D 张量的转置操作 2.模型输出需要重塑和转置,以符合解码器的预期 ## Recommended Solution For the tensor transformation, you need to apply: 1. Dequantization (if using quantized model) 2. Reshape the output from (1,7,2100) to (1,7,2100,1) 3. Transpose the tensor to the required format (7×2100×1) ## 管道优化 您建议的架构(拆分管道)是一种合理的方法: - 仅为推理转换 NV12 → BGR - 保留原始 NV12/YUY2 帧用于显示/编码 - 使用硬件加速直接在 NV12 上叠加检测结果 这将消除软件视频转换操作,实现更好的性能。 ## NV12 管道的推荐要素 在 NV12 上直接绘制边界框: - 使用具有叠加功能的 `imxvideoconvert_g2d` - 替代方法: `cairooverlay` 可与 NV12 配合使用,但可能需要格式调整 管道结构示例: ``` v4l2src → NV12 → tee → branch1:转换为 BGR → 推理 → 检测结果 branch2:原始 NV12 → imxvideoconvert_g2d(带叠加) → 编码器/显示器 ``` 通过消除不必要的格式转换,利用 NPU 60+ FPS 的能力,这种方法应能显著提高性能,超过当前约 20 FPS 的限制。 此致 Re: Need guidance: YOLOv8 output shape mismatch on NNStreamer (i.MX8MP) + pipeline design question ( 您好, 是的,你需要降级 Linux 电路板支持包。我想这应该能行,因为我们还没有在 Yolov8 中测试过管道。 此致 Re: Need guidance: YOLOv8 output shape mismatch on NNStreamer (i.MX8MP) + pipeline design question ( 我有一个更新,我在张量_变换元素中使用了模式维度变化(dimchg),以符合张量解码器的预期。 .... tensor_filter framework=tensorflow-lite model=../../vaishnavi/model_calibrated_int8_og_320.tflite custom=Delegate:External,ExtDelegateLib:libvx_delegate.so !tensor_transform mode=arithmetic option=typecast:float32,add:128.0,mul:0.004982381!tensor_transform mode=dimchg option=0:1 !tensor_decoder mode=bounding_boxes option1=yolov8 option2=labels_over.txt option3=0 option4=1920:1080 option5=320:320 !...... 感谢您的回复。 感谢和问候 Siddavatam Vishnu
記事全体を表示
[乱用] 投稿者: @JohnKlug / ボード: imx-プロセッサ / 報告者: ovgfjhx ovgfjhx は、 @JohnKlug が投稿した 「Could not invoke dnf for external kernel module in Yocto kirkstone」という 投稿について、以下の理由で報告しました: 理由:ヌードまたは性行為 詳細: 投稿リンク: https://community.nxp.com/t5/i-MX-Processors/Could-not-invoke-dnf-for-external-kernel-module-in-Yocto/mp/1627964#M203740 投稿者: @JohnKlug |メール著者 報告者: ovgfjhx |メールレポーター 報告された投稿には 2 件の返信があります。
記事全体を表示