Multi Source Translation Content

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Multi Source Translation Content

讨论

排序依据:
KinetisとLPC用のデバッグインターフェースのおすすめはありますか? 私は主にKinetisシリーズで開発をしており、近い将来LPCのパーツもいくつか手がけるかもしれません。P&E Microのデバッグインターフェースが引き出しいっぱいにあり、よく使っているCyclone ACPも含まれています。 時々、600ドルのCycloneから20ドルのLPC-Link2に切り替えることがあります。なぜなら、CycloneはMCUXpressoに多くの奇妙な問題があるからです。正直なところ、LPC-Link2は私の必要な機能のほとんどを満たしてくれるのですが、少し動作が遅いのが難点です。 Seggerインターフェースを検討しるべきでしょうか?MCUXpresso(そしてできればCodeWarrior 11でも)で十分にサポートされ、クラッシュや走行中のターゲットを止められない信頼性が高く、そこそこ高速なインターフェースを誰かおすすめできませんか?トレースサポートがあれば助かります。 よろしくお願いします! Re: Debug interface recommendations for Kinetis and LPC? こんにちは、 @zeref さん。 これは繰り返し投稿です。KinetisとLPCのデバッグインターフェース推奨に関する私の返信を参照してください。 BR セレステ
查看全文
「スマートエネルギー」太陽光発電に関する意見 追記:皆さん、ありがとうございます。ご意見ありがとうございます!彼らには「とっとと失せろ」と言ってやるよ。どうせ私は何も約束する準備ができていないんだから。 今日はスマートエナジーという会社の訪問販売員が何人か来て、太陽光パネルについて話したがっていました。太陽光発電に興味はあるのですが、初期投資をする資金がありません。そこで、初期費用ゼロで利用できる政府資金による制度があると聞きました。 もちろん、私は非常に懐疑的です。彼らと取引したことのある方からのご意見をぜひお聞かせください。
查看全文
Does i.MX6UL provide any mechanism (timer/register) to delay or control ZMK zeroization after tamper Does the i.MX6UL provide any hardware mechanism (register, timer, counter, or configuration) to prevent or postpone automatic ZMK zeroization after a valid external tamper event? If such a mechanism exists, could you please point me to the relevant register(s), timer, or configuration described in the Security Reference Manual? Platform: i.MX6UL  Bootloader: U-Boot 2016.03 OS: Linux + OP-TEE Reference used: Security Reference Manual for the i.MX 6UltraLite Applications Processor, Rev. 0, 04/2016 @nxp 
查看全文
FreeMasterプラグインモジュールはありません 私はフリーマスターバージョン3.2.7をインストールしました。いろいろな方法を試しましたが、プラグインモジュールの下には何もありません。急いでるんだ。これは私の仕事に欠かせない道具です。どなたか助けていただけますか?どうもありがとうございます。 1. FreeMASTERを「管理者として」インストールするか、「c:\NXP\FreeMASTER 3.2\FreeMASTER\register.bat」を実行してください。効果はありません!!! PixPin_2026-07-20_20-46-19.png 2. PixPin_2026-07-20_20-36-29.png PixPin_2026-07-20_20-40-48.png Re: there has no FreeMaster plug-in module こんにちは、 私の知る限り、最新のWindowsアップデートではCOM+およびActiveXオブジェクトの動作方法は変更されません。これは関係ない。あなたが直面している問題は、実に奇妙です。 一つのプラグイン(CAN通信)を選んで登録情報を確認しましょう。 再度「コマンドプロンプト」を管理者として実行し、「c:\NXP\FreeMASTER 3.2\FreeMASTER」に移動して、/s (サイレント) オプションなしで regsvr32 コマンドを実行します。 regsvr32 プラグイン/CAN/focpgi.dll 確認メッセージは以下に表示されます。 MichalH_1-1784615468404.png 次に、同じコマンドプロンプトコンソールで、以下のコマンドを使用してレジストリエディターを起動します。 レジストリエディタ 数分かかることもありますが、その後エディターが表示されます。ナビゲート先 Computer\HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{C10A92C3-7D47-4FDC-94B6-64B8E5C85E01} この項目はFreeMASTER-over-CANプラグイン(focpgi.dll)を表しています。それは登記簿に記載されなければならない。 MichalH_0-1784615359152.png InprocServer32のエントリポイントを正しいfocpgi.dllファイルに確認できます。 MichalH_2-1784615691533.png 「実装済みカテゴリ」IDは、FreeMASTERがWindows COMカテゴリAPIを使用してすべてのプラグインを特定するために使用するIDです。プラグインカテゴリが存在することを確認するために、レジストリエディタでComputer\HKEY_CLASSES_ROOT\Component Categories\{48A185C0-FFDB-11D3-80E3-00C04F176153}キーを確認してください。「MCB Communication Plugins」というテキスト値が表示されます。 MichalH_3-1784615997310.png もう一つの実験は、スクリプトから/sスイッチを外して実行register.batことです。各DLLごとに登録確認ボックスが表示されます。 該当するスクリーンショットまたはエラーメッセージを共有してください。ご協力ありがとうございました。 よろしくお願いいたします。 ミハル Re: there has no FreeMaster plug-in module もし誰かがこの問題を解決する手助けをしてくれたら、コーヒーをご馳走します。 Re: there has no FreeMaster plug-in module あなたの方法を試しましたが、モジュールはまだ表示されていません。 これは、Windowsシステムが最新バージョンにアップデートされたことと関係がありますか? ScreenShot_2026-07-21_095319_274.png PixPin_2026-07-21_10-13-18.png Re: there has no FreeMaster plug-in module こんにちは、 インストーラーとregister.batの両方が「 regsvr32.exe 」を使用します。システムユーティリティであり、すべてのWindowsオペレーティングシステムにデフォルトでインストールされる。 まず、システムにregsvr32ユーティリティが存在することを確認してください。Win+Rキーを押して、「regsvr32」コマンドを実行してください。 MichalH_3-1784558060323.png 次のようなヘルプボックスが表示されるはずです。 MichalH_0-1784557473602.png このユーティリティが動作しない場合は、お使いのコンピュータに管理者によるシステム制限が適用されている可能性があります。修理してもらう必要があります。 regsvr32が正常に動作している場合、register.batが出力するエラーを確認してみましょう。 スタートメニューを開きます。 「コマンドプロンプト」アプリケーションを探してください 右クリックして「管理者として実行」を選択してください(下の画像を参照)。 コンソールで「cd "c:\NXP\FreeMASTER 3.2\FreeMASTER"」と入力します。 register.batを実行します。 エラーは表示されないはずです(最後の画像のように)。 エラーがなければ、プラグインはFreeMASTERに表示されます。誤りがあれば、こちらでお知らせください。 MichalH_1-1784557809666.png MichalH_2-1784557992554.png よろしくお願いいたします。 ミハル Re: there has no FreeMaster plug-in module こんにちは、再度テストしてみました。現在、そのモジュールはまだ利用できません。register.bat ファイル内の「/s」を含む行をすべて削除しました。他に現在利用可能な解決策はありますか? 1.png 2.png 3.png 4.png 5.png Re: there has no FreeMaster plug-in module こんにちは、 要約すると、すべてのプラグイン登録は正常に完了しますが、FreeMASTERのオプションダイアログのプラグインリストは空のままです。 別のパソコンでテストすることは可能でしょうか? また、プラグインリストにアクセスする他の2つのユーティリティもあります。リモートサーバーツール("c:\NXP\FreeMASTER 3.2\FreeMASTER\mcbsvr.exe"))を実行してみてください。次に「追加」ボタンを押して、プラグインリストも空になっているかどうかを確認してください。 MichalH_0-1784702997668.png 「Named Connection」マネージャー(c:\NXP\FreeMASTER 3.2\FreeMASTER\pgimgr.exe」で同様の方法を試し、「New」ボタンを押すことができます: MichalH_1-1784703133393.png どちらかのツールでプラグインリストが空でない状態で表示されるかどうか教えてください。 ありがとう、 ミハル Re: there has no FreeMaster plug-in module 試してみましたが、それでもうまくいきません。私のパソコンには大量のデータが入っているので、システムを再インストールしたくありません。これは本当に困ったものです。以前は正常に動作していたのですが、ある日突然接続できなくなってしまいました。 1.png 2.png Re: there has no FreeMaster plug-in module こんにちは、 お使いのコンピューターの不具合箇所を特定するのに役立つ、簡単なテストユーティリティを用意しました。下記に添付されている「plugin_test.exe」をご覧ください。 コマンドプロンプト(cmd)コンソールで実行してください(管理者として実行する必要はありません)。 Usage: plugin_test [ProgID|CLSID] test# 0 - create and release the component test# 1 - create and call Configure() test# 2 - enumerate all registered McbCommPlugin components (ProgID|CLSID argument is optional for test 2) 選択されたプラグインインスタンス化のテストは合格する可能性があります。これを試してみてください: plugin_test.exe 0 MCBPGI.TCPSERIAL.1 Component : MCBPGI.TCPSERIAL.1 CLSID : {ED244618-9103-41BE-B382-E92036BD04FC} Test : 0 [test 0] CoCreateInstance ... [test 0] OK - component created successfully. [test 0] Releasing ... [test 0] Released. Result: PASS ツールはプラグイン設定ダイアログの表示も試みることができます: plugin_test.exe 1 MCBPGI.TCPSERIAL.1 そして、それは明らかになるだろう。 MichalH_0-1784793243679.png 最後に、テスト2ではFreeMASTERと同様の方法でプラグインの列挙を行います。それはおそらくあなたの側で失敗するでしょう。 plugin_test.exe 2 Test : 2 [test 2] Creating StdComponentCategoriesMgr ... [test 2] OK - ICatInformation obtained. [test 2] Enumerating McbCommPlugin classes: [1] {1BB3C904-F1F4-4652-92EE-368716FE1D10} (BDMPGI.DAPCOM.1) [2] {2080BBA8-0641-4306-A956-6BEBB7C75249} (JTAGPGI.CCSCOM.1) [3] {225E034C-1AA6-4EC5-9A6C-A9FA9E890373} (BDMPGI.HCSCOM.1) [4] {30AB7AA1-493A-4DD7-9509-C9C91EFFF0FD} (BDMPGI.PDBDMCOM.1) [5] {5A129680-897E-4014-916D-9B1FE13DE156} (BDMPGI.EONCECOM.1) [6] {6D13CD9D-9F2D-4066-B655-45B54CA7494B} (MCBPGI.NETCOM.1) [7] {7AC03FB7-4792-4F26-8152-92E466276068} (DEMOPGI.DummyCom.1) [8] {80F17965-EDBD-41F1-9182-3C44E04E5794} (BDMPGI.ISYSCOM.1) [9] {8C575DB3-9769-4B66-AB60-C83CEA683E01} (BDMPGI.JLINKCOM.1) [10] {C10A92C3-7D47-4FDC-94B6-64B8E5C85E01} (FOCPGI.FocCom.1) [11] {C10A92C4-7D47-4FDC-94B6-64B8E5C85E01} (FOLPGI.FolCom.1) [12] {ED244616-9103-41BE-B382-E92036BD04FC} (MCBPGI.STDCOM.1) [13] {ED244617-9103-41BE-B382-E92036BD04FC} (MCBPGI.HTTPCOM.1) [14] {ED244618-9103-41BE-B382-E92036BD04FC} (MCBPGI.TCPSERIAL.1) [test 2] Total: 14 plug-in(s) found. Result: PASS ご協力ありがとうございます。 ミハル Re: there has no FreeMaster plug-in module 1.plugin_test.exe 1 MCBPGI.TCPSERIAL.1 にはダイアログボックスがあります。 2. plugin_test.exe 2 は管理者権限で実行されました。 1.png 2.png Re: there has no FreeMaster plug-in module 試してみましたが、うまくいきませんでした。 1.png 2.png 3.png Re: there has no FreeMaster plug-in module 実験にご協力いただき、ありがとうございました。 「テスト1」で次のようなダイアログが表示されましたか? plugin_test.exe 1 MCBPGI.TCPSERIAL.1 また、「管理者として」起動したコマンドプロンプトでテスト2を実行してもらえますか? plugin_test.exe 2 ありがとう、 ミハル Re: there has no FreeMaster plug-in module こんにちは、諦めずに続けてくださってありがとうございます。 事実関係を要約してみましょう。FreeMASTERで使用されているWindowsプログラミングAPIに少し置き換えて説明します。 API EnumClassesOfCategories() は、コンポーネントがすべてのレジストリエントリに正しく登録されている場合や、管理者権限で実行された場合でも、空のリストを返します。 EnumClassesOfCategories() は S_OK を返しますが、返されたイテレータに対して Next() を呼び出すと何も列挙されません。 コンポーネントDLLと、それらを列挙するアプリケーションはどちらも32ビットコードとしてコンパイルされます。 この問題は特定の1台のコンピューターでのみ発生しており、他の多くのコンピューターでは正常に動作しています。 ターゲットCLSID上のCoCreateInstanceは、この問題のあるコンピュータでも正常に動作します。 正直なところ、その理由が何なのか分かりません。インターネットの中には、登録解除してからWindowsコンポーネントマネージャーを登録することを勧めるところもあります。ですので、 管理者のコマンドでこれを試してからシステムを再起動してください: regsvr32 /u comcat.dll regsvr32 comcat.dll regsvr32 /u c:\Windows\SysWOW64\comcat.dll regsvr32 c:\Windows\SysWOW64\comcat.dll 各コマンドを実行するたびに確認ボックスが表示されます。 これで解決しない場合は、調査を継続します。 ありがとう、 ミハル Re: there has no FreeMaster plug-in module この間、ご協力いただき大変感謝しておりますが、今回もうまくいきませんでした。
查看全文
メートル 部品の中からメーター制御装置を探しているのですが、見つかりません。
查看全文
Flash configuration confusion RT1176 Octal DDR Hello NXP I got some issues configuring the flash memory for Macronix Octal DDR mode. I am using the PX4 code stack on a custom board based on the NXP FMU-6XRT reference design. I am using the MX25UM51245G instead of the MX25UM51345G, but the part differences are minimal. I am trying to run it in Macronix Octal DDR mode with DQS external sampling at atleast 100MHz. Reference design is running it at 200MHz. The Boot Memory Configuration succesfully tests the memory with the desired configuration even at 166MHz. The configuration I have tried is the following default config. The first one, "g_flash_config" succesfully boots, writes, read, etc, but is not ideal for the software. "g_flash_fast_config" fails. I have tried reducing the frequency to 166MHZ, 133MHz, 50 MHz, and 30MHz without results in the DTR mode in the "fast_config". I have tried using the FCB generated from the Boot Memory Configuration, but there is some struct layout differences which have made it hard to apply to the PX4 code.  I am tried different combinations of csHoldTime, csSetupTime and dataValidTime without results aswell. I tried DQS interal in low freq DTR Octal, but it did not work either. What could I try next? #include /**************************************************************************** * Public Data ****************************************************************************/ locate_data(".boot_hdr.conf") const struct flexspi_nor_config_s g_flash_config = { .memConfig = { #if !defined(CONFIG_BOARD_BOOTLOADER_INVALID_FCB) .tag = FLEXSPI_CFG_BLK_TAG, #else .tag = 0xffffffffL, #endif .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 1, .csSetupTime = 1, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Generic, .waitTimeCfgCommands = 1, .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_1Pad, .serialClkFreq = kFlexSpiSerialClk_100MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 0}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read Dedicated 3Byte Address Read(0x03), 24bit address */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x03, RADDR_SDR, FLEXSPI_1PAD, 0x18), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(READ_SDR, FLEXSPI_1PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0),//0xb3048b20 }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; const struct flexspi_nor_config_s g_flash_fast_config = { .memConfig = { .tag = FLEXSPI_CFG_BLK_TAG, .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 3, .csSetupTime = 3, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Spi2Xpi, .waitTimeCfgCommands = 1, .deviceModeSeq = { .seqNum = 1, .seqId = 6, /* See Lookup table for more details */ .reserved = 0, }, .deviceModeArg = 2, /* Enable OPI DDR mode */ .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable) | (1u << kFlexSpiMiscOffset_DdrModeEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_8Pads, .serialClkFreq = kFlexSpiSerialClk_133MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 10}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read */// EEH+11H+32bit addr+20dummy cycles+ 4Bytes read data /* Macronix manual says 20 dummy cycles @ 200Mhz, FlexSPI peripheral Operand value needs to be 2N in DDR mode hence 0x28 */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0xEE, CMD_DDR, FLEXSPI_8PAD, 0x11), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x28),//0xb3288b20, [0 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), //0xa704, /* Read status */ [4 * 2 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x05, CMD_DDR, FLEXSPI_8PAD, 0xfa), [4 * 2 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x04), [4 * 2 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), /* Write enable SPI *///06h [4 * 3 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP_EXE, FLEXSPI_1PAD, 0x00),//0x00000406, /* Write enable OPI SPI *///06h [4 * 4 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x06, CMD_DDR, FLEXSPI_8PAD, 0xF9), /* Erase sector */ [4 * 5 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x21, CMD_DDR, FLEXSPI_8PAD, 0xDE), [4 * 5 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, STOP_EXE, FLEXSPI_1PAD, 0x00), /*Write Configuration Register 2 =01, Enable OPI DDR mode*/ //72H +32bit address + CR20x00000000 = 0x01 [4 * 6 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x72, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000472, [4 * 6 + 1] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000400, [4 * 6 + 2] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, WRITE_SDR, FLEXSPI_1PAD, 0x01),//0x20010400, /*Page program*/ [4 * 9 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x12, CMD_DDR, FLEXSPI_8PAD, 0xED),//0x87ed8712, [4 * 9 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, WRITE_DDR, FLEXSPI_8PAD, 0x04),//0xa3048b20, }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; Re: Flash configuration confusion RT1176 Octal DDR Hello @SimonHugr, If you plan to use DDR mode, please keep in mind that the byte swapping configuration must also be considered. this post provides useful information about why important take in mind the byte swapping on the MX25UM51245GXDI00 when you are using DDR mode.  I highly recommend use the Boot Memory Configuration to generate the FCB, the Secure provisioning tool v26.6 offers a template of the MX25UM51245G, which can serve as a good starting point for your configuration. Also, as you may know, this tool allows you to test your configurations. Additionally, I recommend see this community post, particularly the steps starting from point 15. That section provides a more detailed explanation of how the Secure Provisioning Tool generates the boot memory configuration and may help clarify the parameters and output produced by the tool. Finally, you can use the flexspi_nor_polling_transfer_cm7 example to validate the generated FCB and verify that read and write operations are functioning correctly before proceeding with the boot configuration. BR Habib Re: Flash configuration confusion RT1176 Octal DDR No results yet sadly, I still think it has something to do with some data order swap is done and I am missing some configuration byte somewhere... Re: Flash configuration confusion RT1176 Octal DDR Thank you Masmiseim Indeed, I noticed that the data should be swapped for example. I will go through my LUT once more. Re: Flash configuration confusion RT1176 Octal DDR Refering to this thread: https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Internal-Boot-from-Flash-memory-not-starting-on-imxRT1176-custom/m-p/1830699 I should swap the data order by editing the misc option and according to zephyr RTOS https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L340-L355 the dataswap byte goes in, but I think I am missing something. .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .isDataOrderSwapped = true .serialNorType = 2, .reserve2[0] = 0x7008200, Re: Flash configuration confusion RT1176 Octal DDR Hey @SimonHugr, One thing I would verify first is the actual difference between the MX25UM51245G and MX25UM51345G. Although the part numbers are very similar, they are not identical devices. According to the Macronix datasheets, the MX25UM51345G explicitly supports DOPI (Double Transfer Rate OPI) Byte Mode data sequence, while the MX25UM51245G belongs to a different product variant. This can affect the command format, byte ordering and LUT configuration used by the FlexSPI controller. You can also compare my configuration which works with MX25UM513 and MX25UW6345G: https://github.com/Masmiseim36/Coremark_iMXRT/blob/master/XiP/flexspi_flash_OSPI_Macronix.c Regars Re: Flash configuration confusion RT1176 Octal DDR Hello Habib For our firmware I am not able to use the secure provisioning tool to generate the FCB, and instead the FCB needs to be loaded on boot in firmware and therefor I need to create the mem_config and flash_config struct and configure it myself. I found the zephyr project referenced a isDataOrderSwapped byte in the flash_nor_config https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L347-L348 and Claude reference a padSettingOverride bit on bit 5 and a dataSwap bit on bit 7 in the controllerMiscOption, but I am not sure if the LLM is heavily hallucinating this information. When generating the FCB using the Secure Provisioning tool and converting it into a C-struct using this tool https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/i-MX-RT-FLEXSPI-booting-guide/ta-p/1669262 I do not get bit 5 or 7 set so I think the LLM is wrong, but the isDataSwapped is set and is referenced as reserved0[0] in the FCB normally. I can not find a template for the MX25UM51245G in the secure provisioning tool, only the MX25U51245G (which is a Quad flash), the MX25UM51345G and the MX25UMxxx45G. But any config Octal DDR config that I have tried have not worked to boot. Interestingly often the MCU goes automatically into ISP mode after certain configuration despite BT_FUSE_SEL = 1 and having pins BOOTMODE0/1 = 0. This has not been consistent and I am not sure what configuration causes this. Does the MCU go into ISP mode after failing to read the flash or something? Thank you BR Re: Flash configuration confusion RT1176 Octal DDR Hello @SimonHugr, I apologies there is not a template to MX25UM51245G, only are available the MX25U51245G and MX25UM51345G. Based on your description, it seems that communication with the flash device is working correctly using your current Boot Memory Configuration settings. When you click "Convert to Complete FCB", the tool programs the configuration into the flash and then reads it back using the parameters you specified, as described below: Habib_MS_0-1784753481563.png If any of the selected settings are not supported by the flash device, the tool should report an error similar to the following: Habib_MS_1-1784753506390.png To further verify that the LUT generated using the FCB converter from the community post is functioning correctly, could you please test it with the flexspi_nor_polling_transfer_cm7 SDK example while running the application from internal RAM? Please let me know if you have questions about the example. In addition, could you provide me a few more details about the application you are trying to boot? -Is an SDK example or if your own application? -Which IDE you are using? -Is your application performing XIP or NON-XIP? -Are you accessing the flash at any point other than during the boot process? Regarding to entering in ISP mode, could you please make sure that the boot pins on your custom board followed the recommendations mentioned in the chapter 5 "Boot, reset, and miscellaneous" of the Hardware Development Guide for the MIMXRT1160/1170? This to avoid any hardware issue regarding the boot pins.   Answering your question, you can enter in ISP mode if is not available a valid image, as shown the figure 10-1 "boot flow" of the RM: Habib_MS_2-1784754516601.png BR Habib  Re: Flash configuration confusion RT1176 Octal DDR Hello Habib. I got octal SPI STR mode working at 200MHz now atleast. The problem was some magic non-described "reserve2" bytes that was being set. I also opted to set a config cmd sequence ontop of the device mode sequence setting an additional byte. Setting the byte swap did not accomplish anything, but I am happy with the speed I am able to achieve at 200MHz STR Octal Best regards
查看全文
i.MX6ULは、改ざん後のZMKのゼロ化を遅延または制御するためのメカニズム(タイマー/レジスタ)を提供しますか? i.MX6ULは、有効な外部改ざんイベント後に自動ZMKゼロ化を防止または延期するためのハードウェア機構(レジスタ、タイマー、カウンター、または設定)を提供していますか?もしそのような仕組みが存在するなら、セキュリティリファレンスマニュアルに記載されている該当レジスタ、タイマー、または設定をご紹介いただけますか? プラットフォーム: i.MX6UL  ブートローダー: U-Boot 2016.03 OS: Linux + OP-TEE 参考文献: i.MX 6UltraLiteアプリケーションプロセッサのセキュリティリファレンスマニュアル、Rev. 0、2016年4月 @nxp 
查看全文
Kinetis 和 LPC 的调试接口有什么建议? 我目前主要从事 Kinetis 系列芯片的开发工作,未来可能还会开发一些 LPC 芯片。我抽屉里装满了 P&E Micro 的调试接口,其中最常用的是 Cyclone ACP。 我有时会发现自己从 600 美元的 Cyclone 换成了 20 美元的 LPC-Link2,因为 Cyclone 与 MCUXpresso 存在很多奇怪的问题。说实话,LPC-Link2 基本能满足我的需求,只是速度有点慢。 我应该考虑使用Segger接口吗?请问有人可以推荐一款可靠、速度适中、在 MCUXpresso(最好也能在 CodeWarrior 11)中支持良好的接口吗?这款接口不会经常导致程序崩溃,也不会无法停止正在运行的目标。如果能支持追踪功能就更好了。 谢谢您! Re: Debug interface recommendations for Kinetis and LPC? 你好@zeref , 这是重复发帖,请参考我在“Kinetis 和 LPC 的调试接口建议?”中的回复。 BR 塞莱斯特
查看全文
没有 FreeMaster 插件模块 我安装了freemaster 3.2.7版本,我尝试了很多方法,但插件模块里什么都没有。我很着急。这是我工作中必不可少的工具。有人能帮帮我吗?非常感谢。 1.我以管理员身份安装FreeMASTER,或者运行“c:\NXP\FreeMASTER 3.2\FreeMASTER\register.bat”——均无效!!! PixPin_2026-07-20_20-46-19.png 2. PixPin_2026-07-20_20-36-29.png PixPin_2026-07-20_20-40-48.png Re: there has no FreeMaster plug-in module 你好, 据我所知,最新的 Windows 更新并没有改变 COM+ 和 ActiveX 对象的工作方式。这两件事无关。你遇到的问题确实很奇怪。 我们选取一个插件(CAN 通信)并查看其注册详情。 再次以管理员身份运行“命令提示符”,然后切换到“c:\NXP\FreeMASTER 3.2\FreeMASTER”目录,并使用不带 /s(静默)选项的 regsvr32 命令: regsvr32 插件/can/focpgi.dll 确认信息将显示: MichalH_1-1784615468404.png 然后在同一命令提示符控制台中,使用以下命令启动注册表编辑器: 注册表 需要一些时间(可能需要几分钟),然后编辑器就会出现。导航至 计算机\HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{C10A92C3-7D47-4FDC-94B6-64B8E5C85E01} 此条目代表 FreeMASTER-over-CAN 插件 (focpgi.dll)。它必须登记在册。 MichalH_0-1784615359152.png 您可以检查 InprocServer32 入口点是否指向正确的 focpgi.dll 文件。 MichalH_2-1784615691533.png “已实现类别”ID 是 FreeMASTER 使用 Windows COM 类别 API来查找所有插件的 ID。为了确保插件类别存在,请在注册表编辑器中检查Computer\HKEY_CLASSES_ROOT\Component Categories\{48A185C0-FFDB-11D3-80E3-00C04F176153}项,您应该会看到“MCB Communication Plugins”文本值: MichalH_3-1784615997310.png 另一个实验方法是从 register.bat 脚本中删除 /s 开关并运行它。每个 DLL 文件都会显示一个注册确认框。 请分享相关的屏幕截图或错误信息。感谢您的合作。 问候, 米哈尔 Re: there has no FreeMaster plug-in module 如果有人能帮我解决这个问题,我请他喝咖啡。 Re: there has no FreeMaster plug-in module 我尝试了你的方法,但模块仍然没有出现。 这是否与我的Windows系统更新到最新版本有关? ScreenShot_2026-07-21_095319_274.png PixPin_2026-07-21_10-13-18.png Re: there has no FreeMaster plug-in module 你好, 安装程序和 register.bat 都使用了“ regsvr32.exe ”。系统实用程序,应默认安装在任何 Windows 操作系统中。 首先,请确保您的系统上存在 regsvr32 工具。只需按下 Win+R 键,然后运行命令“regsvr32”。 MichalH_3-1784558060323.png 你应该会看到类似这样的帮助框: MichalH_0-1784557473602.png 如果此工具无法正常工作,则可能是您的计算机受到了管理员的系统限制。你需要把它修好。 如果 regsvr32 运行正常,我们来看看 register.bat 会输出什么错误信息: 打开开始菜单。 找到“命令提示符”应用程序 右键单击并选择“以管理员身份运行”(见下图) 在控制台中,输入cd "c:\NXP\FreeMASTER 3.2\FreeMASTER" 运行register.bat 您应该看不到任何错误(就像最后图片中显示的那样)。 如果没有错误,插件将出现在 FreeMASTER 中。如有任何错误,请在此处告知。 MichalH_1-1784557809666.png MichalH_2-1784557992554.png 问候, 米哈尔 Re: there has no FreeMaster plug-in module 你好, 总结一下——所有插件注册都成功完成,但 FreeMASTER 选项对话框中的插件列表仍然为空。 您能否尝试在另一台电脑上进行测试? 此外,还有两个其他实用程序可以访问插件列表。请尝试运行远程服务器工具(“c:\NXP\FreeMASTER 3.2\FreeMASTER\mcbsvr.exe”)。然后按下“添加”按钮,看看插件列表是否也为空: MichalH_0-1784702997668.png 在“命名连接”管理器(c:\NXP\FreeMASTER 3.2\FreeMASTER\pgimgr.exe)中也可以尝试类似的操作,然后按“新建”按钮: MichalH_1-1784703133393.png 如果这两个工具中任何一个能够显示不为空的插件列表,请告诉我。 谢谢你, 米哈尔 Re: there has no FreeMaster plug-in module 你好,我又测试了一遍。目前该模块仍不可用。我已经删除了 register.bat 文件中所有包含“/s”的行。目前还有其他解决方案吗? 1.png 2.png 3.png 4.png 5.png Re: there has no FreeMaster plug-in module 我试过了,但还是不行。我的电脑里有很多数据,我不想重装系统。这真是太麻烦了。之前一直都正常,但有一天突然就连不上了。 1.png 2.png Re: there has no FreeMaster plug-in module 你好, 我准备了一个小型测试工具,它可以帮助我们发现您机器上的问题所在。请查看下方附件“plugin_test.exe”。 在命令提示符控制台中运行(无需以管理员身份运行)。 Usage: plugin_test [ProgID|CLSID] test# 0 - create and release the component test# 1 - create and call Configure() test# 2 - enumerate all registered McbCommPlugin components (ProgID|CLSID argument is optional for test 2) 所选插件实例化的测试可能通过。试试这个: plugin_test.exe 0 MCBPGI.TCPSERIAL.1 Component : MCBPGI.TCPSERIAL.1 CLSID : {ED244618-9103-41BE-B382-E92036BD04FC} Test : 0 [test 0] CoCreateInstance ... [test 0] OK - component created successfully. [test 0] Releasing ... [test 0] Released. Result: PASS 该工具甚至可以尝试显示插件配置对话框: plugin_test.exe 1 MCBPGI.TCPSERIAL.1 而它终将显现: MichalH_0-1784793243679.png 最后,测试 2 以类似于 FreeMASTER 的方式进行插件枚举。它很可能在你这边失败: plugin_test.exe 2 Test : 2 [test 2] Creating StdComponentCategoriesMgr ... [test 2] OK - ICatInformation obtained. [test 2] Enumerating McbCommPlugin classes: [1] {1BB3C904-F1F4-4652-92EE-368716FE1D10} (BDMPGI.DAPCOM.1) [2] {2080BBA8-0641-4306-A956-6BEBB7C75249} (JTAGPGI.CCSCOM.1) [3] {225E034C-1AA6-4EC5-9A6C-A9FA9E890373} (BDMPGI.HCSCOM.1) [4] {30AB7AA1-493A-4DD7-9509-C9C91EFFF0FD} (BDMPGI.PDBDMCOM.1) [5] {5A129680-897E-4014-916D-9B1FE13DE156} (BDMPGI.EONCECOM.1) [6] {6D13CD9D-9F2D-4066-B655-45B54CA7494B} (MCBPGI.NETCOM.1) [7] {7AC03FB7-4792-4F26-8152-92E466276068} (DEMOPGI.DummyCom.1) [8] {80F17965-EDBD-41F1-9182-3C44E04E5794} (BDMPGI.ISYSCOM.1) [9] {8C575DB3-9769-4B66-AB60-C83CEA683E01} (BDMPGI.JLINKCOM.1) [10] {C10A92C3-7D47-4FDC-94B6-64B8E5C85E01} (FOCPGI.FocCom.1) [11] {C10A92C4-7D47-4FDC-94B6-64B8E5C85E01} (FOLPGI.FolCom.1) [12] {ED244616-9103-41BE-B382-E92036BD04FC} (MCBPGI.STDCOM.1) [13] {ED244617-9103-41BE-B382-E92036BD04FC} (MCBPGI.HTTPCOM.1) [14] {ED244618-9103-41BE-B382-E92036BD04FC} (MCBPGI.TCPSERIAL.1) [test 2] Total: 14 plug-in(s) found. Result: PASS 谢谢您的合作。 Michal Re: there has no FreeMaster plug-in module 1.plugin_test.exe 1 MCBPGI.TCPSERIAL.1 有一个对话框。 2. plugin_test.exe 2 已以管理员权限运行。 1.png 2.png Re: there has no FreeMaster plug-in module 我测试过了,但是没成功。 1.png 2.png 3.png Re: there has no FreeMaster plug-in module 你好,感谢你的持续尝试。 让我总结一下事实——以下内容稍作翻译,使其更符合 FreeMASTER 中使用的 Windows 编程 API: 即使元器件已正确注册到所有注册表项,并且即使以管理员权限执行,API EnumClassesOfCategories() 仍返回空列表。 EnumClassesOfCategories() 返回 S_OK,但对返回的迭代器调用 Next() 却无法枚举任何内容。 组件 DLL 和枚举它们的应用程序均编译为 32 位代码。 这个问题只出现在一台电脑上,其他很多电脑运行正常。 即使在这台有问题的计算机上,目标 CLSID 上的 CoCreateInstance 也能正常工作。 我必须承认,我不知道原因可能是什么。一些网络资源建议尝试注销并重新注册 Windows 组件管理器。所以请以管理员身份在命令提示符中尝试以下命令,然后重启系统: regsvr32 /u comcat.dll regsvr32 comcat.dll regsvr32 /u c:\Windows\SysWOW64\comcat.dll regsvr32 c:\Windows\SysWOW64\comcat.dll 每条命令都应该弹出确认框。 如果这样还是不行,我会继续调查。 谢谢, 米哈尔 Re: there has no FreeMaster plug-in module 感谢你进行这项实验。 “测试 1”开始时是否出现任何对话框: plugin_test.exe 1 MCBPGI.TCPSERIAL.1 另外,请您在以“管理员身份”启动的命令提示符中运行测试 2好吗? plugin_test.exe 2 谢谢你, 米哈尔 Re: there has no FreeMaster plug-in module 非常感谢您在此期间的帮助,但这次仍然没有成功。
查看全文
IMX95 { 15 x 15 }はLPDDR4/4X 16 GB RAMをサポートしていますか? こんにちは、NXPチームの皆さん、 IMX95{ 15 x 15 }について一般的な情報が欲しいです。MIMX9556CVTXN"は16GBのRAMをサポートします{ LPDDR4/4X } "MT53E4G32D8GS-046 WT:C ?" 16GB RAMをIMX 95に接続するための回路図の参照が見つかりませんでした { 15x 15} 16GB RAMのIMX95 { 19 x 19 }の回路図しか見つけられませんでした。 もし対応しているなら、16GB RAM{ LPDDR4/4x }とimx95{ 15 x 15 }の接続について教えていただけませんか? そしてBSPファイルはどうですか?16GBのRAMに対してDTSファイルが存在するのか、それとも手動で生成する必要があるのか。 Yocto Project Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM こんにちは、 @Asadeds さん。 NXPサポートまでご連絡いただきありがとうございます。 当社の メモリ互換性ガイドによると、メモリ部品番号MT53E4G32D8GS-046はi.MX95と完全に互換性があり、このプラットフォーム上で徹底的に検証・テストされています。 したがって、このデバイスは推奨される構成および 設計ガイドラインに従い、i.MX95と併用可能です。 よろしくお願いします、 アレハンドロ・ガルシア Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM こんにちは、 @Asadeds さん。 MT53E4G32D8GSはサポートされているメモリデバイスであり、i.MX95との社内検証済みです。しかし、このデバイスは特別なバイトモード構成を使用しており、設定ツールとソフトウェアスタックの両方で追加のサポートが必要です。 現時点では内部サポートはありますが、現在のConfig Toolsの公開リリースには、この特定のメモリデバイスを設定するための必要なオプションはまだ含まれていません。このメモリのサポートはFUTUREツールリリースで予定されています。 よろしくお願いします、 チャビラ Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM こんにちは @Chavira  迅速な返信ありがとうございます。 DDRの設定を試みると「Imx 26.06のConfig tool」アプリケーションが表示され、対応可能な LPDDR4/4xは最大8GBまでしかなく、対応するパッケージは LPDDR5 を選択します 最大16GBです。 参考のためにスクリーンショットを添付しました。もし何か見落としている点があれば教えてください。 Asadeds_0-1784697908014.png Asadeds_1-1784698046354.png これについて助けていただけませんか?それと、プロジェクトにLPDDR4/4xを使いたいと思っています。部品番号は「MT53E4G32D8GS-046 WT:C」です。 Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM こんにちは、 @Chavira さん。 迅速なご返信ありがとうございます。 まだ混乱しているので、質問を簡単にしたいと思います。 今のところ、特定のRAMベンダーと部品番号は無視しましょう。 config Toolsが i.MX95 の 15× 15または 19×19 パッケージで 16GB LPDDR4/LPDDR4X メモリ をサポートしているか確認していただけます か? もし答えがノーなら、どうやって16GBのサポートを得るのでしょうか?社内サポートが利用可能だとおっしゃっていましたので、そのサポートにアクセスする手続きについて説明していただけると助かります。 現在、PCB設計を最終調整中で、RAMの選択肢のせいでプロジェクトは保留中です。これが前進を妨げる唯一の残された問題なので、できるだけ早く明確な答えが必要です。 ご回答をいただければ幸いです。 よろしくお願いします。 Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM こんにちは、 @Asadeds さん。 社内チームと協議した結果、以下のとおり最新情報をお伝えいたします。 NXPは通常、四半期ごとに新しいバージョンのConfig Toolsをリリースするため、次のリリースはバージョン26.09が予定されています。 i.MX95自体はこの16GBメモリデバイスをサポートしていますが、現在の公開版DDR設定ツールはまだこの特定のメモリの設定をサポートしていません。良いニュースは、すでにツールの内部バージョンでサポートが存在しているものの、まだ公開リリースには組み込まれていないことです。 内部ツールへのアクセスが可能かどうかは確信が持てません。ただし、会社のメールアドレスを使って当 サイト からサポートケースを開くことをお勧めします。これにより、適切なチームがあなたの要望を確認し、追加のサポートや早期サポートの選択肢があるかどうかを判断できます。 ご不便をおかけし申し訳ありません。今後の公開リリースにこのサポートが統合されるまでのご理解に感謝いたします。 よろしくお願いします、 チャビラ
查看全文
Opinions on "Smart Energy" solar Edit: thanks everyone. Appreciate the input! I'll tell them to bugger off, I'm not ready to commit to anything anyway. I had some door knocker salesmen around today from Smart Energy wanting to talk about solar panels. I'm interested in solar but don't have the funds to invest up front and they said something about a govt funded scheme with $0 upfront. Naturally I'm very sceptical. Would love to hear from anyone who has dealt with them.
查看全文
mex config generate code different from windows and linux The same XEM file generates different code on different systems. Windows  file generate code normal but linux system generate abnormal precondition:the same as RTD and SDK version install 5.jpg Re: mex config generate code different from windows and linux Hi @Litten  Currently, RTDs are supported only on the Windows platform and are not officially supported on Linux. Even if you are able to install them on Linux, you may encounter additional issues during development and integration. One of the main reasons is that Linux is a case-sensitive operating system,  details about this situation have been discussed in the thread Problems with Lpi2c_Ip_MasterConfig and Lpi2c_Ip_SlaveState struct generation on S32DS for S32K344. BR, VaneB
查看全文
mex 配置生成的代码与 Windows 和 Linux 不同 同一个XEM文件在不同的系统中会生成不同的代码。 Windows系统生成的文件代码正常,但Linux系统生成的文件代码异常。 前提条件:与 RTD 和 SDK 版本安装相同 5.jpg Re: mex config generate code different from windows and linux 嗨@Litten 目前,RTD 仅在 Windows 平台上受支持,Linux 平台尚未获得官方支持。即使您能够在 Linux 上安装它们,在开发和集成过程中也可能会遇到其他问题。 主要原因之一是 Linux 是一个区分大小写的操作系统,有关此情况的详细信息已在 S32DS 上针对 S32K344 的 Lpi2c_Ip_MasterConfig 和 Lpi2c_Ip_SlaveState 结构体生成问题线程中进行了讨论。 BR,VaneB
查看全文
meter I'm trying to find the meter control within the components, but I can't find it.
查看全文
フラッシュ構成の混乱 RT1176 オクタル DDR こんにちは、NXP Macronix Octal DDRモード用にフラッシュメモリを設定する際に、いくつか問題が発生しました。 NXP FMU-6XRTのリファレンスデザインをベースにしたカスタムボード上でPX4コードスタックを使っています。私はMX25UM51345Gの代わりにMX25UM51245Gを使用していますが、部品の違いはごくわずかです。 Macronix Octal DDRモードで、DQS外部サンプリングを少なくとも100MHzで実行しようとしています。リファレンスデザインでは200MHzで動作させています。ブートメモリ構成は、166MHzの場合でも、目的の構成でメモリを正常にテストします。 私が試した設定は、以下のデフォルト設定です。最初の「g_flash_config」は起動、書き込み、読み込みなどを成功させていますが、ソフトウェアには理想的ではありません。「g_flash_fast_config」が失敗します。 「fast_config」のDTRモードで、周波数を166MHz、133MHz、50MHz、30MHzに下げてみましたが、効果はありませんでした。 ブートメモリ構成から生成されたFCBを使用してみましたが、構造体のレイアウトにいくつかの違いがあり、PX4コードに適用するのが困難でした。 csHoldTime、csSetupTime、dataValidTimeのさまざまな組み合わせを試してみましたが、結果は得られませんでした。 低周波DTRオクタールでDQS内部を試してみましたが、うまくいきませんでした。 次に何を試せばいいでしょうか? #include /**************************************************************************** * Public Data ****************************************************************************/ locate_data(".boot_hdr.conf") const struct flexspi_nor_config_s g_flash_config = { .memConfig = { #if !defined(CONFIG_BOARD_BOOTLOADER_INVALID_FCB) .tag = FLEXSPI_CFG_BLK_TAG, #else .tag = 0xffffffffL, #endif .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 1, .csSetupTime = 1, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Generic, .waitTimeCfgCommands = 1, .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_1Pad, .serialClkFreq = kFlexSpiSerialClk_100MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 0}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read Dedicated 3Byte Address Read(0x03), 24bit address */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x03, RADDR_SDR, FLEXSPI_1PAD, 0x18), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(READ_SDR, FLEXSPI_1PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0),//0xb3048b20 }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; const struct flexspi_nor_config_s g_flash_fast_config = { .memConfig = { .tag = FLEXSPI_CFG_BLK_TAG, .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 3, .csSetupTime = 3, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Spi2Xpi, .waitTimeCfgCommands = 1, .deviceModeSeq = { .seqNum = 1, .seqId = 6, /* See Lookup table for more details */ .reserved = 0, }, .deviceModeArg = 2, /* Enable OPI DDR mode */ .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable) | (1u << kFlexSpiMiscOffset_DdrModeEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_8Pads, .serialClkFreq = kFlexSpiSerialClk_133MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 10}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read */// EEH+11H+32bit addr+20dummy cycles+ 4Bytes read data /* Macronix manual says 20 dummy cycles @ 200Mhz, FlexSPI peripheral Operand value needs to be 2N in DDR mode hence 0x28 */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0xEE, CMD_DDR, FLEXSPI_8PAD, 0x11), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x28),//0xb3288b20, [0 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), //0xa704, /* Read status */ [4 * 2 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x05, CMD_DDR, FLEXSPI_8PAD, 0xfa), [4 * 2 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x04), [4 * 2 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), /* Write enable SPI *///06h [4 * 3 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP_EXE, FLEXSPI_1PAD, 0x00),//0x00000406, /* Write enable OPI SPI *///06h [4 * 4 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x06, CMD_DDR, FLEXSPI_8PAD, 0xF9), /* Erase sector */ [4 * 5 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x21, CMD_DDR, FLEXSPI_8PAD, 0xDE), [4 * 5 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, STOP_EXE, FLEXSPI_1PAD, 0x00), /*Write Configuration Register 2 =01, Enable OPI DDR mode*/ //72H +32bit address + CR20x00000000 = 0x01 [4 * 6 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x72, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000472, [4 * 6 + 1] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000400, [4 * 6 + 2] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, WRITE_SDR, FLEXSPI_1PAD, 0x01),//0x20010400, /*Page program*/ [4 * 9 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x12, CMD_DDR, FLEXSPI_8PAD, 0xED),//0x87ed8712, [4 * 9 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, WRITE_DDR, FLEXSPI_8PAD, 0x04),//0xa3048b20, }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; Re: Flash configuration confusion RT1176 Octal DDR こんにちは、 @SimonHugr さん。 DDRモードを使用する場合は、バイトスワッピングの設定も考慮する必要があることにご注意ください。この記事では、DDRモードを使用する際にMX25UM51245GXDI00のバイトスワッピングを考慮することがなぜ重要なのかについての役立つ情報を提供します。 FCBを生成するにはBoot Memory Configurationを使うことを強くお勧めします。 Secure Provisioning Tool v26.6はそのMX25UM51245Gのテンプレートを提供しており、構成の良い出発点として役立ちます。また、ご存知かもしれませんが、このツールを使用すると設定をテストできます。 さらに、このコミュニティ投稿、特に15番目の手順から始まる部分を参照することをお勧めします。そのセクションでは、セキュアプロビジョニングツールがブートメモリ構成を生成する方法についてより詳細な説明を提供しており、ツールによって生成されるパラメータと出力の理解に役立つ可能性があります。 最後に、flexspi_nor_polling_transfer_cm7例を使って生成されたFCBを検証し、読み書き操作が正しく動作しているか確認してから起動設定を進めることができます。 BR ハビブ Re: Flash configuration confusion RT1176 Octal DDR 残念ながらまだ結果は出ていません。やはり何らかのデータ順序の入れ替えが行われているか、どこかで設定バイトが不足しているのではないかと考えています。 Re: Flash configuration confusion RT1176 Octal DDR マスミセイムさん、ありがとうございます。 確かに、例えばデータを入れ替える必要があることに気づきました。もう一度LUTを確認してみます。 Re: Flash configuration confusion RT1176 Octal DDR このスレッドを参照して:https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Internal-Boot-from-Flash-memory-not-starting-on-imxRT1176-custom/m-p/1830699 Zephyr RTOSの指示に従って、ミスオプションを編集してデータの順序を入れ替えるべき https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L340-L355 データスワップバイトは挿入されるのですが、何か見落としているような気がします。 .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .isDataOrderSwapped = true .serialNorType = 2, .reserve2[0] = 0x7008200, Re: Flash configuration confusion RT1176 Octal DDR やあ、 @SimonHugr 、 まず最初に確認したいのは、MX25UM51245GとMX25UM51345Gの実際の違いです。部品番号は非常によく似ていますが、それらは同一の機器ではありません。Macronixのデータシートによると、MX25UM51345GはDOPI(Double Transfer Rate OPI)バイトモードのデータシーケンスを明示的にサポートしていますが、MX25UM51245Gは別の製品バリアントに属しています。これにより、FlexSPIコントローラで使用されるコマンドフォーマット、バイト順序、LUT構成に影響を与えることがあります。 私の設定も比較できます。MX25UM513とMX25UW6345G: https://github.com/Masmiseim36/Coremark_iMXRT/blob/master/XiP/flexspi_flash_OSPI_Macronix.c よろしく Re: Flash configuration confusion RT1176 Octal DDR こんにちは、ハビブ 私たちのファームウェアでは、セキュアプロビジョニングツールを使用してFCBを生成することができないため、代わりにFCBをファームウェアの起動時にロードする必要があります。そのため、mem_configおよびflash_config構造体を作成し、自分で設定する必要があります。 Zephyrプロジェクトがそのflash_nor_configでisDataOrderSwappedのバイトを参照していることを見つけました https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L347-L348 また、Claude は controllerMiscOption のビット 5 に padSettingOverride ビット、ビット 7 に dataSwap ビットを参照していますが、LLM がこの情報をかなり誇張しているかどうかはわかりません。 Secure Provisioningツールを使用してFCBを生成し、このツールを使用してC構造体に変換する場合 https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/i-MX-RT-FLEXSPI-booting-guide/ta-p/1669262 ビット5や7は設定されていないのでLLMが間違っていると思いますが、isDataSwappedは設定されていて、通常FCBでreserved0[0]として参照されています。 セキュアプロビジョニングツールでMX25UM51245Gのテンプレートは見つかりませんが、MX25U51245G(クアッドフラッシュ)、MX25UM51345G、MX25UMxxx45Gだけです。 しかし、私が試したどのオクタルDDR構成も起動できませんでした。 興味深いことに、BT_FUSE_SEL=1でピンBOOTMODE0/1=0であっても、特定の設定後に自動的にISPモードに入ることがよくあります。これは一貫して発生しているわけではなく、どの設定が原因なのか分かりません。 フラッシュの読み取りに失敗した後、MCUはISPモードに入るのでしょうか? よろしくお願い申し上げます。 BR Re: Flash configuration confusion RT1176 Octal DDR こんにちは、 @SimonHugr さん。 申し訳ございませんが、MX25UM51245Gのテンプレートはございません。MX25U51245GとMX25UM51345Gのみご利用いただけます。 ご説明いただいた内容から判断すると、現在のブートメモリ構成設定では、フラッシュデバイスとの通信は正常に機能しているようです。「完全なFCBに変換」をクリックすると、ツールは構成をフラッシュメモリに書き込み、その後、以下に説明するように、指定したパラメータを使用してそれを読み戻します。 Habib_MS_0-1784753481563.png 選択された設定のいずれかがフラッシュデバイスでサポートされていない場合、ツールは次のようなエラーを報告するはずです。 Habib_MS_1-1784753506390.png コミュニティ投稿でFCBコンバーターで生成されたLUTが正しく動作しているかさらに確認するために、flexspi_nor_polling_transfer_cm7 SDKの例で、内部RAMからアプリケーションを実行しながらテストしていただけますか?例について質問があれば教えてください。 さらに、起動しようとしているアプリケーションについてもう少し詳しく教えてもらえますか? -SDKの例ですか、それともご自身のアプリケーションですか? -どのIDEを使っていますか? -あなたのアプリケーションはXIPを実行していますか、それとも非XIPですか? -起動中以外でフラッシュにアクセスしていますか? ISPモードでの入りについてですが、カスタムボードのブートピンがハードウェア 開発MIMXRT1160ガイドの第5章「起動、リセット、その他」の推奨事項に従っているか確認していただけますか?これは、ブートピンに関するハードウェアの問題を回避するためです。 ご質問にお答えすると、有効なイメージが利用できない場合、ISPモードで入ることができます。図10-1のRMの「ブートフロー」に示されています。 Habib_MS_2-1784754516601.png BR ハビブ Re: Flash configuration confusion RT1176 Octal DDR こんにちは、ハビブさん。 少なくとも今は、8進数SPI STRモードを200MHzで動作させることができました。問題は、説明されていない「reserve2」バイトが何らかの魔法のような値で設定されていたことだった。また、デバイスモードシーケンスに加えて、追加のバイトを設定する構成コマンドシーケンスを設定することも選択しました。 バイトスワップを設定しても何も効果はありませんでしたが、200MHz STR Octalで達成できる速度には満足しています。 よろしくお願いいたします。
查看全文
IMX95 { 15 x 15 } 是否支持 LPDDR4/4X 16 GB 内存 NXP团队您好, 我想了解一些关于 IMX95{ 15 x 15 } " MIMX9556CVTXN" 是否支持 16 GB RAM { LPDDR4/4X } "MT53E4G32D8GS-046 WT:C ?" 的一般信息。 我找不到将 16 GB RAM 连接到 IMX 95 { 15x 15} 的原理图参考资料。 我只找到了配备 16 GB RAM {LPDDR5} 的 imx95 { 19 x 19 } 的原理图。 请问能否帮我解决一下 16GB RAM{ LPDDR4/4x } 与 imx95{ 15 x 15 } 的连接问题(如果支持的话)? 电路板支持包 文件呢?16 GB 内存的 DTS 文件是否存在,还是需要手动生成? Yocto Project Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM 嗨@Asadeds , 感谢您联系恩智浦技术支持。 根据我们的内存兼容性指南,内存部件号 MT53E4G32D8GS-046 与 i.MX95 完全兼容,并且已在该平台上进行了彻底的验证和测试。 因此,按照推荐的配置和设计指南,该设备可以与 i.MX95 一起使用。 此致, 亚历杭德罗·加西亚 Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM 嗨@Chavira 感谢您的快速回复。 当我尝试配置 DDR 时,我看到“imx 26.06 配置工具”应用程序仅支持最大 8GB 的 LPDDR4/4x ,而当我选择任何软件包的LPDDR5时,它却支持最大 16GB。 我附上了截图供您参考,如果我遗漏了什么,请告诉我。 Asadeds_0-1784697908014.png Asadeds_1-1784698046354.png 请问您能帮我解决这个问题吗?另外,我的项目需要使用LPDDR4/4x内存,型号是“MT53E4G32D8GS-046 WT:C”。 Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM 嗨@Asadeds , MT53E4G32D8GS 是一款受支持的存储设备,已通过 i.MX95 的内部验证。但是,该设备使用特殊的字节模式配置,这需要在配置工具和软件堆栈中提供额外的支持。 目前,虽然内部支持可用,但当前公开发布的 Config Tools 版本尚未包含配置此特定内存设备所需的选项。计划在未来的工具版本中加入对该内存的支持。 此致, 查维拉 Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM 嗨@Chavira , 感谢您的快速回复。 我仍然有些困惑,所以我想简化一下这个问题。 目前,我们暂且忽略具体的内存供应商和部件号。 请问配置工具是否支持i.MX95的16GB LPDDR4/LPDDR4X内存,无论是15×15还是19×19封装? 如果答案是否定的,那么我们如何才能获得16GB内存的支持?您提到公司内部有技术支持,所以如果您能解释一下如何获得这种支持,我将不胜感激。 我们目前正在敲定PCB设计,项目暂停仅仅是因为内存条的选择问题。这是唯一阻碍我们继续前进的因素,所以我们需要尽快得到明确的答复。 希望您能尽快澄清。 谢谢! Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM 嗨@Asadeds , 与内部团队讨论后,我谨提供以下最新进展。 NXP 通常每季度发布一个新版本的 Config Tools,因此下一个预计版本是 26.09。 虽然 i.MX95 本身支持这款 16 GB 内存设备,但当前公开版本的 DDR 配置工具尚不支持配置此特定内存。好消息是,该工具的内部版本已经支持此功能,但尚未将其纳入公开版本中。 我不确定是否有可能提供对内部工具的访问权限。不过,我建议您使用公司邮箱地址通过我们的网站提交支持请求。这将使相关团队能够审核您的请求,并确定是否有任何额外的帮助或提前支持方案。 由此给您带来的不便,我们深表歉意,并感谢您的耐心等待,我们将把这项支持整合到未来的公开版本中。 此致, 查维拉
查看全文
Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM Hi NXP Team,  I want some general Information about the IMX95{ 15 x 15 } "MIMX9556CVTXN" will support 16 GB of RAM { LPDDR4/4X } "MT53E4G32D8GS-046 WT:C ?" I could not able to find the reference of the schematic to connect the 16 GB RAM to IMX 95 { 15x 15}  ,  I only found the schematic of  imx95 { 19 x 19 } with the 16 GB RAM {LPDDR5}.  can you please help me out with connection of 16GB RAM{ LPDDR4/4x } with imx95{ 15 x 15 } if Supported. and What about the BSP file? , is DTS file present for the 16 GB of ram or need to generated manually.  Yocto Project Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM Hi @Asadeds, Thank you for contacting NXP Support. According to our Memory Compatibility Guide, the memory part number MT53E4G32D8GS-046 is fully compatible with the i.MX95 and has been thoroughly validated and tested on this platform. Therefore, this device can be used with the i.MX95 following the recommended configuration and design guidelines. Best regards, Alejandro Garcia Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM Hi @Asadeds, The MT53E4G32D8GS is a supported memory device and has been validated internally with the i.MX95. However, this device uses a special byte mode configuration, which requires additional support in both the configuration tools and software stack. At the moment, although internal support is available, the current public release of Config Tools does not yet include the required options to configure this specific memory device. Support for this memory is planned for a future tool release. Best Regards, Chavira Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM Hi @Chavira  Thanks for the quick Reply,  As I see the Application " Config tool for imx  26.06" when I try to configure the DDR , then there is Only supportable LPDDR4/4x upto 8GB, while i select the LPDDR5 for any packages it Support upto 16GB. As i attached  the screenshot for reference , If i m missing something please let me know. Asadeds_0-1784697908014.png Asadeds_1-1784698046354.png can you please help me Out this , and as well as , i want to use LPDDR4/4x for my project the part number is this one "MT53E4G32D8GS-046 WT:C" Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM Hi @Chavira , Thank you for your quick reply. I am still confused, so I'd like to simplify the question. For now, let's ignore the specific RAM vendor and part number. Could you please confirm whether the Config Tools support 16GB LPDDR4/LPDDR4X memory for the i.MX95, for either the 15×15 or 19×19 package? If the answer is no, then how are we expected to obtain support for 16GB? You mentioned that internal support is available, so I would appreciate it if you could explain the process for accessing that support. We are currently finalizing our PCB design, and our project is on hold solely because of the RAM selection. This is the only remaining item preventing us from moving forward, so we need a clear answer as soon as possible. I would appreciate your prompt clarification. Thank you. Re: Is IMX95 { 15 x 15 } supported LPDDR4/4X 16 GB RAM Hi @Asadeds, After discussing this with the internal team, I would like to provide the following update. NXP typically releases a new version of Config Tools once per quarter, so the next expected release is version 26.09. Although the i.MX95 itself supports this 16 GB memory device, the current public version of the DDR configuration tool does not yet support configuring this specific memory. The good news is that support already exists in an internal version of the tool, but it has not yet been incorporated into the public release. I am not certain whether it will be possible to provide access to the internal tool. However, I recommend opening a support case through our website using your company email address. This will allow the appropriate teams to review your request and determine whether any additional assistance or early support options are available. We apologize for the inconvenience and appreciate your patience while this support is integrated into a future public release. Best regards, Chavira
查看全文
Architectural Overview for the Dual-Motor EV Control System 1 Introduction After introducing the Dual-Motor EV Traction platform and the Software & Hardware environment behind it, this article moves one step closer to the running application. It looks inside the Motor Control System and explains how the Simulink model is structured to control two PMSM motors using the NXP S32K396 MCU as the target hardware. The goal is to provide a clear architectural view of the application before diving into simulation, validation, or deployment details. We will follow the main signal paths, from vehicle-level CAN commands and inverter feedback to FOC execution, PWM generation, ADC measurement, and communication back to the vehicle network. The focus remains intentionally architectural. Instead of covering controller tuning, peripheral configuration, or low-level implementation, this article highlights the building blocks that make the dual-motor application understandable as a complete embedded control system. This article is organized around five architectural views: the application overview, the system interfaces, the CAN communication path, the Simulink model structure, and the peripheral-to-data-flow mapping. Together, these views explain how the dual-motor application receives commands, measures feedback, executes control, drives the inverters, and reports diagnostic information back to the vehicle network.   2 Table of Contents • Introduction • Application Overview • System Inputs and Outputs • Vehicle-Level Communication • Simulink Application Architecture • Peripheral Mapping • Data Flow • Conclusion • References   3 Application Overview The Motor Control System is implemented on the NXP S32K396 microcontroller and runs as a single-core embedded application. The ECU controls two PMSMs, each connected to its own three-phase inverter stage. From a control perspective, the application contains two Field-Oriented Control implementations. Each FOC instance is responsible for one motor and executes independently, based on its own sensing path, control states, and output generation. Both control loops are scheduled from independent interrupt sources and are triggered every 100 microseconds. This execution period supports the fast current-control layer required by traction inverter applications, while the single-core implementation requires both motor-control paths to complete within the available timing budget.   simulink_overview.png Figure 3-1. Overall Simulink Application At vehicle level, the Motor Control System behaves as a actuating end node. It receives enable and speed commands from the Central Node over CAN and sends back monitoring and diagnostic information at a slower periodic rate. The Motor Control System exchanges CAN data with the vehicle network through the South Zone Controller. 3.1. Control Strategy At the heart of the application is the Field-Oriented Control algorithm, which provides the control structure required to drive each PMSM efficiently and independently. In this architecture, FOC transforms the three-phase motor behavior into a control problem handled in a rotating reference frame, where torque-producing and flux-producing current components are regulated separately. The control strategy is built around speed control. The requested speed comes from the vehicle-level command interface, while the estimated rotor speed is provided by the sensorless observer. The speed controller compares these values and generates the current reference needed to reach the commanded operating point. For each motor, the FOC structure combines an outer speed loop with inner current-control loops. The current PI controllers regulate the direct-axis and quadrature-axis currents in the rotating reference frame, allowing the application to control the electrical behavior of the motor in a deterministic and decoupled way. Sensorless operation is achieved using an Extended EMF Observer. This observer estimates the rotor position and speed from the measured electrical quantities, removing the need for a physical position sensor in the control loop. The estimated position is then used by the Park and inverse Park transformations that connect the stationary and rotating reference frames. The feedback path is based on phase-current reconstruction using the dual-shunt measurement method. The reconstructed phase currents are processed through the Clarke and Park transformations, while the DC bus voltage feedback is used to keep the control and modulation stages aware of the available inverter supply. The two FOC implementations follow the same control structure, but each one operates on its own motor-specific inputs, states, and outputs. This separation allows Motor 1 and Motor 2 to be controlled independently, even though both algorithms execute on the same S32K396 device. Because the control loops are executed every 100 microseconds, the FOC layer must remain compact and deterministic. The model architecture therefore separates the fast control path from slower communication and monitoring tasks, ensuring that current regulation and PWM update remain the highest-priority activities in the application.   mcb_foc.png Figure 3-2. Sensorless Field-Oriented Control diagram 4 System Inputs and Outputs The application interface can be viewed through two categories of signals. The first category contains vehicle-level commands exchanged over CAN. These signals define how the traction application is started, stopped, and commanded from the rest of the vehicle. The second category contains real-time electrical feedback and actuation signals exchanged with the inverter hardware.   in_out_app.png Figure 4-1. Split the Simulink model to Inputs, Outputs and Application layers 4.1. Inputs The main vehicle-level inputs are received from the Central Node over CAN through the South Zone Controller. The command message contains the CCS_EnableMotors signal, used to engage or disengage the motors, and the CCS_SetSpeed signal, used to provide the desired speed reference for the control application.   can_unpack.png Figure 4-2. CAN Message Unpack block for receiving the command signals   These CAN inputs are not part of the fast current-control loop, but they directly influence its behavior. Once decoded, the enable command defines whether the control logic is allowed to drive the inverters, while the speed reference becomes the target followed by the outer speed controller. The hardware feedback inputs are acquired from the inverter stages through ADC measurements. For each motor, two phase currents are measured using the dual-shunt method, while the third phase current is reconstructed in software using Kirchhoff’s Current Law. The DC bus voltage is measured for each inverter so the control, modulation, and monitoring logic remain aware of the available supply voltage.   adc_block.png Figure 4-3. Gathering analog quantities via ADC Block   4.2. Outputs The primary real-time outputs are the PWM commands used to actuate the inverter phases for both motors. The FOC algorithm computes the voltage commands required by each PMSM, and these commands are translated into duty cycles for the three-phase inverter. Because each inverter leg requires a high-side and a low-side control signal, the application ultimately drives six PWM signals per motor. These signals are generated from the MCU timing path and routed to the gate-driver stage that controls the external power switches.   pwm.png Figure 4-4. PWM Actuation Subsystem   In addition to the PWM outputs, the application sends CAN data to the South Zone Controller every 0.1 seconds. These messages are intended for diagnostics, monitoring, and vehicle-level observability. The transmitted CAN data includes the estimated speed of each motor, the fault status reported by each control channel, the measured DC bus voltage for each inverter, the current operating state of each motor-control instance and many more. The following table highlights the output data sent over CAN bus:   Name Description Unit MC_BusVoltageM1 DC Bus Voltage measured by inverter for Motor 1 V MC_BusVoltageM2 DC Bus Voltage measured by inverter for Motor 2 V MC_FaultStatusM1 Fault status reported by Motor 1 true/false MC_FaultStatusM2 Fault status reported by Motor 2 true/false MC_PhACurrentM1 Phase A current – Motor 1 A MC_PhACurrentM2 Phase A current – Motor 2 A MC_PhBCurrentM1 Phase B current – Motor 1 A MC_PhBCurrentM2 Phase B current – Motor 2 A MC_PhCCurrentM1 Phase C current – Motor 1 A MC_PhCCurrentM2 Phase C current – Motor 2 A MC_SpeedEstM1 Motor 1 estimated speed rpm MC_SpeedEstM2 Motor 2 estimated speed rpm MC_SpeedRefM1 Motor 1 desired speed rpm MC_SpeedRefM2 Motor 2 desired speed rpm MCS_StateM1 Motor 1 state. It can be Stand By, Running, Fault - MCS_StateM2 Motor 2 state. It can be Stand By, Running, Fault - MCS_PhAVoltageM1 Phase A Voltage – Motor 1 V MCS_PhAVoltageM2 Phase A Voltage – Motor 2 V MCS_PhBVoltageM1 Phase B Voltage – Motor 1 V MCS_PhBVoltageM2 Phase B Voltage – Motor 2 V MCS_PhCVoltageM1 Phase C Voltage – Motor 1 V MCS_PhCVoltageM2 Phase C Voltage – Motor 2 V   can_pack.png Figure 3-5. Example for CAN Pack Message 5 Vehicle-Level Communication The Motor Control System is part of a distributed EV control architecture. It does not operate as an isolated controller. Instead, it receives high-level commands from the vehicle network and reports measured and estimated values back to the rest of the system. The communication path is organized around the CAN interface between the Central Node, the South Zone Controller, and the Motor Control System Node. Commands such as motor enable and desired speed are received through this path, while feedback messages such as estimated speed, DC bus voltage, phase-current information, and fault status are sent back through the same zonal communication route. CAN receive handling is interrupt-driven. When a command frame is received, the application decodes the enable and speed request signals and updates the internal command variables used by the Simulink control model. This keeps the command interface responsive without placing CAN processing inside the 100 microsecond FOC interrupt.   can_rx_isr.png Figure 4-1. CAN Receive Interrupt block   CAN transmit handling is periodic. A PIT interrupt schedules outgoing monitoring messages every 0.1 seconds. This separates network reporting from the real-time control path and ensures that diagnostics transmission does not disturb the deterministic execution of the motor-control interrupts.   can_tx_isr.png Figure 4-2. Periodic Interrupt for transmitting CAN messages   The CAN database defines the mapping between application variables and network messages. For example, the enable and speed command are grouped in dedicated message, while fault information, estimated speed, DC bus voltage, and phase-current feedback are exposed through dedicated monitoring messages. More information about the CAN database created for organizing the CAN messages and signals will be presented in a dedicated article. 6 Simulink Application Architecture The Simulink model is organized around a dual-control structure. Each motor channel contains the algorithmic blocks required to transform measured currents, estimate rotor position and speed, regulate the control loops, and generate voltage commands for PWM modulation. Although both channels implement the same FOC strategy, they are treated as separate execution paths. This separation makes it easier to scale from a single-motor setup to a dual-motor configuration and to validate each channel independently before running both motors together. 6.1. Real-Time Control Layer The real-time control layer is executed inside the BCTU-triggered interrupt flow. The BCTU is synchronized with the PWM timing generated by eMIOS, so the ADC conversions are requested at the correct moment within the switching period. Once the required current measurements are available, the interrupt allows the control algorithm to run using a coherent feedback set.   foc_simulink.png Figure 5-1. FOC Implementation   Inside this layer, the application reconstructs the three-phase current set, executes the Clarke and Park transformations, estimates rotor position and speed through the Extended EMF Observer, runs the speed and current PI controllers, and generates the voltage commands required by the modulation stage. The voltage commands are then translated into PWM duty cycles. eMIOS provides the base PWM generation, while the LCU forms the complementary high-side and low-side signals needed by the inverter legs. LCU also adds the necessary dead-time in complementary PWM signals to avoid the DC source damage. TRGMUX routes the required trigger signals between these peripherals, maintaining alignment between actuation and measurement.   fast_loop_simulink.png Figure 5-2. Fast Loop Subsystem   The same execution concept is applied to the second motor channel. The two FOC instances run on the same S32K396 core, so the application depends on the MCU processing capability and on a carefully scheduled interrupt structure to complete both control paths within the available timing budget. 6.2. Communication and Monitoring Layer The communication and monitoring layer connects the fast control application with the vehicle network. It receives the enable and speed commands from CAN, prepares diagnostic information, and schedules outgoing status messages. This layer runs at a lower rate than the FOC loops. It is intended for command exchange, observability, and integration with the Central Node through the South Zone Controller. 6.3. Hardware Abstraction and Peripheral Layer The hardware abstraction and peripheral layer connects the generated Simulink application to the physical resources of the S32K396 MCU. Its purpose is to keep the control algorithm separated from the low-level hardware access, while still allowing the model to read measurements, update PWM outputs, handle interrupts, and exchange data over communication interfaces. In practice, this layer contains the target-specific blocks used for ADC acquisition, PWM generation, and CAN communication. These blocks provide the interface between the algorithmic part of the model and the peripherals configured on the MCU. This layer also makes the model easier to understand and maintain. The FOC subsystems can remain focused on control behavior, while the peripheral layer handles how signals enter and leave the MCU. As a result, the same architectural structure can be reused when moving between simulation, generated code, and target execution. The NXP Model-Based Design Toolbox provides the Simulink blocks that expose these S32K396 peripherals at model level. This allows engineers to configure and connect hardware-facing functions directly in Simulink, while the generated embedded code uses the corresponding target drivers and configuration. 7 Peripheral Mapping The peripheral mapping is centered on the synchronization between measurement, control execution, actuation, gate-driver communication, and vehicle-level CAN communication. Each peripheral has a specific role in this chain, and together they allow the generated Simulink application to interact deterministically with the inverter hardware. SAR-ADC is used to measure the analog quantities required by the control algorithm. These measurements include the phase-current feedback acquired from the inverter stages and the DC bus voltage used by the modulation and monitoring logic. BCTU (Body Cross Triggering Unit) performs the triggering of the ADC conversions. Instead of sampling the analog signals at an arbitrary moment, BCTU waits for the synchronization event coming from the PWM timing path and then starts the SARADC conversions at the correct point in the switching period. eMIOS (Enhanced Multiple Input Output System) generates the three phase PWM signals for each motor channel. These PWM signals represent the base timing generated from the duty cycles computed by the FOC algorithm. LCU (Logic Control Unit) takes the three PWM signals generated by eMIOS and creates the six PWM outputs required by the inverter. For each motor phase, it generates the complementary high-side and low-side control signals with dead-time insertion used to drive the corresponding inverter leg. TRGMUX provides the internal routing between peripherals. It connects the three PWM outputs from eMIOS to the LCU inputs and also routes the synchronization signal between eMIOS and BCTU. This routing keeps the actuation path and the measurement path aligned. LPSPI is used as the communication layer between the S32K396 controller and the MC33937 gate driver. Through this interface, the application can configure and exchange diagnostic information with the gate-driver device, complementing the direct PWM actuation path. FlexCAN provides the CAN communication controller used by the Motor Control System. It enables reception of command messages from the South Zone Controller and transmission of monitoring and diagnostic data back to the vehicle network. In this mapping, the fast motor-control path is formed by eMIOS, TRGMUX, BCTU, SARADC, and LCU, while LPSPI supports gate-driver interaction and FlexCAN supports vehicle-level communication. This separation helps keep the time-critical control loop independent from slower configuration, diagnostics, and network tasks.   peripherals.png Figure 6-1. Peripherals Mapping Overview   PIT (Periodic Interrupt Timer) peripheral is used for slower periodic activity, such as CAN diagnostics transmission every 0.1 seconds. CAN receive interrupts are used for incoming command messages from the South Zone Controller. 8 Data Flow The data flow starts at the vehicle network and at the analog feedback interface. CAN provides the high-level operating commands, while the inverter sensing path provides the real-time electrical feedback required by the FOC loops. When a CAN command is received, the enable and speed references are decoded and stored as application-level command variables. These signals are then consumed by the motor-control logic during the next control execution. In parallel, synchronized ADC conversions provide the latest phase-current and DC bus voltage values. The control algorithm reconstructs the motor currents, estimates rotor position and speed, transforms the feedback into the rotating reference frame, and computes the required voltage commands. The voltage commands are converted into PWM duty cycles and applied to the inverter actuation path. The resulting gate-drive signals control the external power stage, which drives the PMSM phases. At a slower rate, selected internal variables are packed into CAN monitoring frames. These values allow the South Zone Controller and Central Node to observe the Motor Control System state without interfering with the fast control-loop execution. 9 Conclusion This article described the architectural overview of the Dual-Motor EV Control System application. It presented the main Simulink model structure, the system inputs and outputs, the vehicle-level CAN communication path, the peripheral mapping, and the data flow between command reception, sensing, control, actuation, and monitoring. The architecture is built around two independent FOC control paths running on the S32K396 in a single-core configuration. Each motor channel receives synchronized analog feedback, executes its control algorithm every 100 microseconds, and generates the PWM outputs required by its inverter stage. By combining Model-Based design with target-specific peripheral integration, the application provides a scalable foundation for validating dual-motor traction behavior in simulation and on real hardware. The next article can build on this architecture by focusing on Model-in-the-Loop development and controller validation before deployment. 10 References Developing a Dual-Motor EV Control System with Model-Based Design Toolbox Software & Hardware Enablement for the Dual-Motor EV Control System Sensorless FOC with Motor Control Blockset Extended EMF Observer – Motor Control Blockset NXP Model-Based Design Toolbox for S32K3 NXP S32K396 microcontroller documentation AN14481: MCSPTR2AK396 3-phase PMSM Motor Control Kit with S32K396 Application Note
查看全文
Unable to Run RT1180 EVK SDK Examples on RIOP RT1189 Board Hi Everyone, I am working with the RIOP RT1189 board and have a few questions regarding software compatibility and debugging. Initially, I successfully programmed the RIOP demo application using the Secure Provisioning Tool in Serial Download Mode, and the demo is working as expected. After that, I tried to run the MIMXRT1180 EVK SDK example projects (for example, the LED Blinky example) on the RIOP RT1189 board. What I tried Modified the LED pin configuration in the RT1180 EVK LED Blinky example to match the RIOP RT1189 board. Programmed the image using the Secure Provisioning Tool in Serial Download Mode. However, the application does not run on the RIOP board. To verify the hardware, I took the working RIOP demo project, commented out most of the demo functionality, added only the LED Blinky code, and programmed it again. In this case, the LED Blinky works correctly. This makes me think there are additional board-specific configurations in the RIOP demo that are required beyond simply changing the LED GPIO pin. Questions Can the MIMXRT1180 EVK SDK example projects be used directly on the RIOP RT1189 board? If not, what board-specific modifications are required (clock configuration, memory configuration, FlexSPI, linker script, startup code, etc.) to make the SDK examples work on the RIOP board? Debugging Issue I also tried to debug the demo application using MCU-Link, but the debugger fails during flash initialization with the following error: Inspected v.2 External Flash Device on SPI using SFDP JEDEC ID MIMXRT1180_SFDP_FlexSPI1_A_QSPI.cfx Image 'iMXRT1180_SFDP_FlexSPI1_A_QSPI Jun 26 2025 18:32:16' Opening flash driver MIMXRT1180_SFDP_FlexSPI1_A_QSPI.cfx VECTRESET requested, but not supported on ARMv8-M CPUs. Using SOFTRESET instead. Using SOFT reset to run the flash driver Driver V.2 dynamic startup failed - driver Init provided no flash parameters Flash Driver V.2 startup failed - rc Ef(55): Dynamic flash driver startup failed to provide flash parameters. Terminate (0x0, 0x0, 0x0) status 0x40 - driver reports init failure - EXTSPIJ driver rc 20107 (0x4E8B) chip initialization failed - Ef(55): Dynamic flash driver startup failed to provide flash parameters. failed to initialize flash driver MIMXRT1180_SFDP_FlexSPI1_A_QSPI.cfx Could this error indicate that the RT1180 EVK flash driver is incompatible with the external flash used on the RIOP RT1189 board, or is there an additional flash configuration that needs to be provided for debugging? Any guidance or suggestions would be greatly appreciated. Thank you! Re: Unable to Run RT1180 EVK SDK Examples on RIOP RT1189 Board Hello @Pavankumar1, The Remote I/O Platform (RIOP) is intended as a production-ready platform that supports industrial communication protocols such as EtherCAT®, EtherNet/IP™, and PROFINET® RT. I would like to clarify that the hardware configuration of the RIOP RT1189 board differs from that of the RT1180-EVK, examples developed for the RT1180-EVK cannot run directly on the RIOP hardware. Porting an RT1180-EVK example to the RIOP RT1189 will require additional development to adapt the application to the different hardware connections and peripherals. For this reason, I recommend starting with the examples specifically provided for the RIOP RT1189 board. As a starting point, I recommend check firstly the Getting Started with the Remote I/O Platform (RIOP), which provides an overview of the platform architecture and demonstrates its capabilities. If your objective is to evaluate the RIOP hardware without using industrial communication protocols, you can refer to the following example: https://github.com/nxp-appcodehub/rd-riop-demo/tree/main In addition, some example applications are available for the supported industrial protocols. Their corresponding User Guides include instructions on how to download, install, and import the projects into the MCUxpresso for VS Code extension. If you have any further questions about these user's guide, do not hesitate to let me know. These guides can be found in the Documentation section, as shown in the image below: Habib_MS_1-1784671260684.png If you are interested on these examples the following link might be helpful: https://github.com/nxp-appcodehub/rd-riop In order to support you better, could you please share me more details about your intended application? Specifically, could you clarify why you would like to port an RT1180-EVK example to the RIOP RT1189 platform and what functionality you are interested to implement? BR Habib Re: Unable to Run RT1180 EVK SDK Examples on RIOP RT1189 Board Hi @Habib_MS  Thank you for your reply. I have explored the RIOP demo application available at the following link and tested it with the FreeMASTER application:  https://github.com/nxp-appcodehub/rd-riop-demo/tree/main The demo works correctly when I program it using the Secure Provisioning Tool in Serial Download Mode. However, I am unable to debug the demo project using MCUXpresso for VS Code and MCU-Link. During the debug process, I encounter the following error: Pavankumar1_0-1784697379753.png Could you please let me know if there are any additional steps required to enable debugging on the RIOP RT1189 board? Is there a specific flash driver or debug configuration that should be used instead of the default RT1180 EVK configuration? My objective is to explore and develop applications for the Analog Front End (AFE) module available on the RIOP board. For this, I need to be able to build, debug, and modify the firmware. Could you please advise on the following? 1. Is it possible to create a new MCUXpresso project from scratch specifically for the RIOP RT1189 board and configure the Analog Front End module? 2. Is there a basic example project, such as an LED Blinky example, specifically for the RIOP RT1189 board that I can use as a starting point for my application? 3. If no such example is available, what is the recommended approach for developing custom applications on the RIOP RT1189 platform? Any guidance or documentation would be greatly appreciated. Thank you for your support. Best regards, Pavankumar A G Re: Unable to Run RT1180 EVK SDK Examples on RIOP RT1189 Board Hello @Pavankumar1, I understand that you are using MCUXpresso IDE instead of MCUXpresso for VS Code extension, as the screenshot references a .cfx file, which is the flash loader format used by MCUXpresso IDE. Is my understanding correct? If so, could you try debugging the application using the MCUXpresso for VS Code extension, or alternatively attach the debugger after programming the image with the Secure Provisioning Tool, and let me know the results? Also, thank you for providing additional details about your application. The example already includes a driver for the NAFE13388, which can be found in the NAFE_hw folder. It also demonstrates how to configure the device in the AFE_Init() task located in the api_afe.c file, which may serve as a useful reference for your implementation. BR Habib Re: Unable to Run RT1180 EVK SDK Examples on RIOP RT1189 Board Hi @Habib_MS, Thank you for your response. I tried debugging the riop_demo application using MCUXpresso for VS Code, but I encountered the attached error. I also programmed the image using the Secure Provisioning Tool and attempted to attach to the running target, as you suggested. However, I am still encountering the same error. Pavankumar1_0-1785242332392.png Could you please advise on the required modifications if I create a new project for the RIOP board? Specifically, I would like to know what changes are needed to make the application run correctly on the RIOP hardware. Thank you for your support. Regards, Pavanakumar A G Re: Unable to Run RT1180 EVK SDK Examples on RIOP RT1189 Board Hello @Pavankumar1, The errors occur because the debug configurations used to communicate with the external flash were not designed as a full debugging solution for the RIOP. Instead, the examples and the guides are primarily intended to demonstrate the use of the different software components that the board offers. With that in mind, one option would be to debug the application from the internal RAM. Once you are satisfied with the behavior of your application, you can follow the Secure Provisioning Tool flow to program the image into the external flash and perform the tests you require. You can refer to the "Image Running in Internal RAM" section of the MCUXpresso Secure Provisioning Tool v26.06 User's Guide for details on how to create an image that runs from internal RAM using MCUXpresso IDE. This approach allows you to work with the SDK examples provided for the RT1180-EVK. However, since your hardware differs from the EVK, some project modifications may be required. Alternatively, if you would like to debug directly from the external flash, you could create and use your own flash loader. MCUxpresso IDE uses a .cfx file to communicate with the external flash and program the image, so you can develop a custom .cfx flash loader for your device and configure the IDE accordingly. The following documents can be used as reference: AN13386: RT600 Flash Loader for Custom Flash Device How to Create a New Flash Driver for MCUXpresso IDE At the moment, there is no specific guide describing how to implement this workflow with the VS Code extension. However, you can take the different build configurations available in the RT1180-EVK SDK examples as a reference for creating a similar setup: Habib_MS_0-1785357980496.png BR Habib Re: Unable to Run RT1180 EVK SDK Examples on RIOP RT1189 Board Hello @Pavankumar1, As you may know each memory has specific commands to performing read, write or erase operations. For this reason, the LUT configuration used in the example may not be compatible with this specific flash device. You can use the Boot Memory Configuration feature in the MCUXpresso Secure Provisioning Tool v26.6 to make your entire FCB. You can take the flash configurations used in the "Running the ECAT application" section as a reference when configuring the FCB for the flash device. Additionally, I recommend reviewing this community post, particularly the steps starting from point 15. That section provides a more detailed explanation of how the Secure Provisioning Tool generates the boot memory configuration and may help clarify the parameters and output produced by the tool. If you have any further questions, I would kindly ask you to open a new community post and include your questions there. This helps us provide more organized support and makes future reference easier. Feel free to tag me and with pleasure I will continuing supporting you. BR Habib Re: Unable to Run RT1180 EVK SDK Examples on RIOP RT1189 Board Hi @Habib_MS, I am now able to debug my application by running it from the internal RAM. Currently, I am trying to interface the Macronix MX25UW6345GXDI00 Octal Flash on the RT1189 RIOP board and test the read/write operations while executing the application from RAM. For this, I started with the FlexSPI Octal Flash Polling example from the RT1189 EVK SDK and made the following modifications: Updated the pin configuration to match the RIOP board. Changed the Flash port from Port A to Port B (kFLEXSPI_PortB1). However, when I try to read the Flash Vendor ID, the FLEXSPI_TransferBlocking() API returns kStatus_FLEXSPI_SequenceExecutionTimeout, and the Vendor ID is 0x00. I would like to know: 1. Besides changing the pin configuration and FLASH_PORT to kFLEXSPI_PortB1, are there any other FlexSPI configurations that need to be modified for the RIOP board? 2. Does the MX25UW6345GXDI00 power up directly in Octal mode, or does it need to be switched to Octal/OPI mode before using the Octal LUT? 3. Does the FlexSPI LUT provided in the RT1189 EVK example (which is based on the Micron MT35XU512 flash) need to be modified for the Macronix MX25UW6345GXDI00? 4. Has anyone successfully used the MX25UW6345GXDI00 with the RT1189 FlexSPI interface? If so, could you please share the required initialization sequence or any additional configuration changes? Any guidance would be greatly appreciated. Best regards, Pavanakumar A G
查看全文
LPC-Link2のシリアル番号の一貫性について 複数のLPC-Link2チップのシリアル番号が同一である場合、それらのシリアル番号を変更する方法を教えていただきたいです。よろしくお願いいたします。 Re: 关于lpc-link2 SN码一致 こんにちは@chenwe97 このシリアル番号は変更できません。 複数のLPC-LINK2デバイスを同時に接続する場合は、CMSIS-DAPファームウェアにアップデートすることをお勧めします。これにより、各デバッガに固有のID番号が割り当てられます。 BR アリス
查看全文