Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
割り込みハンドラからI/Oを実行する この質問に関連するパラメータは次のとおりです。 1. IDE: S32 DS for ARM v 2.2 (これは古いですが、問題の製品自体も古いので、既存のコードのサポートが必要です) 2. チップ: S32K148 3. OS: Windows 11 4. システムOS: ベアメタル ISR であらゆる種類の SPI マスター転送を実行しようとするとハングし、通常、中断された API はブロッキング I/O (I2C または SPI) 呼び出しです。 ブロッキング呼び出し (LPSPI_DRV_MasterTransferBlocking() へ) では、sysTick 割り込みが発生していないように見えるため呼び出しがハングし、MCU は経過時間を把握できません。 非ブロッキング呼び出し (LPSPI_DRV_MasterTransfer() の後に LPSPI_DRV_MasterGetTransferStatus(SPI1, &byte_remaining) が続く) では、byte_remaining は元の値のままになります。非同期転送のために LPSPI_DRV_MasterTransfer() を呼び出す前に LPSPI_DRV_MasterAbortTransfer(SPI1) への呼び出しを追加しようとしましたが、結果は同じです。 少し関連する質問ですが、SysTick_Handler() をトリガーするものは何ですか?私の直感では、1 ミリ秒ごとにティック カウントを増やしながら常に実行されているはずですが、その本体にブレーク ポイントを設定すると、一部の時間しかヒットしないようです。不思議なことに、ブロッキング SPI 転送が成功した場合でもヒットしないことがあります。これは、システム タイマーが以前は解除されていた場合は、システム タイマーが起動される必要があるためです。 もう 1 つの関連する質問は、SPI の S32 クックブックのサンプル コードでは、SDKs が提供する API が使用されていないことです。サンプルでは、すべてのレジスタ ビットを直接操作します。車輪の再発明ではなく、少なくとも NXP API を呼び出すという点で、本番環境に適したコードに近い例はありますか? Re: Doing I/O from an interrupt handler こんにちは@PetrS どうもありがとうございます。割り込み優先度によって、問題は確かに解決しました。しかし、私は疑問を持っています。 ISR 内でブロックするのは良いアイデアではないことに同意しますが、シングル スレッド アプリケーションでは代替手段は何でしょうか?SPI 転送が完了するまで、アプリケーション コンテキストでスピンできます。これにより、他の I/O 割り込みが発生するようになります (私の理解では、負の優先度の割り込みはいずれにせよ発生します。正の優先度の ISR に入っても、それらは無効になりません)。しかし、私の状況では、重複する I/O を実行することは不可能であり、望ましくもありません。 1.S32K148 はすべてのバスのバス・マスタであるため、これは不可能です。SO、ISR で SPI 転送を実行している場合、別の I/O バスを駆動することはできず、したがって割り込みをトリガーすることはできません。 2. ISR 間でグローバルが共有される可能性があるため、現在の I/O が完了するまで新しい I/O を開始したくない、SO これは望ましくありません。 シングル Thread のベア メタル アプリケーションの場合、この状況に対処するにはどのような方法をお勧めしますか? Re: Doing I/O from an interrupt handler こんにちは、 OK、では単純に優先順位を中断すると、この動作が発生する可能性があります。両方の割り込みの優先度が同じ場合、GPIO ISR がアクティブな間は LPSPI ISR を実行できないため、ブロッキング API がハングします。ブロッキング呼び出しは、ISR が転送を完了してセマフォをポストするまで待機しますが、その ISR は GPIO ISR が終了するまで CPU 時間を取得しません。SDKs のドライバは実際には LPSPI 割り込みで転送を終了し、その後でセマフォをポストしてブロッキング呼び出しを解放します。SO、優先順位が同じ ISR はこのように転送をデッドロックします。 非ブロッキング API の動作は同じです。同じ優先度の GPIO ISR から呼び出された場合、LPSPI ISR はそれをプリエンプトすることができないSO、ドライバ ステート マシンは LPSPI IRQ によって処理されないSO、byte_remaining は変更されません。LPSPI の優先度を高く(数値的に低い値に)した後にのみ、LPSPI 割り込みが直ちに発生し、転送が完了し、ブロッキング API と非ブロッキング API の両方が期待どおりに動作できるようになります。試す /* 数字が小さいほど、Cortex-M での優先度が高くなります */ INT_SYS_SetPriority ( SysTick_IRQn 、 0 ) ;     // ティックタイムアウトに依存している場合 INT_SYS_SetPriority ( LPSPI1_IRQn 、 1 ) ;      // GPIO より高くなければなりません INT_SYS_SetPriority ( PORTC_IRQn 、 2 ) ;       // ボタンの PORTx IRQ   注: 優先度の修正に関係なく、ISR 内でブロッキング SPI API を使用しないことをお勧めします。同様に、ISR 内で非ブロッキング転送が完了するまで待機しないこともお勧めします。S32K LPSPI ドライバーは割り込みハンドラー内で転送を進行しますが、ISR が長いと他の割り込みの実行が妨げられる可能性があります。   BR、ペトル Re: Doing I/O from an interrupt handler こんにちは@PetrS ご返答ありがとうございます。しかし、よく理解できていないようで申し訳ありません。 あなたが言っているのは、ISR 内でブロッキング I/O を実行するのは悪い考えだということのようですが、私も同感です。しかし、なぜそれが機能しないのでしょうか?ティック カウンタは、優先度 -1 の割り込みハンドラ内で増加します。これは、どの I/O 割り込み優先度よりも高い優先度です。また、コード内の割り込みマスクは変更していませんが、ドライバが内部的にそれを変更するのでしょうか? 私たちのアプリケーションはベアメタル (シングル スレッド) なので、ISR コンテキストとアプリケーション コンテキストで待機することはほぼ同じです。唯一の違いは、ISR コンテキストでは、他の I/O 割り込みがブロックされることです。しかし、これはまさに私が望んでいるものなのです。ただし、優先度が高いため、タイマー ISR をブロックしてはなりません。ISR の最初の行に ENABLE_INTERRPUTS() の呼び出しを追加してみましたが、違いはありませんでした。 非ブロッキング バージョンも試してみましたが、これも別の方法でハングします。非ブロッキング呼び出し(LPSPI_DRV_MasterTransfer() の後に LPSPI_DRV_MasterGetTransferStatus(SPI1, &byte_remaining) )では、byte_remaining は元の値のままです。非同期転送のために LPSPI_DRV_MasterTransfer() を呼び出す前に LPSPI_DRV_MasterAbortTransfer(SPI1) の呼び出しを追加しようとしましたが、結果は同じでした。上記のAPI呼び出しはどちらもISRから実行されます。ユースケースとしては、ユーザーがボタンを押すとGPIO割り込みが発生し、SPI経由で値を読み取るというものです。 もう一度指摘しておく価値のあることは、ISR が中断している API はブロッキング SPI 転送であるということです。新しい転送を開始する前に ISR に LPSPI_DRV_MasterAbortTransfer() の呼び出しを追加しても、効果はありませんでした。 この問題に関しては期限が非常に迫っているため、どんな助けでも大歓迎です。 Re: Doing I/O from an interrupt handler こんにちは、 ISR からの I/O をブロックすることは、S32K1 SDK では機能しません。LPSPI_DRV_MasterTransferBlocking() は OSIF セマフォを待機します。ISR コンテキストではブロックする場所がなく、進めるティック/タイム ベースもないため、ハングします。非ブロッキング API (LPSPI_DRV_MasterTransfer) を使用して、LPSPI ISR/コールバックで転送を完了し、タスク/メイン ループを信号します。また、SysTick はタイマー ラップ時に起動しますが、そのハンドラーはマスクされておらず、十分な NVIC 優先度がある場合にのみ実行されます。そのため、PRIMASK が設定されている場合、または優先度の高い ISR にいる場合は延期されます。 クックブック プロジェクトは意図的に軽量化されており、高レベルのドライバの抽象化なしでペリフェラルの使用を直接示します。これは、実稼働での使用ではなく、学習の開始点として意図されています。NXP ドライバ スタイルの例が必要な場合は、クックブックではなく SDK、または RTD ドライバ/サンプル プロジェクトを参照してください。   BR、ペトル Re: Doing I/O from an interrupt handler こんにちは、 今では「動作する」ようになりましたが、ISR 内で SPI 転送を行うことは依然として推奨されません。 後で優先順位を変更したり、別のペリフェラルを追加したりする場合は、診断したデッドロック状態を簡単に再現できます。最も安全なデザインは、ISR を常に短く保ち、実際の作業をメイン ループに延期することです。 ISR はトリガーとしてのみ使用し、SPI 転送を main() で同期的に実行するか、ISR で開始されて LPSPI ISR によって完了する非ブロッキング転送として実行し、main は完了フラグを待機します。 BR、ペトル
View full article
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
View full article
HSE data reflected in memory only after multiple soft resets Steps followed: 1. Provide the HSE ELF file (containing HSE data bytes programmed at HSE memory locations) to Cyclone image creator 2. Create a Cyclone .sap file to enable and program HSE. 3. Flash the .sap file on the S32K312 board using the Cyclone debugger via JTAG. 4. Perform a power cycle. 5. Load the workspace and verify HSE data in memory. 6. Perform multiple soft resets via the debugger. Observed behavior: • After the initial power cycle, the HSE data is not immediately reflected in memory. • The HSE data becomes visible in memory only after multiple soft resets. (Issue) • Also tried allowing with delay, still the same behavior Question: • Why are multiple soft resets required for the HSE data to be reflected in memory? • Is there a recommended workaround (e.g.,reset sequence, or configuration change)? Re: HSE data reflected in memory only after multiple soft resets Hi @abdul_rahiman_csg  First of all, could you please explain what do you mean by "Provide the HSE ELF file (containing HSE data bytes programmed at HSE memory locations)"?  When HSE firmware is installed, only HSE has exclusive access rights to HSE secure memory (HSE firmware, HSE data). Secure memory is removed from memory map and user can't access it at all.  Regards, Lukas Re: HSE data reflected in memory only after multiple soft resets This ELF contains HSE data programmed in the address ranges 0x004D2000–0x004D2060 and 0x1B000000–0x1B000360 Re: HSE data reflected in memory only after multiple soft resets Hi @abdul_rahiman_csg  This does not make sense from microcontroller point of view. It seems to be related to tools. Could you try to discuss this with Pemicro directly? https://www.pemicro.com/support/index.cfm Regards, Lukas
View full article
高级声明式用户界面框架 是否有适用于 i.MX RT 跨界 MCU 的高级声明式用户界面框架?我希望能用 Swift 或 JavaScript 等高级语言编写代码,然后使用类似 SwiftUI 或 React 的东西创建用户界面。 Re: High level declarative UI framework 你好@MatthewRuzzi、 感谢您关注恩智浦 MIMXRT 系列! 恩智浦正式提供 GuiGuider 工具,以 LVGL 作为底层框架,帮助客户快速开发用户界面软件。此外,SDK 还包括 emWin 和 VGLite 的示例项目。虽然目前官方并不支持高级语言的实现,但我建议探索以下方法: 1.https://doc.qt.io/QtForMCUs/qtul-zephyr-mimx1060-evk.html https://www.embeddedartists.com/wp-content/uploads/2023/06/QtMCUs_ProgramDevelopment.pdf 2https://www.nxp.com/design/design-center/training/TIP-CREATE-USER-INTERFACE-QT 3.https://docs.microej.com/en/latest/GettingStarted/gettingStartedIMXRT1170.html 4.https://github.com/lvgl/lv_micropython 5.https://www.swift.org/blog/embedded-swift-examples/ 我希望这些资源能对您的发展有所启发。 致以最诚挚的问候, Gavin Re: High level declarative UI framework 目前是否有任何项目正在开展这方面的工作?我非常希望能够使用 Swift 或 JavaScript 这样的语言。有什么办法能让我今后更有可能这样做吗?我应该在哪些地方提交或投票表决功能请求,或者在哪些地方发布此信息?
View full article
MCXN947 I3C IBI 有效载荷问题 您好, 我遇到了一些关于 I3C 接收 IBI 有效载荷的问题。希望你们能提供帮助。欣赏。 当我使用 NXP974 作为 I3C 主站时,我们能收到多少个包含 MDB 的有效载荷数据?在我的测试中,似乎最大值为8字节。(一个 MDB 和七个有效载荷数据)。但是从规范来看,它表明支持 9 字节的支持包括 MDB。您能帮忙确认一下吗? 规格:控制器在 9 字节(包括必填数据字节)后自动停止 IBI 数据。 我遇到的另一个问题是,当我将有效载荷设置为8字节时,我确实收到了来自fifo的8字节,但是即使我们没有从i3c目标发送新的IBI,它也会再次进入IBI并导致系统卡住。当有效载荷大小于 8 字节时,它运行良好。 我检查了 SDATACTRL 的 RX FIFO 计数,是 8。我认为这是正确的。而 irq 的状态似乎是正确的,与正常情况下的状态(0x2e00)相同。所以我想这也是正确的。 然后,我尝试捕获洛杉矶的波形。我发现正确和不正确的情况有些不同。 在正常情况下(有效载荷< 7),最后一个 T 位的整个时钟周期为低电平,然后产生一个停止信号。 在错误的情况下,SDA将在T位时钟的上升沿处于高位。然后,重新发送时钟(开漏)。 你知道恩智浦发生了什么事吗?为什么有效载荷大小不同时会有不同的行为? MCX N Re: MCXN947 I3C IBI payload issue 嗨,杰姬! 我们过去也遇到过这个问题,并向恩智浦报告过。我们得到确认,这是恩智浦 I3C IP 模块中的一个错误。IBI 有效负载长度不能大于 8 字节,此外,I3C 目标应使用 T-Bit 来表示最后一个字节中的数据结束(T-Bit LOW)。I3C IP 块作为控制器时,如果 T 位为高电平,则不能发出 STOP 条件。 Re: MCXN947 I3C IBI payload issue 你好@JackieZhu 是的,你说得对。I3C 目标支持在强制数据字节之后最多七字节的扩展 IBI 数据。 因此,包括 MDB,最大值为 8 字节。(一个 MDB 和七个有效载荷数据)。 BR 哈利
View full article
S32N55: sequence ID in gPTP bridge device when acting as a GM Hi team, I was testing the bridge device behavior in the gPTP example. I use the GrayVIP_1_0_22_0. According to the User Manual, if the bridge does not receive any Sync messages after StartupTimeoutS, it should start operating as a GM. However, I observed that in this situation, the Sequence ID in both Sync and Sync Follow-Up frames remains at 1024 and does not increase. After checking the related code, I found that when the bridge transitions to GM mode, the Sequence ID used for generating Sync messages is taken from the prSyncMachines[prDomain->u8SlaveMachineId].u16SequenceId of the slave port. If the slave port has not received any Sync messages, this value is never updated, which causes the Sequence ID in the Sync messages sent by the master port to remain unchanged. This behavior suggests that the bridge cannot function properly as a GM under this mechanism. Could you please help explain why the bridge is designed to behave this way? BR, Bridget GPTP_STACK Re: S32N55: sequence ID in gPTP bridge device when acting as a GM Hello @Bridget,  The team has picked up a case and will provide an answer as soon as possible  Best regards, Radu Re: S32N55: sequence ID in gPTP bridge device when acting as a GM Hi @Bridget, We are working to reproduce the issue and will discuss further steps in the team. I will get back to you. Thanks, Lukas Re: S32N55: sequence ID in gPTP bridge device when acting as a GM @Bridget, As it turns out, this behavior of the gPTP Bridge is intended, and in line with the 802.1as standard. The Bridge is supposed to relay Sequence ID received on master port. If the Grand Master is lost, the Sequence ID indeed stops being updated - this is one of the ways that downstream devices are able to tell when GM is lost. For a Bridge that never had a GM in the first place, the Sequence ID is random per standard. Our interpretation of random is that nothing about the Sequence ID is guaranteed, or should be assumed. A hardcoded 1024 is considered compliant to that (could be any other number). Is the Sequence ID causing issues in your application? As you have surely observed, Endpoints are perfectly capable of synchronizing to the Bridge, regardless of Sequence ID. Apologies for taking so long. Please do let me know if anything is unclear. BR, Lukas
View full article
パスワード保護(AUTH0/アクセス)を有効にした後、NTAG213 の書き込み保護を解除できません NXPチームの皆様、こんにちは。 私は、 PN7160 NFC コントローラとNXP Linux nfcDemoAppを使用してNTAG213タグを操作しています。 私が成功したこと: nfcDemoApp (main.c)を変更し、次のように設定して NTAG213 の書き込み専用パスワード保護を有効にしました。 障害者 パック 認証0 アクセス (PROT = 0) 書き込み保護は正常に機能します: モバイルNFCアプリは書き込みができなくなりました アプリケーションからPWD_AUTHを送信した後にのみ書き込みが可能 AUTH0を0xFFにリセットする アクセスをクリア 設定ページを書き直す また、 NXP NFC TagInfo / NFC Toolsアプリを使用して別の NTAG213 の書き込み保護を有効にしましたが、これも期待どおりに機能しました。 私が直面している問題: 現在、どちらのCASEも書き込み保護を解除できません。 独自のコードを使用する(nfcDemoApp) Using NXP NFCツール/タグライターモバイルアプリの使用 正しいパスワード (PWD_AUTH) で認証した後でも、次の試行は失敗します。 私の理解: NTAG213 のデータシートから、次のことを理解しました。 PWD_AUTHはRFセッション中に保護されたページへの書き込みを許可する必要がある 認証後、AUTH0とアクセスを変更できるようになる。 NTAG213には、パスワード保護のための永続的なロックビットはありません(ロックバイトとは異なります)。 しかし、実際には、タグを保護されていない状態に戻すことはできません。 質問: NTAG213 のパスワードベースの書き込み保護を有効にした後で、それを削除または無効にすることは正式にサポートされていますか? PWD_AUTH が成功した後、AUTH0 ページとアクセス ページは書き込み可能になりますか、それとも一度設定されると永続的に保護されますか? NTAG213 を書き込み可能 (保護されていない) 状態に戻すための推奨シーケンスはありますか? NXP NFC ツール / タグライターは NTAG213 のパスワード保護を削除できるか、またはカスタムの raw コマンド処理が必要ですか? 構成ページを変更するには、認証後に完全なリセット (RF セッションのリセット/電源サイクル) が必要ですか? NXP チームからのガイダンスや説明は非常に役立ちます。 再開まで今しばらくお待ちください。 よろしくお願いします、 ニランジャン Re: Unable to remove write protection on NTAG213 after enabling password protection (AUTH0/ACCESS) 私はRFIDDiscoverを使用します。設定ページで設定を変更して保護を解除することができます。
View full article
i.MX95 安卓 15_2.0.0 电路板支持包 — 480p 视频显示蓝色水平线(720p/1080p OK) 你好 、 我们在自定义板上使用搭载安卓 15_2.0.0 电路板支持包的 i.MX95。 我们只有在播放分辨率为 480p 的视频时才会遇到这个问题。 其他分辨率(如720p和1080p)也能正常播放,没有任何伪影。 在播放 480p 视频时,我们观察到蓝色水平线横跨整个显示区域。 此问题出现在所有显示界面上: *LVDS 面板 *HDMI *MIPI-DSI 显示器 因此,问题似乎与显示屏无关。 其他观察结果 ============================ 同样 的硬件(LVDS/HDMI/MIPI)在带有 480p 视频的 Linux 电路板支持包 中完美运行。 在 Android Auto 电路板支持包 15_1.3.0 中不会出现此问题。 → 在 Auto 电路板支持包 中,480p 的播放效果是干净的。 只有安卓 15_2.0.0 标准电路板支持包才显示这个 480p 的伪影。 Auto 电路板支持包是否有任何必须应用于标准电路板支持包的补丁? 随附参考照片供您审阅。 任何指导或补丁都将非常有用。 谢谢, Maruti Naik Re: i.MX95 Android 15_2.0.0 BSP – 480p Video Shows Blue Horizontal Lines (720p/1080p OK) 您能在 nxp imx95 板上重现这个问题吗? Re: i.MX95 Android 15_2.0.0 BSP – 480p Video Shows Blue Horizontal Lines (720p/1080p OK) 目前,我们没有与i.MX95 19×19 EVK板兼容的显示器。请尝试在您这边重现这个问题,并分享观察结果。 Re: i.MX95 Android 15_2.0.0 BSP – 480p Video Shows Blue Horizontal Lines (720p/1080p OK) 我用下面的演示图像测试了 480P 视频、 15.0.0_2.0.0_demo_95 这个玩家是仙人掌玩家,我没发现任何问题,我也测试了 1080p,所以我请你在恩智浦板上重现这个 Re: i.MX95 Android 15_2.0.0 BSP – 480p Video Shows Blue Horizontal Lines (720p/1080p OK) 感谢您的更新和在演示图像上的测试。 目前,由于我们这端没有兼容的显示器,我们无法在19×19 EVK板上测试显示。不过,我们观察到,在 "开发者选项 "中将显示布局更改为 "瀑布式剪切 "后,480p 回放问题消失了,而使用默认布局时,问题始终存在。 您是否了解默认布局配置可能出了什么问题,特别是影响 480p 视频播放的问题? Re: i.MX95 Android 15_2.0.0 BSP – 480p Video Shows Blue Horizontal Lines (720p/1080p OK) 如何在 "开发者选项 "中将显示布局更改为瀑布式剪切?
View full article
i.MXRT1021 HAB 我正在努力添加 HAB,首先使用板和示例:blinky、uart 和 bee。我将图像与 BEE 更改一起构建,最后删除了禁用 BEE 的行。我还有一张 Blinky + uart 组合的图片,但没有附上。 使用 MCUXpresso 安全配置工具版本 25.09,我在一个 EVK 上放了熔丝以匹配为 XIP BEE 用户密钥生成的随机密钥。在此过程中,我也使用 2048 作为密钥大小来生成验证密钥。 加载图像并熔丝以匹配所需设置不会使 LED 闪烁,并且在 Bee_init 上似乎停止。我错过了哪些步骤?我尝试在串行启动加载程序和选择的内部启动模式下运行代码,但两者都不起作用。 我附上了基本设置的图片,如果有助于调试,我可以把生成和使用的密钥和验证密钥发给你。我不确定你是否想在同一篇论坛帖子中附上密钥来构建图像,但可以提供使用的密钥,因为它显然只是用来获取目标设备的进程。 另一方面,最终图像将具有所需的 dcd 设置,但我的假设是,只要密钥、身份验证密钥和网络安全设置正确,向该工具生成的图像中添加 dcd 数据就不会产生实际效果。 i.MX RT102x Re: i.MXRT1021 HAB 你好,@joshgentrycargt、 如果启用了 XIP 加密模式,ROM 启动时 BEE 已初始化,为什么还要在应用代码中再次调用BEE_Init?如果要这样做,请先调用 BEE_Deinit()。 祝您愉快, Kan ------------------------------------------------------------------------------- 注: - 如果本帖回答了您的问题,请点击"标记正确" 按钮。谢谢! - 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略 如果您以后有相关问题,请打开一个新主题并参考已关闭的主题。 ------------------------------------------------------------------------------- Re: i.MXRT1021 HAB uart 连接导致它尝试从该选项启动。这基本上阻止了它的运行。我一直追溯到最初的闪烁,并以此为例。BEE 的例子让我觉得完全没有必要。我能够使用我设置的熔丝/网络安全设置对单独的板进行编程,而且它起作用了(dcd 也能正常工作)。
View full article
ヘルプが必要です: RT1189 上の FlexSPI2 QSPI フラッシュからの起動 カスタム ハードウェア上でユーザー アプリケーションを起動しようとしています。このカスタム ハードウェアには、ポート A のプライマリ ピン グループを使用してコネクテッドされた FlexSPI2 QSPI フラッシュのみがあります。フラッシュ デバイスは、Micron MT25QU256ABA です。RT1189 (RT1189CVM8C) に搭載されたブート ROM がメモリを正しく構成せず、ブートに失敗します。ただし、NXP セキュア プロビジョニング ツールは、これに正常に読み取りと書き込みを行うことがCANできます。 フラッシュ構成ブロック (FCB) は、セキュア プロビジョニング ツールを使用して作成されました。 XIP ブート ヘッダーはイメージのコンパイル自体で無効化されました。代わりに、セキュア プロビジョニング ツールは、上記のスクリーンショットに示されている設定とまったく同じ設定を使用して、簡略化された UI から生成された FCB を使用するように構成されました。上記のスクリーンショットには表示されていませんが、「テスト接続」は成功しています。 さらに、セキュア プロビジョニング ツール (以下、「SPT」と呼びます) から外部メモリを構成するように要求された場合、FlexSPI2 メモリはプロセッサとツールによって正常に読み取ることができます。これを以下に図示します。 ユーザーがフラッシュ プログラマ ツールを開き、ポップアップで「はい」をクリックするか、「外部メモリの構成」ボタンをクリックすると、SPT は上記のフラッシュ構成ブロック設定を使用して、FlexSPI2 フラッシュ メモリをプログラミング用に初期化します。 以下のスクリーンショットは、完全なアプリケーション イメージ (FCB はオフセット 0x400、ユーザー アプリケーションはオフセット 0x1000) をフラッシュした後にキャプチャされたものです。 これにより、フラッシュ構成ブロックが正しいと考えられます。 RT1180 で次のヒューズ ビットが焼損しました。その他のヒューズビットはすべてデフォルトです。 BOOT_CFG0[6] (BT_FUSE_SEL) -> 1b、ヒューズからのブートを有効にする BOOT_CFG2[7] (FLEXSPI_INSTANCE) -> 1b、FlexSPI2を選択する(デフォルトはFlexSPI1) BOOT_MODE ピンを 000b (内部ヒューズからのブート) に設定すると、RT1189 は何もアクティビティを行いません。再度通信できるようにするには、「無限ループ」モードで起動し、その後シリアル ダウンローダー モードに戻す必要がありました。 BOOT_MODE ピンを 100b (「FlexSPI からのブート」) に設定すると、RT1189 は「スタック」したままになりますが、JLink デバッグ プローブによって停止できます。 BOOT_MODE 100b を使用して FlexSPI から起動しようとした後に停止すると、FlexSPI2 のメモリ領域を調べるとすべてゼロが表示されます。 ここで興味深いのは、「すべてゼロ」が RT1189 の FlexSPI2 メモリ領域のデフォルト状態と一致しないことです。次のスクリーンショットは、外部メモリを構成せずにシリアル ダウンローダー モードで起動した後にキャプチャされたものです。 最後にもう 1 つ: ユーザー アプリケーションの MCUXpresso サンプルのリンカー スクリプトが、FlexSPI2 から起動するように変更されました。 注意: スクリーンショットのキャプションには「0x14000000」と表示されていますが、コードで実際に使用されている値は「0x04000000」です。これはタイプミスです これは SPT に反映されています。 これらすべてを念頭に置いて、私の現在の理解は次のとおりです。 FCB は正しくなければなりません。そうでないと、SPT は FlexSPI2 バンク A に接続された外部フラッシュと対話できません。 ROM 自体は、起動時に、SPT とは異なる何らかの方法でこの外部メモリを初期化しようとしているはずです。RT1189 ブート ROM のソース コードがなければ、リバース エンジニアリングを行わずにデバッグを続けることはできませんが、NXP のお客様として、リバース エンジニアリングを行うつもりはありません。 私の質問: この動作を引き起こす設定の何が問題なのでしょうか? フラッシュの初期化に失敗する理由を理解するためにブート ROM をデバッグする方法はありますか? ありがとう!! Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 数週間の努力の末、XIP ではなく ITCM (0xFFE00000) にリンクすることでプロセッサを起動することができました。ただし、このThreadはまだ関連性があります - FlexSPI2 上の XIP が正しく動作しないのはなぜですか? Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 @Sam_Gao 、 ご返信ありがとうございます。 元の投稿で述べたように: ブートインスタンスの選択は、コメントとAN14589で指定されているものとまったく同じです。BOOT_CFG2[7]はFlexSPI2を選択するために書き込まれます。 アプリケーション コードは、指定どおりに FlexSPI2 メモリ マップ領域 (0x04000000) にリンクされます (m_start_flash が 0x04000000 に変更されます)。返信ではこれを「0x40000000」としていますが、これは上記のアプリケーション ノートや RT1189 のリファレンス マニュアルに記載されているとおり正しくありません。 FCB は予想されるオフセットに存在します。フラッシュ チップを動作中の MIMXRT1180EVK のものと交換してみましたが、それでもまだ動作しません。 ロジック アナライザを使用して、フラッシュ構成ブロックがブート ROM によって読み取られている可能性が高いことを判断できました。クロック速度はすぐに 30 MHz から 125 MHz に変化し、読み取りデータは SPI データ ラインを介して送信されます。 ブート ROM またはブート シーケンスをさらにデバッグできるメカニズムはありますか? Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 こんにちは、 RT1189 のようなデバイス上の FlexSPI2 QSPI フラッシュからの起動に失敗する原因は、通常、いくつかの一般的な構成領域にあるようです。ここでは、潜在的な問題の詳細と、ブート ROM プロセスをデバッグして根本原因を特定する方法について説明します。 AN14589 を参照: https://www.nxp.com/docs/en/application-note/AN14589.pdf 1. ブートインスタンスの選択を確認する: ブートROMに、デフォルトのFlexSPI1ではなくFlexSPI2を使用するように明示的に指示する必要があります。これは BOOT_CFG2[7] によって制御されます。 ヒューズまたはピン。BOOT_CFG2 BOOT_CFG2[7] が 1 に設定されている FlexSPI2 を選択する ブートインスタンスとして 。プライマリブートモードピン( BOOT_MODE[2:0] )シリアルNORフラッシュからブートするには、正しく設定する必要があります(例: '100') 2. アプリケーション リンカー アドレス: FlexSPI2 のブート可能なイメージをビルディングする場合、アプリケーション コードを FlexSPI2 メモリ マップから実行するようにリンクする必要があります。FlexSPI2 の開始アドレスは 0x40000000 です。プロジェクトのリンカー ファイルを変更して、フラッシュ開始アドレス ( m_flash_start ) を 0x40000000 に設定する必要があります (参照: AN14589 の 7 ページ)。 3. FCB: ブートROMには、外部QSPIデバイスを正しく初期化するために、フラッシュメモリの先頭(通常はオフセット 0x400 )に有効な512バイトの構成ブロックが必要です。このブロックが欠落しているか、破損しているか、使用している特定のフラッシュ チップと一致していない場合、ブート ROM はフラッシュとの通信に失敗します。詳細については、 https://docs.mcuxpresso.nxp.com/secure/latest/06_processor_specific_workflow.html#preparing-source-image-for-rt118x-devicesをご覧ください。 Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 問題はないようです。 ブート ROM とブート シーケンスの詳細については、 https://www.nxp.com/docs/en/application-note/AN14589.pdfを参照してください。 デバイスが「スタック」している場合は、リセットしないでください。JLink/デバッガーを使用して実行中のカーネルに直接アタッチし、次のレジスタの状態を確認します。例: プログラムカウンタ(PC): PC が 0x2xxxxxxx (ROM 領域) にある場合、ROM はまだ実行中であるか、無限ループに陥っています (たとえば、ペリフェラルの応答を待機している)。 PC が 0x002xxxxx (OCRAM) または別の RAM 領域を指している場合、ROM はジャンプを試みたものの、アプリケーションがクラッシュした可能性があります。 PC が 0x4000xxxx (FlexSPI2 AMBA 領域) を指していて、すべてゼロまたはバス エラーとして読み取られた場合、ジャンプは発生しましたが、XIP アクセスは失敗しました。
View full article
[乱用] 投稿者: @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 件の返信があります。
View full article
S32K358 HSE Random Number Generation based on AUTOSAR drivers Dear support, Customer Aptiv is working with S32K358 RTD version: Crypto_43_HSE_TS_T40D34M60I0R0 HSE FW version: HSE_FW_S32K358_9_2_72_0 While trying to generate a Random number after integrating Crypto RTD and flashing HSE firmware on the MCU, we are observing an issue where the firmware seems to get stuck at the Hse_Ip_ServiceRequest() function, specifically while waiting for Mu_Ip_IsResponseReady(). Please find the attached screenshot of the call stack for your reference. Could you please help us understand: Possible reasons why the firmware might be stuck at this point? Recommended solutions or debugging steps to resolve this issue? PS: I have configured CSM_Init, CriIf_Init and Crypto_Init in BSWM configuration CSM, CryIf configured in Vector Davinci, Init functions of the CSM, CryIF, Crypto invoked from BSWM_Init callouts. HSE was installed using Demo APP and verified by reading version number and MU status register as shown below: Customer has asked for working AUTOSAR example based on AUTOSAR xdm configuration CSM,  CriIf and Crypto drivers (not the code from DEMOAPP). Attached their Crypto xdm file. (so far from NXP side Sunny X and Dhan Raj  were involved inot a debug call, we did not find the final root course yet ...) Best Regards, Viktor Board: S32K358 Priority: CRITICAL SW Variant: STANDARD Re: S32K358 HSE Random Number Generation based on AUTOSAR drivers Hello Cuong, we got help and [email protected] created an example. Let us keep this ticket open till next week when customer tried it out. I will grant you access to the example on sharepoint. Best Regards Viktor   Re: S32K358 HSE Random Number Generation based on AUTOSAR drivers Hi @viktorfellinger  I'm creating an example for you. Meanwhile, can you let me know that: 1. How often do you get this issue? Does it alsway happen or sporadic 2. Value of pRequest and pHseSrvDesc when call to Hse_Ip_ServiceRequest() Could you try to increase Timeout value in pRequest to see if it can pass this issue? Re: S32K358 HSE Random Number Generation based on AUTOSAR drivers Hi @viktorfellinger  Do you get any feedback? If there's no update then I would like to close this topic. Customer later can raise another question then you can mention again to this topic
View full article
S32K3 SAF - sCheck_ExecuteStartupTests 运行到 HardFault Execption 您好,技术支持、 客户分享了 一个问题,即在启动时调用 sCheck_ExecuteStartupTests(),之后在执行 ECC 测试时会跳转到硬故障异常。 您能帮忙检查一下这一点吗? MCU: S32K314 SAFETY_SW Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 你好@marcuslim, 对于每个 sCheck 测试,都必须遵循 sCheck UM 章节中描述的所有条件: L1 CACHE ECC 测试 在这种情况下,很可能是内存部分的位置和适当的 MPU 设置有误,这对正确执行该测试非常重要。 更多详情,请参阅 sCheck UM 章节: 内存分配(将内存分配到具有正确的可缓存或不可缓存 MPU 属性的部分至关重要) ,您还可以在 SAF 演示示例中探索链接器文件和 MPU 设置。 亲切的问候, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 Cusotmer 将恩智浦示例中的 sCheck_ExecuteRuntimeTests() 替换为 sCheck_ExecuteStartupTests(),结果遇到了类似的错误。 能否请您明确说明我可以在哪里检查? Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨 @marcuslim 不,你不能通过在专用的用于运行时测试的循环中替换 sCheck 启动测试来使用。 启动测试只应在应用程序启动过程开始时执行一次。 此外,SAF 演示示例不支持 K314,因此,如果您重复使用了某些链接器文件,它很可能不会遵循 K314 设备的内存映射,需要进行更新。 SAF 不容易内置,需要认真学习 sCheck 手册并了解软件功能安全概念。 亲切的问候, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 客户反馈: 不过,我们目前遇到了与 ECC 检查有关的问题。您可能已经注意到,恩智浦示例中也出现了类似的 ECC 检查问题。 内置SAF软件包非常具有挑战性,因此,我们将感谢恩智浦专家在这方面的支持。 您能否就我们需要遵循和验证的与链接器相关的具体要点或要求提出建议,以便正确内置 ECC 检查? 提前感谢您的帮助。 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 你好,Marcus, ,所有信息都应该从 sCheck UM 中清楚地了解到,至少我通常不会遇到这类问题,所以 SAF 团队认为 sCheck UM 在这方面是清楚的。 您能否询问客户 sCheck UM 到底有哪些不清楚的地方,以便我们改进? 谢谢, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 客户将 *(.ramcode_no_cacheable) 从 int_sram_no_cacheable 移至 int_sram,结果运行正常。 如有任何意见,请随时提出。 根据 表 55.sCheck 模块中的 MemMap 部分, 以下部分必须放在特定的闪存区域中: s32_saf_const_flash_0 → 代码闪存 0 s32_saf_const_flash_1 → 代码闪存 1 s32_saf_const_flash_2 → 代码闪存 2 s32_saf_const_flash_3 → 代码闪存 3 不过,在我的系统中,我使用的是 A/B 交换因此,在任何时候都只有 闪存 0 和 闪存 1 被应用程序激活/使用。 放置 s32_saf_const_flash_2 和 s32_saf_const_flash_3 和 32_saf_const_flash_3 可能会干扰未使用的闪存区域(例如,为其他闪存组或 OTA 更新预留的闪存区域)。 我的问题是 是否有办法配置 sCheck,使其只在 Flash 0 和 Flash 1 上执行测试? 或者 是否有安全的方法来测试所有四个闪存块(闪存 0-3),而不影响 A/B 交换使用的非活动库的内容? 的内容? Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 除了上一篇文章中提出的问题外,客户还分享说,在执行sCheck_ExecuteStartupTests和sCheck_ExecuteRuntimeTests 之后,系统始终报告同一组与 ECC 相关的错误: scheck_err_dcache_ecc_cm7_0 scheck_err_icache_ecc_cm7_0 SCHECK_ERR_ITCM_M7_0_ECC SCHECK_ERR_DTCM_M7_0_ECC 在每次测试执行过程中,这些错误都会反复出现。 能否请您协助我们调查并确定这种行为的根本原因? 敬上, 马库斯 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨 @marcuslim, 将 *(.ramcode_no_cacheable)从 int_sram_no_cacheable 移至 int_sram 起作用可能有点巧合。 我怀疑如果客户将 HFNMIENA 设置为 0,则在触发信号时可能会造成麻烦。 请检查一下 MPU_CTRL.HFNMIENA 的值是多少。 如果该值为零,则已针对即将发布的 1.0.6 版本进行了以下修复: [ASFT-19327] [sCheck] 不支持 Arm M7 HFNMIA - 恩智浦 JIRA sCheck 闪存测试不能仅缩减为 Flash_0 和 Flash_1,但已对即将发布的 1.0.6 版本进行了更改,无需将特定的闪存部分放入链接器文件中,而是使用配置的闪存地址,其中地址的内容不会被修改,这也可以解决 A/B 交换客户的问题。 https://jira.sw.nxp.com/browse/ASFT-19738 此致, 拉多斯拉夫 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 你好@marcuslim ,我认为有一个共同的根源。 内存部分需要根据可缓存/不可缓存 MPU 属性正确放置,上一篇文章中提到的 HFNMIENA 位也会造成问题。 亲切的问候, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 客户尝试重新定位 *(.ramcode_no_cacheable)。 到 int_sram_noo_cacheable 而不是 内存 并将 HFNMIENA = 0。 此外,还对 MPU 进行了适当配置,以允许从不可缓存 RAM 区域执行代码。 经过进一步调查,发现在 sCheck_Tcm_RunEccTest 中的函数 sCheck_Tcm_MemTestEccCorrError 和 sCheck_Tcm_MemTestUncorrError 函数将被执行。 这两个函数都调用 sCheck_ErrRead(pParams,&result)。 但是,当 sCheck_Tcm_MemTestEccCorrError 成功完成、 scheck_tcm_memtestuncorrerRror 在 调用 scheck_errRead(PParams,& 结果)(附图中的第 1 点)时会 触发 HardFaul t, 系统随后卡在 BusFault 处理程序 (所附图像中的第 2 点) 中。 能否请您帮助调查一下这一点? Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨 @marcuslim, 对不起我错了,你的 SAF 版本中的正确设置应为 HFNMIENA = 1,以避免在异常中更改 MPU 设置,这可能会进一步导致缓存之后刷新一些变化。这就解释了为什么 TCM correctable 可以通过,而 Uncorrectable 不能通过,因为它使用异常来测试正确的反应。 亲切的问候, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 客户反馈: >>>>>>>> 配置HFNMIENA = 1 后,我发现sCheck_ExecuteStartupTests()可以正常运行。此时,我不再观察到任何与 ECC 相关的错误。我将进行额外的压力测试,以进一步验证这种行为。 但是,当调用 sCheck_ExecuteRuntimeTests() 并随后调用 sCheck_Tcm_MemTestUncorrError() 时,系统会在设置 INVSTATE(无效状态)标志的情况下触发信号 UsageFault 异常。 请问sCheck_ExecuteStartupTests()和sCheck_ExecuteRuntimeTests()之间是否存在任何设计上的差异或特定的使用条件,会导致这种行为? 此致, 马库斯 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 您好@marcuslim, 如果启用了 FPU,这可能表明存在参数问题,我们需要进一步调查。 您能否尝试禁用 FPU 并重新进行测试? 现在结果如何? 启用 FPU 后,能否在 Watch 窗口的异常跟踪中使用这些变量: sCheck_ErrRead_ExceptionContext.bAbortFlag sCheck_DetectedFaults[0] 并再次粘贴截图? FCCU NCF_2 通道的配置反应是什么? , Radoslav。 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 请在此提供所需的信息: 要点 1:禁用 FPU - 同样的错误。 要点 2:启用 FPU 第 3 点:FCCU NCF_2 反应 此致, 马库斯 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 你好,马库斯、 最新截图显示,它产生的是内存管理故障,而不是使用故障(如原帖所示)。因此,我认为我们需要澄清我们面临的例外情况是什么。 请检查/共享 MPU 配置。 你能检查一下异常是否由"LDRD R0,R1,[R1]\n" 指令(来自 sCheck_Lib_ARMv7M.c 或其他指令)引起的吗? 亲切的问候, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 附上客户的 MPU 配置和链接器文件。他希望我们对其进行审查。 此致, 马库斯 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨 @marcuslim, 我看到他们重复使用了 RTD 示例 systemInit () 中的 MPU 配置。 请注意,这只是 RTD 的短截线,未经验证,即使对于某些 RTD 驱动程序来说也可能不够,更不用说 SAF 了。 同样,对于链接器文件,我可以看到来自RTD链接器文件的来源,以及额外的SAF和SCST内存部分。 关于 MPU 配置,我强烈建议使用 RTD Platform 插件配置 MPU。 在 SAF 演示示例中,我们还提供了 K344 的 MPU 配置示例(不是 K314,但只需修改 TCM 的正确内存大小)。 但它也只是 SAF Demo 设置的示例代码(短截线),未经过验证的交付内容。 按照人工智能的要求,他们的 MPU 配置应该代表这种设置: 地区 RBAR 地址 大小 类型/缓存政策 可共享 门禁系统 说明 0 0x00000000 覆盖整个地址空间(RASR = 0x1004003F ) 强烈订购,无缓存 是 无访问 背景区域阻挡一切 1 __INT_ITCM_START 来自链接器 正常,无缓存 无 RW/RW 用于 CM7 的 ITCM 2 __ROM_CODE_START 来自链接器 正常,WB/WA(内侧& 外侧) 无 RO/RO 主程序闪光 3 __ROM_DATA_START 来自链接器 正常,WB/WA 是 RO/RO 数据闪存 4 0x1B000000 8 KB ( 0x160B0019 ) 正常,WB/WA 是 RO/RO UTEST 地区 5 __INT_DTCM_START 来自链接器 正常,无缓存 无 RW/RW CM7 的 DTCM 6 __INT_SRAM_START 来自链接器的大小 ( __RAM_CACHEABLE_SIZE ) 正常,WB/WA 无 RW/RW 可高速缓存 SRAM(禁用子区域 6 和 7) 7 __RAM_NO_CACHEABLE_START 来自链接器 正常,无缓存 是 RW/RW 非缓存 RAM 区域 8 __RAM_SHAREABLE_START 来自链接器 正常,无缓存 是 RW/RW 可共享内存 9 0x40000000 6MB 强烈订购,无缓存 是 RW/RW AIPS0-2 外围空间(禁用第 6/7 分区) 10 0x40600000 S32K314 已禁用 — — — AIPS3;仅在 S32K39x 上有效 11 0x67000000 128 MB 强烈建议 是 RW/RW QSPI RX 12 0x68000000 128 MB 正常,WB/WA 无 RW/RW QSPI AHB 映射区域 13 0xE0000000 默认 ARM PPB 大小 强烈建议 是 RW/RW 私人外围总线(SCB、NVIC 等) 14 __ROM_CODE_START + 0x400000 S32K314 为 0 — — — 附加程序闪光灯(仅对其他衍生产品有效) 15 0x44000000 S32K314 为 0 — — — ACE 区域仅在 S32K388 上活跃 这是 K344 的 SAF 演示示例中的 MPU 配置: 简单比较这两个 MPU 配置 + 链接器文件可以看出: -这些内存部分的位置不正确:* (.s32_saf_const_flash_1) * (.s32_saf_const_flash_2) * (.s32_saf_const_flash_3) * (.s32_saf_const_flash_4) * (.s32_saf_const_const_flash_4) * (.s32_saf_const_const_flash_4) * (.s32_saf_const_const_flash_4) * (.s32_flash_5)-看不到不可缓存的 SRAM 的可执行属性,但这不是 sCheck 所要求的,这可能是 SAF 示例 MPU 设置中的冗余属性——考虑到客户正在运行操作系统,我预计操作系统及其需要一些特定的 MPU 设置和内存部分 应用程序(只是猜测,并不是说这可能是某些问题的根本原因) 无论如何,客户应遵循 SAF 用户手册和 RTD 手册第 " 章内存分配 " 进行正确的 MPU 和链接器文件设置,重复使用恩智浦示例中的短截线不是一个好做法。 特别是当操作系统在 sCheck 测试期间运行时,还需要按照 sCheck 章节" Exclusive Areas(在 BSW Scheduler" 中定义的专属区)进行测试。eMcem 和 RTD 驱动程序中也有类似的排他性区域。 亲切的问候, Radoslav
View full article
MCSPTR2AK396 套件 你好,我知道这个套件包括逻辑板和驱动板。我这里有一个控制器,想用它来控制驱动板。我的问题是:该套件中的驱动板接口是否支持使用杜邦电线连接到我自己的控制器?我的控制器与杜邦电线兼容。 Re: MCSPTR2AK396 kit 感谢您关注我们的产品并为我们的社区做出贡献。 在 MCSPTR2AK396 页面,您可以获取设计文件(包括 BOM),查看您提到的特定连接器。 另一方面,要将其他控制器板连接到反向器板,我们建议使用 S32SDEV-CON18,有关更多详细信息,请参阅以下文章的图 2.3.1 硬件设置: https://community.nxp.com/t5/NXP-Model-Based-Design-Tools/PMSM-Motor-Control-Application-for-S32K396-with-MBDT-and-Custom/ta-p/1830976 希望这些信息对您有所帮助
View full article
除了 ISP 模式之外,还有其他恢复 CMPA/CFPA 存储空间的方法吗? 我收到了开发板并运行了一些演示项目。我发现在网络安全代码中,不可能设置中断和调试代码。 之后,在学习了用户手册之后,有必要在 CMPA 和 CFPA 中配置 DCFG_CC_SOCU_PIN / DCFG_CC_SOCU_PIN。这两个字段默认为 0。根据文件描述,DAP 调试验证是必需的,因此我想尝试将它们改为 1,默认启用调试。 因此,我使用 MCUXpresso 安全配置工具 25.09 在默认配置的基础上将与 DCFG_CC_SOCU_PIN/DCFG_CC_SOCU_PIN/DCFG_CC_SOCU_PIN 对应的位数修改为 1。下载后,调试器无法连接,使用串行通信的 ISP 也提示无法连接。 还有其他方法可以将这个板的CMPA/CFPA存储空间恢复到出厂设置吗? Re: Is there any other way to restore the CMPA/CFPA storage space excpet ISP mode? 启用调试身份验证后,可以更新 CMPA/CFPA。您需要使用调试邮箱进入 ISP 模式并更新 CMPA/CFPA,请注意 CFPA 每次更新时都需要增加 +1 版本(已解决:SB 2.1 (1B) 闪存 CFPA 页面过时 - NXP 社区)。 如果无法进入 ISP 模式,则可能是禁用了 ISP。你能分享一下你写给设备的 CMPA 吗? BR, Omar Re: Is there any other way to restore the CMPA/CFPA storage space excpet ISP mode? 谢谢您的答复。以下是我根据默认设置修改的 CMPA 和 CFPA 配置。 Re: Is there any other way to restore the CMPA/CFPA storage space excpet ISP mode? 你好@xtyzh 抱歉回复晚了、 您共享的配置是您上次下载到板的配置吗? 请确认您使用的是哪个部件号? 你在使用定制板吗?如果不是,请说明你使用的是哪个板 Re: Is there any other way to restore the CMPA/CFPA storage space excpet ISP mode? 你好@carlos_o: 我使用的是 LPCXpresso55S69 修订版 A2 开发板。 Re: Is there any other way to restore the CMPA/CFPA storage space excpet ISP mode? 你好@xtyzh 感谢您分享您的板和您使用的 CMPA/CFPA 配置文件的详细信息。 审查后,ISP 连接不会受到影响。 能否请您分享一下您之前遵循的步骤? 你对板做过任何返工吗?
View full article
S32K3xx FEE初期化時間 こんにちは、チームの皆さん この FEE の動作についてフィードバックを提供していただけますか? Fee_Init 実行時間はレコードごとに約 1.9 ミリ秒増加すると予想されますか?これはかなりの遅延のようです。 Fee_Example_S32K344 では、初期化ルーチンに MEMIF_IDLE を待機する while ループが含まれています。書き込みとリセットのサイクルを繰り返すと、このルーチンに必要な時間が著しく増加します。 例: 1 回の書き込みとリセット後、初期化には約 1.9 ミリ秒かかります。 100 回の書き込み/リセット サイクル後、遅延は約 190 ミリ秒に増加します。 すべてのデータが正常に保存されるように、FEE への書き込みにはブロッキング操作を使用しています。 簡略化したシナリオは次のようになります。 初期化ルーチン FEEへの書き込み(ブロッキング操作) アプリケーションタスクを実行する リセット リセット後、初期化ルーチンにかかる時間が長くなります。 RTDバージョン3.0.0を使用していますパッチはインストールされていません。 ありがとうございました。 BR、ダニエル RTD Re: S32K3xx FEE initialization time こんにちは@danielmartynek 、 それは正常です。Fee ドライバーは、ユーザー データを仮想ブロックの形式で Fls メモリに保存することによって機能します。Fls への書き込みタスクごとに、レコード (ブロック ヘッダー + ユーザー データ + ステータス有効/無効ブロック) が作成されます。つまり、書き込みサイクルが増えると、より多くのレコードが作成されることになります。リセット後、Fee が初期化されます (Fee_Init + fee_mainfunction + MemAcc_mainfunction)。これは、Fls_memory 内のすべてのレコードをスキャンしてブロック ステータス テーブルを再構築することから構成されます。SO、書き込みサイクルの数が多く、初期化をスキャンする必要があり、レコード/ブロックの検証が大きくなります。 よろしくお願いいたします。 ニ Re: S32K3xx FEE initialization time こんにちは@Nhi_Nguyen 、 あなたの言いたいことは分かりますが、レコードあたり 2 ミリ秒というのはかなり長いように思えます。 品質レポートのプロファイリング レポートには、実際にはマイクロ秒単位でタイミングが表示されます。 よろしくお願いいたします。 ダニエル Re: S32K3xx FEE initialization time こんにちは@danielmartynek 、 実際、Fee_Init() は、いくつかのグローバル変数といくつかのレジスタを設定し、fls のステータスをチェックするだけですが、初期化タスクには {MemAcc_Init()、Fee_Init()、(Fee_Mainfunction()、MemAcc_Mainfunction()、fls がアイドル状態になるまで待機する Getstatus) のループが含まれます}。 クラスター ヘッダー、ブロック ヘッダー、データ ブロックの書き込み、ブロックのフラグ ステータスの書き込みをスキャンするループ。 または、Fee_Write() はグローバル変数を設定するだけですが、書き込みタスクには {Fee_Write(), loop of (Fee_mainfunction(), MemAcc_MainFunction(), GetStatus)} が含まれます。 これらのタスクの実行時間は、ページ サイズ、頻度、キャッシュ、仮想ブロックのサイズなどの構成によって異なります。 パッケージに添付されていた Fee の例で、データが 4 バイトの書き込みタスクを実行してみました。約 1,133 ミリ秒かかりました。 プロファイリング レポートは、タスクではなく各関数の実行時間のみを対象としています。 よろしくお願いいたします。 ニ
View full article
访问 nxp.com 您好。 如果不使用VPN,就无法访问nxp.com功能域的所有站点。 我收到了错误信息: Access Denied You don't have permission to access "http://mcuxpresso.nxp.com/en/dashboard" on this server. Reference #18.977a7b5c.1754475329.7d13ec17 https://errors.edgesuite.net/18.977a7b5c.1754475329.7d13ec17 也许这些都是按 IP 地址设置停止列表的错误。 恩智浦公司有谁能解决这个问题? Re: Access to nxp.com   同样的问题 您没有权限访问该服务器上的"http://www.nxp.com/" 。 参考 #18.633c655f.1754500173.c79a737 https://errors.edgesuite.net/18.633c655f.1754500173.c79a737
View full article
在 IMX8mm 上编程 SJC_DISABLE、JTAG_SMODE 和 JTAG_HEO 熔丝 你好 在 AN4581 应用笔记第 5.7 节中,建议对 SJC_DISABLE、JTAG_SMODE 和 JTAG_HEO 熔丝进行编程以完全保护设备,但是同时看 IMX8MMRM 和 IMX8MMSRM,我找不到这些熔丝的确切位置(银行、字、位)。在哪里可以找到这些信息? 谢谢! Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 你好,我是@igorpadykov、 如果您能把这些信息也发给我,我将不胜感激。 预先致谢 Dj Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 您好, 您能否将这些信息也发给我? 另外,imx8m nano 和 mini 之间有区别吗? Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 我们也希望得到这些信息。 Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 嗨,@伊戈尔帕季科夫、 我需要有关 imx8m mini 熔丝的信息。能否请您提供给我?出于网络安全原因,我需要禁用 JTAG。 最好的奖励 胡利安 Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM @igorpadykov 你还能把 JTAG_HEO 熔丝的信息发给我吗? 谢谢! Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 您也能与我分享一下吗?为什么这不只是发布在公共应用程序备注、参考手册或网络安全参考手册中?通过隐蔽实现的网络安全不是网络安全。 Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 您能公开这封邮件吗?为什么安全参考手册中没有列出这些信息?对于i.MX8M Nano,这已在网络安全参考手册中列出。但是我不知道 Mini 是否使用同样的熔丝。 此外,AN4581 还列出了值得关注的熔丝 DIR_BT_DIS。但我找不到任何参考。 Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 我们还想在 imx8m-mini 上禁用 JTAG,但我在《参考手册》修订版 2,2019 年 8 月 8 日第 6.2 章 Fusemap 中找不到任何有关它的信息。您能为我指明正确的方向吗? 谢谢! Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 嗨 Rodrigo_travess 附加信息已通过邮件发送。 问候 igor
View full article
EBtresos 激活码 您好, 我试图在 AUTOSAR 中使用 EBtresos,但未能激活。 激活代码 :B25C-AEB-4319-BAB1 ERROR: flxActAppActivationSend (50040,41147,10248) 指定的数量超过允许的最大数量 (0)。 与 FlexNet Operations Server 的连接失败。 因此,我需要另一个激活代码才能使用 EBtresos。 谢谢! Re: EBtresos activate code 不便之处,敬请原谅。 激活码已更新,请点击S32K3 标准软件-> Automotive SW - EB tresos Studio / AUTOSAR 配置工具 -> EB tresos Studio 29.0.0 Re: EBtresos activate code 您好, 单击 "升级 " 按钮。 Re: EBtresos activate code 很抱歉,最近几天有几位客户报告了这个问题,称激活代码 :B25C-AEBB-4319-BAB1 不可用。 我的同事还没有回复我,所以请暂时点击 "升级"按钮。 Re: EBtresos activate code 我也有同样的问题 Re: EBtresos activate code HI 我暂时无法使用这个激活码:B25C-AEBB-4319-BAB1 我已经向我的同事报告了这个问题。 您还有其他 2025 年到期的激活码吗? 如果您使用的激活码将于 2025 年到期,那么请 点击 EB 客户端许可证管理员中的 "升级 "按钮来延长有效期。 祝好, Robin ------------------------------------------------------------------------------- 注: - 如果本帖回答了您的问题,请点击"ACCEPT AS SOLUTION" 按钮。谢谢! - 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略 如果您以后有相关问题,请另开新主题并参考已关闭的主题。 ------------------------------------------------------------------------------- Re: EBtresos activate code 我也遇到了同样的问题,没有其他许可证可以升级。 激活 NodeLocked 许可证 B25C-AEBB-4319-BAB1,许可证数量:1 Status:4, 创建请求 状态:5,已创建请求 状态:6、创建上下文 状态:7,已连接远程服务器 状态:8,请求已发送 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:10,等待回复 状态:9,正在轮询响应 状态:11,已完成 ERROR: flxActAppActivationSend (50040,41147,10248) 指定的数量超过允许的最大数量 (0)。 与 FlexNet Operations Server 的连接失败 Re: EBtresos activate code 您好: 我遇到了同样的问题,请帮助解决我的问题! Re: EBtresos activate code 以下是Flexnet Help 的答复: 现在,我们的团队正在更新系统中的激活码信息。在此之前,请使用下面提供的新激活代码: F5CF-8A53-B979-CD50 回复: EBtresos activate code 这个activation code免费评估的用户数量超过上限了,我已经报告给 Flexnet Help 了。 回复: EBtresos activate code 问题解决了吗?咋解决的 回复: EBtresos activate code 你好、 那可以提供一个新的激活码吗?
View full article
PF5030はすべての出力が失われた状態でI2Cを読み取ります こんにちは。致命的なエラーが発生すると、入力電源は維持されますが、PF5030 のすべての出力が失われます。I2C 経由で詳細な障害情報を取得する方法はありますか? VDDIO は出力の 1 つから供給されます。この状況では、VDDIO が失われ、I2C インターフェースが機能しない可能性があります。しかし、致命的なエラーが発生した後に外部 VDDIO を提供するとどうなるでしょうか? エラー メッセージは保持されたままになりますか、それともすでに失われていますか?エラーが発生した後に外部 VDDIO を供給し、I2C 通信を試行することで、エラーの原因をCANますか? Re: PF5030 read I2C while all output lost こんにちは、ポニーさん 致命的なエラー (ウォッチドッグ障害、監視対象レールの過電圧、障害カウンタのオーバーフローなど) が発生すると、PF5030 は DEEP-FS 状態に移行します。 DEEP-FS では、すべてのレギュレータがオフになります。 フェイルセーフロジックはVINから内部的に電源供給されている I²C インターフェースはフェイルセーフ ドメインにあり、VDDIO (1.71 V ~ 5.25 V の範囲) が存在すると再び機能するようになります。 VIN が POR しきい値を上回っており、デバイスの電源がオフ/オンされていない限り、フェイルセーフ レジスタ (例: FS_GRL_FLAGS 、 FS_OVUVREG_STATUS1 、 FS_DIAG_SAFETY 、 FS_STATES ) には次の内容が含まれます。 どの電圧モニターがトリガーされたか(OV/UVフラグ) ウォッチドッグエラーフラグ 障害カウンターとステートマシンのステータス これらのレジスタはPORまたは明示的な書き込みによってのみクリアされ、DEEP-FSに入ることによってはクリアされません。 FS_GRL_FLAGS (一般的な障害の概要) FS_OVUVREG_STATUS1 (VMONがトリガー) FS_DIAG_SAFETY (ウォッチドッグ、CRC、BIST ステータス) FS_STATES (現在のフェイルセーフ状態) VIN が失われていない限り、VDDIO に外部電源を供給して致命的なエラーが発生した後に詳細な障害情報を回復 CAN。VIN が POR を下回ると、すべての揮発性レジスタがクリアされます。 敬具、 ヨゼフ
View full article