Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
IMX93はmcimx93evk_ethosu_apps(SDK2.14)でエルフをロードできません SDK2.14のデモを試してみたいです: mcimx93evk_ethosu_apps エルフの後に 。このエルフをm33にロードします。 失敗した: remoteproc remoteproc0: 登録されたカーブアウトがDAリクエストに合いません [ 236.970879] rproc-virtio: rproc-virtio.1.車載のプローブエラー-12で失敗 [ 236.984471] リモートプロック リモートプロック0: 登録されたカブアウトがこの申請に合致しません [ 236.992036] Rproc-virtio: rproc-virtio.2.車載のプローブがエラー-12で失敗 何が起こったのか分からない。 Re: imx93 cannot load elf in mcimx93evk_ethosu_apps (sdk2.14) こんにちは、@bighero77 さん。 NXPサポートまでご連絡いただきありがとうございます。 READMEファイルによると、あなたのユースCASEに必要なアプリケーションはethosu_apps_rpmsgであり、ethosu_appsではありません。 README抜粋: 4. Test process --------------- 4.1 Example ethosu_apps_rpmsg is built as .out or .elf and installed in rootfs. In Linux command line, user can run the following command to do inference for the model. #./inference_runner -d /dev/ethosu0 -n mobilenet_v1_1.0_224_pb_int8_vela.tflite -i stopwatch.bmp -l labels.txt -o output_data_detection -t 1080000000 When the examples runs, the log and inference result would be seen on the terminal as below. Send Ping Send version request Send capabilities request Capabilities: version_status:1 version:{ major=0, minor=0, patch=0 } product:{ major=6, minor=0, patch=0 } architecture:{ major=1, minor=0, patch=6 } driver:{ major=0, minor=16, patch=0 } macs_per_cc:8 cmd_stream_version:0 custom_dma:false Create network Create inference Wait for inferences Inference status: success Detected: jinrikisha, confidence:70 Detected: horse cart, confidence:70 Detected: academic gown, confidence:70 Detected: howler monkey, confidence:70 For other demos, such as face recognition, please refer to the user manual. 4.2 Example ethous_apps is built as .bin. In U-Boot prompt, user can run the following command to do inference for the conv2d op model. u-boot=> tftp 0x80000000 ethosu_apps.bin;cp.b 0x80000000 0x201e0000 0x20000;bootaux 0x201e0000 0 When the example runs, the log and inference result would be seen on the terminal as below. Initialize Arm Ethos-U Inference status: success ドキュメントによると、もしLinuxから/dev/ethosu0を使って推論を実行するのが目標なら、このアプリethosu_apps_rpmsg正しいです。 よろしくお願いします、 アレハンドロ・ガルシア
記事全体を表示
S32DS 3.6.5 upgrade to 3.6.8 - missing "move to line" in debug context menu I had installed S32DS 3.6.5 and using it happily. In my debug sessions I could right-click on a code line and choose "Move To Line" to force running from that line. After upgrading to 3.6.8 via the "Check for updates" the right-click context menu in the "S32DS Debug" context shows the "S32DS C/C++" menu instead. How do I change the right-click to show the correct context menu? I am currently having to show the Disassembly view and scrolling to the 1st assembler instruction of my C line. In the Disassembly window I get the correct "Move To Line", "Run To Line" etc. context menu. I cannot run the S32DS 3.6.8 standalone installer due to IT restrictions at work. It would hang during preparing for installation. I think IT blocks some Java stuff. However, the "Check for updates" method worked (or did it?). Thanks Darren Re: S32DS 3.6.5 upgrade to 3.6.8 - missing "move to line" in debug context menu Hi @DarrenD  I have checked S32 Design Studio 3.6.10, which is the latest S32DS release available, and I can confirm that the "Move to Line" option is still present. As shown in the image below, the feature remains available and can still be used to navigate directly to a specific line within the editor. BR, VaneB Re: S32DS 3.6.5 upgrade to 3.6.8 - missing "move to line" in debug context menu I'm not sure what happened with my upgrade of 3.6.5 to 3.6.8 via the IDE then. However, I have since found out that standalone installs of 3.6.8 (into C:\NXP\S32D.3.6.8) and then 3.6.10 (into C:\NXP\S32D.3.6.10) both worked. Each took about 3 hours to install possibly due to IT scanning every single file. In both cases the "Move To Line" option is there so I am happy again. We use v10.2 of the compiler so I just copied the "C:\NXP\S32DS.3.6.5\S32DS\build_tools\gcc_v10.2" folder to "C:\NXP\S32DS.3.6.10\S32DS\build_tools\" and now my compilations work in 3.6.10. Thanks
記事全体を表示
MCUのSecureBootが有効S32K312別のブートローダーの認証 こんにちは。セキュアブートを有効にした後、FBLを変更する際に再認証を行う方法があるかどうかお伺いしたいのですが。 Securebootが有効になっている状態で別のFBLに変更すると、HMACキーを介して生成されるMETAデータ値が変更されます。FBLが変更されると、HSEはHMACキーを使用してメタデータを再計算する必要があります。しかし、新しいFBLによってHMACキーが削除されるため、メタデータの再計算が不可能になります。その結果、FBLでの検証失敗によりリセットが発生し、アプリケーションの起動が不可能になります。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を再インストールする必要があります。 よろしくお願いいたします。 ルーカス 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 には、インストールに必要なその他の重要なパラメータが含まれています。 キーが消去されているかどうかを確認するには、Service HSE_SRV_ID_GET_KEY_INFO Structure Struct hseGetKeyInfoSrv_t を使うことができます。このサービスを使うと、hseKeyInfo_tの情報が得られ、キーの状態を確認することができます。 よろしくお願いいたします。 ルーカス 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) Fota_S32k3_SecureBootProcess 関数の最後の部分である return secureBootProcessResult にブレークポイントを設定します。 よろしくお願いいたします、ジョンウ
記事全体を表示
IMX8MP PCIe内部クロックPHYの電源投入に失敗しました --> -110 imx8mp + nxp linux6.1.55カーネルで Wi-Fi をデバッグしているときに、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:ホストブリッジ /soc@0/pcie@33800000 範囲: [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電源投入失敗 --> -110 [2.322980] imx6q-pcie 33800000.pcie:PHY準備完了タイムアウトを待っています! [ 2.323033] imx6q-pcie: 33800000.pcie のプローブがエラー -110 で失敗しました デバイスツリー: &pcie_phy {     //clocks = <&hsio_blk_ctrl>; クロック = < &clk IMX8MP_CLK_HSIO_AXI >; 時計名 = "ref" ; fsl、clkreqはサポートされていません。 fsl、refclk-pad-mode = < IMX8_PCIE_REFCLK_PAD_OUTPUT >; ステータス = "正常" ; }; &pcie { pinctrl-names = "default" ; pinctrl-0 = < &pinctrl_pcie0 >; reset-gpio = < &gpio3 25 GPIO_ACTIVE_LOW >; GPIOアクティブハイをリセットします。 クロック = < &clk IMX8MP_CLK_HSIO_ROOT >, < &clk IMX8MP_CLK_PCIE_ROOT >、 < &clk IMX8MP_CLK_HSIO_AXI >; クロック名 = "pcie" , "pcie_aux" , "pcie_bus" ; 割り当てられたクロック = < &clk IMX8MP_CLK_PCIE_AUX >; 割り当てられたクロックレート = < 10000000 >; 割り当てられたクロックの親要素 = < &clk IMX8MP_SYS_PLL2_50M >;     // vpcie-supply = <&reg_pcie0>; ステータス = "正常" ;     // wifi_wake_host {     // compatible = "nxp,wifi-wake-host";     // interrupt-parent = <&gpio5>;     // 割り込み = <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:IMX PCIe PHYクロックの取得に失敗しました [4.088341]imx8-pcie-phy 32f00000.pcie-phy:IMX PCIe PHYクロックの取得に失敗しました: -517 [13.028064]imx8-pcie-phy 32f00000.pcie-phy:IMX PCIe PHYクロックの取得に失敗しました [13.035248]imx8-pcie-phy 32f00000.pcie-phy:IMX PCIe PHYクロックの取得に失敗しました: -517 [13.049053]プラットフォーム 33800000.pcie:調査延期保留中 [13.060015]プラットフォーム 32f00000.pcie-phy:調査延期保留中    以下に私の回路図を示します。 何が問題だったのでしょうか?助けてください!ありがとうございます!           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は矛盾しています。 GPIO 指定子からreset-gpio-active-highを削除し、 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 >; と設定し、代わりに以下の4つのドライバパッチを追加します。 clocks = <&clk IMX8MP_CLK_HSIO_AXI>; ですよね? 3. コミュニティの別の方が先ほど、その4つのパッチを使用したと返信しているのを見ましたが、残念ながら私たちの地域ではそのウェブサイトにアクセスできないようです。何か方法を考えます。もし可能であれば、パッチを直接投稿していただけると助かります。どうもありがとうございます! Re: imx8mp pcie内部时钟phy poweron failed --> -110 どうやら問題は以前とは違うようです。「Phylinkが起動しなかった」と表示されます。PCIe自体に問題があるのでしょうか、それとも周辺機器に問題があるのでしょうか? root@imx8mpevk:~/rtw# dmesg|grep pcie [2.264927] imx8-pcie-phy 32f00000.pcie-phy:WiFi PCIe リファレンスクロック: 100000000 Hz [2.274508] imx6q-pcie 33800000.pcie:ホストブリッジ /soc@0/pcie@33800000 範囲: [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: アンロール T、4 ob、4 ib、アライン 64K、制限 16G [3.410666] imx6q-pcie 33800000.pcie:Phyリンクは一度も話題にならなかった1 [4.481178] imx6q-pcie 33800000.pcie:Phyリンクは一度も話題にならなかった1 [4.487067] imx6q-pcie 33800000.pcie:PCIホストブリッジからバス0000:00へ [4.570576] pcieポート0000:00:00.0:PME: IRQ 223によるシグナリング 私の周辺機器は8822ce Wi-Fiチップを使用していますが、手動でロードしても自動でロードしても、何も情報が出力されません。 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クラス0604: 16c3:abcd 今回は何が問題なのでしょうか?起動が安定した後、基準クロック波形を測定できませんでした(私のハードウェアでは波形を測定するためにネットワークカードを取り外す必要がありました)が、少なくともPCIe出力は変化しました... readl_poll_timeoutが成功したので、リセットがハイレベルであることを保証できるはずです。
記事全体を表示
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.
記事全体を表示
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 ありがとう、ジョーイ。手動でアップデートしてみます。
記事全体を表示
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我应该能保证是在高电平了
記事全体を表示
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.
記事全体を表示
没有 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 函数的最后一部分。 此致,郑宇
記事全体を表示
S32DS 3.6.5 升级到 3.6.8- 调试上下文菜单中缺少“移动到行”选项 我已经安装了S32DS 3.6.5,并且使用得很愉快。在我的调试会话中,我可以右键单击代码行,然后选择“移动到行”来强制从该行开始运行。升级到 3.6.8 版本后通过“检查更新”,在“S32DS 调试”上下文中右键单击上下文菜单,会显示“S32DS C/C++”菜单。 如何更改右键单击以显示正确的上下文菜单? 我目前需要显示反汇编视图,并滚动到 C 语言代码的第一条汇编指令。在反汇编窗口中,我得到了正确的“移动到行”、“运行到行”等上下文菜单。 我无法运行 S32DS 3.6.8 版本。由于公司IT限制,只能使用独立组网 \\(SA\\) 安装程序。在安装准备期间,它会悬挂着。我认为IT部门屏蔽了一些Java程序。然而,“检查更新”方法奏效了(或者真的奏效了吗?)。 谢谢! 达伦 Re: S32DS 3.6.5 upgrade to 3.6.8 - missing "move to line" in debug context menu 嗨@DarrenD 我已检查过S32设计工作室3.6.10版本,这是最新的 S32DS 版本,我可以确认“移动到行”选项仍然存在。如下图所示,该功能仍然可用,并且仍然可以用于直接导航到编辑器中的特定行。 BR,VaneB Re: S32DS 3.6.5 upgrade to 3.6.8 - missing "move to line" in debug context menu 我不确定从 3.6.5 升级到 3.6.8 时发生了什么。然后通过 IDE 进行操作。 然而,我后来发现,3.6.8 的独立组网 (SA)安装版本也存在这个问题。(到 C:\NXP\S32D.3.6.8)然后是 3.6.10(放入 C:\NXP\S32D.3.6.10)两种方法都有效。每个文件安装大约需要 3 个小时,可能是因为 IT 部门需要扫描每个文件。两种情况下都有“移动到行”选项,所以我又高兴了。 我们使用的是编译器 v10.2,所以我直接复制了“C:\NXP\S32DS.3.6.5\S32DS\build_tools\gcc_v10.2”将文件夹移动到“C:\NXP\S32DS.3.6.10\S32DS\build_tools\”,现在我的编译在 3.6.10 中可以正常工作了。 谢谢!
記事全体を表示
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 你好, Yang_C 这似乎是软件本身的问题。我会协助您与内部软件开发人员确认! BR 乔伊 Re: LLCE FlexRay configuration on S32DS 嗨,乔伊, 感谢您的帮助。 期待您的回复。 BR, 杨 Re: LLCE FlexRay configuration on S32DS 你好, Yang_C 关于“repeatTx”,驱动程序是支持的,但 EB 中的接口配置接口不支持。主要原因是“repeatTx”不是 AUTOSAR FlexRay 接口 (FrIf) 规范定义的标准 ECUC 配置项,而是 NXP FlexRay_IP 驱动程序的底层消息缓冲区扩展属性。 BR 乔伊 Re: LLCE FlexRay configuration on S32DS 你好,Yang_C 感谢您的回复。 S32DS也无法进行配置,需要手动修改,但有一些驱动程序可以实现此功能。 BR 乔伊 Re: LLCE FlexRay configuration on S32DS 嗨,乔伊, 感谢您的回复,我有点困惑,因为您提到 EB 不支持配置“重复发送”,但我使用的是 S32DS。想知道S32DS是否支持FlexRay的重复TX设置? BR, 杨 Re: LLCE FlexRay configuration on S32DS 谢谢你,乔伊。我将尝试手动更新。
記事全体を表示