Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
there has no FreeMaster plug-in module I installed freemaster version 3.2.7, and tried many methods, but there's nothing under the plug-in module。I'm in a hurry. This is a necessary tool for my work. Can someone help me? Thank you very much. 1.install FreeMASTER "as administrator" or run the "c:\NXP\FreeMASTER 3.2\FreeMASTER\register.bat----no effect!!! 2. Re: there has no FreeMaster plug-in module Hello, as far as I know, the latest Windows update does not change the way the COM+ and ActiveX objects work. This shall not be related. The issue you are facing is strange indeed.  Let's pick up one plug-in (CAN communication) and see its registration details. Run the "command prompt" as administrator again, then cd to "c:\NXP\FreeMASTER 3.2\FreeMASTER" and use the regsvr32 command without the /s (silent) option: regsvr32 plugins/can/focpgi.dll The confirmation shall appear: Then in the same Command Prompt console, start the Registry Editor by command: regedit It will take some time (can be few minutes) then the editor will appear. Navigate to  Computer\HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{C10A92C3-7D47-4FDC-94B6-64B8E5C85E01} This entry represents the FreeMASTER-over-CAN plugin (focpgi.dll). It shall be present in the registry. You can check the InprocServer32 entry points to the correct focpgi.dll file.  The "Implemented Categories" ID is the one FreeMASTER uses to locate all plug ins using Windows COM Category API. Just to be sure the plug-in category exist, please check the Computer\HKEY_CLASSES_ROOT\Component Categories\{48A185C0-FFDB-11D3-80E3-00C04F176153} key in the Registry editor, you shall see the "MCB Communication Plugins" text value: Another experiment would be to remove the /s switch from register.bat script and run it. You shall see a registration confirmation box for each DLL.  Please share the respective screenshots or errors. Thank you for your cooperation. Regards, Michal Re: there has no FreeMaster plug-in module If someone can help me solve this problem, I will treat him to coffee. Re: there has no FreeMaster plug-in module I have tried installing your method, but the module still hasn't appeared. Is this related to my Windows system being updated to the latest version? Re: there has no FreeMaster plug-in module Hello,  both the installer and the register.bat use the "regsvr32.exe" system utility, which shall be installed by default in any Windows operating system.  First, make sure the regsvr32 utility exists on your system. Just press Win+R and Run the command "regsvr32". You should see the a help box like this one: If this utility does not work, your computer might have a system restriction applied by your administrator. You will need to get it fixed. If the regsvr32 works normally, let's see what errors the register.bat prints: Open the start menu. Locate the "Command Prompt" application Right-click and select "Run as administrator" (see picture below) In the console, type cd "c:\NXP\FreeMASTER 3.2\FreeMASTER" Run register.bat You should see no errors (like in the picture at the end). If no errors, the plug-ins shall appear in FreeMASTER. If there are any errors, please share it here. Regards, Michal Re: there has no FreeMaster plug-in module Hello, I've tested again. Currently, that module is still not available. I've removed all the lines containing "/s" in the register.bat file. Are there any other solutions available now? Re: there has no FreeMaster plug-in module Hello, to summarize - all plugin registrations finish successfully, but the plugin list in FreeMASTER Options dialog is still empty.  Is there any chance you could test on a different computer?  Also, there are two other utilities which access the plugin list. Please try to run the Remote Server tool ("c:\NXP\FreeMASTER 3.2\FreeMASTER\mcbsvr.exe"). Then press the "Add" button and see if the plug-in list will also be empty: A similar can be tried in "Named Connection" manager (c:\NXP\FreeMASTER 3.2\FreeMASTER\pgimgr.exe", then press the "New" button: Let me know if any of the two tools would display the plugin list not empty. Thank you, Michal Re: there has no FreeMaster plug-in module I've tried, but it still doesn't work. I have a lot of data on my computer and I don't want to reinstall the system. This is really troublesome.I was functioning normally before, but one day it suddenly stopped being able to connect. Re: there has no FreeMaster plug-in module Hello,  I have prepared a small test utility which shall help us detect what is wrong on your machine. Please see "plugin_test.exe" attached below.  Run it on cmd Command Prompt console (no need to run as administrator). 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) The test of selected plugin instantiation could pass. Try this: 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 The tool can even try to display the plugin configuration dialog: plugin_test.exe 1 MCBPGI.TCPSERIAL.1 And it shall appear: Finally, the test 2 does plug-in enumeration similarly to FreeMASTER. It will most likely fail at your side: 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 Thank you for your cooperation, Michal Re: there has no FreeMaster plug-in module Hello thanks for keeping trying. Let me summarize the facts - translated a bit to Windows programming API as used in FreeMASTER: The API EnumClassesOfCategories() returns empty list even if components are registered properly with all registry entries and even if executed with administrator rights. The EnumClassesOfCategories() return S_OK but the Next() called on the returned iterator does not enumerate anything. Both the component DLLs and the app which enumerates them are compiled as 32bit code. This issue is only observed on a single computer, many other computers work fine. The CoCreateInstance on the target CLSID work well even on this problematic computer. I have to admit I do not know what could be the reason. Some internet sources recommend to try un-registering and then registering the Windows component manager. So please try this in cmd under administrator and then restart the system: regsvr32 /u comcat.dll regsvr32 comcat.dll regsvr32 /u c:\Windows\SysWOW64\comcat.dll regsvr32 c:\Windows\SysWOW64\comcat.dll You should get a confirmation box for each command. If this does not help, I will continue investigation. Thanks, Michal Re: there has no FreeMaster plug-in module Thanks for making the experiment. Did any dialog appear in the "test 1" started like this:  plugin_test.exe 1 MCBPGI.TCPSERIAL.1 Also, can you please run the test 2 in a command prompt which was started "As administrator" ? plugin_test.exe 2 Thank you, Michal Re: there has no FreeMaster plug-in module I tested it, but it didn't work. Re: there has no FreeMaster plug-in module 1. The plugin_test.exe 1 MCBPGI.TCPSERIAL.1 has a dialog box. 2. The plugin_test.exe 2 has been run with administrator privileges. Re: there has no FreeMaster plug-in module Thank you very much for your assistance during this period, but it didn't work this time either.
查看全文
S32K396: device locked / asks for ADKP after HSE FW install over MU stopped mid-way Setup S32K396, no HSE FW ever installed, no secure boot, no ADKP. FS26 with 200ms watchdog What happened I was installing the AB_SWAP pink image over the MU interface 1. Programmed the HSE FW usage flag in UTEST at 0x1B000000. No other UTEST location touched. SBAF had not programmed it itself despite `FW_USAGE_FLAG_PROGRAM` being set in my boot config. 2. Wrote 0xA5 into DCMRWP1 (0x402AC400) bits 31 to 24 and issued a functional reset. 3. Ran the handshake on MU0 ch0: got 0xFF00F00F, replied 0xF0F00F0F, got 0xDADABABA, wrote the pink image address. so SBAF started programming the firmware. 4. Sometime after that, everything halted. Nothing more on the UART console. I power-cycled after ~5 minutes. Since then the board produces no console output at all, and I can no longer debug it the way I normally do: J-Link reports "Locked S32K3xx device detected" and asks for the ADKP. Or reports "Power-up of DAP failed" (See attached file). So I cannot read GPR3, DCMRWP1 or UTEST any more. I never provisioned an ADKP and never requested a life-cycle advance. Questions 1. Could the LC have advanced by itself? 2. Or is this recovery mode? In JTAG recovery mode on a CUST_DEL device, can a J-Link connection present as "locked / password required"? Figure 12 in the HSE_B Firmware Reference manual shows that path as waiting for a debugger without authentication. 3. What can I still test before scrapping the part? Above all: is there any way to read the current LC state over the debug interface when the host core is not released? Or is it possible another debug method using Trace32 would work better? Re: S32K396: device locked / asks for ADKP after HSE FW install over MU stopped mid-way 1) No, it cannot. It can be programmed either by user directly to UTEST (when HSE FW is not used) or with using of HSE service (when HSE FW is used). 2) I don’t think so, although I don’t have experience with J-Link. It is possible "Locked S32K3xx device detected" message Yes, the "Locked S32K3xx device detected" message can be a false positive caused by hardware (typically power) rather than an actual security lock. I would recommend to discuss it with Segger: https://www.segger.com/support/technical-support/ Even the device would be in JTAG recovery mode, if still in CUST_DEL life cycle, you still should be able to connect by debugger, download SW and so. 3) I would try to attach or attach just after POR, possibly erase application SW.
查看全文
How install S32K144EVB SDK in S32 Design Studio Hello, Today, I have installed S32 Design Studio to evaluate a S32K144EVB board. I would like to run a small test, but reading manual, when I create a New Application Project, when I click over "SDK" button, it doesn't appear any S32 SDK. How I can install a SDK for my board Thanks. Re: How install S32K144EVB SDK in S32 Design Studio Hi @ptcaos  First, you need to download the software version that is compatible with your S32DS IDE. The supported IDE version is specified in the software's Release Notes document. For this example, I will use the latest RTD release available for S32K1 devices: Download S32K1_S32M24x_RTD_R21-11_3.0.0_D2503_DesignStudio_updatesite.zip. This package can be found under Real-Time Drivers for S32K1 → Automotive SW - S32K1_S32M24x - Real-Time Drivers for Cortex-M → S32K1_S32M24x Real-Time Drivers AUTOSAR R21-11 Version 3.0.0. In S32 Design Studio 3.6.x, navigate to Help → S32DS Extensions and Updates. In the S32DS Extensions and Updates window, click Add Update Site in the lower-right corner. Select the .zip file downloaded previously. Once added, the package will appear in the list of available extensions and updates. Select the packages you would like to install and click Install/Update. Accept the license agreement and click Finish. Upon successful installation, S32DS will prompt you to restart the IDE for the changes to take effect. Important: When creating a new project, make sure to select a toolchain version that is compatible with the installed RTD package. For example, RTD 3.0.0 was developed and tested using NXP GCC 10.2.0. This information is available in the corresponding Release Notes document.  BR, VaneB Re: How install S32K144EVB SDK in S32 Design Studio Spoiler (Highlight to read) Hello @VaneB  I have installed  S32K1_S32M24X Real-Time Drivers Version 3.0.0 QLP07 doing the same procedure you described but when I create a "New S32DS Application Project", there is no SDK available. I attatch two screenshots: one taken in the processors selection menu and another one taken after pressing "SDK" button. Thanks. Hello  I have installed S32K1_S32M24X Real-Time Drivers Version 3.0.0 QLP07 doing the same procedure you described but when I create a "New S32DS Application Project", there is no SDK available.I attatch two screenshots: one taken in the processors selection menu and another one taken after pressing "SDK" button.Thanks.
查看全文
LPC5411X 読み取り 現在、LPC54113チップのデバッグにSWDを使用しています。コアを停止させてから、0xE000から始まるデバッグレジスタをいくつか設定しました。 チップ内部フラッシュを読み取ると、アドレス0x0~0x200は常に誤ったデータが表示され、FLASHに保存されている実際のプログラムではなく割り込みベクターテーブルのように見えました。他のアドレスから読み取ることで、すべて0xFFFFFFFFされた正しいデータを得ることができます。 そのチップはデータを何も書き込んでいなかった。JLINKを使用して読み取ると、アドレス0x0~0x200は0xFFFFFFFFになります。しかし、JLINKは読み込みのためにRAMに書き込みを行うためにFLMを使っており、0x0のアドレス範囲への読み込みをどのように処理しているのか0x200わかりません。 私が実行した手順は以下のとおりです。 書き込み中止、0x1E 選択書き込み、0x0 tar を書き込む、0x0 cswを書き込む、0x23000012 そしてDRWを読み取り、内部フラッシュエンドアドレスまで読みます。 LPC541XX LPC54xxx Re: LPC5411X READ こんにちは、 物理的なフラッシュの内容ではなく、Cortex-Mのメモリエイリアスを読み取っている可能性があります。LPC54113では、アドレス0x00000000は、ブート構成とリマップ設定に応じて、現在アクティブなメモリ(フラッシュ、ブートROM、またはRAM)にマッピングされます。デバイスが空の場合、ブートROMは有効なベクターテーブルを0x0に表示できるため、割り込みベクターが表示される理由0xFFFFFFFF。 Re: LPC5411X READ 0x0番地の物理フラッシュメモリの内容を読み取りたいのですが、どうすればいいですか? 買掛金口座やその他の取引を変更する必要がありますか? Re: LPC5411X READ LPC5411Xには、物理フラッシュを読み取るためのIAPサンプルがありませんでした。   Re: LPC5411X READ こんにちは、 TAR = 0x0 を使用して SWD AHB-AP を介してメモリを読み取ると、返されるデータはCPU から見える現在のシステムメモリマッピングを反映します。LPC5411xデバイスでは、 アドレス0x00000000の最初の512バイトがブートROMに再マッピングされるSO、この領域で観察されるデータはFlashに保存された実際の内容ではなく有効な割り込みベクターテーブルとなります。   物理フラッシュ領域の元の内容を0x00000000から0x000001FFまで読み取る必要がある場合は、 TAR = 0x0 アクセスと連続した DRW アクセスを使った単純な線形読み込みに頼らないでください。代わりに、Jlinkを使って読み取るのと同じように、Flashの生のFlash配列内容にアクセスできるFlashアルゴリズムやIAPベースの方法を使うべきです。     BR アリス
查看全文
i.MX8MM ECSPI driver (fsl_ecspi.c) interrupt does not stop due to FIFO count inconsistency Hi, I found a potential issue in the ECSPI driver (fsl_ecspi.c) on i.MX8MM, specifically in ECSPI_SendTransfer(). The following code calculates the available FIFO space: dataCounts = ((uint32_t)FSL_FEATURE_ECSPI_TX_FIFO_SIZEn(base) - (uint32_t)ECSPI_GetTxFifoCount(base)) < txRemainingBytes ? ((uint32_t)FSL_FEATURE_ECSPI_TX_FIFO_SIZEn(base) - (uint32_t)ECSPI_GetTxFifoCount(base)) : txRemainingBytes; However, ECSPI_GetTxFifoCount(base) reads a hardware register, and the FIFO level is dynamically updated. Because this function is called multiple times in the same expression, the returned value may differ between evaluations. As a result, the calculated available FIFO space may become inconsistent, and dataCounts may exceed the expected value under certain timing conditions. This can lead to incorrect transfer behavior, and in my case, the ECSPI interrupt does not stop (interrupt keeps firing). I believe the root cause is that the FIFO count register is read multiple times, and the driver assumes the value remains consistent within the expression. Proposed solution: - Read the FIFO count register only once - Store it in a local variable - Use the cached value for subsequent calculations Example fix: uint32_t fifoAvailableCount = ((uint32_t)FSL_FEATURE_ECSPI_TX_FIFO_SIZEn(base) - (uint32_t)ECSPI_GetTxFifoCount(base)); dataCounts = (fifoAvailableCount < txRemainingBytes) ? fifoAvailableCount : txRemainingBytes; Could you confirm if this is a known issue or unintended behavior? i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: i.MX8MM ECSPI driver (fsl_ecspi.c) interrupt does not stop due to FIFO count inconsistency Hi, @pengyong_zhang  Thank you for your response. I am not using Linux. I am running a bare-metal / RTOS environment on the A53 core of i.MX8MM. The ECSPI driver I am using is based on the MCUXpresso SDK driver. For example, the following implementation: https://github.com/nxp-mcuxpresso/mcuxsdk-core/blob/main/drivers/ecspi/fsl_ecspi.c#L180 In this implementation, the FIFO status is read multiple times in the interrupt handler. Since the FIFO count can change between reads, I believe this may cause dataCounts to exceed txRemainingBytes in rare cases. Could you confirm whether this behavior is expected, or if this is a known issue in the ECSPI driver? Best regards, Re: i.MX8MM ECSPI driver (fsl_ecspi.c) interrupt does not stop due to FIFO count inconsistency Hi @N_Eco_Logic  Our imx8mm ECSPI driver code file is as follows: https://github.com/nxp-imx/linux-imx/blob/de3ebf27b0f69724f13bdd9bb8809aabd47c78b9/drivers/spi/spi-imx.c Which version of the kernel are you using? B.R Re: i.MX8MM ECSPI driver (fsl_ecspi.c) interrupt does not stop due to FIFO count inconsistency I also have seen this issue, and I've put in an PR to fix it: https://github.com/nxp-mcuxpresso/mcuxsdk-core/pull/33 Separately noting that there's a case where the code as written (even with this fix) triggers an overflow of the RXFIFO if, in the IRQ, there are bytes that are transmitted out of the TXFIFO while the RXFIFO is being drained. For example, if at the time ECSPI_GetRxFifoCount is called there are e.g. 60 bytes in the RXFIFO and 4 in the TXFIFO, and then by the time ECSPI_GetTxFifoCount is called, the 4 bytes have been sent, the TXFIFO will be filled (up to 64 bytes in the i.MX8MP case). If the ISR isn't serviced again fast enough, this leads to an overflow since it results in 64 + 4 items transmitted before any are read. That can be fixed by using handle->rxRemainingBytes - handle->txRemainingBytes instead of fifoCounts bytes in the patch, but that is only necessary if the ISR fails to drain the RXFIFO fast enough (was the case for me, but may not be the case everywhere, and this could lead to slower transactions/more interrupts, so I opted not to include this change in the PR).
查看全文
LLCE FlexRay configuration on S32DS Hi,  I am encountering a configuration issue for LLCE FlexRay on S32DS. I would like to set this parameter to TRUE, after spending a long time on the IDE, still could not find the right place to change it. Is there someone can provide any clue? My IDE version is S32DS3.5.10. Thank you in advance. Re: LLCE FlexRay configuration on S32DS Hi,Yang_C Thank you for contacting us. What version of LLCE are you using? And are you using S32G2 or S32G3? BR Joey Re: LLCE FlexRay configuration on S32DS Hi Joey, I am using S32G399 with S32DS3.5.10, LLCE 1.0.7, RTD 4.0.2.  BR, Yang Re: LLCE FlexRay configuration on S32DS Hi,Yang_C This seems to be an issue with the software itself. I will assist you in confirming it with the internal software developers! BR Joey Re: LLCE FlexRay configuration on S32DS Hi Joey, Thank you for your help. Looking forward to you reply. BR, Yang Re: LLCE FlexRay configuration on S32DS Hi,Yang_C Regarding "repeatTx", the driver is supported, but the interface configuration interface in EB is not. The main reason is that "repeatTx" is not a standard ECUC configuration item defined by the AUTOSAR FlexRay Interface (FrIf) specification, but rather an underlying Message Buffer extension attribute of the NXP FlexRay_IP Driver. BR Joey Re: LLCE FlexRay configuration on S32DS Thank you Joey. I will try manually update. Re: LLCE FlexRay configuration on S32DS Hi,Yang_C Thank you for your reply. The S32DS is also not configurable and needs to be manually modified, but there are drivers that can achieve this function.  BR Joey Re: LLCE FlexRay configuration on S32DS Hi Joey, Thanks for your reply, I am a little bit confused because you mentioned EB does not support configuring 'Repeat TX', but I am using S32DS. Wondering if S32DS support set repeat TX for FlexRay? BR, Yang
查看全文
S32DSにおけるLLCE FlexRay構成 こんにちは、 S32DS 上で LLCE FlexRay の設定に関する問題が発生しています。 このパラメータをTRUEにしたいのですが、IDEで長い時間を費やしたのに、正しい変更場所が見つかりませんでした。何か手がかりをくれる方はいませんか? 私のIDEバージョンはS32DS3.5.10です。 事前に感謝いたします。 Re: LLCE FlexRay configuration on S32DS こんにちは、 Yang_C お問い合わせいただきありがとうございます。 使用しているLLCEのバージョンは何ですか?S32G2とS32G3のどちらを使用していますか? BR ジョーイ Re: LLCE FlexRay configuration on S32DS こんにちは、ジョーイ。 私はS32DS3.5.10でS32G399を使用しています。LLCE 1.0.7、RTD 4.0.2 BR、 ヤン Re: LLCE FlexRay configuration on S32DS こんにちは、ジョーイ。 ご協力ありがとうございます。 お返事をお待ちしております。 BR、 ヤン Re: LLCE FlexRay configuration on S32DS こんにちは、 Yang_C これはソフトウェア自体の問題のようです。社内のソフトウェア開発者と確認するのを手伝います! BR ジョーイ Re: LLCE FlexRay configuration on S32DS こんにちは、 Yang_C 「repeatTx」についてはドライバーはサポートされていますが、EBのインターフェース設定インターフェースはサポートされていません。主な理由は、「repeatTx」がAUTOSAR FlexRay Interface(FrIf)仕様で定義された標準的なECUC設定項目ではなく、NXP FlexRay_IPドライバーの基盤となるMessage Buffer拡張属性であるためです。 BR ジョーイ Re: LLCE FlexRay configuration on S32DS こんにちは、Yang_C ご返信よろしくお願いします。 S32DSも設定不可で手動で修正する必要がありますが、この機能を実現できるドライバもあります。 BR ジョーイ Re: LLCE FlexRay configuration on S32DS こんにちは、ジョーイ。 ご返信ありがとうございます。EBが「Repeat TX」の設定をサポートしていないとおっしゃっていましたが、私はS32DSを使っています。S32DSのサポートがFlexRayのリピート送信を設定しているのか気になっていますか? BR、 ヤン Re: LLCE FlexRay configuration on S32DS ありがとう、ジョーイ。手動でアップデートしてみます。
查看全文
KE1 ECC RAM Single Bit Corrrection Have a few questions regarding ECC. I am currently using the MCM_LMFAR to determine where the ECC triggered a fault and then using that address to read then write back to correct it. Questions: 1. Does the ECC have the ability to autocorrect bits? Or do I really need to perform this read/write to address to correct? 2. If there is not autocorrect, will I need to compensate for byte alignment when performing my read/write correction mechanism? Currently I am performing a 4-byte read/write at the address denoted by the MCM_LMFAR. I feel like this is dangerous as I am not sure the MCM_LMFAR will always show a 4-byte aligned address. Re: KE1 ECC RAM Single Bit Corrrection Hello @sean_dvorscak , Thank you for your post. Could you please let me know which specific device in the KE1 family you are using? This will help me locate the relevant documentation more accurately or perform validation using the same device. BR Celeste Re: KE1 ECC RAM Single Bit Corrrection It's a KE18F512VLH16. Thanks for your help. Re: KE1 ECC RAM Single Bit Corrrection One more question actually. The automatic HW ECC correction functionality is enabled by default? I don't really see any bits in the MCM registers that would suggest it's a feature that can be disabled/enabled. Re: KE1 ECC RAM Single Bit Corrrection Hello @sean_dvorscak , Thanks for your reply. So for your questions: 1. Does the ECC have the ability to autocorrect bits? Or do I really need to perform this read/write to address to correct? ->> Yes, ECC does support hardware correction for single-bit errors. So you should not need a software read/write sequence to obtain corrected data.  2. If there is not autocorrect, will I need to compensate for byte alignment when performing my read/write correction mechanism? Currently I am performing a 4-byte read/write at the address denoted by the MCM_LMFAR. I feel like this is dangerous as I am not sure the MCM_LMFAR will always show a 4-byte aligned address. ->> If implementing an optional scrub, please align the access according to the actual access size or scrub granularity, not blindly to the raw MCM_LMFAR value. Also don't use a fixed 4-byte access unless you first align the address appropriately and confirm the access size is valid. In fact, For multi-bit / non-correctable ECC events , do not assume a read/write can repair the data, you should treat it as data corruption and recover from a known-good source or reinitialize the affected memory as appropriate. Hope it helps. BR Celeste --------------------------------------------------------------------------------------------------------------------- Note: If this post answers your question, please click the "ACCEPT AS SOLUTION" button. Thank you! --------------------------------------------------------------------------------------------------------------------- Re: KE1 ECC RAM Single Bit Corrrection Thanks for the confirmation and info. And yes, I am handling uncorrectable bit errors differently. Re: KE1 ECC RAM Single Bit Corrrection Yes, ECC checking/generation is enabled by default after reset.
查看全文
i.MX8MM ECSPIドライバ (fsl_ecspi.c)FIFOカウントの不整合により割り込みが停止しない こんにちは、 i.MX8MM上のECSPIドライバ(fsl_ecspi.c)に潜在的な問題を発見しました。具体的には、ECSPI_SendTransfer()関数に問題があります。 以下のコードは、利用可能なFIFO容量を計算します。 データカウント = ((uint32_t)FSL_FEATURE_ECSPI_TX_FIFO_SIZEn(base) - (uint32_t)ECSPI_GetTxFifoCount(base)) < txRemainingBytes ? ((uint32_t)FSL_FEATURE_ECSPI_TX_FIFO_SIZEn(base) - (uint32_t)ECSPI_GetTxFifoCount(base)) : txRemainingBytes; ただし、ECSPI_GetTxFifoCount(base)はハードウェアレジスタを読み取り、FIFOレベルは動的に更新されます。 この関数は同じ式の中で複数回呼び出されるため、評価ごとに返される値が異なる場合があります。 その結果、計算された利用可能なFIFOスペースが矛盾する可能性があり、 また、特定のタイミング条件下では、データカウントが予想値を超える場合があります。 これにより、転送動作が正しく行われなくなる可能性があり、私の場合は、ECSPI割り込みが停止しません(割り込みが繰り返し発生します)。 根本原因は、FIFOカウントレジスタが複数回読み取られていることだと考えます。 また、ドライバは、式の中で値が一貫していると想定します。 提案された解決策: - FIFOカウントレジスタを一度だけ読み取る - ローカル変数に格納する キャッシュされた値を後続の計算に使用する 修正例: uint32_t fifoAvailableCount = ((uint32_t)FSL_FEATURE_ECSPI_TX_FIFO_SIZEn(base) - (uint32_t)ECSPI_GetTxFifoCount(base)); dataCounts = (fifoAvailableCount < txRemainingBytes) ?fifoAvailableCount : txRemainingBytes; これは既知の問題なのか、それとも意図しない動作なのか確認していただけますか? i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: i.MX8MM ECSPI driver (fsl_ecspi.c) interrupt does not stop due to FIFO count inconsistency こんにちは、 @pengyong_zhang ご回答ありがとうございます。 私はLinuxを使用していません。 私はi.MX8MMのA53コア上でベアメタル/RTOS環境を実行しています。 私が使用しているECSPIドライバは、MCUXpresso SDKドライバをベースにしています。 例えば、以下のような実装例があります。 https://github.com/nxp-mcuxpresso/mcuxsdk-core/blob/main/drivers/ecspi/fsl_ecspi.c#L180 この実装では、割り込みハンドラ内でFIFOの状態が複数回読み取られます。 FIFOカウントは読み取りごとに変化する可能性があるため、まれにdataCountsがtxRemainingBytesを超えることがあると考えられます。 この動作は想定内のものなのか、それともECSPIドライバの既知の問題なのか、確認していただけますか? よろしくお願いいたします。 Re: i.MX8MM ECSPI driver (fsl_ecspi.c) interrupt does not stop due to FIFO count inconsistency こんにちは、 @N_Eco_Logic さん。 imx8mm ECSPIドライバのコードファイルは以下のとおりです。 https://github.com/nxp-imx/linux-imx/blob/de3ebf27b0f69724f13bdd9bb8809aabd47c78b9/drivers/spi/spi-imx.c 使用しているカーネルのバージョンは何ですか? BR Re: i.MX8MM ECSPI driver (fsl_ecspi.c) interrupt does not stop due to FIFO count inconsistency 私もこの問題に遭遇しており、修正するためのプルリクエストを提出しました: https://github.com/nxp-mcuxpresso/mcuxsdk-core/pull/33 別件で、この修正があっても、IRQでRXFIFOがドレインされている間にコードが送信されると、RXFIFOのオーバーフローが発生するCASEがあることも指摘してください。例えば、ECSPI_GetRxFifoCount呼び出し時にRXFIFOに60バイト、TXFIFOに4バイトがあり、ECSPI_GetTxFifoCount呼び出し時に4バイトが送信された時点でTXFIFOは満タンになります(i.MX8MPのCASEは最大64バイト)。ISRが十分に速く再処理されない場合、読み取られる前に64+4個のアイテムが送信されるため、オーバーフローが発生します。パッチでhandle->rxRemainingBytes - handle->txRemainingBytesをfifoCountsバイトの代わりに使うことでCAN修正できますが、これはISRがRXFIFOを十分に速く消耗できない場合に限り必要です(私のCASEではそうでしたが、すべての場所でCASEとは限らず、トランザクションの遅延や割り込みの増加につながる可能性があるSO、PRにはこの変更を含めないことにしました)。
查看全文
imx8mp pcie内部时钟phy poweron failed --> -110 imx8mp + nxp linux6.1.55 内核在调试wifi时pcie出现以下问题,测试内部时钟,无波形,reset-gpio是高电平 ( https://github.com/nxp-imx/linux-imx/tree/lf-6.1.y ) root@imx8mpevk:~# dmesg|grep pcie [ 2.241914] imx6q-pcie 33800000.pcie: host bridge /soc@0/pcie@33800000 ranges: [ 2.249233] imx6q-pcie 33800000.pcie: IO 0x001ff80000..0x001ff8ffff -> 0x0000000000 [ 2.257455] imx6q-pcie 33800000.pcie: MEM 0x0018000000..0x001fefffff -> 0x0018000000 [ 2.322972] phy phy-32f00000.pcie-phy.4: phy poweron failed --> -110 [ 2.322980] imx6q-pcie 33800000.pcie: waiting for PHY ready timeout! [ 2.323033] imx6q-pcie: probe of 33800000.pcie failed with error -110 设备树: &pcie_phy {     //clocks = <&hsio_blk_ctrl>;     clocks = <&clk IMX8MP_CLK_HSIO_AXI>;     clock-names = "ref";     fsl,clkreq-unsupported;     fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_OUTPUT>;     status = "okay"; }; &pcie {     pinctrl-names = "default";     pinctrl-0 = <&pinctrl_pcie0>;     reset-gpio = <&gpio3 25 GPIO_ACTIVE_LOW>;     reset-gpio-active-high;     clocks = <&clk IMX8MP_CLK_HSIO_ROOT>,          <&clk IMX8MP_CLK_PCIE_ROOT>,          <&clk IMX8MP_CLK_HSIO_AXI>;     clock-names = "pcie", "pcie_aux", "pcie_bus";     assigned-clocks = <&clk IMX8MP_CLK_PCIE_AUX>;     assigned-clock-rates = <10000000>;     assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_50M>;     // vpcie-supply = <&reg_pcie0>;     status = "okay";     // wifi_wake_host {     //  compatible = "nxp,wifi-wake-host";     //  interrupt-parent = <&gpio5>;     //  interrupts = <21 IRQ_TYPE_LEVEL_LOW>;     //  interrupt-names = "host-wake";     // }; }; 如果选用     clocks = <&hsio_blk_ctrl>;而不是clocks = <&clk IMX8MP_CLK_HSIO_AXI>; 则报错,并超时 root@imx8mpevk:~# dmesg|grep pcie [    4.081133] imx8-pcie-phy 32f00000.pcie-phy: failed to get imx pcie phy clock [    4.088341] imx8-pcie-phy 32f00000.pcie-phy: failed to get imx pcie phy clock: -517 [   13.028064] imx8-pcie-phy 32f00000.pcie-phy: failed to get imx pcie phy clock [   13.035248] imx8-pcie-phy 32f00000.pcie-phy: failed to get imx pcie phy clock: -517 [   13.049053] platform 33800000.pcie: deferred probe pending [   13.060015] platform 32f00000.pcie-phy: deferred probe pending    下面是我的原理图 是哪个环节出了问题?求教!感谢!           i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: imx8mp pcie内部时钟phy poweron failed --> -110 你好@gaotao 希望你一切都好。 从你的 DTS 来看,reset-gpio = <&gpio3 25 GPIO_ACTIVE_LOW>和reset-gpio-active-high同时存在是矛盾的。 移除reset-gpio-active-high ,在 GPIO 规范中仅保留GPIO_ACTIVE_LOW ,或者如果您的硬件有反相器,则更改为GPIO_ACTIVE_HIGH 。 另外,请尝试应用以下补丁: https://www.spinics.net/lists/devicetree/msg558950.html https://www.spinics.net/lists/devicetree/msg558947.html https://www.spinics.net/lists/devicetree/msg558949.html https://www.spinics.net/lists/devicetree/msg558948.html 这些补丁修改了 imx8mp-blk-ctrl.c 文件。驱动程序用于暴露合适的PLL时钟并对其进行配置。 顺祝商祺! 萨拉斯。 Re: imx8mp pcie内部时钟phy poweron failed --> -110 十分感谢你的提醒,我会告知硬件部门的同事了解这个问题,若有后续进展我会再次联系并感谢 Re: imx8mp pcie内部时钟phy poweron failed --> -110 @Manuel_Salas ,非常感谢你的回复 1、reset-gpio-active-high;我也意识到了,已经删除了,感谢提醒 2、所以我应该使用 clocks = <&hsio_blk_ctrl>;再加那四个驱动补丁,而不是使用 clocks = <&clk IMX8MP_CLK_HSIO_AXI>;吧? 3、早些时候我也看到了社区别人回复说用那四个补丁,很可惜我们这边区域好像访问不到那个网站,我再想想办法,如果方便的话希望能直接贴出补丁,万分感谢! Re: imx8mp pcie内部时钟phy poweron failed --> -110 现在好像是不一样的问题了,报了Phy link never came up,是pcie自身还有问题,还是外设有问题? root@imx8mpevk:~/rtw# dmesg|grep pcie [ 2.264927] imx8-pcie-phy 32f00000.pcie-phy: wifi PCIe ref clk: 100000000 Hz [ 2.274508] imx6q-pcie 33800000.pcie: host bridge /soc@0/pcie@33800000 ranges: [ 2.281827] imx6q-pcie 33800000.pcie: IO 0x001ff80000..0x001ff8ffff -> 0x0000000000 [ 2.290063] imx6q-pcie 33800000.pcie: MEM 0x0018000000..0x001fefffff -> 0x0018000000 [ 2.336901] imx6q-pcie 33800000.pcie: iATU: unroll T, 4 ob, 4 ib, align 64K, limit 16G [ 3.410666] imx6q-pcie 33800000.pcie: Phy link never came up1 [ 4.481178] imx6q-pcie 33800000.pcie: Phy link never came up1 [ 4.487067] imx6q-pcie 33800000.pcie: PCI host bridge to bus 0000:00 [ 4.570576] pcieport 0000:00:00.0: PME: Signaling with IRQ 223 我的外设是wifi芯片 8822ce,手动或者自动加载都不会有输出信息 root@imx8mpevk:~/rtw# insmod rtw88_core.ko root@imx8mpevk:~/rtw# insmod rtw88_pci.ko root@imx8mpevk:~/rtw# insmod rtw88_8822c.ko root@imx8mpevk:~/rtw# insmod rtw88_8822ce.ko root@imx8mpevk:~/rtw# root@imx8mpevk:~/rtw# lsmod | grep rtw rtw88_8822ce 16384 0 rtw88_8822c 475136 1 rtw88_8822ce rtw88_pci 28672 1 rtw88_8822ce rtw88_core 208896 2 rtw88_pci,rtw88_8822c root@imx8mpevk:~/rtw# lspci 00:00.0 Class 0604: 16c3:abcd 这次大概是啥问题呢?启动稳定之后我确实没测到参考时钟的波形(我的硬件决定我得拆了网卡才能测波形),没测到但是pcie输出确实改变了,至少 readl_poll_timeout通过了,reset我应该能保证是在高电平了
查看全文
如何在 S32 Design Studio 中安装 S32K144EVB SDK 你好, 今天,我安装了 S32 Design Studio 来评估S32K144EVB板。我想运行一个小测试,但是阅读手册后发现,当我创建一个新的应用程序项目时,当我点击“SDK”按钮时,并没有出现任何 S32 SDK。 如何为我的开发板安装 SDK 谢谢。 Re: How install S32K144EVB SDK in S32 Design Studio 嗨@ptcaos 首先,您需要下载与您的 S32DS IDE 兼容的软件版本。支持的 IDE 版本在软件的发行说明文档中指定。 在这个例子中,我将使用适用于 S32K1 设备的最新 RTD 版本: 下载 S32K1_S32M24x_RTD_R21-11_3.0.0_D2503_DesignStudio_updatesite.zip。该软件包可在“S32K1 实时驱动程序→ 汽车软件 - S32K1_S32M24x - Cortex-M 实时驱动程序 → S32K1_S32M24x 实时驱动程序 AUTOSAR R21-11 版本 3.0.0”下找到。 在 S32 设计工作室 3.6.x 版本中,导航至帮助 → S32DS 扩展和更新。 在 S32DS 扩展和更新窗口中,单击右下角的“添加更新站点” 。 选择 .zip 文件文件是之前下载的。添加后,该代码包,软件包将出现在可用扩展和更新列表中。 选择要安装的软件包,然后单击“安装/更新” 。 接受许可协议,然后单击“完成”。 安装成功后,S32DS 将提示您重新启动 IDE 以使更改生效。 重要提示:创建新项目时,请确保选择与已安装的 RTD 软件包兼容的工具链版本。例如,RTD 3.0.0使用 NXP GCC 10.2.0 进行开发和测试。此信息可在相应的版本说明文档中找到。 BR,VaneB Re: How install S32K144EVB SDK in S32 Design Studio 剧透 (高亮部分可供阅读) 你好@VaneB 我已经安装了 S32K1_S32M24X 实时驱动程序版本 3.0.0QLP07 按照您描述的步骤操作,但是当我创建一个“新的 S32DS 应用程序项目”时,却找不到 SDK。 我附上了两张截图:一张是在处理器选择菜单中截取的,另一张是在按下“SDK”按钮后截取的。 谢谢。 您好,我已经安装了 S32K1_S32M24X 实时驱动程序 3.0.0 版。QLP07 按照您描述的步骤操作,但在创建“新的 S32DS 应用程序项目”时,没有可用的 SDK。我附上了两张截图:一张是在处理器选择菜单中截取的,另一张是在按下“SDK”按钮后截取的。谢谢。
查看全文
LPC5411X 读取 我目前正在使用SWD调试LPC54113芯片。我已经停止了核心程序的运行,然后设置了一些调试寄存器,从 0xE000 开始。 我发现,当我读取芯片的内部闪存时,地址 0x0~0x200 始终包含错误数据,更像是中断向量表,而不是存储在闪存中的实际程序。通过读取其他地址,可以获取正确的数据,所有数据均为 0xFFFFFFFF。 芯片没有写入任何数据。通过使用 JLINK 进行读取,地址 0x0~0x200 为 0xFFFFFFFF。但是,JLINK 使用 FLM 向 RAM 写入数据进行读取,我不知道它是如何处理 0x0 到 0x200 地址范围的读取的。 我采取的步骤如下: 写入中止,0x1E 写入选择,0x0 写入 tar,0x0 写入 csw,0x23000012 然后读取 drw 文件,直到内部闪存结束地址为止。 LPC541XX LPC54xxx Re: LPC5411X READ 你好, 您可能正在读取 Cortex-M 内存别名,而不是物理闪存内容。在 LPC54113 上,地址 0x00000000 根据启动配置和重映射设置,映射到当前活动的内存(闪存、启动 ROM 或 RAM)。如果设备为空,启动 ROM 可以在 0x0 处呈现一个有效的向量表,这就解释了为什么你会看到中断向量而不是 0xFFFFFFFF。 Re: LPC5411X READ 我想读取地址 0x0 处的物理闪存内容,应该怎么做? 我需要更改AP银行或其他操作吗? Re: LPC5411X READ LPC5411X 没有用于读取物理闪存的 IAP 样品。   Re: LPC5411X READ 您好, 当使用 TAR = 0x0 通过 SWD AHB-AP 读取内存时,返回的数据反映了CPU 可见的当前系统内存映射。对于 LPC5411x 设备,地址 0x00000000 的前 512 个字节被重新映射到启动 ROM ,因此在此区域中观察到的数据是有效的中断向量表,而不是存储在 Flash 中的实际内容。   如果需要读取物理 Flash 区域从 0x00000000 到 0x000001FF 的原始内容,不要依赖使用 TAR = 0x0 和连续 DRW 访问的简单线性读取。相反,应该使用 Flash 算法或基于 IAP 的方法来访问原始 Flash 阵列内容,就像使用 Jlink 读取一样。     BR 爱丽丝
查看全文
LPC5411X READ I am currently using SWD to debug the LPC54113 chip. I have halted the core and then set some debug registers starting with 0xE000. I found that when I read the internal flash of the chip, the address 0x0~0x200 always had incorrect data, resembling an interrupt vector table rather than the actual program stored in the FLASH. By reading from other addresses, the correct data can be obtained, all of which are 0xFFFFFFFF. The chip did not program any data. Through using JLINK for reading, the address 0x0~0x200 are 0xFFFFFFFF. However, JLINK uses FLM to write to RAM for reading, I cannot know how it processes the reading of the 0x0 to 0x200 address range. The steps I followed were: write abort, 0x1E write select, 0x0 write tar, 0x0 write csw, 0x23000012 and then read drw until the internal flash end address.  LPC541XX  LPC54xxx Re: LPC5411X READ I want to read the physical flash contents in 0x0, What should I do? I need to change AP bank or other operations? Re: LPC5411X READ Hello, You may be reading the Cortex-M memory alias rather than the physical flash contents. On the LPC54113, address 0x00000000 is mapped to the currently active memory (flash, boot ROM, or RAM) depending on the boot configuration and remap settings. If the device is blank, the boot ROM can present a valid vector table at 0x0, which explains why you see interrupt vectors instead of 0xFFFFFFFF.     Re: LPC5411X READ Hi, When reading memory through the SWD AHB-AP with TAR = 0x0 , the returned data reflects the current system memory mapping visible to the CPU. For LPC5411x devices, the first 512 bytes at address 0x00000000 are remapped to the Boot ROM, so the data observed in this region is a valid interrupt vector table rather than the actual contents stored in Flash.   If it is necessary to read the original contents of the physical Flash region from 0x00000000 to 0x000001FF, do not rely on a simple linear read using TAR = 0x0 and consecutive DRW accesses. Instead, a Flash algorithm or IAP-based method that can access the raw Flash array contents should be used, like you use Jlink to read.     BR Alice Re: LPC5411X READ The LPC5411X did not have the IAP sample for read physical flash.  
查看全文
The IMX8MP PCIe internal clock PHY poweron failed --> -110 imx8mp + nxp linux6.1.55 When debugging Wi-Fi in the kernel, the following issue occurred with PCIe: testing the internal clock showed no waveform, and reset-GPIO was at a high level ( https://github.com/nxp-imx/linux-imx/tree/lf-6.1.y ).) root@imx8mpevk:~# dmesg|grep pcie [2.241914] imx6q-pcie 33800000.pcie: host bridge /soc@0/pcie@33800000 ranges: [2.249233] imx6q-pcie 33800000.pcie: IO 0x001ff80000..0x001ff8ffff -> 0x0000000000 [2.257455] imx6q-pcie 33800000.pcie: MEM 0x0018000000..0x001fefffff -> 0x0018000000 [2.322972] phy phy-32f00000.pcie-phy.4: Phy poweron failed --> -110 [2.322980] imx6q-pcie 33800000.pcie: waiting for PHY ready timeout! [ 2.323033] imx6q-pcie: probe of 33800000.pcie failed with error -110 Device tree: &pcie_phy {     //clocks = <&hsio_blk_ctrl>; clocks = < &clk IMX8MP_CLK_HSIO_AXI >; clock-names = "ref" ; fsl,clkreq-unsupported; fsl,refclk-pad-mode = < IMX8_PCIE_REFCLK_PAD_OUTPUT >; status = "okay" ; }; &pcie { pinctrl-names = "default" ; pinctrl-0 = < &pinctrl_pcie0 >; reset-gpio = < &gpio3 25 GPIO_ACTIVE_LOW >; reset-gpio-active-high; clocks = < &clk IMX8MP_CLK_HSIO_ROOT >, < &clk IMX8MP_CLK_PCIE_ROOT >, < &clk IMX8MP_CLK_HSIO_AXI >; clock-names = "pcie" , "pcie_aux" , "pcie_bus" ; assigned-clocks = < &clk IMX8MP_CLK_PCIE_AUX >; assigned-clock-rates = < 10000000 >; assigned-clock-parents = < &clk IMX8MP_SYS_PLL2_50M >;     // vpcie-supply = <&reg_pcie0>; status = "okay" ;     // wifi_wake_host {     // compatible = "nxp,wifi-wake-host";     // interrupt-parent = <&gpio5>;     // interrupts = <21 IRQ_TYPE_LEVEL_LOW>;     // interrupt-names = "host-wake";     // }; }; If selected     clocks = <&hsio_blk_ctrl>; instead of clocks = <&clk IMX8MP_CLK_HSIO_AXI>; Then an error will occur and a timeout will occur. root@imx8mpevk:~# dmesg|grep pcie [4.081133] imx8-pcie-phy 32f00000.pcie-phy: failed to get imx pcie phy clock [4.088341] imx8-pcie-phy 32f00000.pcie-phy: failed to get imx pcie phy clock: -517 [13.028064] imx8-pcie-phy 32f00000.pcie-phy: failed to get imx pcie phy clock [13.035248] imx8-pcie-phy 32f00000.pcie-phy: failed to get imx pcie phy clock: -517 [13.049053] platform 33800000.pcie: deferred probe pending [13.060015] platform 32f00000.pcie-phy: deferred probe pending    Below is my schematic diagram. What went wrong? I need your help! Thank you!           i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: imx8mp pcie内部时钟phy poweron failed --> -110 Hello @gaotao  Hope you are doing very well. From your DTS reset-gpio = <&gpio3 25 GPIO_ACTIVE_LOW> and reset-gpio-active-high together are contradictory. Remove reset-gpio-active-high and keep only GPIO_ACTIVE_LOW in the GPIO specifier, or change to GPIO_ACTIVE_HIGH if your hardware has an inverter. Also, please try applying the below patches: https://www.spinics.net/lists/devicetree/msg558950.html  https://www.spinics.net/lists/devicetree/msg558947.html  https://www.spinics.net/lists/devicetree/msg558949.html https://www.spinics.net/lists/devicetree/msg558948.html These patch the imx8mp-blk-ctrl.c driver to expose a proper PLL clock and configure it. Best regards, Salas. Re: imx8mp pcie内部时钟phy poweron failed --> -110 Thank you very much for reminding me. I will inform my colleagues in the hardware department to look into this issue. I will contact you again if there are any further developments and thank you again. Re: imx8mp pcie内部时钟phy poweron failed --> -110 @Manuel_Salas , thank you so much for your reply. 1. I also realized that `reset-gpio-active-high;` was there and have already deleted it. Thanks for reminding me. 2. Therefore, I should use clocks = < &hsio_blk_ctrl >; and add those four driver patches, instead of using... clocks = <&clk IMX8MP_CLK_HSIO_AXI>; right? 3. I also saw someone else in the community reply earlier that they used those four patches, but unfortunately it seems that we can't access that website in our area. I'll think of a way. If it's convenient, I hope you can post the patches directly. Thank you very much! Re: imx8mp pcie内部时钟phy poweron failed --> -110 It seems like the problem is different now. It's reporting "Phylink never came up". Is there a problem with the PCIe itself, or is there a problem with the peripheral? root@imx8mpevk:~/rtw# dmesg|grep pcie [2.264927] imx8-pcie-phy 32f00000.pcie-phy: wifi PCIe ref clk: 100000000 Hz [2.274508] imx6q-pcie 33800000.pcie: host bridge /soc@0/pcie@33800000 ranges: [2.281827] imx6q-pcie 33800000.pcie: IO 0x001ff80000..0x001ff8ffff -> 0x0000000000 [2.290063] imx6q-pcie 33800000.pcie: MEM 0x0018000000..0x001fefffff -> 0x0018000000 [2.336901] imx6q-pcie 33800000.pcie: iATU: unroll T, 4 ob, 4 ib, align 64K, limit 16G [3.410666] imx6q-pcie 33800000.pcie: Phy link never came up1 [4.481178] imx6q-pcie 33800000.pcie: Phy link never came up1 [4.487067] imx6q-pcie 33800000.pcie: PCI host bridge to bus 0000:00 [4.570576] pcieport 0000:00:00.0: PME: Signaling with IRQ 223 My peripheral device uses an 8822ce Wi-Fi chip, and it doesn't output any information whether I load it manually or automatically. root@imx8mpevk:~/rtw# insmod rtw88_core.ko root@imx8mpevk:~/rtw# insmod rtw88_pci.ko root@imx8mpevk:~/rtw# insmod rtw88_8822c.ko root@imx8mpevk:~/rtw# insmod rtw88_8822ce.ko root@imx8mpevk:~/rtw# root@imx8mpevk:~/rtw# lsmod | grep rtw rtw88_8822ce 16384 0 rtw88_8822c 475136 1 rtw88_8822ce rtw88_pci 28672 1 rtw88_8822ce rtw88_core 208896 2 rtw88_pci,rtw88_8822c root@imx8mpevk:~/rtw# lspci 00:00.0 Class 0604: 16c3:abcd What could be the problem this time? After the startup stabilized, I couldn't measure the reference clock waveform (my hardware required me to remove the network card to measure the waveform), but the PCIe output did change, at least... The readl_poll_timeout passed, so I should be able to guarantee that reset is at a high level.
查看全文
KE1 ECC RAM シングルビット訂正 ECCに関していくつか質問があります。 現在、MCM_LMFARを使用してECCが障害を引き起こした場所を特定し、そのアドレスを使用して読み取りと書き込みを行い、障害を修正しています。 質問: 1. ECCにはビットを自動修正する機能がありますか?それとも、修正するためには本当にこのアドレスへの読み書きを実行する必要があるのでしょうか? 2. 自動修正機能がない場合、読み書き修正メカニズムを実行する際にバイトアライメントを補正する必要がありますか?現在、MCM_LMFARで示されるアドレスに対して4バイトの読み書き処理を実行しています。MCM_LMFARが常に4バイト境界に揃ったアドレスを表示するとは限らないため、これは危険だと感じています。 Re: KE1 ECC RAM Single Bit Corrrection こんにちは、 @sean_dvorscak さん、 投稿ありがとうございます。 KE1ファミリの中でどのデバイスを使っているのか教えていただけますか? これにより、関連するドキュメントをより正確に見つけたり、同じデバイスで検証を行うのに役立ちます。 BR セレステ Re: KE1 ECC RAM Single Bit Corrrection 型番はKE18F512VLH16です。 ご助言ありがとうございます。 Re: KE1 ECC RAM Single Bit Corrrection 確認と情報提供ありがとうございます。 はい、訂正不可能なビットエラーの処理方法は異なります。 Re: KE1 ECC RAM Single Bit Corrrection もう一つ質問があります。 自動ハードウェアECC補正機能はデフォルトで有効になっていますか?MCMレジスタの中には、無効化・有効化できる機能を示すようなビットは特に見当たりません。 Re: KE1 ECC RAM Single Bit Corrrection こんにちは、 @sean_dvorscak さん、 ご返信ありがとうございます。 ですので、あなたの質問に答えてください: 1. ECCにはビットを自動修正する機能がありますか?それとも、修正するためには本当にこのアドレスへの読み書きを実行する必要があるのでしょうか? ->> はい、ECCはシングルビットエラーのハードウェア訂正をサポートしています。したがって、訂正データを取得するためにソフトウェアの読み書きシーケンスは必要ないはずです。 2. 自動修正機能がない場合、読み書き修正メカニズムを実行する際にバイトアライメントを補正する必要がありますか?現在、MCM_LMFARで示されるアドレスに対して4バイトの読み書き処理を実行しています。MCM_LMFARが常に4バイト境界に揃ったアドレスを表示するとは限らないため、これは危険だと感じています。 ->> オプションのスクラブを実装する場合は、アクセスを実際のアクセスサイズやスクラブの粒度に基づいてアライメントし、生の MCM_LMFAR 値に盲目的に合わせないでください。また、アドレスを適切にアラインメントし、アクセスサイズが有効であることを確認しない限り、固定4バイトのアクセスは使わないでください。 実際、マルチビット/非訂正ECCイベントの場合、読み書きでデータを修復できるとは限らず、データを破損として扱い、適切な適切な元から回復するか、影響を受けたメモリを再初期化する必要があります。 お役に立てば幸いです。 BR セレステ --------------------------------------------------------------------------------------------------------------------- 注:この投稿があなたの質問への回答になっている場合は、「解決策として承認」ボタンをクリックしてください。ありがとう! --------------------------------------------------------------------------------------------------------------------- Re: KE1 ECC RAM Single Bit Corrrection はい、リセット後、ECCチェック/生成はデフォルトで有効になります。
查看全文
没有 FreeMaster 插件模块 我安装了freemaster 3.2.7版本,我尝试了很多方法,但插件模块里什么都没有。我很着急。这是我工作中必不可少的工具。有人能帮帮我吗?非常感谢。 1.我以管理员身份安装FreeMASTER,或者运行“c:\NXP\FreeMASTER 3.2\FreeMASTER\register.bat”——均无效!!! 2. Re: there has no FreeMaster plug-in module 你好, 据我所知,最新的 Windows 更新并没有改变 COM+ 和 ActiveX 对象的工作方式。这两件事无关。你遇到的问题确实很奇怪。 我们选取一个插件(CAN 通信)并查看其注册详情。 再次以管理员身份运行“命令提示符”,然后切换到“c:\NXP\FreeMASTER 3.2\FreeMASTER”目录,并使用不带 /s(静默)选项的 regsvr32 命令: regsvr32 插件/can/focpgi.dll 确认信息将显示: 然后在同一命令提示符控制台中,使用以下命令启动注册表编辑器: 注册表 需要一些时间(可能需要几分钟),然后编辑器就会出现。导航至 计算机\HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{C10A92C3-7D47-4FDC-94B6-64B8E5C85E01} 此条目代表 FreeMASTER-over-CAN 插件 (focpgi.dll)。它必须登记在册。 您可以检查 InprocServer32 入口点是否指向正确的 focpgi.dll 文件。 “已实现类别”ID 是 FreeMASTER 使用 Windows COM 类别 API来查找所有插件的 ID。为了确保插件类别存在,请在注册表编辑器中检查Computer\HKEY_CLASSES_ROOT\Component Categories\{48A185C0-FFDB-11D3-80E3-00C04F176153}项,您应该会看到“MCB Communication Plugins”文本值: 另一个实验方法是从 register.bat 脚本中删除 /s 开关并运行它。每个 DLL 文件都会显示一个注册确认框。 请分享相关的屏幕截图或错误信息。感谢您的合作。 问候, 米哈尔 Re: there has no FreeMaster plug-in module 如果有人能帮我解决这个问题,我请他喝咖啡。 Re: there has no FreeMaster plug-in module 我尝试了你的方法,但模块仍然没有出现。 这是否与我的Windows系统更新到最新版本有关? Re: there has no FreeMaster plug-in module 你好, 安装程序和 register.bat 都使用了“ regsvr32.exe ”。系统实用程序,应默认安装在任何 Windows 操作系统中。 首先,请确保您的系统上存在 regsvr32 工具。只需按下 Win+R 键,然后运行命令“regsvr32”。 你应该会看到类似这样的帮助框: 如果此工具无法正常工作,则可能是您的计算机受到了管理员的系统限制。你需要把它修好。 如果 regsvr32 运行正常,我们来看看 register.bat 会输出什么错误信息: 打开开始菜单。 找到“命令提示符”应用程序 右键单击并选择“以管理员身份运行”(见下图) 在控制台中,输入cd "c:\NXP\FreeMASTER 3.2\FreeMASTER" 运行register.bat 您应该看不到任何错误(就像最后图片中显示的那样)。 如果没有错误,插件将出现在 FreeMASTER 中。如有任何错误,请在此处告知。 问候, 米哈尔 Re: there has no FreeMaster plug-in module 你好, 总结一下——所有插件注册都成功完成,但 FreeMASTER 选项对话框中的插件列表仍然为空。 您能否尝试在另一台电脑上进行测试? 此外,还有两个其他实用程序可以访问插件列表。请尝试运行远程服务器工具(“c:\NXP\FreeMASTER 3.2\FreeMASTER\mcbsvr.exe”)。然后按下“添加”按钮,看看插件列表是否也为空: 在“命名连接”管理器(c:\NXP\FreeMASTER 3.2\FreeMASTER\pgimgr.exe)中也可以尝试类似的操作,然后按“新建”按钮: 如果这两个工具中任何一个能够显示不为空的插件列表,请告诉我。 谢谢你, 米哈尔 Re: there has no FreeMaster plug-in module 你好,我又测试了一遍。目前该模块仍不可用。我已经删除了 register.bat 文件中所有包含“/s”的行。目前还有其他解决方案吗? Re: there has no FreeMaster plug-in module 我试过了,但还是不行。我的电脑里有很多数据,我不想重装系统。这真是太麻烦了。之前一直都正常,但有一天突然就连不上了。 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 而它终将显现: 最后,测试 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 已以管理员权限运行。 Re: there has no FreeMaster plug-in module 我测试过了,但是没成功。 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 非常感谢您在此期间的帮助,但这次仍然没有成功。
查看全文
i.MX8MM ECSPI 驱动程序(fsl_ecspi.c)由于 FIFO 计数不一致,中断未停止 您好, 我在 i.MX8MM 上的 ECSPI 驱动程序 (fsl_ecspi.c) 中发现了一个潜在问题,特别是在 ECSPI_SendTransfer() 中。 以下代码将计算可用的 FIFO 空间: dataCounts = ((uint32_t)FSL_FEATURE_ECSPI_TX_FIFO_SIZEn(base) - (uint32_t)ECSPI_GetTxFifoCount(base))< txRemainingBytes ? ((uint32_t)FSL_FEATURE_ECSPI_TX_FIFO_SIZEn(base) - (uint32_t)ECSPI_GetTxFifoCount(base)) : txRemainingBytes; 但是,ECSPI_GetTxFifoCount(base) 读取的是一个硬件寄存器,而且 FIFO 级别是动态更新的。 由于在同一个表达式中会多次调用该函数,因此在不同的评估中返回的值可能会不同。 因此,在某些定时条件下,计算出的可用 FIFO 空间可能会变得不一致, 和 dataCounts 可能会超出预期值。 这可能会导致不正确的传输行为,在我的情况下,ECSPI 中断不会停止(中断持续触发)。 我认为根本原因是 FIFO 计数寄存器被多次读取, ,而驱动程序认为该值在表达式中保持一致。 建议的解决方案: - 只读取一次 FIFO 计数寄存器 - 将其存储在本地变量中 - 在后续计算中使用缓存值 修复示例: uint32_t fifoAvailableCount = ((uint32_t)FSL_FEATURE_ECSPI_TX_FIFO_SIZEn(base) - (uint32_t)ECSPI_GetTxFifoCount(base)); dataCounts = (fifoAvailableCount< txRemainingBytes) ?fifoAvailableCount : txRemainingBytes; 您能确认这是已知问题还是意外行为吗? i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: i.MX8MM ECSPI driver (fsl_ecspi.c) interrupt does not stop due to FIFO count inconsistency 您好,@pengyong_zhang 感谢您的回复。 我没有使用 Linux。 我正在 i.MX8MM 的 A53 内核上运行裸机/RTOS 环境。 我使用的 ECSPI 驱动程序基于 MCUXpresso SDK 驱动程序。 例如,实施情况如下: https://github.com/nxp-mcuxpresso/mcuxsdk-core/blob/main/drivers/ecspi/fsl_ecspi.c#L180 在该实现中,FIFO 状态在中断处理程序中被多次读取。 由于 FIFO 计数在两次读取之间会发生变化,我认为这可能会在极少数情况下导致 dataCounts 超过 txRemainingBytes。 您能否确认这种行为是否在预料之中,或者这是否是 ECSPI 驱动程序中的一个已知问题? 顺祝商祺! Re: i.MX8MM ECSPI driver (fsl_ecspi.c) interrupt does not stop due to FIFO count inconsistency 你好@N_ECOo_Logic 我们的 imx8mm ECSPI 驱动程序代码文件如下: https://github.com/nxp-imx/linux-imx/blob/de3ebf27b0f69724f13bdd9bb8809aabd47c78b9/drivers/spi/spi-imx.c 您使用的是哪个版本的内核? B.R Re: i.MX8MM ECSPI driver (fsl_ecspi.c) interrupt does not stop due to FIFO count inconsistency 我也遇到了这个问题,并且已经提交了一个 PR 来修复它: https://github.com/nxp-mcuxpresso/mcuxsdk-core/pull/33 另外需要注意的是,即使经过此修复,如果在 IRQ 期间有字节从 TXFIFO 发送出去,而 RXFIFO 正在被清空,则代码会触发信号 RXFIFO 溢出。例如,如果在调用 ECSPI_GetRxFifoCount 时,RXFIFO 中有 60 个字节,TXFIFO 中有 4 个字节,那么到调用 ECSPI_GetTxFifoCount 时,这 4 个字节已被发送,则 TXFIFO 将被填满(在 i.MX8MP 的情况下最多可达 64 个字节)。如果 ISR 没有足够快地再次得到服务,这将导致溢出,因为在读取任何项目之前,就会传输 64 + 4 个项目。可以通过在补丁中使用handle->rxRemainingBytes - handle->txRemainingBytes而不是fifoCounts字节来解决这个问题,但这只有在 ISR 无法足够快地清空 RXFIFO 时才有必要(我的情况就是这样,但可能并非处处如此,而且这可能会导致事务处理速度变慢/中断次数增多,所以我选择不在 PR 中包含此更改)。
查看全文
Authentication of another bootloader while S32K312 MCU SecureBoot is enabled Hello, I would like to inquire if there is a way to re-authenticate when changing the FBL after activating Secureboot. When changing to a different FBL while Secureboot is enabled, the META Data values ​​generated via the HMAC Key change. As the FBL is changed, the HSE needs to recalculate the META Data using the HMAC Key; however, because the HMAC Key is deleted due to the new FBL, recalculating the META Data becomes impossible. Consequently, a reset occurs due to a verification failure at the FBL, making it impossible to launch the application. Is there a way to re-authenticate the changed FBL using the HMAC Key, thereby allowing both the FBL and the application to run normally?   Re: Authentication of another bootloader while S32K312 MCU SecureBoot is enabled Hi @jeongwoo  That is essentially the purpose of Secure Boot: to prevent execution of software that fails authentication. The key question is whether you still have access to the debug interface, or whether the issue must be recovered in the field without debugger access. In the field, if there is no alternate/recovery image that was designed with such functionality in advance (for example, importing an HMAC key, generating a new authentication tag, accepting a new externally generated authentication tag, or reinstalling/reconfiguring the SMR), then recovery is generally not possible. If you have access to the debug interface, the simplest solution is typically to calculate a new authentication tag externally and program the updated tag into flash using a debugger. This approach requires that the HSE_SMR_CFG_FLAG_INSTALL_AUTH flag was set when the SMR was installed. If HSE_SMR_CFG_FLAG_INSTALL_AUTH was not set, HSE uses the internally stored hash for verification. In that case, updating the authentication tag alone is not sufficient and the SMR must be reinstalled with the new image parameters. Regards, Lukas Re: Authentication of another bootloader while S32K312 MCU SecureBoot is enabled Hello Lukas, In the previous state, our controller does not have HSE_SMR_CFG_FLAG_INSTALL_AUTH set. I'm trying to apply the method you mentioned — reinstalling the SMR with new image parameters. Is the relevant part of Fota_S32k3_SecureBootProcess shown below correct? pSmrEntryInstall->accessMode = HSE_ACCESS_MODE_ONE_PASS; pSmrEntryInstall->entryIndex = 0u; pSmrEntryInstall->pSmrEntry = (HOST_ADDR)&smrEntry; pSmrEntryInstall->pSmrData = (HOST_ADDR)IVT.pAppImg_addr_0; /* pointing to active partition */ pSmrEntryInstall->smrDataLength = smrEntry.smrSize; pSmrEntryInstall->pAuthTag[0] = (HOST_ADDR)smrEntry.pInstAuthTag[0]; /* pointing to passive partition */ pSmrEntryInstall->pAuthTag[1] = (HOST_ADDR)smrEntry.pInstAuthTag[1]; /* pointing to passive partition */ pSmrEntryInstall->authTagLength[0] = HmacTagLength; pSmrEntryInstall->authTagLength[1] = HmacTagLength; If this is correct, when I run the HSE_SRV_ID_SMR_ENTRY_INSTALL service, the HseResponse is returned as 0xA5AA5317, which corresponds to: #define HSE_SRV_RSP_KEY_EMPTY ((hseSrvResponse_t)0xA5AA5317UL) indicating that the key is empty. (As I asked previously, I suspect this is displayed because that part has been erased.) I would greatly appreciate it if you could guide me on how to inject the key or otherwise resolve this issue. Thank you very much. Re: Authentication of another bootloader while S32K312 MCU SecureBoot is enabled Hi @jeongwoo  I can see no problem in those parameters. But you shared only hseSmrEntryInstallSrv_t but not hseSmrEntry_t (pSmrEntryInstall->pSmrEntry = (HOST_ADDR)&smrEntry;). Structure hseSmrEntry_t contains other important parameters needed for installation. To confirm if the key is erased or not, you can use service HSE_SRV_ID_GET_KEY_INFO, structure struct hseGetKeyInfoSrv_t. Using this service, you will get information in hseKeyInfo_t, so you can check the state of key. Regards, Lukas Re: Authentication of another bootloader while S32K312 MCU SecureBoot is enabled Hello Lukas, Thank you for your reply. I checked the smrEntry values you mentioned. When I set a breakpoint at the point where SecurebootState is 0, I confirmed that smrEntry was entirely 0. And when I set a breakpoint at the return part where Fota_S32k3_SecureBootProcess ends, I confirmed that the values appear. At the time of return, the SecureBootState value is 1. Has this information been helpful in solving the problem? 1) When a breakpoint is set at if(SecureBootState == 0) / Result: smrEntry = 0 2) A breakpoint at return secureBootProcessResult, the last part of the Fota_S32k3_SecureBootProcess function Regards, jeongwoo
查看全文
在启用 S32K312 MCU SecureBoot 的情况下,对另一个引导加载程序进行身份验证 您好,我想咨询一下,在激活安全启动后更改 FBL 时,是否有办法重新进行身份验证。 当启用安全启动时,切换到不同的 FBL 时,通过 HMAC 密钥生成的 META 数据值会发生变化。由于 FBL 发生更改,HSE 需要使用 HMAC 密钥重新计算 META 数据;但是,由于新的 FBL 删除了 HMAC 密钥,因此无法重新计算 META 数据。因此,由于 FBL 验证失败,发生 RESET,导致应用程序无法启动。是否有办法使用 HMAC 密钥重新验证已更改的 FBL,从而使 FBL 和应用程序都能正常运行?   Re: Authentication of another bootloader while S32K312 MCU SecureBoot is enabled 嗨@jeongwoo 安全启动的本质目的就是防止执行未通过身份验证的软件。 关键问题是您是否仍然可以访问调试接口,或者是否必须在没有调试器访问权限的情况下在现场恢复该问题。 在现场,如果没有预先设计了此类功能的备用/恢复映像(例如,导入 HMAC 密钥、生成新的身份验证标签、接受新的外部生成的身份验证标签或重新安装/重新配置 SMR),则通常无法进行恢复。 如果您有调试接口,最简单的解决方案通常是在外部计算一个新的认证标签,然后使用调试器将更新后的标签编程到闪存中。此方法要求在安装 SMR 时设置 HSE_SMR_CFG_FLAG_INSTALL_AUTH 标志。 如果未设置 HSE_SMR_CFG_FLAG_INSTALL_AUTH,HSE 将使用内部存储的哈希值进行验证。在这种情况下,仅更新身份验证标签是不够的,必须使用新的映像参数重新安装 SMR。 此致, Lukas Re: Authentication of another bootloader while S32K312 MCU SecureBoot is enabled 你好,卢卡斯, 在之前的状态中,我们的控制器没有设置 HSE_SMR_CFG_FLAG_INSTALL_AUTH。我正在尝试应用您提到的方法——使用新的图像参数重新安装 SMR。下面显示的 Fota_S32k3_SecureBootProcess 的相关部分是否正确? pSmrEntryInstall->accessMode = HSE_ACCESS_MODE_ONE_PASS; pSmrEntryInstall->entryIndex = 0u; pSmrEntryInstall->pSmrEntry = (HOST_ADDR)&smrEntry; pSmrEntryInstall->pSmrData = (HOST_ADDR)IVT.pAppImg_addr_0;/* 指向活动分区 */ pSmrEntryInstall->smrDataLength = smrEntry.smrSize; pSmrEntryInstall->pAuthTag[0] = (HOST_ADDR)smrEntry.pInstAuthTag[0];/* 指向被动分区 */ pSmrEntryInstall->pAuthTag[1] = (HOST_ADDR)smrEntry.pInstAuthTag[1];/* 指向被动分区 */ pSmrEntryInstall->authTagLength[0] = HmacTagLength; pSmrEntryInstall->authTagLength[1] = HmacTagLength; 如果理解正确,当我运行 HSE_SRV_ID_SMR_ENTRY_INSTALL 服务时,返回的 HseResponse 为 0xA5AA5317,这对应于: #define HSE_SRV_RSP_KEY_EMPTY ((hseSrvResponse_t)0xA5AA5317UL) 表明密钥为空。(正如我之前问过的,我怀疑之所以会显示这个图案,是因为那部分内容已被擦除。) 如果您能指导我如何注入密钥或以其他方式解决此问题,我将不胜感激。 非常感谢。 Re: Authentication of another bootloader while S32K312 MCU SecureBoot is enabled 嗨@jeongwoo 我认为这些参数没有问题。但是您只共享了 hseSmrEntryInstallSrv_t,而没有共享 hseSmrEntry_t(pSmrEntryInstall->pSmrEntry = (HOST_ADDR)&smrEntry;)。 结构体 hseSmrEntry_t 包含安装所需的其他重要参数。 要确认密钥是否已被擦除,可以使用服务 HSE_SRV_ID_GET_KEY_INFO,结构体 struct hseGetKeyInfoSrv_t。使用此服务,您将在 hseKeyInfo_t 中获取信息,以便您可以检查密钥的状态。 此致, Lukas Re: Authentication of another bootloader while S32K312 MCU SecureBoot is enabled 你好,卢卡斯, 感谢你的回复。我检查了您提到的 smrEntry 值。当我在 SecurebootState 为 0 的位置设置断点时,我确认 smrEntry 完全为 0。当我在 Fota_S32k3_SecureBootProcess 结束的返回部分设置断点时,我确认这些值出现了。返回时,SecureBootState 值为 1。 这些信息对解决问题有帮助吗? 1) 当在 if(SecureBootState == 0) 处设置断点时 / 结果:smrEntry = 0 2) 在返回 secureBootProcessResult 处设置断点,这是 Fota_S32k3_SecureBootProcess 函数的最后一部分。 此致,郑宇
查看全文
S32 Design StudioでSDKをインストールするS32K144EVB こんにちは、 今日はS32 Design Studioをインストールして、S32K144EVB基板を評価しました。小さなテストをしたいのですが、マニュアルを読んでみると、新しいアプリケーションプロジェクトを作成する際に「SDK」ボタンをクリックすると、S32 SDKは表示されません。 ボード用のSDKをインストールする方法 ありがとうございます。 Re: How install S32K144EVB SDK in S32 Design Studio こんにちは、 @ptcaosさん まず、S32DS IDEsに対応したソフトウェアをダウンロードする必要があります。サポートされているIDEバージョンは、ソフトウェアのリリースノート文書に記載されています。 この例では、S32K1デバイス向けに提供されている最新のRTDリリースを使用します。 S32K1_S32M24x_RTD_R21-11_3.0.0_D2503_DesignStudio_updatesite.zip をダウンロードしてください。このパッケージは、 S32K1のリアルタイム・ドライバ →オートモーティブSW - S32K1_S32M24x - Cortex-Mのリアルタイム・ドライバ→ S32K1_S32M24x AUTOSAR R21-11バージョン3.0.0の項目で見つけることができます。 S32 Design Studio 3.6.xでは、ヘルプ → S32DS 拡張機能とアップデートに移動します。 S32DS拡張機能とアップデートウィンドウで、右下隅にある「アップデートサイトの追加」をクリックします。 .zipファイルを選択してください以前にダウンロードしたファイル。追加されると、そのパッケージは利用可能な拡張機能やアップデートのリストに表示されます。 インストールしたいパッケージを選択して「 インストール/更新」をクリックします。 使用許諾契約に同意して、「完了」をクリックしてください。 インストールが成功すると、S32DSは変更を有効にするためにIDEの再起動を促します。 重要: 新しいプロジェクトを作成する際は、インストール済みのRTDパッケージと互換性のあるツールチェーンバージョンを選択してください。例えば、RTD 3.0.0NXP GCC 10.2.0を使用して開発およびテストされました。この情報は、該当するリリースノートに記載されています。 BR、VaneB Re: How install S32K144EVB SDK in S32 Design Studio ネタバレ (ハイライトして読む) こんにちは、 @VaneBさん インストールしました S32K1_S32M24X リアルタイムドライバーバージョン 3.0.0QLP07はあなたが説明した手順と同じことをしていますが、「新しいS32DSアプリケーションプロジェクト」を作成するとSDKsが利用できません。 スクリーンショットを2枚添付します。1枚はプロセッサの選択メニューで撮ったもので、もう1枚は「SDKs」ボタンを押して撮ったものです。 ありがとう。 こんにちは、リアルタイム・ドライバのバージョン3.0.0 S32K1_S32M24XインストールしましたQLP07はあなたが説明した手順と同じことをしていますが、"新しいS32DSアプリケーションプロジェクト"を作成するとSDKsが利用できません。スクリーンショットを2枚添付します。1枚はプロセッサの選択メニューで撮ったもので、もう1枚は"SDKs"ボタンを押して撮ったものです。ありがとうございます。
查看全文