Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
S32K312 FlexCAN – TX Message Buffer Abort with AEN Enabled and Bus-Off Recovery Using RTD 7.0.1 Hello NXP Team, I am working with the NXP S32K312 evaluation board using S32K3 RTD 7.0.1 (AUTOSAR 4.9.0). I am testing the FlexCAN transmit message-buffer abort functionality using the RTD APIs FlexCAN_Ip_Send() and FlexCAN_Ip_AbortTransfer(). The abort functionality is not behaving as expected in my tests. I have attached the project, MEX configuration, and test code for your reference. I would appreciate your guidance on the following three issues. 1. Aborting Multiple Transmit Message Buffers In my first test, I transmit messages using multiple message buffers and then issue abort requests for all those buffers. The test code is shown below. /* Transmit messages using MB0 to MB39. */ for (uint8_t lMb_u8 = 0U; lMb_u8 < 40U; lMb_u8++) { FlexCAN_Ip_Send( INST_FLEXCAN_0, lMb_u8, &tx_info, 0x123U, &dummyData[0] ); } /* Request abort for MB0 to MB39. */ for (uint8_t lMb_u8 = 0U; lMb_u8 < 40U; lMb_u8++) { FlexCAN_Ip_AbortTransfer( INST_FLEXCAN_0, lMb_u8 ); } All transmit requests use the same CAN ID, 0x123, while the message-buffer index varies from 0 to 39. The MCR[AEN] bit is set to 1, enabling the abort mechanism. However, all the messages are observed in PCAN-View, even though I issue abort requests for the message buffers. My expectation is that messages still pending transmission should be aborted, while messages that have already completed transmission cannot be aborted. Could you please clarify the following? Is there a recommended sequence for transmitting on multiple message buffers and then aborting all pending transmissions? 2. Aborting a Transmission using a single Message Buffer To isolate the issue, I created a second test that uses only message buffer 8. The sequence is: Call FlexCAN_Ip_Send() for MB8. Check the transfer status using FlexCAN_Ip_GetTransferStatus(). If the send is successful and the transfer status is FLEXCAN_STATUS_BUSY, call FlexCAN_Ip_AbortTransfer() for MB8. Read the transfer status again and inspect the hardware registers. The send API returns FLEXCAN_STATUS_SUCCESS, and the status check before the abort reports FLEXCAN_STATUS_BUSY. However, the abort API returns FLEXCAN_STATUS_NO_TRANSFER_IN_PROGRESS (0x5). While debugging the RTD implementation, I found that the return status originates from the following condition inside FlexCAN_AbortTxTransfer(): FlexcanMbConfig = *FlexcanMb; /* Check if the MBs have been safely inactivated */ if ((uint32)FLEXCAN_TX_INACTIVE == ((FlexcanMbConfig & FLEXCAN_IP_CS_CODE_MASK) >> FLEXCAN_IP_CS_CODE_SHIFT)) { /* Transmission has occurred */ Result = FLEXCAN_STATUS_NO_TRANSFER_IN_PROGRESS; } The message buffer is located at 0x40304100 in the memory browser for my current configuration. After the abort request, the CODE field reads 0x8, which corresponds to the inactive/transmitted state, instead of the expected abort code 0x9. I also placed a breakpoint at the following statement in FlexCAN_AbortTxTransfer(): TimeStart = OsIf_GetCounter( FLEXCAN_IP_SERVICE_TIMEOUT_TYPE ); At this point, IFLAG1[8] is set. In the current RTD implementation, the abort sequence writes FLEXCAN_TX_ABORT (0x9) to the message-buffer CODE field, then polls the corresponding message-buffer interrupt flag. The flag is cleared by FlexCAN_ClearMsgBuffIntStatusFlag() in FlexCAN_Ip_AbortTransfer() after the abort helper returns. My concern is that the interrupt flag may already be set from a completed transmission before the abort request is issued. If so, the polling loop could exit immediately without waiting for a new abort-completion event. However, I have not yet confirmed whether this is the cause of my issue. 3. Bus Off recovery with Automatic Recovery Disabled In a separate test, I am disabling automatic bus-off recovery and attempting to handle recovery through the application. When a bus-off condition occurs, my current approach is to deinitialize and then reinitialize the FlexCAN driver. However, after this sequence, subsequent calls to FlexCAN_Ip_Send() do not successfully transmit messages. Could you please advise on the recommended recovery procedure when automatic bus-off recovery is disabled? Specifically: Is deinitialization and reinitialization sufficient to recover the FlexCAN controller from bus-off? Should all outstanding TX message buffers be aborted or explicitly cleared before deinitialization? After reinitialization, must the message buffers be configured or initialized again before transmission? Are there any required steps involving the ESR1 status, MCR, CTRL1[BOFFREC], interrupt flags, or RTD internal transfer states before the controller can transmit again? What is the recommended sequence for recovering from bus-off while ensuring that no stale TX transfers or mailbox states prevent subsequent transmissions? I have attached the test project, MEX configuration, and relevant source code so that the configuration and API usage can be reviewed. Re: S32K312 FlexCAN – TX Message Buffer Abort with AEN Enabled and Bus-Off Recovery Using RTD 7.0.1 Hi@Yogs I have summarized the answers to your three questions as follows: (There’s quite a lot of content, and the formatting is a bit messy.) Q1. Regarding "Flexcan Abort" question. First, you need to understand that the FlexCAN Abort mechanism is only effective for TX message buffers (MBs) that are still in a pending state. Regarding your first test: MB0 is activated first; FlexCAN begins scanning and proceeds to transmit the contents of MB0; Meanwhile, the CPU continues configuring MB1, MB2, ..., MB39; By the time the CPU finally reaches the second loop, the initial set of MBs has likely already finished transmitting. Under conditions such as low bus load, successful ACK reception, and the 8-byte payload typical of Classical CAN, the transmission of 40 frames can be completed very quickly. The same applies to the second test, if the bus is idle, FlexCAN may well have already completed the transmission before the CPU executes the abort command. Therefore, neither of your two tests proves anything. To properly verify an abort operation, you need to deliberately create a definitive "pending" window, rather than relying on the CPU's execution speed. For example: Configure another CAN node to continuously occupy the bus using a higher-priority ID—thereby keeping the target Message Buffer (MB) in a pending state—and then trigger the abort. Q2:Why does a single-MB test return BUSY initially, yet return NO_TRANSFER_IN_PROGRESS upon an abort request? A brief state mismatch can occur between the two: `FlexCAN_Ip_Send()` sets the RTD (Run-Time Driver) state to `BUSY`. The hardware begins transmission. The frame transmission completes; the hardware updates the MB (Message Buffer) CODE to `0x8` and sets the `IFLAG`. If the TX IRQ handler has not yet executed—or if the system is paused during breakpoint debugging—the RTD state structure may still remain as `BUSY`. An `Abort` operation is called at this point. Internally, the `Abort` function reads the MB CODE and finds it is already `0x8`. It returns `FLEXCAN_STATUS_NO_TRANSFER_IN_PROGRESS`. Therefore:`GetTransferStatus() = BUSY`and`FlexCAN_Ip_AbortTransfer() = NO_TRANSFER_IN_PROGRESS` are not necessarily contradictory. The former may reflect software bookkeeping, while the latter confirms the actual hardware CODE. Q3.Bus-off recovery  It is entirely feasible to recover from a "bus-off" state by reinitializing the CAN module. To manually perform a "bus-off" recovery, the application layer must first cease data transmission and cancel or discard all pending transmit (TX) requests(Abort). Subsequently, the controller must undergo a complete deinitialization followed by a reinitialization. Following this, the application-layer receive (RX) message buffers (MBs) should be reconfigured, and any stale message buffer flags, error flags, and software transmission states must be cleared. Before resuming transmission, the application layer should verify that the controller has exited the "freeze" or "not-ready" state, and ensure that neither the transmit message buffers (TX MBs) nor the "ready-to-transmit" (RTD) status remain in a "busy" state. Since you mentioned that your test failed, you likely overlooked the sequence mentioned above. I couldn't find any information regarding the bus-off recovery procedure in the attached files; if you still have questions about this, feel free to share your test project with me, and I can take a look to help you check it. Re: S32K312 FlexCAN – TX Message Buffer Abort with AEN Enabled and Bus-Off Recovery Using RTD 7.0.1 Regarding Q1, I would like to clarify my test conditions. I am using a CAN baud rate of 500 kbps, and a Classical CAN frame with an 8-byte payload takes approximately 300 µs for transmission on the bus. In my test, I first submit the messages through the respective TX message buffers and then immediately execute the abort function. The abort function iterates through the corresponding message buffers and calls FlexCAN_AbortTxTransfer() for each one. So, the abort requests are being issued for the respective message buffers immediately after the transmission requests, rather than being delayed intentionally. I understand that the first few messages might have completed transmission before the abort loop reaches them. However, considering the approximate transmission duration and the number of messages submitted, I would expect some of the later message buffers to still have pending transmissions when their abort requests are issued. Could you help me understand whether there is another hardware condition or timing factor that would prevent those pending messages from being aborted? Re: S32K312 FlexCAN – TX Message Buffer Abort with AEN Enabled and Bus-Off Recovery Using RTD 7.0.1 Hi@Yogs This is your default sequence for "abort MB" in your code; for(uint8_t lMb_u8 = 0; lMb_u8 < 40; lMb_u8++) { FlexCAN_Ip_AbortTransfer(INST_FLEXCAN_0,lMb_u8); } I have modified it to "40 - 1Mb_u8".  for(uint8_t lMb_u8 = 0; lMb_u8 < 40; lMb_u8++) { FlexCAN_Ip_AbortTransfer(INST_FLEXCAN_0,40 - lMb_u8); } Below are the results of my testing. I only received two frames of data; all other MBs were successfully aborted. The results of this verification are sufficient to confirm my earlier hypothesis: the current MB had already been successfully sent before you executed the Abort MB operation. Re: S32K312 FlexCAN – TX Message Buffer Abort with AEN Enabled and Bus-Off Recovery Using RTD 7.0.1 Hi, Thank you for the explanation. I understood your recommendation and tested the reverse-order abort sequence. As you mentioned, this approach works better: I receive only two frames on the bus, while the remaining messages are successfully aborted. However, I have a few questions regarding the behaviour. 1. Why is reverse-order abortion necessary? Aren't the two loops essentially performing the same operation, with only the order of execution being different? Could you explain why starting the abort from the highest mailbox index makes such a significant difference? Is this related to the order in which FlexCAN scans or selects TX message buffers internally? Is reverse-order abortion a hardware requirement, or is it simply a recommended approach to increase the probability of aborting pending messages? 2. What about aborting a single message buffer? I also tested the abort functionality using only one message buffer: FlexCAN_Ip_Send( INST_FLEXCAN_0, 0U, &tx_info, 0x123U, &dummyData[0] ); FlexCAN_Ip_AbortTransfer(INST_FLEXCAN_0, 0U); I benchmarked the time between the execution of FlexCAN_Ip_Send() and the invocation of FlexCAN_Ip_AbortTransfer(). It takes approximately 10.3 µs. However, even with this short interval, the message is still transmitted on the CAN bus. I have also maintained a reasonable amount of bus load using higher-priority messages from PCAN-View, but the single-message abort is still unsuccessful. For comparison, when I use multiple message buffers for transmission and subsequently abort them in reverse order, the measured duration for the sequence is approximately 9.3 ms, and only two frames are received on the bus while the remaining messages are aborted. This raises another question: why does the single-message abort fail even when the abort request is issued approximately 10.3 µs after the send API returns, whereas the multi-mailbox reverse-order approach successfully aborts most of the messages? Could the single message already have been transferred to the internal TX Serial Message Buffer (TX SMB) before the abort request is issued? I would appreciate your clarification on how the hardware handles this scenario and how to reliably test the abort mechanism for a single message buffer. Re: S32K312 FlexCAN – TX Message Buffer Abort with AEN Enabled and Bus-Off Recovery Using RTD 7.0.1 Hi@Yogs Why is an abort operation in reverse order necessary? I didn’t mean to imply that it is necessary. Through these comparative test results, I am explaining that an abort might fail because the specific message buffer (MBn) you are attempting to abort has, in fact, already been successfully transmitted. When you populate the message buffers sequentially—from MB0, MB1, ..., up to MB39—and then perform abort operations starting from MB0, it is possible that the target MB has already been successfully sent. Consider a different approach: what if we initiate the aborts starting from MB39? This would ensure that the message buffers with higher indices are addressed for abortion first.
記事全体を表示
EasyEVSE EVerest MPU build — SE05x middleware version clarification Setting up the NXP EasyEVSE platform using the i.MX93 service processing board. I'm following the EasyEVSE EVerest MPU instructions with this manifest: Branch: release/everest-mpu-2.0 Manifest: imx-6.12.20-2.0.0_everest.xml Target image: imx-image-everest The meta-nxp-everest-mpu README specifies EdgeLock SE05x Plug & Trust Middleware version 04.07.01 (se05x_mw_v04.07.01.zip), but I can only currently find version 04.08.01 (se05x_mw_v04.08.01.zip) on the NXP download site. Is middleware 04.08.01 supported with the release/everest-mpu-2.0 manifest and imx-6.12.20-2.0.0_everest.xml? Which exact recipe or configuration file should be updated, and what changes are required? Is middleware 04.07.01 still available through an official download link if it is required? Re: EasyEVSE EVerest MPU build — SE05x middleware version clarification Hi @ChargeMeMaybe  The README lists only 04.07.01 as a prerequisite; there are no major architectural changes between versions in the 04.x series. You will need to modify the bb file to use 04.08.01. Best Regards, Zhiming
記事全体を表示
T1014 - JTAGチェーンにデバッグ可能なコアが含まれていません NXPの専門家の皆様、こんにちは。 自作のT1014rdbボードでCode Warrior TAPをセットアップした際に、「JTAGチェーンにデバッグ可能なコアが含まれていません」および「JTAGチェーンを正しく構成できませんでした」という問題が発生しました。 解析の結果、ccs cmdでテストすればJTAGチェーンにアクセスできるものの、ボードをリセットしてもいなくてもcmd「get_children」でデバッグコアを取得できないことが確認されました: そして、もう一つ発見した現象は、t1014チップタイプはccsで入手できず、t10xxしか入手できませんが、t1040は入手可能だということです。 現在、RCWのローディング方法はSPI Flashによるもので、MISOを通0xaa55aa55でき、HRESETは1.8Vまで正常に上げられました: 現時点では問題を解決するためのさらなる方法がなく、Code Warrior TAP経由でT1014ボードのデバッグもまだできません。 この問題を解決するための提案をいただけると助かります。問題は基板の起動によるものなのか、IDEsの設定によるのか、ありがとうございます。 Re: T1014 - the jtag chain does not contain any debuggable cores こんにちは、 @BowenLi1991 さん。 どうぞお試しください 「ccs::config_chain t1014」の代わりに「ccs::config_chain t1040」を使用します。 ハードコードモードのCCSで、以下のコマンドを試してみてください。 (bin) 2%すべて削除 (bin) 3 % config cc cwtap (bin) 4% ccを表示 0: CodeWarrior TAP (cwtap) CC ソフトウェアバージョン{0.0} (bin) 5% ccs::config_chain t1040 (bin) 6 % display ::ccs::get_config_chain 鎖位置0:T1040 (bin) 7 % ccs::reset_to_debug コマンドが正常に動作した場合は、T1014をフラッシュブートモードに設定し、再度コマンドを実行してください。 すべてのコマンドが正常に動作した場合。 PORESET_B、HRESET_B、RESET_REQ_B、ASLEEPの波形がT1024RMの図4-1に従っていることを確認してください。電源投入リセットシーケンス よろしくお願いします。 6月
記事全体を表示
T1014-测量红外长度的误差 恩智浦的各位专家,您好: 原问题的链接是: https://community.nxp.com/t5/T-Series/T1014-the-jtag-chain-does-not-contain-any-debuggable-cores/mp/2424033#M5509 另外补充一点信息是,启用 JTAG 诊断功能后,日志报告称测量红外长度时出错: 请帮忙找出问题的根本原因,谢谢。 Re: T1014- Error measuring IR length 支持你 https://community.nxp.com/t5/T-Series/T1014-the-jtag-chain-does-not-contain-any-debuggable-cores/m-p/2424033#M5509
記事全体を表示
EasyEVSE EVerest MPUビルド — SE05xミドルウェアバージョンの明確化 i.MX93サービスプロセッシングボードを使ってNXP EasyEVSEプラットフォームをセットアップしています。 私は以下のマニフェストを使用して、EasyEVSE EVerest MPUの手順に従っています。 ブランチ: release/everest-mpu-2.0 マニフェスト: imx-6.12.20-2.0.0_everest.xml 対象画像: imx-image-everest meta-nxp-everest-mpu READMEにはEdgeLock SE05x Plug & Trust Middleware バージョン 04.07.01(se05x_mw_v04.07.01.zip)が指定されていますが、現在NXPのダウンロードサイトで見つかるのはバージョン04.08.01(se05x_mw_v04.08.01.zip)だけです。 ミドルウェア04.08.01はリリース/everest-mpu-2.0でサポートされていますか?マニフェストとimx-6.12.20-2.0.0_everest.xml? 具体的にどのレシピファイルまたは設定ファイルを更新すべきか、またどのような変更が必要か? ミドルウェア04.07.01は、必要であれば公式ダウンロードリンクからまだ入手可能ですか? Re: EasyEVSE EVerest MPU build — SE05x middleware version clarification こんにちは、 @ChargeMeMaybe READMEには前提条件として04.07.01のみが記載されており、04.xシリーズのバージョン間には大きなアーキテクチャ上の変更はありません。04.08.01を使用するようにbbファイルを変更する必要があります。 よろしくお願いします、 志明
記事全体を表示
S32K312 FlexCAN – AEN有効化時のTXメッセージバッファアボートとRTD 7.0.1を使用したバスオフリカバリ NXPチームの皆様、こんにちは。 私はS32K3 RTD 7.0.1(AUTOSAR 4.9.0)を用いてNXP S32K312評価ボードを操作しています。RTD API FlexCAN_Ip_Send()およびFlexCAN_Ip_AbortTransfer()を使ってFlexCANのメッセージバッファ中止送信機能をテストしています 。 私のテストでは、中止機能が期待どおりに動作していません。参考資料として、プロジェクトファイル、MEX設定ファイル、およびテストコードを添付しました。 以下の3点について、ご指導いただければ幸いです。 1. 複数の送信メッセージバッファの中止 最初のテストでは、複数のメッセージバッファを使用してメッセージを送信し、その後、それらすべてのバッファに対して中止要求を発行します。テストコードは以下のとおりです。 /* Transmit messages using MB0 to MB39. */ for (uint8_t lMb_u8 = 0U; lMb_u8 < 40U; lMb_u8++) { FlexCAN_Ip_Send( INST_FLEXCAN_0, lMb_u8, &tx_info, 0x123U, &dummyData[0] ); } /* Request abort for MB0 to MB39. */ for (uint8_t lMb_u8 = 0U; lMb_u8 < 40U; lMb_u8++) { FlexCAN_Ip_AbortTransfer( INST_FLEXCAN_0, lMb_u8 ); } すべての送信要求は同じCAN ID 0x123を使用しますが、メッセージバッファのインデックスは0から39まで変動します。 MCR [AEN]ビットは1に設定されており、アボートメカニズムが有効になっています。しかし、メッセージバッファに対してアボート要求を発行しているにもかかわらず、PCAN-Viewにはすべてのメッセージが表示されてしまいます。 私の予想では、送信がまだ保留中のメッセージは中止されるべきであり、すでに送信が完了したメッセージは中止できないはずです。 以下の点を明確にしていただけますか? 複数のメッセージバッファで送信を行い、その後保留中の送信をすべて中止する場合、推奨される手順はありますか? 2. 単一のメッセージバッファを使用して送信を中止する 問題を切り分けるために、メッセージバッファ8のみを使用する2つ目のテストを作成しました。 順序は次のとおりです。 MB8の場合はFlexCAN_Ip_Send()を呼び出してください。 FlexCAN_Ip_GetTransferStatus()を使用して転送ステータスを確認します。 送信が成功し、転送ステータスがFLEXCAN_STATUS_BUSYの場合は、 MB8 に対してFlexCAN_Ip_AbortTransfer()を呼び出します。 転送ステータスを再度読み取り、ハードウェアレジスタを検査してください。 送信APIはFLEXCAN_STATUS_SUCCESSを返し、中止前のステータスチェックではFLEXCAN_STATUS_BUSYが報告されます。しかし、中止APIはFLEXCAN_STATUS_NO_TRANSFER_IN_PROGRESS ( 0x5 )を返します。 RTD実装のデバッグ中に、戻りステータスがFlexCAN_AbortTxTransfer()内の以下の条件から発生していることがわかりました。 FlexcanMbConfig = *FlexcanMb; /* Check if the MBs have been safely inactivated */ if ((uint32)FLEXCAN_TX_INACTIVE == ((FlexcanMbConfig & FLEXCAN_IP_CS_CODE_MASK) >> FLEXCAN_IP_CS_CODE_SHIFT)) { /* Transmission has occurred */ Result = FLEXCAN_STATUS_NO_TRANSFER_IN_PROGRESS; } 現在の構成では、メッセージバッファはメモリブラウザーの0x40304100にあります。中止要求後、 CODEフィールドには、期待される中止コード0x9ではなく、非アクティブ/送信済み状態に対応する0x8が表示されます。 また、 FlexCAN_AbortTxTransfer()内の次のステートメントにブレークポイントを設定しました。 TimeStart = OsIf_GetCounter( FLEXCAN_IP_SERVICE_TIMEOUT_TYPE ); この時点で、 IFLAG1[8]が設定されます。 現在のRTD実装では、アボートシーケンスはメッセージバッファのCODEフィールドにFLEXCAN_TX_ABORT ( 0x9 )を書き込み、対応するメッセージバッファの割り込みフラグをポーリングします。フラグは、アボートヘルパーが戻った後、FlexCAN_Ip_AbortTransfer()内のFlexCAN_ClearMsgBuffIntStatusFlag( )によってクリアされます。 私が懸念しているのは、中止要求が発行される前に、既に完了した送信によって割り込みフラグが設定されている可能性があることです。もしそうであれば、ポーリングループは新たな中止完了イベントを待つことなく即座に終了できます。しかし、これが私の問題の原因であるかどうかはまだ確認できていません。 3. 自動復旧が無効になっている場合のバスオフ復旧 別のテストでは、自動バスオフリカバリーを無効にし、アプリケーションでリカバリーを処理しようとしています。 バスオフ条件が発生した場合、現在の方法はFlexCANドライバを初期化解除し再初期化することです。しかし、このシーケンスの後、その後のFlexCAN_Ip_Send()呼び出しはメッセージを送信できません。 自動バスオフ回復が無効化された場合の推奨回収手順についてアドバイスいただけますか? 具体的には: 初期化解除と再初期化だけで、FlexCANコントローラをバスオフから復元できますか? 初期化解除前に、未処理のTXメッセージバッファをすべて中止または明示的にクリアする必要がありますか? 再初期化後、送信前にメッセージバッファを再度設定または初期化する必要がありますか? コントローラが再び送信する前に、ESR1ステータス、MCR、CTRL1[BOFFREC]、割り込みフラグ、またはRTD内部転送状態に関わる必要な手順はありますか? バスオフ状態からの復旧において、古いTX転送やメールボックスの状態が後続の送信を妨げないようにするための推奨手順は何ですか? テストプロジェクト、MEXの設定、関連するソースコードを添付して、設定やAPIの使用状況を確認しています。 Re: S32K312 FlexCAN – TX Message Buffer Abort with AEN Enabled and Bus-Off Recovery Using RTD 7.0.1 こんにちは@Yogs あなたの3つの質問に対する回答を以下にまとめました。 (内容がかなり多く、フォーマットも少し乱雑です。) Q1。「フレックスカン・アボート」に関する質問について。 まず、FlexCANのアボートメカニズムは、保留状態にあるTXメッセージバッファ(MB)に対してのみ有効であることを理解する必要があります。 最初のテストについて: MB0が最初に起動されます。 FlexCANはスキャンを開始し、MB0の内容を送信します。 一方、CPUはMB1、MB2、…、MB39の構成を続行します。 CPUが最終的に2回目のループに到達する頃には、最初のMB群はすでに送信を完了している可能性が高い。 低バス負荷、ACK受信の成功、そしてクラシックCAN特有の8バイトペイロードなどの条件下では、 40フレームの送信は非常に速く完了できます。 2回目のテストについても同様で、バスがアイドル状態であれば、FlexCANはすでに送信を完了している可能性があります。 CPUが中止コマンドを実行する前に。 したがって、あなたの2つのテストはいずれも何も証明していません。 中止操作を適切に検証するには、CPUの実行速度に頼るのではなく、意図的に明確な「保留」期間を作成する必要があります。 例: 別のCANノードに、より優先度の高いIDでバスを継続的に占有するように設定し、ターゲットメッセージバッファ(MB)を保留状態に保ち、その後アボートをトリガーします。 Q2: なぜシングルMBテストは最初はBUSYで返却されるのに、中止リクエスト時にNO_TRANSFER_IN_PROGRESS戻るのでしょうか? 両者の間で短時間の状態不一致が生じることがあります: 「FlexCAN_Ip_Send()」はRTD(ランタイムドライバー)の状態を「BUSY」に設定します。 ハードウェアが送信を開始します。 フレームの送信が完了すると、ハードウェアはMB(メッセージバッファ)CODEを`0x8`に更新し、`IFLAG`を設定します。 TX IRQ ハンドラがまだ実行されていない場合、またはブレークポイント デバッグ中にシステムが一時停止されている場合、RTD 状態構造は `BUSY` のままになる可能性があります。 この時点で「中止」操作が呼び出されます。 内部的には、`Abort`関数はMB CODEを読み取り、それが既に`0x8`であることを確認します。 `FLEXCAN_STATUS_NO_TRANSFER_IN_PROGRESS` を返します。 したがって、`GetTransferStatus() = BUSY` かつ `FlexCAN_Ip_AbortTransfer() = NO_TRANSFER_IN_PROGRESS` となります。 それらは必ずしも矛盾するものではない。 前者はソフトウェアの簿記を反映している場合があり、後者は実際のハードウェアコードを確認するものです。 Q3。バス離脱回収 CANモジュールを再初期化することで「バスオフ」状態から回復することは十分に可能です。 手動で「バスオフ」復旧を行うには、アプリケーション層がまずデータ伝送を停止し、保留中の送信(TX)リクエストをすべてキャンセルまたは破棄しなければなりません(中止)。 その後、コントローラは完全な初期化解除と再初期化を受けなければなりません。 その後、アプリケーション層受信(RX)メッセージバッファ(MB)を再構成し、古いメッセージバッファフラグ、エラーフラグ、ソフトウェア伝送状態をクリアする必要があります。 送信を再開する前に、アプリケーション層はコントローラが「フリーズ」または「準備不足」状態を解除したことを確認し、送信メッセージバッファ(TX MB)や「送信準備完了」(RTD)の状態が「混雑」状態に残っていないことを確認する必要があります。 テストが失敗したとおっしゃっていたので、おそらく上記の手順を見落としていたのでしょう。添付ファイルにはバス離脱の復旧手順に関する情報は見つかりませんでした。まだ疑問があれば、テストプロジェクトを私に共有してください。確認のために確認します。 Re: S32K312 FlexCAN – TX Message Buffer Abort with AEN Enabled and Bus-Off Recovery Using RTD 7.0.1 Q1について、私の試験条件を明確にしたいと思います。 CANボーレート は 500 kbps で 、8バイトのペイロードを持つクラシックCANフレームはバス 上で約 300μs の送信時間を要します。 私のテストでは、まずそれぞれのTXメッセージバッファを通してメッセージを送信し、その後すぐに中止関数を実行します。中止関数は対応するメッセージバッファを順に処理し、それぞれのバッファに対してFlexCAN_AbortTxTransfer()を呼び出します。 したがって、アボート要求は送信リクエストの直後にそれぞれのメッセージバッファに対して発行されており、意図的に遅延しているわけではありません。 最初の数通のメッセージは、中止ループが到達する前に送信が完了している可能性があることを理解しています。しかし、おおよその送信時間と送信されたメッセージ数を考慮すると、後続のメッセージバッファの一部は、中止要求が発行された時点でまだ送信待ちの状態になっていると予想されます。 保留中のメッセージが中止されるのを防ぐ他のハードウェア条件やタイミング要因があるのか、教えていただけますか? Re: S32K312 FlexCAN – TX Message Buffer Abort with AEN Enabled and Bus-Off Recovery Using RTD 7.0.1 こんにちは@Yogs これは、コード内の「abort MB」のデフォルトのシーケンスです。 for(uint8_t lMb_u8 = 0; lMb_u8 < 40; lMb_u8++) { FlexCAN_Ip_AbortTransfer(INST_FLEXCAN_0,lMb_u8); } 「40 - 1Mb_u8」に変更しました。 for(uint8_t lMb_u8 = 0; lMb_u8 < 40; lMb_u8++) { FlexCAN_Ip_AbortTransfer(INST_FLEXCAN_0,40 - lMb_u8); } 以下は私のテスト結果です。 受信したデータは2フレームのみで、その他のMBはすべて正常に中断されました。 この検証結果は、私が以前立てた仮説を裏付けるのに十分です。つまり、あなたが「MBの中止」操作を実行する前に、現在のMBは既に正常に送信されていたということです。 Re: S32K312 FlexCAN – TX Message Buffer Abort with AEN Enabled and Bus-Off Recovery Using RTD 7.0.1 こんにちは、 ご説明ありがとうございます。ご指摘の内容を理解し、逆順の中止シーケンスをテストしました。ご指摘のとおり、この方法の方がうまくいきます。バス上で受信するフレームは2つだけで、残りのメッセージは正常に破棄されます。 しかし、その行動に関していくつか疑問があります。 1. なぜ逆順中絶が必要なのですか? この2つのループは、実行順序が異なるだけで、本質的には同じ操作を実行しているのではないでしょうか? なぜ最も高い郵便受けインデックスから中止を開始することがこれほど大きな違いを生むのか説明してもらえますか?これは、FlexCANが内部的にTXメッセージバッファをスキャンまたは選択する順序に関係していますか? 逆順の中止処理はハードウェア要件ですか、それとも保留中のメッセージを中止する確率を高めるための推奨手法に過ぎませんか? 2. 単一のメッセージバッファを中止する場合はどうでしょうか? また、メッセージバッファを1つだけ使用して、中止機能のテストも行いました。 FlexCAN_Ip_Send( INST_FLEXCAN_0、 0U、 &tx_info、 0x123U、 &dummyData[0] ); FlexCAN_Ip_AbortTransfer(INST_FLEXCAN_0, 0U); FlexCAN_Ip_Send() の実行から FlexCAN_Ip_AbortTransfer() の呼び出しまでの時間をベンチマークしました。所要時間は約10.3マイクロ秒です。 しかし、この短い間隔でもメッセージはCANバス上で送信されます。 PCAN-Viewからの優先度の高いメッセージを使用してバス負荷を適度に維持しましたが、単一メッセージによるアボートは依然として成功しません。 比較のために、複数のメッセージバッファを使用して送信し、その後逆順にそれらを中止した場合、シーケンスの測定時間は約9.3ミリ秒であり、残りのメッセージは中止される一方で、バス上で受信されるフレームは2つだけです。 これは別の疑問を提起します。送信APIが応答を返してから約10.3マイクロ秒後に中止要求が発行された場合でも、単一メッセージの中止は失敗するのに対し、複数メールボックスの逆順アプローチではほとんどのメッセージが正常に中止されるのはなぜでしょうか? アボートリクエストが発行される前に、単一のメッセージがすでに内部のTXシリアルメッセージバッファ(TX SMB)に転送されている可能性はありますか? ハードウェアがこのシナリオをどのように処理するのか、また、単一メッセージバッファのアボートメカニズムを確実にテストする方法について、ご説明いただけると幸いです。 Re: S32K312 FlexCAN – TX Message Buffer Abort with AEN Enabled and Bus-Off Recovery Using RTD 7.0.1 こんにちは@Yogs なぜ逆順での中止操作が必要なのですか? それが必須だと言いたかったわけではありません。 これらの比較テスト結果を通して、中止しようとしている特定のメッセージバッファ(MBn)が、実際には既に正常に送信されているため、中止が失敗する可能性があることを説明します。 メッセージバッファをMB0、MB1、…、MB39まで順にデータで埋め、その後MB0から中止操作を実行すると、対象のMBが既に正常に送信されている可能性があります。 別のアプローチを考えてみましょう。MB39からアボートを開始したらどうなるでしょうか?これにより、インデックス番号が大きいメッセージバッファが優先的に処理中止されることが保証されます。
記事全体を表示
PCA9431HK 数据手册和 AN12639 可用于 NFC 充电监听器设计 即使登录后,产品页面上也看不到 PCA9431 数据表和 AN12639(CRN120 数据表中引用的)。您能否分享一下这些信息,或者告诉我们如何申请访问权限? 问题: 1.PCA9431 的输出是否稳定在 5V?在约 0.7W 的功率下,可提供的输出电流是多少? 2. 是否有 CRN120 加 PCA9431 监听器以及配套的 CTN730 或 CTN530 发射器的参考原理图或评估套件? 3. 对于直径约为 10 至 15 毫米的线圈,推荐的监听线圈尺寸和电感值是多少? 哪里可以下载**哔——**数据手册和文档? Re: PCA9431HK datasheet and AN12639 access for NFC charging listener design 你好, 数据手册和应用说明需要签署保密协议。 请访问以下网页: 安全访问权限 | 恩智浦半导体   请先按照步骤 2 签署保密协议。 获得 NDA 编号后,请按照步骤 3点击“提交您的请求”。   那么请申请NFC换位产品的最高访问权限。   请在“申请访问权限的原因”一栏中填写您的项目详情和保密协议编号。
記事全体を表示
PCA9431HKデータシートおよびNFC充電リスナー設計のAN12639アクセス PCA9431のデータシートとCRN120データシートに参照されたAN12639は、ログインしても製品ページには表示されません。それらを共有したり、アクセス申請の方法を教えてもらえますか? 質問: 1.PCA9431出力は固定5Vに調整されているのか、また約0.7Wで利用可能な出力電流はどれくらいですか? 2. CRN120プラスPCA9431リスナーと対応するCTN730またはCTN530トランスミッタの参考回路図や評価キットはありますか? 3. 約10〜15mmのコイルに推奨されるリスナーコイルのサイズとインダクタンスは? **ピー音**のデータシートとドキュメントはどこで切り出せますか? Re: PCA9431HK datasheet and AN12639 access for NFC charging listener design こんにちは、 データシートとアプリケーションノートにはNDAが必要でした。 こちらのウェブページにアクセスしてください。 セキュアアクセス権 |NXP Semiconductors   まず、手順2に従ってNDAに署名してください。 NDA番号を取得したら、ステップ3に従って「リクエストを送信する」をクリックしてください。   ぜひNFCチェンジ製品の最高アクセス権を申請してください。   アクセス権を申請する理由欄に、プロジェクトの詳細とNDA番号を入力してください。
記事全体を表示
为什么 imx7d 依赖于 imx6q 最近,我在尝试减小版本中的内核大小时发现,`busfreq-imx.c` 依赖于 `platsmp.c`。文件用于定义 `scu_base` 和 `imx_smp_ops`。 但不知何故,imx7d 对编译 `platsmp` 的支持已被提交移除。 ``` 撤销“ARM:imx:为imx7d添加smp支持” 这将撤销提交 e34645f45805d8308866de7b69f117f554605bb6。 NXP 供应商树中未使用此功能。 签字人:董爱生 ``` 下面的提交添加了厂商特定的总线频率实现,但它没有在 Makefile 中选择 platsmp。 ``` Arm:imx:添加 i.MX7D 电源管理单元支持 此补丁增加了对 i.MX7D 电源管理单元的支持,包括 低功耗待机,FastMix 关闭时进入睡眠状态,A7-M4 AMP 电源 管理单元支持。 签字人:Anson Huang [爱生:删除重复的 imx7d_init_late 定义] 签字人:董艾生 [ Leo:已更新以符合 a2faac398 的要求(“使用 .arch 指令而不是汇编器命令行标志” ] 签字人:李阳 ``` 是我遗漏了什么,还是电路板支持包中存在某种隐藏的bug? 我使用的是 6.18.37-2.1.x 版本。我的版本中使用了电路板支持包。   i.MX7 双核 疑似软件缺陷 Re: why imx7d depends on imx6q 你好, 这似乎是源代码中的一个漏洞。 您能否使用之前的配置作为临时解决方案,看看是否能解决问题? 顺祝商祺! Re: why imx7d depends on imx6q 是的,目前我要么需要在 defconfig 中选择一个 imx6 设备,要么应用下面的补丁; ``` diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile 索引 2f22af122c6e..cdc66bdaba1c 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -44,7 +44,7 @@ obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o obj-$(CONFIG_HAVE_IMX_SRC) += src.o obj-$(CONFIG_HAVE_IMX_DDRC) += ddrc.o obj-$(CONFIG_HAVE_IMX_MU) += mu.o -ifneq ($(CONFIG_SOC_IMX6)$(CONFIG_SOC_LS1021A),) +ifneq ($(CONFIG_SOC_IMX6)$(CONFIG_SOC_LS1021A)$(CONFIG_SOC_IMX7D_CA7),) obj-$(CONFIG_SMP) += headsmp.o platsmp.o obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o endif ``` 如果能在下一个 电路板支持包。 版本中修复这个问题就太好了。
記事全体を表示
MC705J1ACDWE 代金引換の確認が必要です ネタバレ (ハイライトして読む) MC705J1ACDWE製品は販売終了(EOL)となりました。この製品のウェハ拡散位置(COD)をご確認いただけますでしょうか。よろしくお願いいたします。 MC705J1ACDWE製品は販売終了(EOL)となりました。この製品のウェハ拡散位置(COD)をご確認いただけますでしょうか。よろしくお願いいたします。 回复: MC705J1ACDWE Need comfirm COD ご返信とご支援ありがとうございます。 さらに、別の情報源から入手した元のラベル情報には「Diffused In:TH」と記載されています。この情報を使って確認することは可能でしょうか? Re: MC705J1ACDWE Need comfirm COD ご不便をおかけし申し訳ありません。この終末期/廃止型ファミリの部品番号に関する情報は提供できません。 よろしくお願いいたします。 回复: MC705J1ACDWE Need comfirm COD 情報源の確認を手伝ってもらえますか? この問い合わせについて、製品販売代理店にお問い合わせください。これにより、対応するCODを見つけるのに役立ちます。 よろしくお願いいたします。
記事全体を表示
MC705J1ACDWE Need comfirm COD Spoiler (Highlight to read) MC705J1ACDWE 这个产品已经EOL,请帮忙确认一下此产品的晶圆扩散地(COD),谢谢。 MC705J1ACDWE 这个产品已经EOL,请帮忙确认一下此产品的晶圆扩散地(COD),谢谢。 回复: MC705J1ACDWE Need comfirm COD 感谢您的回复和支持。 另外,我从其他方面拿到一个原厂的标签信息,看到Diffused In:TH,我这边还是可以按照这个进行确认,对吧? Re: MC705J1ACDWE Need comfirm COD 很抱歉给您带来不便,目前没有关于此停产/已淘汰系列零件编号的信息可以分享。 顺祝商祺! 回复: MC705J1ACDWE Need comfirm COD 您能帮我们确认一下您的消息来源吗? 请您联系您的产品代理商以获取有关此询价的更多信息?这样可以帮助您找到对应的货到付款方式。 顺祝商祺!
記事全体を表示
imx7dがimx6qに依存する理由 最近、ビルドのカーネルサイズを小さくしようとしていたところ、`busfreq-imx.c`が`platsmp.c`に依存していることを発見しました。`scu_base`と`imx_smp_ops`の定義ファイル。 しかし、なぜかimx7dによる「platsmp」コンパイルのサポートはコミットによって削除されています ``` 「ARM: imx: imx7dにSMPサポートを追加」に戻す これはコミット e34645f45805d8308866de7b69f117f554605bb6 を元に戻すものです。 NXPのベンダーツリーでは使用されていません。 署名者: Dong Aisheng 「`」 また、ベンダー固有の busfreq 実装は下記のコミットで追加されていますが、makefile で platsmp を選択していません。 ``` Arm: imx: i.MX7Dのパワーマネージメントサポートを追加 このパッチでは、i.MX7Dのパワーマネージメントサポートが追加され、以下の内容が含まれています。 低消費電力アイドル、FastMixオフでサスペンド、A7-M4 AMP パワー マネージメントサポート。 署名者: Anson Huang [Aisheng: 重複しているimx7d_init_late定義を削除] 署名者: Dong Aisheng [Leo: a2faac398("アセンブラのコマンドラインフラグの代わりに.archディレクティブを使用する")に合わせて更新しました] 署名者: Li Yang 「`」 何か見落としているのでしょうか、それともこれはBSPの隠れたバグなのでしょうか? 私は6.18.37-2.1.xを使用しています。私のビルドにおけるBSP i.MX7Dual ソフトウェア不具合の疑い Re: why imx7d depends on imx6q こんにちは、 これはソースコードのバグのようです。 以前の設定を使って回避策を試してみて、問題が解決するか試してみることはできますか? よろしくお願いいたします。 Re: why imx7d depends on imx6q はい、今はdefconfigでimx6デバイスを選択するか、下記のパッチを適用する必要があります。 ``` diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile インデックス2F22af122C6e..CDC66BDA1C 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -44,7 +44,7 @@ obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o obj-$(CONFIG_HAVE_IMX_SRC) += src.o obj-$(CONFIG_HAVE_IMX_DDRC) += ddrc.o obj-$(CONFIG_HAVE_IMX_MU) += mu.o -ifneq ($(CONFIG_SOC_IMX6)$(CONFIG_SOC_LS1021A),) +ifneq ($(CONFIG_SOC_IMX6)$(CONFIG_SOC_LS1021A)$(CONFIG_SOC_IMX7D_CA7),) obj-$(CONFIG_SMP) += headsmp.o platsmp.o obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o endif 「`」 次のBSPで修正されると本当に嬉しいです。
記事全体を表示
フォーマット済みキースロットサイズよりも短いキーをインポートした場合の HSE の動作 こんにちは、 HSE(健康・安全・環境)に関する行動について質問があります。 HSE_SRV_ID_EXPORT_KEYでインポートされる鍵長が、HSE_SRV_ID_FORMAT_KEY_CATALOGSでキーカタログをフォーマットする際に指定された鍵長より小さい場合、その鍵を使った暗号化/復号、MAC生成、署名生成/検証などの暗号操作は信頼できるとみなせるのでしょうか? 例えば、128ビットのAESキーが256ビット用にフォーマットされたAESキースロットにインポートされた場合、そのキーを使ったAES-128の暗号化/復号、CMAC生成、PBKDF2の操作が正しく確実に動作することが期待できますか? 現在、S32K358_HSE_FW_2.40.0を使用しています。また、インポートされたキーがキーカタログのフォーマットで指定されたキー長より短い場合、HSEファームウェアのバージョン間やHSE_B、HSE_M、HSE_H間で挙動が異なるのかも明確にしていただけると助かります。 よろしくお願いします。 Re: HSE Behavior When Importing a Key Shorter Than the Formatted Key Slot Size こんにちは、 @wodudwo さん。 キーグループは、そのグループに定義された最大キーサイズより小さいキーを含むことがあります。これはHSEサービスAPIリファレンスマニュアルのhseFormatKeyCatalogsSrv_t説明に明記されています。 特定のタイプのすべての鍵に対して最大鍵サイズを持つ単一の鍵グループを作るか、異なる鍵サイズごとに複数のグループを作成することができます。2つ目の選択肢は、カタログ容量が限られて多くのキーが必要な場合に好ましい場合があります。なぜなら、無駄なスペースを減らし、利用可能なキーカタログメモリをより効率的に利用できるからです。 この動作は、すべてのHSEファームウェアバージョンおよびHSEモジュールバリアント(B/M/H)で一貫しています。 よろしくお願いいたします。 ルーカス
記事全体を表示
LPC55S28 ISP_CMD_EN は ISP コマンドを無効にしません こんにちは、 私はCMPAとCFPA設定が付いたLPC55S28 MCUを持っています。以下のコマンドを使用して、Python経由でblhostからこれらの値を直接読み取って取得しました。つまり、これらは実際のMCUから直接来たものです。これはMCUのフルパワーサイクル後のことです。 CMPAデータはUSB経由で読み取られます。 uv run Python -m spsdk.apps.blhost -u 0x3972,0x3333 read-memory 0x0009E400 512 -f cmpa_dump.bin CMPAをyamlにパースし、 UV run Python -m spsdk.apps.pfr parse -f lpc55s28 -t cmpa -b cmpa_dump.bin -o parsed_cmpa.yaml そして、CFPAについても住所は異なるものの同様のことが行われる。私はアドレス0x9DE00からCFPAを読み取りました。これはおそらくスクラッチバージョンだと思います。しかし、スクラッチの場合、CMPA_PROG_IN_PROGRESS がゼロ以外の値を読み取るという点を除けば、ping と pong は一致しています。でも、0x00はピンポンとトンのためです。 以下に、添付されているファイルの概要を示します。詳細は全文ファイルを添付しています CMPA:ピン、DFLT NIDEN = USE_DAP、障害 DEGEN = USE_DAP、無効化 TAPEN = USE_DAP、無効化 ISP_CMD_EN = USE_DAP、無効化 FA_ME_CMD_EN = FIXED_STATE、有効 SEC_BOOT_EN = ENABLE_0 CFPA:PIN、DFLT NIDEN = USE_DAP、障害 DEGEN = USE_DAP、無効化 TAPEN = USE_DAP、無効化 ISP_CMD_EN = USE_DAP、無効化 FA_ME_CMD_EN = FIXED_STATE、有効 私の理解では、これらの設定ではblhostを使用してメモリを読み取ることはできないはずです。CMPA、CFPA、アプリケーションフラッシュ、アプリケーションRAMを読み取れ、DAP認証なしでblhost経由で実行ファイルを全てダンプできます。 質問: 1.ISP_CMD_ENが無効になっていると、内部メモリへの読み書きができないということですか?PFRかアプリケーションメモリのいずれかです。安全な.sbファイルを送信する機能はまだ必要ですブートローダーにファイルを転送する必要がある。 2. ISP_CMD_ENは、ブートローダー経由でUSBから.SBファイルをロードする機能を無効にしますか? 3. .SBファイルを使用したUSBブートローダーの機能を維持しつつ、ISPコマンドによるメモリへの読み書き機能を無効にするには、どのような設定が必要ですか? 4. なぜMCUはCMPAやCFPAで無効になっているのに、blhost ISPコマンドを許可しているのでしょうか? こちらのリンク先のフォーラム投稿を読みました。 https://community.nxp.com/t5/LPC-Microcontrollers-Knowledge/LPC55-Disable-ISP-and-SWD-to-utilize-code-protection/ta-p/1654157 しかし、設定ではISPが完全に無効になっており、ブートローダーも完全に無効になっています。ISP_CMD_ENが無効になっているにもかかわらず、なぜ私の設定でblhost経由でISPコマンドが許可されているのか、そのフォーラムの投稿には説明がないと思います。 Re: LPC55S28 ISP_CMD_EN not disabling ISP commands こんにちは、 @guitardenver 重要な点は、ISP_CMD_EN はすべての blhost コマンドに対するグローバルな有効/無効ビットではないということです。これは「Debug Mailbox Enter ISP Mode」コマンドでISPモードに入力できるかどうかを制御します。デバイスが別の許可されたブートパスを介してROM ISPに入ると、USB blhostコマンドはROMブートローダーによって個別に処理されます。 1. メモリの読み書き: ISP_CMD_EN を無効にしても、ReadMemory や WriteMemory は無効になりません。これらのコマンドは、保護されていないメモリにもアクセス可能です。 2. SB ファイルのダウンロード: ISP_CMD_EN は ROM ReceiveSBFile コマンドを直接無効にしません。したがって、これはUSB SBファイルの更新を制御するものとして扱うべきではありません。 3. 生のメモリアクセスをブロックしながらSB更新:LPC55S28リファレンス・マニュアルによると、ReadMemoryおよびWriteMemoryコマンドを無効にしつつ、USB ISPをSB更新のために利用可能に保つ設定は現在存在しません。 4. blhost がまだ機能する理由: この動作は、必ずしも CMPA/CFPA 設定が無視されていることを意味するものではありません。デバイスは既にROM ISPに入っているが、ISP_CMD_ENはISPへの別のパスを制御する。 BR ハリー Re: LPC55S28 ISP_CMD_EN not disabling ISP commands こんにちは、ハリーさん。 ISP_CMD_ENの役割を明確にしていただき、またROM ISPハンドラが一度起動されるとコマンドレベルのフィルタリング機能がないことを確認していただき、ありがとうございます。 当初の設計上の前提は、LPC55S28の認証済みROMブートローダーが、セカンダリのフラッシュブートローダーを必要とせずに、USB経由で(署名済みSB2経由)本番現場での更新インターフェースとして機能するというものでした。1コンテナを使わずに。しかし、あなたの返信からすると、USB ROM ISPインターフェースを公開することで、実質的にメモリのバックドアが広く開かれているようです。物理的なUSBアクセス権があれば、誰でも生の読み取りメモリ、書き込みメモリ、フラッシュ消去領域コマンドを発行できます。 Secure Bootは変更されたコードや署名されていないコードの実行を防ぎますが、攻撃者は現場で暗号化されていないフラッシュIPやプローブSRAMをダンプすることが可能です。 それを踏まえ、 NXPがお客様にこれを安全な商用製品にどのように展開することを期待しているのか、いくつか具体的な質問があります。 PRINCE + Open USB ISP: もしアプリケーション全体でPRINCEフラッシュ暗号化を有効にして静止時のIP保護をした場合、 NXPは現場でUSB ISPを有効にしておくことについてどのようなセキュリティ立場を取っていますか? 具体的には、 ROMブートローダー内で内部SRAMへの任意の読み書きアクセスは、鍵を漏らしたりブートロジックを回避したりする現実的な攻撃対象になるのでしょうか?もしそうでなければ、私が取るのはこの方法だと思います。 推奨されるフィールドアップデートアーキテクチャ:露出したUSBポートを介してROM ISPをアクティブにしたままにすることがセキュリティ上のアンチパターンとみなされる場合、 NXPが推奨するフィールドアップデートのアーキテクチャは何ですか? NXPは、ROM ISPを完全に無効化( DEFAULT_ISP_MODE = DISABLE)し、ROM IAP APIを使用してSBコンテナを消費するカスタムデュアルバンク/セカンダリブートローダーを実装することを推奨していますか? Re: LPC55S28 ISP_CMD_EN not disabling ISP commands こんにちは、 @guitardenver 追加のご質問ありがとうございます。AN12283 – LPC55Sxx セキュアブート、特にセクション5、5.6、5.7を参照することをお勧めします。 AN12283では、セキュアブート、ROM ISPのreceive-sb-fileコマンドによるSB2/SB2.1ファームウェアのアップデート、およびPRINCEフラッシュ暗号化の使用方法について説明しています。また、PRINCEキーはオンチップPUFからソフトウェアアクセスできない内部ハードウェアバスを通じて提供されるとも記載されています。 重要な点の1つは、実際のセキュアブートの設定を確認することです。AN12283によると、SEC_BOOT_EN = 00はプレーンイメージを意味し、01、10、11は署名付きイメージを意味します。以前のSPSDK出力でSEC_BOOT_EN = ENABLE_0と表示されていたので、まずはその生の値を確認することをお勧めします。 セキュアブート、SB2.1アップデート、およびPRINCE構成の詳細については、AN12283を参照してください。 LPC55Sxx セキュアブート BR ハリー
記事全体を表示
why imx7d depends on imx6q Recently while trying to reduce kernel size on my builds i discovered that `busfreq-imx.c` is depending on `platsmp.c` file for definitions of `scu_base and `imx_smp_ops`. But for some reason imx7d support for compiling `platsmp` is removed by commit ``` Revert "ARM: imx: add smp support for imx7d" This reverts commit e34645f45805d8308866de7b69f117f554605bb6. It's not used by NXP vendor tree. Signed-off-by: Dong Aisheng ``` and vendor specific busfreq implementation is added by below commit but it's not selecting platsmp in makefile. ``` ARM: imx: add i.MX7D power management support This patch adds i.MX7D power management support, including low power idle, suspend with FastMix off, A7-M4 AMP power management support. Signed-off-by: Anson Huang [ Aisheng: remove duplicated imx7d_init_late definition ] Signed-off-by: Dong Aisheng [ Leo: updated to align with a2faac398("use .arch directives instead of assembler command line flags" ] Signed-off-by: Li Yang ``` Am i missing something or is this some hidden bug in BSP ? I'm using 6.18.37-2.1.x BSP on my builds   i.MX7Dual Suspected Software Defect Re: why imx7d depends on imx6q Hello, This seems to be a bug in source code. Could you use a previous configuration as a workaround to see if solves the issue? Best regards. Re: why imx7d depends on imx6q Yes right now i either have to select an imx6 device in defconfig or apply the patch below; ``` diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index 2f22af122c6e..cdc66bdaba1c 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -44,7 +44,7 @@ obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o obj-$(CONFIG_HAVE_IMX_SRC) += src.o obj-$(CONFIG_HAVE_IMX_DDRC) += ddrc.o obj-$(CONFIG_HAVE_IMX_MU) += mu.o -ifneq ($(CONFIG_SOC_IMX6)$(CONFIG_SOC_LS1021A),) +ifneq ($(CONFIG_SOC_IMX6)$(CONFIG_SOC_LS1021A)$(CONFIG_SOC_IMX7D_CA7),) obj-$(CONFIG_SMP) += headsmp.o platsmp.o obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o endif ``` It would be really nice to have it fixed in next BSP
記事全体を表示
HSE Behavior When Importing a Key Shorter Than the Formatted Key Slot Size Hello, I have a question regarding HSE behavior. If the key length imported using HSE_SRV_ID_EXPORT_KEY is smaller than the key length specified when formatting the key catalog using HSE_SRV_ID_FORMAT_KEY_CATALOGS, can cryptographic operations using that key, such as encryption/decryption, MAC generation, and signature generation/verification, be considered reliable? For example, if a 128-bit AES key is imported into an AES key slot formatted for 256 bits, can AES-128 encryption/decryption, CMAC generation, and PBKDF2 operations using that key be expected to work correctly and reliably? I am currently using S32K358_HSE_FW_2.40.0. I would also appreciate it if you could clarify whether the behavior differs across HSE firmware versions or between HSE_B, HSE_M, and HSE_H when the imported key is shorter than the key length specified during key catalog formatting. Thank you. Re: HSE Behavior When Importing a Key Shorter Than the Formatted Key Slot Size Hi @wodudwo  A key group can contain a key that is smaller than the maximum key size defined for that group. This is explicitly stated in the HSE Service API Reference Manual in the description of hseFormatKeyCatalogsSrv_t. You can either have a single key group with the maximum key size for all keys of a given type, or create multiple groups for different key sizes. The second option may be preferable when the catalog space is limited and many keys are required, since it can reduce wasted space and use the available key catalog memory more efficiently. This behavior is consistent across all HSE firmware versions and HSE module variants (B/M/H). Regards, Lukas
記事全体を表示
导入长度小于格式化钥匙槽尺寸的钥匙时,HSE 的行为 你好, 我有一个关于健康、安全和环境行为方面的问题。 如果使用 HSE_SRV_ID_EXPORT_KEY 导入的密钥长度小于使用 HSE_SRV_ID_FORMAT_KEY_CATALOGS 格式化密钥目录时指定的密钥长度,那么使用该密钥进行的加密操作(例如加密/解密、MAC 生成和签名生成/验证)是否可靠? 例如,如果将一个 128 位 AES 密钥导入到格式化为 256 位的 AES 密钥槽中,使用该密钥的 AES-128 加密/解密、CMAC 生成和 PBKDF2 操作能否正常可靠地工作? 我目前使用的是 S32K358_HSE_FW_2.40.0。如果导入的密钥长度短于密钥目录格式化期间指定的密钥长度,那么能否说明一下,不同 HSE 固件版本之间,或者 HSE_B、HSE_M 和 HSE_H 之间的行为是否有所不同? 谢谢! Re: HSE Behavior When Importing a Key Shorter Than the Formatted Key Slot Size 嗨@wodudwo 密钥组可以包含小于为该组定义的最大密钥长度的密钥。HSE 服务 API 参考手册中 hseFormatKeyCatalogsSrv_t 的描述中明确说明了这一点。 你可以为给定类型的所有键创建一个最大键长键组,也可以为不同的键长创建多个键组。当目录空间有限且需要很多键时,第二种选择可能更可取,因为它可以减少浪费的空间并更有效地利用可用的键目录内存。 所有 HSE 固件版本和 HSE 模块变体(B/M/H)均表现出一致的这种行为。 此致, Lukas
記事全体を表示
LPC55S28 ISP_CMD_EN 未禁用 ISP 命令 你好, 我有一个 LPC55S28 MCU,附带 CMPA 和 CFPA 设置。我直接通过 python 使用 blhost 读取这些值,命令如下。所以这些数据直接来自实际的MCU。这是在MCU完全断电重启之后的情况。 通过USB接口读取CMPA数据。 UV run Python -m spsdk.apps.blhost -u 0x3972,0x3333 read-memory 0x0009E400 512 -f cmpa_dump.bin CMPA 解析为 yaml,且 UV run Python -m spsdk.apps.pfr parse -f lpc55s28 -t cmpa -b cmpa_dump.bin -o parsed_cmpa.YAML 然后,对于地址不同的 CFPA,情况也一样。我从地址 0x9DE00 读取了 CFPA,我认为这是临时版本。但除了 CMPA_PROG_IN_PROGRESS 读取到非零值之外,ping 和 pong 都匹配。但乒乓球的比赛就0x00了。 以下是附件全部文件的摘要。完整文件附上以获取更多细节 CMPA:PI,DLFT NIDEN = USE_DAP,残疾 DEGEN = USE_DAP,失效 TAPEN = USE_DAP,已停用 ISP_CMD_EN = USE_DAP,失效 FA_ME_CMD_EN = FIXED_STATE,启用 SEC_BOOT_EN = ENABLE_0 CFPA:PIN和DLT NIDEN = USE_DAP,残疾 DEGEN = USE_DAP,失效 TAPEN = USE_DAP,已停用 ISP_CMD_EN = USE_DAP,失效 FA_ME_CMD_EN = FIXED_STATE,启用 据我了解,在这种设置下,我应该无法使用 blhost 读取内存。我可以读取CMPA、CFPA、应用程序闪存和应用程序RAM,我可以通过blhost转储整个可执行文件,而无需DAP认证。 问题: 1.如果 ISP_CMD_EN 被禁用,是否意味着您无法读取和写入内部存储器?可以是 PFR 或应用程序内存。我仍然需要发送安全 .sb 文件的功能。不过,这些文件会被传输到引导加载程序。 2. ISP_CMD_EN 是否会禁用通过引导加载程序经由 USB 加载 .SB 文件的功能? 3. 我需要进行哪些设置才能保留使用 .SB 文件的 USB 引导加载程序功能,但禁用通过 ISP 命令读取和写入内存的功能? 4. 为什么我的MCU仍然允许blhost ISP命令,即使CMPA和CFPA已经禁用了该命令? 我已阅读此链接中的论坛帖子: https://community.nxp.com/t5/LPC-Microcontrollers-Knowledge/LPC55-Disable-ISP-and-SWD-to-utilize-code-protection/ta-p/1654157 但是设置中完全禁用了 ISP,这也会完全禁用引导加载程序。我认为那篇论坛帖子并没有解释为什么即使禁用了 ISP_CMD_EN,我的设置仍然允许通过 blhost 发送 ISP 命令。 Re: LPC55S28 ISP_CMD_EN not disabling ISP commands 嗨@guitardenver 关键在于 ISP_CMD_EN 不是所有 blhost 命令的全局启用/禁用位。它控制是否可以通过调试邮箱进入 ISP 模式命令。一旦设备通过另一条允许的启动路径进入 ROM ISP,USB blhost 命令将由 ROM 引导加载程序单独处理。 1. 内存读/写:禁用 ISP_CMD_EN 本身并不会禁用 ReadMemory 或 WriteMemory。这些命令仍然可以访问未受保护的内存。 2. SB 文件下载:ISP_CMD_EN 不会直接禁用 ROM ReceiveSBFile 命令。因此,不应将其视为 USB SB 文件更新的控制手段。 3. 阻止原始内存访问的同时进行 SB 更新:根据 LPC55S28 参考手册,目前没有配置可以在禁用 ReadMemory 和 WriteMemory 命令的同时保持 USB ISP 可用于 SB 更新。 4. 为什么 blhost 仍然有效:这种行为并不一定意味着您的 CMPA/CFPA 设置被忽略。该设备已进入 ROM ISP,而 ISP_CMD_EN 控制进入 ISP 的不同路径。 BR 哈里 Re: LPC55S28 ISP_CMD_EN not disabling ISP commands 嗨,哈里, 感谢您澄清了 ISP_CMD_EN 的作用,并确认 ROM ISP 处理程序一旦进入就缺少命令级过滤。 我们最初的设计假设是,LPC55S28 的认证 ROM 引导加载程序旨在作为生产现场通过 USB(经由签名的 SB2.1容器)进行更新的接口,而无需额外的闪存引导加载程序。然而,从您的回复来看,暴露 USB ROM ISP 接口实际上留下了一个完全开放的内存后门:任何拥有物理 USB 访问权限的人都可以发出原始的读取内存、写入内存和擦除闪存区域的命令。 虽然安全启动可以防止执行修改/未签名的代码,但攻击者仍然可以转储未加密的闪存 IP 或探测现场的SRAM 。 鉴于此,我有一些关于恩智浦希望客户如何在安全的商业产品中部署这项技术的具体问题: PRINCE + 开放式 USB ISP:如果我们启用 PRINCE 闪存加密来保护整个应用闪存中的静态 IP, NXP 对于在现场启用 USB ISP 的网络安全立场是什么?具体来说,在 ROM 启动加载程序内部对内部 SRAM 的任意读/写访问是否会构成实际的攻击面,从而导致密钥泄露或绕过启动逻辑?如果不会,那么我认为我会选择这条路。 推荐的现场更新架构:如果通过暴露的 USB 端口保持 ROM ISP 活动被认为是一种不安全的反模式,那么NXP 推荐的现场更新架构是什么? NXP 是否建议完全禁用 ROM ISP( DEFAULT_ISP_MODE = DISABLE )并使用 ROM IAP API 实现自定义双存储体/辅助引导加载程序来使用 SB 容器? Re: LPC55S28 ISP_CMD_EN not disabling ISP commands 嗨@guitardenver 感谢您提出的其他问题。我建议参考 AN12283 – LPC55Sxx 安全启动,特别是第 5、5.6 和 5.7 节。 AN12283 记录了安全启动、通过 ROM ISP receive-sb-file 命令进行 SB2/SB2.1 固件更新以及 PRINCE 闪存加密的使用。它还指出,PRINCE 密钥由片上 PUF 通过软件无法访问的内部硬件总线提供。 重要的一点是,要确认你的实际安全启动配置。根据 AN12283,SEC_BOOT_EN = 00 表示明文图像,而 01、10 和 11 表示签名图像。由于您之前的 SPSDK 输出显示 SEC_BOOT_EN = ENABLE_0,我建议您先检查其原始值。 有关安全启动、SB2.1 更新和 PRINCE 配置的详细信息,请参阅 AN12283。 LPC55Sxx 安全启动 BR 哈里
記事全体を表示
LPC55S28 ISP_CMD_EN not disabling ISP commands Hello,  I have an LPC55S28 MCU with the attached CMPA and CFPA settings. I got these value directly from reading via blhost via python with the commands below. So these came directly from the actual MCU. This was after a full power cycle of the MCU.  CMPA read via USB.  uv run python -m spsdk.apps.blhost -u 0x3972,0x3333 read-memory 0x0009E400 512 -f cmpa_dump.bin CMPA parse into yaml with uv run python -m spsdk.apps.pfr parse -f lpc55s28 -t cmpa -b cmpa_dump.bin -o parsed_cmpa.yaml Then the same thing for CFPA with different address. I read the CFPA from address 0x9DE00, which I think is the scratch version. But the ping and pong match other than the fact that the CMPA_PROG_IN_PROGRESS reads something non-zero for the scratch. But 0x00 for ping and pong. Below is a summary of the full files attached. Full files attached for more details CMPA: PIN, DFLT NIDEN = USE_DAP, DISABLED DEGEN = USE_DAP, DISABLED TAPEN = USE_DAP, DISABLED ISP_CMD_EN = USE_DAP, DISABLED FA_ME_CMD_EN = FIXED_STATE, ENABLED SEC_BOOT_EN = ENABLE_0 CFPA: PIN, DFLT NIDEN = USE_DAP, DISABLED DEGEN = USE_DAP, DISABLED TAPEN = USE_DAP, DISABLED ISP_CMD_EN = USE_DAP, DISABLED FA_ME_CMD_EN = FIXED_STATE, ENABLED From my understanding, with these settings, I should not be able to use blhost to read memory. I can read CMPA, CFPA, application flash, application RAM, I can dump my entire executable via blhost with no DAP authentication.  Questions: 1. If ISP_CMD_EN is disabled, does that mean you can not read and write to internal memory? Either PFR or application memory. I still need the ability to send secure .sb files to the bootloader though.  2. Does ISP_CMD_EN disable the ability to load .SB files via USB over the bootloader? 3. What settings do I need to keep USB bootloader functionality with .SB files, but disable the ability to read and write to memory over ISP commands? 4. Why is my MCU still allow blhost ISP commands even though the CMPA and CFPA have it disabled? I have read the forum post at this link: https://community.nxp.com/t5/LPC-Microcontrollers-Knowledge/LPC55-Disable-ISP-and-SWD-to-utilize-code-protection/ta-p/1654157 But the settings have it completely disable ISP, which disables the bootloader completely. I I don't think that forum post shows why my settings are still allowing ISP commands over the blhost, when the ISP_CMD_EN is disabled.  Re: LPC55S28 ISP_CMD_EN not disabling ISP commands Hi @guitardenver  The key point is that ISP_CMD_EN is not a global enable/disable bit for all blhost commands. It controls whether ISP mode can be entered through the Debug Mailbox Enter ISP Mode command. Once the device has entered ROM ISP through another permitted boot path, USB blhost commands are handled separately by the ROM bootloader. 1. Memory read/write: Disabling ISP_CMD_EN does not by itself disable ReadMemory or WriteMemory. These commands can still access memory that is not otherwise protected. 2. SB file download: ISP_CMD_EN does not directly disable the ROM ReceiveSBFile command. Therefore, it should not be treated as the control for USB SB-file updates. 3. SB update while blocking raw memory access: According to the LPC55S28 reference manual, there is currently no configuration that can keep USB ISP available for SB updates while disabling ReadMemory and WriteMemory commands. 4. Why blhost still works: This behavior does not necessarily mean your CMPA/CFPA settings are being ignored. The device has already entered ROM ISP, while ISP_CMD_EN controls a different path into ISP. BR Harry Re: LPC55S28 ISP_CMD_EN not disabling ISP commands Hi Harry, Thanks for clarifying the role of ISP_CMD_EN and confirming that the ROM ISP handler lacks command-level filtering once entered. Our original design assumption was that the LPC55S28's authenticated ROM bootloader was intended to serve as the production field update interface over USB (via signed SB2.1 containers) without needing a secondary flash bootloader. However, from your reply, it appears that exposing the USB ROM ISP interface effectively leaves a wide-open memory backdoor: anyone with physical USB access can issue raw read-memory, write-memory, and flash-erase-region commands. While Secure Boot prevents modified/unsigned code from executing, an attacker could still dump unencrypted flash IP or probe SRAM in the field. Given that, I have a few specific questions on how NXP expects customers to deploy this in a secure commercial product: PRINCE + Open USB ISP: If we enable PRINCE flash encryption across the entire application flash to protect IP at rest, what is NXP's security stance on leaving USB ISP enabled in the field? Specifically, does arbitrary read/write access to internal SRAM while inside the ROM bootloader present a realistic attack surface for compromising keys or bypassing boot logic? If not, this is the path I think I would take. Recommended Field-Update Architecture: If leaving ROM ISP active over an exposed USB port is considered an insecure anti-pattern, what is NXP's recommended architecture for field updates? Does NXP recommend disabling ROM ISP entirely (DEFAULT_ISP_MODE = DISABLE) and implementing a custom dual-bank / secondary bootloader using the ROM IAP API to consume SB containers? Re: LPC55S28 ISP_CMD_EN not disabling ISP commands Hi @guitardenver  Thanks for the additional questions. I would recommend referring to AN12283 – LPC55Sxx Secure Boot, especially Sections 5, 5.6 and 5.7. AN12283 documents the use of Secure Boot, SB2/SB2.1 firmware updates through the ROM ISP receive-sb-file command, and PRINCE flash encryption. It also states that the PRINCE keys are provided by the on-chip PUF through an internal hardware bus that is not software accessible. One important point is to confirm your actual Secure Boot configuration. According to AN12283, SEC_BOOT_EN = 00 means Plain image, while 01, 10, and 11 mean Signed image. Since your previous SPSDK output showed SEC_BOOT_EN = ENABLE_0, I recommend checking its raw value first. Please refer to AN12283 for the detailed Secure Boot, SB2.1 update, and PRINCE configuration. LPC55Sxx Secure Boot BR Harry
記事全体を表示
MCALサポートEBに関する問い合わせ こんにちは S32k3144マイクロコントローラのMCALサポートについてお尋ねしたいのでご連絡ください。このデバイスはEB(Elektrobit)の設定ツールによるMCAL実装をサポートしているのか、またはライセンスが必要なのか、ご説明いただけますか? 利用可能なスタックや互換性について、何かドキュメントやアドバイスがあれば大変ありがたいです。 Re: Inquiry regarding MCAL support EB こんにちは、 S32K344 / K314はNXPリアルタイム・ドライバ(RTD)/AUTOSAR MCALでサポートされており、設定やコード生成のためのEB tresos Studioとの統合も含まれています。NXPはRTD/MCALソフトウェアを標準ソフトウェアとして提供しており、本番環境で利用可能で無料で提供されています。 EB tresos Studio自体を使用するには、有効なElektrobitライセンスが必要ですのでご注意ください。EBトレソのライセンス条件はElektrobitが管理しているため、商業利用の詳細についてはElektrobitまたはお近くのNXP担当者にお問い合わせください。 S32K3 RTDパッケージには、MCALドライバ、EB tresosプラグイン、ドキュメント、開発と統合をサポートするサンプルプロジェクトが含まれています。 よろしくお願いいたします。 ピーター
記事全体を表示