Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
新舊硬件版號差別 同樣 ringo 版本,為什麼 左邊是舊的 版號 332 可以使用,右邊新的 B222 不能使用,332/B222 區別 怎麼樣 B222可以正常使用
View full article
RW612 WiFi Init stuck on HAL_ImuLinkIsUp() I am trying to run the MQTT example on a custom board. The module used is ublox IRIS-W106-30B. I followed the instructions to use j-link to install the wifi fw blob serperatly. However, I am getting stuck in an infinite loop in WPL_Init().   I was also unable to initialize the BLE due to similar issue. SDK 25.09.00 using MCUXpresso 
View full article
MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programming Hi NXP Team I'm facing a strange issue with my MIMXRT1060-EVKB that started suddenly. The board was working fine previously, but now I cannot debug any application, including the SDK examples. Environment Board: MIMXRT1060-EVKB IDE: MCUXpresso IDE 24.12.x Debug Probe: On-board LinkServer Connection: USB Problem When I start a debug session: The project builds successfully. Flash programming completes successfully. After programming, the debugger resets the target but never reaches ResetISR  or main(). The GDB session immediately terminates. Console output: Closing flash driver MIMXRT1060_SFDP_QSPI.cfx Flash Write Done Flash Program Summary: 850584 bytes in 0.06 seconds Starting execution using system reset and halt target Stopped (Was Reset) [Reset from Unknown] GDB stub (crt_emu_cm_redlink) terminating - GDB protocol problem: Pipe has been closed by GDB. What I have already tried Tested with a new SDK example (UART interrupt example) — same behavior. Placed a breakpoint at ResetISR — it is never hit. main() is never reached. Performed Mass Erase — no change. Rebooted the PC. Tried on another laptop with a fresh MCUXpresso installation — same issue. Verified the DIP switches are configured for QSPI Flash boot mode, not Serial Downloader (ISP) mode. Any suggestions would be greatly helpful. Thanks Prathyush. i.MXRT 106x Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm Hi @ShellyZhang , Thank you for your suggestion. I followed the exact sequence you recommended. I disconnected the power and debug cables, toggled the last two pins of SW4 to put the board into Serial Download Mode, reconnected the board, and performed a Mass Erase using the LinkServer GUI Flash Programmer. The mass erase completed successfully. After that, I restored the board to QSPI Boot Mode, reset the board, and started a new debug session. Unfortunately, the issue still persists. The application is programmed successfully, but the debugger does not reach ResetISR or main(). I also verified that the same behavior occurs with an unmodified SDK example project, so it does not appear to be specific to my application.   Thanks, Prathyush Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm Dear @Prathyush_27 , Please try this sequency: 1. Disconnect the power cable and the debug cable from the board, then set the board boot mode to Serial Download Mode. 2. Reconnect the power cable and the debug cable, then use MCUXpresso IDE → GUI Flash Tool / LinkServer GUI Flash Programmer → Erase Flash Memory → Mass Erase. 3. Restore the board to QSPI Boot Mode, reset the board, and then start a new debug session. Best Regards, Shelly  Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm Hi Prathyush_27, Thank you for your reply. Your feedback will help us better understand the issue and may also benefit others who encounter similar problems. Best Regards, Shelly Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm Hi @ShellyZhang , Thank you for your assistance. I was able to identify the root cause of the issue. It turned out to be the SW2 DIP switch configuration. The last two switches on SW2 had been accidentally toggled, which prevented the debugger from starting the application correctly. After restoring the last two SW2 switches to their original positions, everything worked as expected. The debugger now successfully reaches ResetISR and main(), and debugging works normally. This was a configuration issue on my board rather than a problem with the SDK or the debugger. Thank you again for your support. I hope this information is helpful to anyone who encounters a similar issue in the future. Re: MIMXRT1060-EVKB - Debugger no longer reaches ResetISR/main, GDB disconnects after flash programm Dear @Prathyush_27 , Could you please try the following two approaches? 1. Verify Flash Programming and Boot Please try using MCUXpresso Secure Provisioning Tool 26.06 to program a simple LED blink application while the board is in Serial Download Mode, and then switch the boot mode back to QSPI Boot Mode. If the LED application runs successfully after a reset, it indicates that the flash device and boot process are functioning correctly. In that case, I suspect that LinkServer GUI Flash Programmer may not have completed the flash erase operation successfully. If the LED application can boot and run after a reset, please try launching a normal debug session again to see whether the issue still occurs. 2. Run the Application from RAM Please modify the project configuration to run the application from RAM: 2.1 Enable Link application to RAM: 2.2 Under Defined Symbols, configure: XIP_EXTERNAL_FLASH=0 XIP_BOOT_HEADER_ENABLE=0 2.3 Rebuild the project. 2.4 Start a normal debug session and run the application. Please let us know the results of both tests, especially whether the LED application can boot successfully from QSPI flash and whether the RAM-based application can run under debug. Best regards, Shelly
View full article
I want to use flexio to work as a special spi, 20bit mosi output at the same time 20 chip dac need  to be controled  at the same time , I want to use flexio  to work as special spi,  to control the dac device. deltails as below: one  cs , one clk,  20 mosi,   use 20 pins,  to  output dac values to  20 dac devices at the  same time , can you give the  mcuexpross code  and project ? thanks! 回复: I want to use flexio to work as a special spi, 20bit mosi output at the same time Is  the  question two hard  lead to  there is nobody  can give  any suggestions  ? 回复: I want to use flexio to work as a special spi, 20bit mosi output at the same time 1、 cs pull low level 2、flexio transmit 20 channel mosi evrytime, every channel transmit one bit,  one transmit use one shift register, 3、transmit 8 times use all the 8 shift registers , and every channel transmit  8 bits。 4、step 2 、3 is one  dma  transmit.  use  3 times of dma to transmit 24bit  data every channel, because  the dac chipi is  24bits. 5、pull cs high。 can  this work ok? 回复: I want to use flexio to work as a special spi, 20bit mosi output at the same time is   there anybody ? Re: I want to use flexio to work as a special spi, 20bit mosi output at the same time the  chip i use is mcxn947. 回复: I want to use flexio to work as a special spi, 20bit mosi output at the same time Hi @justdomyself  For a similar implementation, I recommend checking the FlexIO QSPI application note AN14175 and the FlexIO SPI DMA examples in the MCUXpresso SDK. The AN14175 example demonstrates how to use FlexIO timers and shifters to create custom serial interfaces, which is closer to your requirement of driving 20 DAC channels simultaneously with one clock and multiple data outputs. The FlexIO SPI DMA example is also useful for understanding the basic FlexIO timer, shifter, and DMA configuration. BR Harry 回复: I want to use flexio to work as a special spi, 20bit mosi output at the same time Where is the project code for AN14175 located? Where can I download it? 回复: I want to use flexio to work as a special spi, 20bit mosi output at the same time Hi @justdomyself  Search | NXP Semiconductors Please search AN14175 in the NXP official website. And you can click the Associated File: AN14175SW to download the software. BR Harry 回复: I want to use flexio to work as a special spi, 20bit mosi output at the same time An error occurred during import: An error occurred during compilation: An error occurred during debugging: When executing BOARD_PowerMode_OD, the debug function crashes immediately with the error shown in the image above. Could you provide a newer, working project? My software version: MCUXpresso IDE v25.6 [Build 136] [2025-06-27] 回复: I want to use flexio to work as a special spi, 20bit mosi output at the same time Hi @justdomyself  You can download the SDK version corresponding to AN14175. BR Harry
View full article
Image-specific SBOM and CVE assessment support for FlexBuild LSDK-25.12 Hi NXP team, We are using LSDK-25.12_DEBIAN-13_LF-6.12.20 with FlexBuild to build a Debian-based product image for the i.MX8MP. To support our vulnerability assessment and conformity assessment under RED / EN 18031, we need to establish a repeatable process for identifying the software components and known vulnerabilities in the final shipping image. We have reviewed the FlexBuild 25.12 source tree and found that: SBOM-flexbuild.spdx.json contains only a single package entry describing the FlexBuild tool itself, rather than the contents of a built image. SCR.txt is an SDK-wide Software Content Register and does not represent the components actually installed in a specific target image. We could not identify any image-specific SBOM or CVE manifest generation mechanism in flex-builder. Based on these findings, could you please clarify the following? Does NXP currently provide an official or recommended method for generating an image-specific SBOM, such as a per-image SPDX document, from a FlexBuild Debian build? If this capability is planned, could you indicate the target release or expected availability? Does NXP currently provide or plan to provide Vigiles integration for the Debian Linux SDK / FlexBuild, equivalent to the meta-timesys workflow available for Yocto? If direct integration is not available, is manually creating and importing a CSV manifest, as described in the Vigiles FAQ, still the recommended approach for FlexBuild-based images? What are the official sources for security advisories, CVE applicability information, and security fixes for the following components included in this release? linux-imx lf-6.12.20-2.0.0 uboot-imx lf-6.12.20-2.0.0 imx-atf imx-optee-os NXP-provided firmware and binary packages, such as DDR, HDMI, VPU, and wireless firmware For example, should we rely on NXP security advisories, fixed-CVE lists in release notes, specific maintained Git branches, or another official source? What is the maintenance and security-update lifecycle for LSDK-25.12 and its associated lf-6.12.20 BSP components? In particular: For how long will security fixes be provided for this release? Which branches or repositories should be monitored for backported fixes? What upgrade cadence does NXP recommend for products requiring an ongoing vulnerability-management process? Our goal is to establish a repeatable and evidence-based SBOM and CVE assessment process for the actual shipping image. References to any official documentation, supported tools, or recommended procedures would be greatly appreciated. Thank you. Re: Image-specific SBOM and CVE assessment support for FlexBuild LSDK-25.12 Hi @Chavira , Thank you for the clarification regarding the support status of the Debian distribution. We understand that the Debian integration itself is provided as a proof of concept. However, our remaining questions concern the underlying BSP components, which as far as we can tell are the same repositories and branches consumed by the Yocto BSP releases: - linux-imx (lf-6.12.20-2.0.0) - uboot-imx (lf-6.12.20-2.0.0) - imx-atf - imx-optee-os - NXP-provided firmware binaries (DDR, HDMI, VPU, wireless) Could you please confirm, independently of which build system or root filesystem is used: 1. Are security fixes for these components delivered through the lf-* release branches, and is the fixed-CVE information published in the Yocto BSP release notes the authoritative source for CVE remediation status of these components? 2. For the lf-6.12.20 generation specifically, which subsequent lf-* releases or branches should we monitor to obtain security fixes applicable to these components? 3. What is the maintenance duration for the lf-6.12.20 BSP component generation, and what upgrade cadence does NXP recommend for products that must maintain an ongoing vulnerability-management process? We are not asking NXP to support or validate our Debian-based image; we only need to identify the official sources of security-fix information for the NXP BSP components themselves, so that we can track and apply them in our own maintenance process. Thanks Re: Image-specific SBOM and CVE assessment support for FlexBuild LSDK-25.12 Hi  @Leo_dev, Thank you for contacting NXP Support. Unfortunately, Debian is considered by NXP to be a proof of concept distribution and therefore does not receive the same level of support, validation, and long term maintenance as our Yocto based BSP releases. In fact, during boot, Debian displays a disclaimer indicating that the software is provided without any guarantee of functionality or support. As a result, issues encountered on Debian may not receive the same level of investigation or validation as those reproduced on a Yocto based image. For production development and fully supported use cases, we recommend using the Yocto BSP provided by NXP. All of our publicly available source code is hosted on GitHub and can be accessed through the following organization: https://github.com/nxp-imx Best regards, Chavira Re: Image-specific SBOM and CVE assessment support for FlexBuild LSDK-25.12 Hi @Leo_dev, 1. Yes. Security fixes for NXP BSP components are typically delivered through the official lf- release branches. The i.MX Linux BSP release notes (RN00210) and associated manifests/change logs are the primary NXP references for tracking integrated fixes and CVE remediation status 2. For the LF6.12.20 generation, monitor subsequent BSP releases such as LF6.12.34_2.1.0, LF6.12.49_2.2.0, LF6.18.2_1.0.0, and newer releases, as security and maintenance fixes are carried forward into these branches. 3. For products requiring ongoing vulnerability management, NXP's recommended practice is to regularly track and evaluate newer BSP maintenance and quarterly releases to obtain security updates and bug fixes
View full article
S32K388 TCP/IP stack 5.0.0 not working Hi @PavelL, I was able to run the example TCP/IP stack example project previously with the following configuration: • S32KDS version 3.6.5 • RTD (Real-Time Drivers) version 7.0.0 • TCP/IP Stack version 4.0.0 However, after upgrading to the following versions and did the same setup procedure, it is not working: • S32KDS version 3.6.8 • RTD (Real-Time Drivers) version 7.0.1 • TCP/IP Stack version 5.0.0 I have attached my project. Thanks for the help again. Re: S32K388 TCP/IP stack 5.0.0 not working Hello @James_Zhang_SE , I need time for investigation. I'll do my best to reply within this week. Thank you for your understanding. Best regards, Pavel Re: S32K388 TCP/IP stack 5.0.0 not working Hello @James_Zhang_SE , I apologize for delayed response caused by my workload. The root cause is EthIf_Cfg.c , as we've already discussed in this thread S32K388 tcpip stack 4.0.0 missing lwip folder while compiling The example is working now on my S32K388EVB-Q289. Anyway, I did lots of changes in your project but the most critical is the EthIf_Cfg file. All modified files can be found in the attached zip. You may check the changes by yourself. Please notice that provided code is without any warranty. Once you replace files by the patch, please do not forget to do Update Code. Best regards, Pavel Re: S32K388 TCP/IP stack 5.0.0 not working Hi Pavel, Thank you so much for your help! After applying the same steps as before, I was able to ping and test the TCP loopback. I have a few quick questions: For the Ethif Config fix and RTD workarounds, will they be added in future releases of the driver and example project? Since I'm not too familiar with this stack. When something is not working, do you have a suggested systematic way to debug? Re: S32K388 TCP/IP stack 5.0.0 not working Hello @James_Zhang_SE , Thank you for sharing your current status.   If my previous post helped to solve the issue, please mark it as a solution, as this may help other users facing a similar problem.   Regarding point 1:   I have reported the EthIf_Cfg issue to the responsible software team. The release date of the fix is not known yet. There is still an internal discussion about where the RTD workaround should be implemented, whether in the MAC driver or in the clock configuration area. For now, we need to accept the current situation and apply the workaround manually.   Regarding point 2:   My usual debug flow is to check the pin configuration, clock configuration, interrupt configuration, FIFO sizes and the required RTD workaround code. The gPTP examples are also a very good reference, because they provide functional Ethernet-related configurations that can be used for comparison. Best regards, Pavel
View full article
S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link Sta Platform: S32K344 with AB-Swap scheme. Separate firmware images reside in Active and Passive blocks. Observation: After executing HSE_ActivatePassiveBlock() to swap active/passive partitions, a full power cycle does not trigger automatic firmware startup. Firmware executes successfully only when J-Link is attached and Start Application is triggered from debugger. Could anyone explain the root cause and provide recommended fixes? Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link Hi @HQZ  Are you sure there is a valid image in the passive partition? What do you observe if you attach a debugger to the running target without resetting it after power-up? Did the device enter JTAG recovery mode? Or you can simply reset the device by your debugger and then check if it reached the entry point of your application.  If the device is stuck in an endless loop at address 0x2040012C, it indicates that it has entered JTAG recovery mode. This could also point to an issue with the IVT configuration or IVT integrity. Also, is the image in the passive partition linked to run from the active partition address space, i.e. starting at 0x00400000? Finally, are you using Secure Boot? Regards, Lukas Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link Hi @HQZ  “while Partition B firmware is linked starting at 0x600000” – this is the problem. Both images must be linked for active partition addresses – 0x400000. The applications are always running from active partition, not from passive partition. Solution – use the same linker file for both projects. It works with your debugger because debuggers set the program counter “manually” to entry point address which is found in elf file. Regards, Lukas Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link Hello@lukaszadrapa  Platform: S32K344, AB-Swap architecture. Independent firmware images are stored in Active Block and Passive Block separately. HSE Secure Boot is disabled. Problem Description: After calling HSE_ActivatePassiveBlock() to complete the Active/Passive partition switch, the device cannot automatically boot the target firmware after power cycle and reset. However, if the J-Link debugger is connected to the chip and "Start Application" is clicked within the debugger software, the swapped firmware runs normally. Additional background: Firmware resides in both Partition A and Partition B. The only difference between the two images is the LED blinking frequency. Partition A firmware is linked starting at 0x400000, while Partition B firmware is linked starting at 0x600000. After invoking HSE_ActivatePassiveBlock() and reset, I dumped flash contents with J-Link. The contents of Partition A and Partition B have been physically swapped, confirming that HSE_ActivatePassiveBlock() takes effect. Questions: 1. What is the root cause of this behavior? Why does cold power-on boot behave differently from debugger-triggered "Start Application"? 2. What feasible solutions can resolve the auto-boot failure after AB partition swap? Thanks for your support. Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link Hello@lukaszadrapa  I have tried the AB‑partition swap according to previous suggestions, but the issue still persists. The HSE firmware version used is s32k344_hse_fw_1.5.0_2.40. Test setup for validating AB‑swap: Single linker script with application‑based self‑update. The application is responsible for programming the new firmware image into the passive partition. Linker script: Only one linker script is used, and the firmware start address is always set to 0x00400000. Workflow: 1. The application running in Partition A (logical address 0x00400000) receives new firmware over CAN. The only difference between Partition A and Partition B firmware is the LED‑blinking frequency. 2. The application programs the new firmware directly into the physical address of the passive partition (0x00600000). 3. After programming completes, the HSE_ActivatePassiveBlock() service is called. 4. The chip is then reset. Observation: The firmware fails to run after reset. However, when J‑Link is connected and "Start Application" is triggered from the debugger, the firmware from Partition B executes correctly. What other root causes can lead to unsuccessful partition swap, and what are the corresponding solutions? Regards
View full article
IMX8M Plus GPU DRAM contention We are running Yocto Linux on an IMX8M Plus What we have noticed is that during any GPU activity, we get huge latency spikes for memory access from the CPU (1-3ms spikes). This is a huge issue, as we are using XDP for networking. We have tried tuning IMX8MP_ICM_A53, IMX8MP_ICM_GPU3D and IMX8MP_ICM_GPU2D, setting them to 7, 2, 2 for QoS control. This made the latency spikes less frequent, but they are still there. The only option we found was doing absolutely no GPU activity or removing the GPU from the device tree, however this is not acceptable for our use-case. Are there some other setting that could be tuned to alleviate this behavior? We cannot have the GPU locking the DRAM for more than a 50-100 μs at most Graphics & Display Linux Re: IMX8M Plus GPU DRAM contention Hi @richardlovgren, Thank you for contacting NXP Support! Could you please tell me which BSP version you are using? Does this issue reproduce on an EVK as well, or is it only occurring on your custom hardware? Could you also provide the log files, your device tree, and any other relevant information so that I can investigate and diagnose the issue on my side? Additionally, please share the exact steps to reproduce the problem, so I can try to replicate it in my setup. Best regards, Chavira
View full article
EZH-V use case for IMXRT700 Hi team NXP! From the spec of IMXRT700 it was said to be architected in the 3 domain of media, compute and sense domain, which each of the cores on chip would require their own separate image to run. But it seems that there are only very few documented usage of the EZH-V core. I have read the application notes AN14614, AN14618 and AN14654, but there are still very few information regarding this core and it roles in graphical processing for RT700. It was said that it is used to implement the smartDMA engine, but in other MCX family MCU there are no mentioning of the existence of this core and the smartDMA can be directly used by the Arm CM33 core via the mcuxpresso sdk provided APIs. So now I am extremely confused, can I still directly use the smartDMA on iMXRT700 directly or must I build the image for the EZH-V via LLVM as per AN14614 instruction? This seems quite counterintuitive though having to resort to RPMsg for IPC communication as supposed to be directly driven by the Cpu0. On top of this, I am not aware of any actual demo or use case that has been provided by NXP that explicitly utilized this EZH-V core. I have also review the some of the source headers available, and only some very intuitive basic operations have been provided. May I know what is the usage of the EZH-V? Re: EZH-V use case for IMXRT700 okay quick update, after taking a look of the smartDMA driver in the mainline Zephyr now I understand the situation. The smartDMA has always been/planned as a standalone subsystem with its own core that could have the potential to run firmware on its own, but never have been actually presented as a fully standalone RISC-V core. In the current existing example, the smartDMA has never really touched the custom firmware installation path and only used as a slightly special DMA IP. So now the question should pivot to if I could still use the smartDMA in the old fashion; directly invoked via the CM33 instead of doing the complex IPC setup, as of time of writing, the smartDMA IP is yet to be exposed as a supported IP of the official maintained mimxrt700_evk. Re: EZH-V use case for IMXRT700 Hi @mayliu1 , Thanks for the quick reply, so you mean the smartDMA is no longer coupled to the CM33 core and therefore must be used via the EZH-V core? In NXP's other MCU family like MCX the smartDMA is coupled to the CM33 and can be directly invoked via APIs, there are application notes documenting such use cases AN14172, AN14916, and they do not involve building the standalone image for the RISC-V core.  So what is the current architecture on the i.MXRT700? All documents about EZH-V are very ambiguous and I am not aware of any existing demo or guides that have thoroughly covered the usage of EZH-V.  Has NXP revised the architecture of smartDMA so it is no longer part of the core CM33 system and grouped to the RISC-V companion core instead? Can I still invoke the smartDMA directly via the CM33? Re: EZH-V use case for IMXRT700 Hi @TomC818 , Thank you so much for your interest in our products and for using our community. According to AN14614 and the i.MX RT700 Reference Manual, my understanding is that the SmartDMA functionality on the i.MX RT700 is implemented through the EZH-V RISC-V core rather than as a conventional DMA peripheral such as eDMA. In general, eDMA is still the preferred solution for standard memory transfer operations and can be configured directly by the CM33 core. However, SmartDMA-related processing, such as certain graphics/data post-processing or data format conversion tasks, is typically implemented by firmware running on the EZH-V core. Based on AN14614, CPU0 is responsible for loading and booting the EZH-V firmware, after which the actual processing is performed by EZH-V. From this perspective, EZH-V behaves more like a programmable coprocessor than a traditional DMA engine. Therefore, SmartDMA on RT700 is better viewed as a programmable processing engine running on the EZH-V core, rather than a traditional DMA peripheral directly driven by CM33 alone. Wish it helps you Best Regards May Re: EZH-V use case for IMXRT700 hey umm... if NXP didn't actually prepare or have any planned support for "With the assistance of the EZH-V, the Cortex-M33 cores can be freed to perform other tasks. While the EZH-V is executing the assigned task, the CM33 cores can execute other tasks in parallel." as per the reference manual described, I think I will be pursuiting a different option from ST or Infineon, considering the fact that RT700 documentations and examples are still extremely unpolished and all over the place. Support for most of the marketted unqiue features of this MCU are very sparse and few between. With such a the complex heterogeneous architecture, such little examples and guides are just abyssal. Re: EZH-V use case for IMXRT700 On i.MX RT700, SmartDMA is not exposed in the same way as a conventional standalone DMA peripheral directly controlled by the CM33. The SmartDMA-style capability is provided through the EZH-V engine, so the typical usage model is for the CM33 to load and start the EZH-V firmware, then coordinate with it as needed.
View full article
Regarding the "MPC5777C-1b+2b_RAM_ECC_error_injection GHS614" example code Hello. I am currently developing based on the MPC5777C MCU. I have a question regarding the development process. I designed code to perform ECC checks based on the "MPC5777C-1b+2b_RAM_ECC_error_injection GHS614" example code. Under normal circumstances, this code performs the ECC checks correctly. However, when running the ECC check code with a debugger like Trace32 connected to the MCU, errors often occur where bit errors are not detected. Is it possible that the "GHS614" example code as a whole does not function correctly when connected to a debugger such as Trace32? Thank you. Re: Regarding the "MPC5777C-1b+2b_RAM_ECC_error_injection GHS614" example code Hello. Assuming the Trace32 debugger is connected and the dump window is open, and my custom application code is running, is it possible for a case to occur where a bit error is not detected within the ECC check function, which was designed referencing GHS614? Re: Regarding the "MPC5777C-1b+2b_RAM_ECC_error_injection GHS614" example code Hello, I am not sure what your setup is, but have in mind that any open dump window in the Trace is constantly reading the memory and will rise the ECC fault immediately if detected. ECC errors will never happen on the not corrupted address. As ECC mechanism is also guarded by EDC. Such is simply not possible. Best regards, Peter
View full article
S32K358 eMIOS ISR stuck at 85°C Dear NXP Support Team, we are facing an issue on S32K358 during temperature tests at around 85°C.   In our application we use 6 eMIOS channels, each one configured to generate interrupts on both PWM edges with a frequency of 200Hz.   At 85°C, the MCU sometimes gets stuck inside one eMIOS ISR. The ISR does not exit because the code checks the interrupt flag by reading the eMIOS registers, but the flag is 0 (file Emios_Mcl_Ip_Irq.c 😞   if (0U != ((Emios_Ip_paxBase[Instance]->CH.UC[Channel].S) & (uint32)eMIOS_S_FLAG_MASK))    After debugging, we noticed that when the issue occurs, the variable containing the eMIOS base address is NULL (Emios_Ip_paxBase). When the application works correctly, the same pointer is valid and the eMIOS registers are read properly. It seems that, in some conditions, the reference to the eMIOS peripheral is corrupted or cleared during ISR execution.   Do you have any indication about possible known issues or root causes, such as stack overflow, memory corruption, concurrent accesses, ISR handling, or temperature-related behavior?   Best regards, Simon Re: S32K358 eMIOS ISR stuck at 85°C Hi vane, I'm currently using RTD 7.0.0 Re: S32K358 eMIOS ISR stuck at 85°C Hi @simon98  Which RTD version are you working with? Any additional information would be helpful. Also, in RTD versions prior to 6.0.0, there was a known issue related to the incorrect memory mapping of static variables within function scope (ARTD-159985). This issue describes a problem where the variable Emios_Ip_paxBase, defined in both Emios_Mcl_Ip.c and Emios_Mcl_Ip_Irq.c, is assigned inconsistent initialization characteristics. Further details are provided in the Software Release Notes. BR, VaneB Re: S32K358 eMIOS ISR stuck at 85°C Hi @simon98  Could you please provide a simple application that reproduces the observed behavior? Also, could you confirm whether you are working with a custom board or an evaluation board? Additionally, could you share how the testing is being performed to confirm that the issue occurs at 85 °C? Re: S32K358 eMIOS ISR stuck at 85°C Hi @VaneB , Currently i'm working with a custom board with S32K358 where i use these eMIOS_1 channels to generate PWM of 200 Hz: ch3, ch9,  ch11, ch12, ch13, ch19. Code is generated using SImulink  Putting my custom board into a climatic cell at 85°C i've observed the stucking behaviour after some time. While i was debugging with S32DS (3.6.7) I've found out that it stuck into the ISR(EMIOS1_1_IRQ) so i've put into it some custom counter near entry/exit function, and also into Emios_Pwm_IrqHandler and Emios_Pwm_Ip_IrqHandler functions, in order to detect what parts of the code are executed.  After some tests i've found out that, when it stucks, inside static void Emios_Pwm_IrqHandler(const uint8 Instance, const uint8 Channel) {     /* Check that an event occurred on Emios channel */     if (0U != ((Emios_Ip_paxBase[Instance]->CH.UC[Channel].S) & (uint32)eMIOS_S_FLAG_MASK))     {         /* Check that an event occurred on EMIOS channel */         if (0U != ((Emios_Ip_paxBase[Instance]->CH.UC[Channel].C) & ((uint32)(eMIOS_C_DMA_MASK | eMIOS_C_FEN_MASK))))         {             Emios_Pwm_Ip_IrqHandler(Instance, Channel);         }         else         {             /* Do nothing - in case of spurious interrupts, return immediately */         }     } }   the if condition: if (0U != ((Emios_Ip_paxBase[Instance]->CH.UC[Channel].S) & (uint32)eMIOS_S_FLAG_MASK))   is always 0 because, for some reason, Emios_Ip_paxBase[Instance] points to 0. This means that nobody is clearing the interrupt flag so it enters in a loop where it cannot escape.   here's the code i've used to detect this probelm: static void Emios_Pwm_IrqHandler(const uint8 Instance, const uint8 Channel) {     // uint32_t s;     // uint32_t c;     // uint32_t s_flag;     // uint32_t s_ovr;     dbg_pwm_last_instance = Instance;     dbg_pwm_last_channel = Channel;     dbg_pwm_last_base_addr = (uint32_t)Emios_Ip_paxBase[Instance];     dbg_pwm_last_c_addr = (uint32_t)&Emios_Ip_paxBase[Instance]->CH.UC[Channel].C;     dbg_pwm_last_s_addr = (uint32_t)&Emios_Ip_paxBase[Instance]->CH.UC[Channel].S;         dbg_emiosipirq_static_state1++;     /* if (Instance == 1)     {         switch (Channel)         {             case 16:                 dbg_emiosipirq_static_cnt_ch16++;                 break;             case 17:                 dbg_emiosipirq_static_cnt_ch17++;                 break;             case 18:                 dbg_emiosipirq_static_cnt_ch18++;                 break;             case 19:                 dbg_emiosipirq_static_cnt_ch19++;                 break;             default:                 dbg_emiosipirq_static_cnt_oth1++;                 break;         }     }     else     {         dbg_emiosipirq_static_cnt_oth2++;     } */     /* Lettura reale dei registri vista dal codice */    /*  s = Emios_Ip_paxBase[Instance]->CH.UC[Channel].S;     c = Emios_Ip_paxBase[Instance]->CH.UC[Channel].C;     s_flag = s & (uint32)eMIOS_S_FLAG_MASK;     s_ovr  = s & (uint32)eMIOS_S_OVR_MASK;     dbg_pwm_last_s = s;     dbg_pwm_last_c = c;     dbg_pwm_flag_mask = (uint32)eMIOS_S_FLAG_MASK;     dbg_pwm_ovr_mask = (uint32)eMIOS_S_OVR_MASK;     dbg_pwm_last_s_and_flag = s_flag;     dbg_pwm_last_s_and_ovr = s_ovr;     if (s_flag != 0U)     {         dbg_pwm_s_flag_yes++;     }     else     {         dbg_pwm_s_flag_no++;     }     if (s_ovr != 0U)     {         dbg_pwm_s_ovr_yes++;     }     else     {         dbg_pwm_s_ovr_no++;     }     if ((s_flag == 0U) && (s_ovr != 0U))     {         dbg_pwm_flag0_ovr1_count++;     }     else if ((s_flag != 0U) && (s_ovr != 0U))     {         dbg_pwm_flag1_ovr1_count++;     }     else if ((s_flag != 0U) && (s_ovr == 0U))     {         dbg_pwm_flag1_ovr0_count++;     }     else     {         dbg_pwm_flag0_ovr0_count++;     } */     /* Check that an event occurred on EMIOS channel */     if (0U != ((Emios_Ip_paxBase[Instance]->CH.UC[Channel].S) & (uint32)eMIOS_S_FLAG_MASK))     {         dbg_emiosipirq_static_state2++;         /* Check that an event occurred on EMIOS channel */         if (0U != ((Emios_Ip_paxBase[Instance]->CH.UC[Channel].C) & ((uint32)(eMIOS_C_DMA_MASK | eMIOS_C_FEN_MASK))))         {             dbg_emiosipirq_static_state3++;             Emios_Pwm_Ip_IrqHandler(Instance, Channel);         }         else         {             dbg_emiosipirq_static_state4++;             /* Do nothing - in case of spurious interrupts, return immediately */         }     }     else     {         dbg_emiosipirq_static_state5++;         //Emios_Pwm_Ip_IrqHandler(Instance, Channel);         //Emios_Pwm_Ip_IrqHandler(1, 19);     } } These are the global vars in which i've stored the addresses which Emios_Ip_paxBase should point to: dbg_pwm_last_base_addr = (uint32_t)Emios_Ip_paxBase[Instance]; dbg_pwm_last_c_addr = (uint32_t)&Emios_Ip_paxBase[Instance]->CH.UC[Channel].C; dbg_pwm_last_s_addr = (uint32_t)&Emios_Ip_paxBase[Instance]->CH.UC[Channel].S; I've put also some custom code to read NVIC registers run time: attached you can find the file with Thread, general registers, NVIC registers and variables expressions, EMIOS registers, for 6 tests i made. Also i will provide you the S32DS project i used to test this behaviour in a private message. I hope all these information could be usefull. I remain at your disposal for any further information. BR, SImon Re: S32K358 eMIOS ISR stuck at 85°C Hi @simon98  Thank you very much for providing this information. Since the code appears to be getting stuck in EMIOS1_1_IRQ, which corresponds to eMIOS 1 Channel 19 based on your configuration, let’s try to narrow the analysis to this specific part. To simplify the debugging and rule out any interference from other modules, please create a minimal test project that only includes this eMIOS configuration. This will help us isolate the behavior and better understand the root cause. For guidance, you can review the examples provided in the thread S32M27x/S32K3 – eMIOS Usage. Does the same behavior still occur? Also, if you have an evaluation board, it would be great if you could try the same code there. Re: S32K358 eMIOS ISR stuck at 85°C Hi vane, I'll try this week to give you a simple project that replicate the behaviour Re: S32K358 eMIOS ISR stuck at 85°C Hi @VaneB , I tested the issue on my custom board using a simplified configuration that only includes the six eMIOS1 channels. Unfortunately, in this setup I am not able to reproduce the error. The application runs correctly and does not get stuck in EMIOS_1_IRQ. At the moment, I am looking into whether it is feasible to load the complete project developed for our custom board onto the EVB. Before proceeding, I would also like to understand if the hardware differences between the custom board and the EVB could potentially lead to any unexpected behavior or even damage to the EVB. BR, Simon Re: S32K358 eMIOS ISR stuck at 85°C Hi @simon98  Our evaluation boards are designed mainly for use at room temperature and have not been tested or qualified for very low or very high temperatures. You may still use the evaluation boards outside the room-temperature range, but we cannot guarantee their performance under those conditions. Re: S32K358 eMIOS ISR stuck at 85°C Hi @VaneB , After several attempts, I managed to create an EVB project that reproduces the application running on my custom board as closely as possible. In particular, I configured all the pins in the same way as in my custom project. I then tested this project on my custom board under 85°C conditions, and the eMIOS ISR issue still occurred: the application continued to get stuck. After that, I tested exactly the same project on the EVB under the same temperature conditions and over (90°C), but I was not able to reproduce the issue—the EVB continued to operate correctly without getting stuck. At this point, what would you recommend as the next steps to identify the root cause of the problem and find a possible solution? Please let me know if you need any additional information, measurements, or debugging data from my side. I have attached a ZIP file containing the complete EVB project and the pictures of the K358 on my custom board and on the EVB. Thank you for your support. BR Simone Re: S32K358 eMIOS ISR stuck at 85°C Hi @simon98  As the issue is observed on your custom board but not on the EVB, it would be worthwhile to investigate whether the root cause could be hardware-related. I recommend comparing your hardware design against the EVB schematic and reviewing the S32K3 Hardware Design Guideline to verify that all relevant recommendations have been properly implemented. Re: S32K358 eMIOS ISR stuck at 85°C Hi @VaneB,   the HW design has been reviewed on our side and no evident hardware issue has been found. Also, the board is not directly comparable with the NXP EVB due to different hardware design and operating conditions.   If a customer observes temperature-related issues on a custom board, how could it be possible to obtain one-to-one support from NXP?   BR, Simon Re: S32K358 eMIOS ISR stuck at 85°C Hi @VaneB  I would like to gently follow up on this topic, as we are still investigating the issue on our side and would appreciate your feedback. In particular, if the root cause were related to RAM corruption (for example, an out-of-bounds write or stack overwrite), which registers or diagnostic information would you recommend checking on the S32K358? Are there any specific fault status registers, ECC/error reporting registers, MPU-related registers, stack monitoring features, or other debug registers that could help identify whether memory corruption has occurred before the eMIOS ISR gets stuck? Any guidance on the most useful registers to inspect during debugging would be greatly appreciated. Thank you for your support. Best regards, Simon Re: S32K358 eMIOS ISR stuck at 85°C Hi @simon98  Since this appears to be a hardware-related issue specific to your board and we can not reproduce it, it is difficult to accurately diagnose the root cause through this support channel. We recommend contacting your distributor or local NXP representative for further assistance,
View full article
CGM-RD (UM12423) — NHS2634 never asserts INTERRUPT pin, NHS2x34_Init() hangs forever NHS2x34_Init() hangs indefinitely waiting for the NHS2634's interrupt pin to go high. I'd like help determining whether this points to a hardware issue, a power-sequencing issue, or a firmware configuration problem. Sequence of events: 1. NHS2634_HOSTIF_InitSpiAndInterrupt() runs and returns success. 2. NHS2x34_PMC_ResetAFE() is called. This issues an SPI write to the PMC control register (setting the AFE reset bit). It returns success (status = 0). 3. The code then waits in the following loop, expecting the chip to assert its interrupt pin high once it is ready to accept further SPI commands. This loop never exits. while (!NHS2634_HOSTIF_GetInterruptPinLevel()) { } Diagnostics already run: 1. Confirmed via SEGGER RTT logging that the loop is genuinely spinning (a live poll counter increments continuously into the tens of millions), not frozen or crashed. The CPU is alive and actively re-checking the pin. 2. Attached a debugger (J-Link/GDB) and halted mid-loop twice. The program counter was inside NHS2634_HOSTIF_GetInterruptPinLevel() calling GPIO_PinRead() both times, consistent with active polling. 3. Read back the PMC control register immediately after writing it. Expected a non-zero pattern reflecting the reset bit plus the write-protection byte just sent, but got back 0x00000000. 4. Ran a raw SPI loopback test (shorting MOSI to MISO directly on the sensor connector, with the NHS2634 module fully disconnected). Still got 0x00000000 back on a distinctive test pattern, instead of an echo of the transmitted bytes. 5. Repeated all of the above with the NHS2634 module completely unplugged. Results were identical to when it is connected. What I am trying to determine: I am using the official NXP-provided SDK and have not modified the driver code. I need to determine whether this is a hardware issue, a power-sequencing issue, or a firmware configuration issue on my side, and whether this looks like a hardware fault specific to my unit. Any guidance on where to look next would be appreciated. MCU-LINK-PRO,  MCUXPRESSO-VSC,  BLOOD-GLUCOSE-MONITOR  @nxp, @nxp5  Communication & Control(I3C | I2C | SPI | FlexCAN | Ethernet | FlexIO) MCXA MCXC MCXN Package and IO|GPIO Power Re: CGM-RD (UM12423) — NHS2634 never asserts INTERRUPT pin, NHS2x34_Init() hangs forever Since the SPI loopback failed to read 0x00, your host microcontroller's SPI peripheral/gpio routing is not actually transferring any data. Fix your host pin muxing, clocking, and GPIO initialization
View full article
Profinet demo I want to develop a profinet device based on RT1180. The PROFINET stack library, Industrial Communication Creator(ICC), ICE and PROFINET Eval Binaries have been downloaded.  There is a user guide for ICE for ICC, but I can't find a user guide for the Profinet stack guide. Is there a project demo in the stack library? Which project shall I put the file 'goal_appl.c‘ and ’goal_config.h‘ which are gererated by ICC?  How to modify the cyclic data of profinet device project? Re: Profinet demo Dear @wlfworld , The PROFINET guidance documents can be found in: PROFINET-Stack-Library.zip\ProfiNet\Documents Please pay special attention to the environment and software version requirements specified in the documentation, as the stack depends on specific toolchain and software versions for proper operation. You can refer to the video tutorial (Building Image on RT1180-EVK using VS Code.mp4) for guidance on building the PROFINET project in VS Code.   Best Regards, Shelly Re: Profinet demo The UG10361 is the user guide for how to building image with VS Code. The 10320 is the user guide for flashing binaries. I need the user guide on the profinet stack library. For example, how to set the input data and output data.
View full article
Does the S32K344's hardware QSPI support (Continuous Clock) configuration? As the title suggests, I want to continuously output a clock so that my downstream devices can process data based on this clock. Re: S32K344的硬件QSPI,是否支持(连续时钟/ Continuous SCK)的配置? Hello @Zhangbohan, Unfortunately, S32K3 SPI module does not support continuous SCK. One option is to use the "Continuous Transfer": "In Master mode, CONT keeps the PCS asserted at the end of the frame size, until a command word is received that starts a new frame." Another option is using a GPIO to act as CS and controlled by software. In either way, the SPI SCK is generated when pushing data into the SPI TX buffer. If you use standard driver (MCAL or RTD), then the SCK pulse will be control by driver through pushing data to FIFO. The user can't control it. As far as I know, only S32K9-K7-K6 devices' DSPI module support continuous SCK mode. From S32K39 Reference Manual: Best regards, Julián Re: S32K344的硬件QSPI,是否支持(连续时钟/ Continuous SCK)的配置? Thank you very much for your reply. I have re-evaluated my solution and have another question. Does the S32K344 support DMA transfer via QSPI? I see relevant registers at the register level; however, there are no enable or channel configuration options in QSPI_IP; it seems configurable at the MCAL layer. This makes me unsure whether QSPI+DMA is supported, and if there are any relevant examples. The existing example "Mem_43_EXFLS" doesn't seem to use DMA. Re: S32K344的硬件QSPI,是否支持(连续时钟/ Continuous SCK)的配置? Hello @Zhangbohan, Yes, QSPI instance does support DMA usage, you can refer to chapter 78.5.4.1 from the S32K3XX Reference Manual for considerations.  However, I am not aware of any QSPI_IP + DMA examples. Best regards, Julián 
View full article
S32DS ARM 2018 R1 许可证延期申请 你好我的许可证已经过期,因此我想申请延期。
View full article
Not able to Download S32K3 Standard Software Not able to download 
View full article
LS1046A 10GB SFP+ Configuration on kernel 6.12 Hello,  I have a custom board with the LS1046A, and I'm trying to use fm1-mac9 with a soldered SFP+ 10GB module.  My RCW in SERDES 1 is 0x1040:  So 10GB in fm1-mac9 is well covered from the RCW's perspective. Looking at the SFP power and laser everything seems healthy, but I can't seem to get it to talk/link with the sfp in front of it, so I suspect my DTB configuration is incorrect.  This is my current configuration for that MAC:  xfi10g: ethernet@f0000 {   status = "okay";   pcsphy-handle = <&pcsphy6>;   pcs-handle = <&pcsphy6>;   pcs-handle-names = "xfi";   phy-connection-type = "10gbase-r";   fixed-link {     speed = <10000>;     full-duplex;   }; }; mdio@f1000 {   status = "okay";   pcsphy6: ethernet-phy@0{     compatible = "fsl,lynx-pcs";     reg = <0x0>;   }; }; sfp_mac9: sfp {   compatible = "sff,sfp";   i2c-bus = <&i2c3>;   status = "okay"; }; For reference, I'm running linux-qoriq kernel 6.12, and the SFP probes correctly during boot reading its EEPROM. Do you have a proper example of running this type of connection in fm1-mac9?  Re: LS1046A 10GB SFP+ Configuration on kernel 6.12 How about changing per LS1046ARDB, as fm1-mac10 is SFP+, and the driver support the SFP+, too. https://github.com/nxp-qoriq/linux/blob/lf-6.12.49-2.2.0/arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts#L156
View full article
LPC5514JBD64E Use for WS2812. Hi, Is LPC5514JBD64E suitable for working with WS2812 for a beginner. If yes Where Can I get The Code and other Details.  Thank you. LPC55xx Re: LPC5514JBD64E Use for WS2812. hi @Kishore02  Thank you for your post! There is not information about the implementation of WS2812 for the LPC551x, you could use the Programmable Logic Unit to do it, in another devices there are example using the FlexIO modules like in application code hub for the MCXA366: https://mcuxpresso.nxp.com/appcodehub?search=an-emulating-ws2812-bus-with-flexio-on-mcx366  Also, there is a post of a colleague that implement it for a Kinetis board: NXP FlexIO Generator for the WS2812B LED Stripe Protocol Hope this information help as a reference 
View full article
i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) Hi, These are my yocto build parameters: Release: imx-linux-walnascar BSP Version: imx-6.12.49-2.2.0 MACHINE: imx8mpevk DISTRO: fsl-imx-xwayland I have been using this build environment successfully for the past couple of months. However, I suddenly started encountering the attached error. To troubleshoot, I completely cleaned the build environment, reinitialized the repository (repo init), synced everything again, and performed a fresh build. Unfortunately, I am still facing the same issue. Please find the attached log file for your reference. I would appreciate your help in identifying the root cause and suggesting a solution. i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) bitbake imx-image-core Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) What "bitbake command" are you using? I will do verification. Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) Thank you for your response. I verified my build environment, and it already matches the configuration you recommended. Host OS: Ubuntu 22.04.5 LTS (Jammy) GNU tar version: GNU tar 1.34 $ cat /etc/os-release PRETTY_NAME="Ubuntu 22.04.5 LTS" ... $ tar --version tar (GNU tar) 1.34 However, I still encounter the same failure Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) Please check the tar version, if the host is Ubuntu 24.04 and tar is 1.35 Build inside a container or VM with: Ubuntu 22.04 LTS GNU tar 1.34 Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) Please find file below,  Here i am pasting the some lines of error  DEBUG: Executing python function extend_recipe_sysroot NOTE: Direct dependencies are ['/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/binutils/binutils-cross_2.44.bb:do_populate_sysroot', '/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/gcc/gcc-cross_14.3.bb:do_populate_sysroot', '/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/quilt/quilt-native_0.68.bb:do_populate_sysroot', '/home/vvdn/LWT_Build/sources/poky/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-core/coreutils/coreutils_9.6.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/bison/bison_3.8.2.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/flex/flex_2.6.4.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/patch/patch_2.7.6.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/pseudo/pseudo_git.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-devtools/rpm/rpm_4.20.0.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-extended/bc/bc_1.08.1.bb:do_populate_sysroot', 'virtual:native:/home/vvdn/LWT_Build/sources/poky/meta/recipes-kernel/kmod/kmod_34.1.bb:do_populate_sysroot'] NOTE: Installed into sysroot: [] NOTE: Skipping as already exists in sysroot: ['gettext-minimal-native', 'binutils-cross-aarch64', 'cmake-native', 'gcc-cross-aarch64', 'libtool-native', 'm4-native', 'quilt-native', 'texinfo-dummy-native', 'kern-tools-native', 'linux-libc-headers', 'file-native', 'openssl-native', 'coreutils-native', 'expat-native', 'ncurses-native', 'readline-native', 'util-linux-libuuid-native', 'zlib-native', 'bison-native', 'dwarfsrcfiles-native', 'elfutils-native', 'flex-native', 'git-native', 'gnu-config-native', 'json-c-native', 'libedit-native', 'lua-native', 'make-native', 'patch-native', 'perl-native', 'pkgconfig-native', 'pseudo-native', 'python3-native', 'rpm-native', 'bc-native', 'bzip2-native', 'libarchive-native', 'libidn2-native', 'lzlib-native', 'xz-native', 'zstd-native', 'kmod-native', 'acl-native', 'attr-native', 'curl-native', 'gdbm-native', 'gmp-native', 'gnutls-native', 'libtasn1-native', 'libcap-native', 'libffi-native', 'libgcrypt-native', 'libgpg-error-native', 'libmicrohttpd-native', 'libmpc-native', 'libunistring-native', 'mpfr-native', 'nettle-native', 'p11-kit-native', 'popt-native', 'sqlite3-native'] DEBUG: Python function extend_recipe_sysroot finished DEBUG: Executing python function sstate_task_prefunc DEBUG: Python function sstate_task_prefunc finished DEBUG: Executing python function do_package DEBUG: Executing python function package_setup_pkgv DEBUG: Python function package_setup_pkgv finished DEBUG: Executing python function package_convert_pr_autoinc DEBUG: Python function package_convert_pr_autoinc finished DEBUG: Executing python function package_prepare_pkgdata NOTE: Installed into pkgdata-sysroot: [] DEBUG: Python function package_prepare_pkgdata finished DEBUG: Executing python function perform_packagecopy ERROR: Error executing a python function in exec_func_python() autogenerated: The stack trace of python calls that resulted in this exception/failure was: File: 'exec_func_python() autogenerated', lineno: 2, function: 0001: *** 0002:perform_packagecopy(d) 0003: File: '/home/vvdn/LWT_Build/sources/poky/meta/classes-global/package.bbclass', lineno: 363, function: perform_packagecopy 0359: rpath_replace (dvar, d) 0360:} 0361:perform_packagecopy[cleandirs] = "${PKGD}" 0362:perform_packagecopy[dirs] = "${PKGD}" *** 0363: 0364:python populate_packages () { 0365: oe.package.populate_packages(d) 0366:} 0367:populate_packages[dirs] = "${D}" File: '/usr/lib/python3.10/subprocess.py', lineno: 421, function: check_output 0417: else: 0418: empty = b'' 0419: kwargs['input'] = empty 0420: *** 0421: return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, 0422: **kwargs).stdout 0423: 0424: 0425:class CompletedProcess(object): File: '/usr/lib/python3.10/subprocess.py', lineno: 526, function: run 0522: # We don't call process.wait() as .__exit__ does that for us. 0523: raise 0524: retcode = process.poll() 0525: if check and retcode: *** 0526: raise CalledProcessError(retcode, process.args, 0527: output=stdout, stderr=stderr) 0528: return CompletedProcess(process.args, retcode, stdout, stderr) 0529: 0530: Exception: subprocess.CalledProcessError: Command 'tar --exclude=./sysroot-only -cf - -C /home/vvdn/LWT_Build/build/tmp/work/imx8mpevk-poky-linux/linux-imx/6.12.34+git/image -p -S . | tar -xf - -C /home/vvdn/LWT_Build/build/tmp/work/imx8mpevk-poky-linux/linux-imx/6.12.34+git/package' returned non-zero exit status 2. Subprocess output: got *at() syscall for unknown directory, fd 4 unknown base path for fd 4, path lib couldn't allocate absolute path for 'lib'. tar: ./usr/lib: Cannot mkdir: Bad address got *at() syscall for unknown directory, fd 4 unknown base path for fd 4, path lib couldn't allocate absolute path for 'lib'. got *at() syscall for unknown directory, fd 4 unknown base path for fd 4, path lib couldn't allocate absolute path for 'lib'. tar: ./usr/lib: Cannot mkdir: Bad address tar: ./usr/lib/modules: Cannot mkdir: No such file or directory Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) It seems that I don't have the permission to download the attachment. Would you please resend it again? Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) Hi @yipingwang  Awaiting for your prompt support in further debugging. Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) On your ubuntu PC, use the command "sudo apt install tar=1.34+dfsg-1build3" Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) @Sanjiv_MnsDid this resolve the issue ? Re: i.MX8MP_EVK: YOCTO Compilation Error do_package() (Issue: tar & *at()) Hi @abannish  Please try below commands this works for me... wget http://archive.ubuntu.com/ubuntu/pool/main/t/tar/tar_1.34+dfsg-1build3_amd64.deb sudo dpkg -i tar_1.34+dfsg-1build3_amd64.deb  sudo apt-mark hold tar
View full article
Flash configuration confusion RT1176 Octal DDR Hello NXP I got some issues configuring the flash memory for Macronix Octal DDR mode. I am using the PX4 code stack on a custom board based on the NXP FMU-6XRT reference design. I am using the MX25UM51245G instead of the MX25UM51345G, but the part differences are minimal. I am trying to run it in Macronix Octal DDR mode with DQS external sampling at atleast 100MHz. Reference design is running it at 200MHz. The Boot Memory Configuration succesfully tests the memory with the desired configuration even at 166MHz. The configuration I have tried is the following default config. The first one, "g_flash_config" succesfully boots, writes, read, etc, but is not ideal for the software. "g_flash_fast_config" fails. I have tried reducing the frequency to 166MHZ, 133MHz, 50 MHz, and 30MHz without results in the DTR mode in the "fast_config". I have tried using the FCB generated from the Boot Memory Configuration, but there is some struct layout differences which have made it hard to apply to the PX4 code.  I am tried different combinations of csHoldTime, csSetupTime and dataValidTime without results aswell. I tried DQS interal in low freq DTR Octal, but it did not work either. What could I try next? #include /**************************************************************************** * Public Data ****************************************************************************/ locate_data(".boot_hdr.conf") const struct flexspi_nor_config_s g_flash_config = { .memConfig = { #if !defined(CONFIG_BOARD_BOOTLOADER_INVALID_FCB) .tag = FLEXSPI_CFG_BLK_TAG, #else .tag = 0xffffffffL, #endif .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 1, .csSetupTime = 1, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Generic, .waitTimeCfgCommands = 1, .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_1Pad, .serialClkFreq = kFlexSpiSerialClk_100MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 0}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read Dedicated 3Byte Address Read(0x03), 24bit address */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x03, RADDR_SDR, FLEXSPI_1PAD, 0x18), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(READ_SDR, FLEXSPI_1PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0),//0xb3048b20 }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; const struct flexspi_nor_config_s g_flash_fast_config = { .memConfig = { .tag = FLEXSPI_CFG_BLK_TAG, .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 3, .csSetupTime = 3, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Spi2Xpi, .waitTimeCfgCommands = 1, .deviceModeSeq = { .seqNum = 1, .seqId = 6, /* See Lookup table for more details */ .reserved = 0, }, .deviceModeArg = 2, /* Enable OPI DDR mode */ .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable) | (1u << kFlexSpiMiscOffset_DdrModeEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_8Pads, .serialClkFreq = kFlexSpiSerialClk_133MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 10}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read */// EEH+11H+32bit addr+20dummy cycles+ 4Bytes read data /* Macronix manual says 20 dummy cycles @ 200Mhz, FlexSPI peripheral Operand value needs to be 2N in DDR mode hence 0x28 */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0xEE, CMD_DDR, FLEXSPI_8PAD, 0x11), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x28),//0xb3288b20, [0 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), //0xa704, /* Read status */ [4 * 2 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x05, CMD_DDR, FLEXSPI_8PAD, 0xfa), [4 * 2 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x04), [4 * 2 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), /* Write enable SPI *///06h [4 * 3 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP_EXE, FLEXSPI_1PAD, 0x00),//0x00000406, /* Write enable OPI SPI *///06h [4 * 4 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x06, CMD_DDR, FLEXSPI_8PAD, 0xF9), /* Erase sector */ [4 * 5 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x21, CMD_DDR, FLEXSPI_8PAD, 0xDE), [4 * 5 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, STOP_EXE, FLEXSPI_1PAD, 0x00), /*Write Configuration Register 2 =01, Enable OPI DDR mode*/ //72H +32bit address + CR20x00000000 = 0x01 [4 * 6 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x72, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000472, [4 * 6 + 1] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000400, [4 * 6 + 2] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, WRITE_SDR, FLEXSPI_1PAD, 0x01),//0x20010400, /*Page program*/ [4 * 9 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x12, CMD_DDR, FLEXSPI_8PAD, 0xED),//0x87ed8712, [4 * 9 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, WRITE_DDR, FLEXSPI_8PAD, 0x04),//0xa3048b20, }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; Re: Flash configuration confusion RT1176 Octal DDR Hello @SimonHugr, If you plan to use DDR mode, please keep in mind that the byte swapping configuration must also be considered. this post provides useful information about why important take in mind the byte swapping on the MX25UM51245GXDI00 when you are using DDR mode.  I highly recommend use the Boot Memory Configuration to generate the FCB, the Secure provisioning tool v26.6 offers a template of the MX25UM51245G, which can serve as a good starting point for your configuration. Also, as you may know, this tool allows you to test your configurations. Additionally, I recommend see this community post, particularly the steps starting from point 15. That section provides a more detailed explanation of how the Secure Provisioning Tool generates the boot memory configuration and may help clarify the parameters and output produced by the tool. Finally, you can use the flexspi_nor_polling_transfer_cm7 example to validate the generated FCB and verify that read and write operations are functioning correctly before proceeding with the boot configuration. BR Habib Re: Flash configuration confusion RT1176 Octal DDR No results yet sadly, I still think it has something to do with some data order swap is done and I am missing some configuration byte somewhere... Re: Flash configuration confusion RT1176 Octal DDR Thank you Masmiseim Indeed, I noticed that the data should be swapped for example. I will go through my LUT once more. Re: Flash configuration confusion RT1176 Octal DDR Refering to this thread: https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Internal-Boot-from-Flash-memory-not-starting-on-imxRT1176-custom/m-p/1830699 I should swap the data order by editing the misc option and according to zephyr RTOS https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L340-L355 the dataswap byte goes in, but I think I am missing something. .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .isDataOrderSwapped = true .serialNorType = 2, .reserve2[0] = 0x7008200, Re: Flash configuration confusion RT1176 Octal DDR Hey @SimonHugr, One thing I would verify first is the actual difference between the MX25UM51245G and MX25UM51345G. Although the part numbers are very similar, they are not identical devices. According to the Macronix datasheets, the MX25UM51345G explicitly supports DOPI (Double Transfer Rate OPI) Byte Mode data sequence, while the MX25UM51245G belongs to a different product variant. This can affect the command format, byte ordering and LUT configuration used by the FlexSPI controller. You can also compare my configuration which works with MX25UM513 and MX25UW6345G: https://github.com/Masmiseim36/Coremark_iMXRT/blob/master/XiP/flexspi_flash_OSPI_Macronix.c Regars Re: Flash configuration confusion RT1176 Octal DDR Hello Habib For our firmware I am not able to use the secure provisioning tool to generate the FCB, and instead the FCB needs to be loaded on boot in firmware and therefor I need to create the mem_config and flash_config struct and configure it myself. I found the zephyr project referenced a isDataOrderSwapped byte in the flash_nor_config https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L347-L348 and Claude reference a padSettingOverride bit on bit 5 and a dataSwap bit on bit 7 in the controllerMiscOption, but I am not sure if the LLM is heavily hallucinating this information. When generating the FCB using the Secure Provisioning tool and converting it into a C-struct using this tool https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/i-MX-RT-FLEXSPI-booting-guide/ta-p/1669262 I do not get bit 5 or 7 set so I think the LLM is wrong, but the isDataSwapped is set and is referenced as reserved0[0] in the FCB normally. I can not find a template for the MX25UM51245G in the secure provisioning tool, only the MX25U51245G (which is a Quad flash), the MX25UM51345G and the MX25UMxxx45G. But any config Octal DDR config that I have tried have not worked to boot. Interestingly often the MCU goes automatically into ISP mode after certain configuration despite BT_FUSE_SEL = 1 and having pins BOOTMODE0/1 = 0. This has not been consistent and I am not sure what configuration causes this. Does the MCU go into ISP mode after failing to read the flash or something? Thank you BR Re: Flash configuration confusion RT1176 Octal DDR Hello @SimonHugr, I apologies there is not a template to MX25UM51245G, only are available the MX25U51245G and MX25UM51345G. Based on your description, it seems that communication with the flash device is working correctly using your current Boot Memory Configuration settings. When you click "Convert to Complete FCB", the tool programs the configuration into the flash and then reads it back using the parameters you specified, as described below: If any of the selected settings are not supported by the flash device, the tool should report an error similar to the following: To further verify that the LUT generated using the FCB converter from the community post is functioning correctly, could you please test it with the flexspi_nor_polling_transfer_cm7 SDK example while running the application from internal RAM? Please let me know if you have questions about the example. In addition, could you provide me a few more details about the application you are trying to boot? -Is an SDK example or if your own application? -Which IDE you are using? -Is your application performing XIP or NON-XIP? -Are you accessing the flash at any point other than during the boot process? Regarding to entering in ISP mode, could you please make sure that the boot pins on your custom board followed the recommendations mentioned in the chapter 5 "Boot, reset, and miscellaneous" of the Hardware Development Guide for the MIMXRT1160/1170? This to avoid any hardware issue regarding the boot pins.   Answering your question, you can enter in ISP mode if is not available a valid image, as shown the figure 10-1 "boot flow" of the RM: BR Habib  Re: Flash configuration confusion RT1176 Octal DDR Hello Habib. I got octal SPI STR mode working at 200MHz now atleast. The problem was some magic non-described "reserve2" bytes that was being set. I also opted to set a config cmd sequence ontop of the device mode sequence setting an additional byte. Setting the byte swap did not accomplish anything, but I am happy with the speed I am able to achieve at 200MHz STR Octal Best regards
View full article