Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
i.MX 8M Mini SAI:在 BCLK 停止之前执行 I2C 编解码器控制的位置 (PREEMPT_RT) We are developing a system using an i.MX 8M Mini connected to an external audio codec (controlled via I2C) through SAI (I2S), running a kernel with the PREEMPT_RT configuration. We need to perform codec operations (I2C) before the I2S BCLK stops. Where would be the best place to insert this I2C handling? Re: i.MX 8M Mini SAI: Where to perform I2C codec control before BCLK stops (PREEMPT_RT) 最佳位置:将“必须在 BCLK 停止之前发生”的操作放在 ASoC 停止路径中,在 fsl-sai CPU DAI 触发器(STOP)运行之前——最好作为编解码器/元器件停止触发回调,或者作为机器驱动程序链接/元器件触发回调,在 CPU DAI 停止之前排序。 原因:在 i.MX 8M Mini 上,NXP 的 fsl_sai_trigger() 通过禁用 FIFO DMA 请求/中断来处理 SNDRV_PCM_TRIGGER_STOP,然后调用 fsl_sai_config_disable(),该函数会清除 FSL_SAI_CSR_TERE 并等待直到当前帧完成;在主模式下,它会 RESET SAI 块。这一点就是 SAI 生成的 BCLK 被停止/禁用的时刻。i.MX8MM SAI 驱动程序在其 DAI 操作中注册了 .trigger = fsl_sai_trigger 和 .hw_free = fsl_sai_hw_free,因此 hw_free() 函数对于“在 BCLK 停止之前”的要求来说已经太晚了。 除非是针对特定板的 电路板支持包。hack,否则我建议避免直接在 fsl_sai_trigger() 中添加 I2C 编解码器。它将通用的 CPU-DAI 驱动程序与一个编解码器/板策略耦合在一起。Linux/NXP ASoC 分离旨在将编解码器控制 I/O 保留在编解码器驱动程序中,而将 CPU 接口控制保留在平台/CPU DAI 驱动程序中;NXP 文档将通过 I2C 实现的编解码器控制 I/O 描述为通过 ASoC DAI 操作导出的编解码器驱动程序功能。 两种实际应用模式: Codec DAI .触发信号() / 元器件 .触发信号() 用于停止 在 SNDRV_PCM_TRIGGER_STOP / SUSPEND / PAUSE_PUSH 上添加编解码器寄存器写入。 确保此回调在 CPU DAI fsl_sai_trigger(STOP) 之前运行。 在当前的 ASoC 中,默认停止顺序为 DAI -> 元器件 -> Link,DAI 迭代顺序为 CPU DAI 然后是编解码器 DAI,因此如果 CPU DAI 在前,则编解码器 DAI 触发信号可能为时已晚。 如果使用元器件触发信号和保持/默认停止顺序,则元器件停止操作会在链接回调之前运行,但在 DAI 之后运行,并且仅按默认顺序运行;或者,如果您的内核支持,则适当设置 DAI 链接的 trigger_stop 顺序。 机器驱动程序 snd_soc_ops.trigger()/链接触发器 将特定于板级的编解码器 I2C 序列放入机器驱动程序的 .触发信号() 中,用于停止命令。 使用 ASoC 触发信号顺序,使链路级停止在 DAI 停止之前运行。内核公开了 SND_SOC_TRIGGER_ORDER_LDC,文档中将其描述为停止顺序 元器件 -> DAI -> Link,默认停止顺序为 DAI -> 元器件 -> Link;选择将您选择的回调放在 fsl_sai_trigger(STOP) 之前的顺序。 当序列是板级/系统策略而不是通用编解码器行为时,这通常是最清晰的地方。 重要提示:PREEMPT_RT 指令指出,正常的 I2C 传输是任务上下文操作;内核 I2C 文档指出,I2C 协议操作只能在任务上下文中使用,并为特殊的延迟关机情况提供单独的可选原子传输钩子。因此,除非您的 PCM/ASoC 路径配置为非原子路径,并且您已在内核中验证了回调上下文,否则不要从原子 PCM 触发路径执行阻塞 I2C。如果触发信号路径是原子性的,则使用更安全的架构:提前准备编解码器状态,稍后保持 BCLK 连续/门控,或者将操作移至可睡眠的有序停止路径,而不是在 CPU DAI 触发信号中进行原始 I2C 操作。
View full article
Windows 10/11 IoT Enterprise support and installation procedure for IMX95LPD5EVK-19 Hello NXP Team, We have an NXP i.MX95 19 mm × 19 mm evaluation kit with the following details: EVK: IMX95LPD5EVK-19 Baseboard marking: IMX95LPD5BB-19 REV B Intended installation target: Onboard eMMC We would like to install Windows 10/11 IoT Enterprise ARM64, preferably Windows 10/11 IoT Enterprise LTSC 2024, on this board. Could you please confirm whether Windows 11 IoT Enterprise is supported on the IMX95LPD5EVK-19? If supported, please share the official BSP, required software packages, and the complete installation or flashing procedure that we can use as a reference to install Windows onto the onboard eMMC. We are specifically looking for an official, board-validated guide for the IMX95LPD5EVK-19. Thank you. Regards, Jhasim Windows 10 IoT Enterprise Re: Windows 10/11 IoT Enterprise support and installation procedure for IMX95LPD5EVK-19 Thank you @yipingwang for the confirmation. Understood that there is currently no publicly released or officially supported Windows 10/11 IoT Enterprise BSP or board-validated installation procedure for the IMX95LPD5EVK-19. We will monitor the NXP Windows IoT BSP release page for any future i.MX95 support. Thank you. Re: Windows 10/11 IoT Enterprise support and installation procedure for IMX95LPD5EVK-19 At present, we are unable to locate any publicly released or officially documented Windows 10/11 IoT Enterprise BSP for the IMX95LPD5EVK-19. The current NXP Windows IoT support pages and Microsoft Windows IoT support matrices list support for i.MX8 family devices and i.MX93 EVK, but do not list i.MX95 EVK. Therefore, we cannot provide an official Windows installation procedure, BSP package, or board-validated flashing guide for IMX95LPD5EVK-19 at this time. If Windows support for i.MX95 becomes available through NXP, it would be expected to be published through the NXP Windows IoT BSP release page and accompanying release notes. https://www.nxp.com/design/design-center/software/embedded-software/i-mx-software/windows-10-11-iot-enterprise-for-i-mx-applications-processors:IMXWIN10IOT
View full article
Linux QBMan QMan 驱动程序 safe_copy_dqrr QorIQ 处理器的 Linux SDK 在驱动程序暂存树中包含qman_high.c 。这包括 safe_copy_dqrr() 函数,注释中说该函数确保读取操作按顺序到达 QBMan ,并且//防止 QBMan 看到 WRAP 事务//。 我推测这里指的是 AXI WRAP 突发事务,而不是与 DQRR 索引回绕有关的任何事情。 谁能解释一下为什么这是一个需要解决的安全问题? 提前致谢。 QorIQ LS1设备 Re: Linux QBMan QMan driver safe_copy_dqrr 你好, 是的——该评论很可能与总线/缓存线 WRAP 事务有关,而不是与 DQRR 生产者/消费者索引包装有关。 之所以需要“安全”,是因为 DQRR 条目不是普通的 RAM。这是一个 QBMan 门户结构,其内容由 QMan 生成,可能存储在 CPU 缓存中,并由使用VERB 字节中有效位的软件使用。DPAA 手册指出,即使 QMan 以原子方式更新 DQRR 条目,GPP 核心的读取操作也可能无法同时观察到条目的所有字节发生变化;软件必须确保包含有效位的 VERB 字节在加载 DQRR 条目的其余部分之前加载。 所以 safe_copy_dqrr() 试图避免这种不安全的模式: CPU 想要复制 DQRR 条目 编译 器 / CPU / 缓存子系统将其转换为突发或 缓存 行填充。 - > 事务 以 WRAP 样式 读取的方式到达 QBMan - > QBMan / 互连可能 以 与 逻辑字段顺序不同的顺序看到 / 读取节拍。 软件 可能会观察到 与 过期或 尚未 可见 的 条目数据关联的有效 VERB 字节 。 这很重要,因为有效位是同步点。启用 DQRR 条目暂存后,文档特别警告说, DQRR.PI 可以在关联的 DQRR 条目暂存到达处理器缓存之前更新,从而造成竞争;因此,软件应该使用 DQRR 条目中的有效位,而不是 DQRR.PI 来检测生产。有效位本身是一个交替极性位,每次环从最后一个条目回绕到条目 0 时,该位都会翻转。   此致 Re: Linux QBMan QMan driver safe_copy_dqrr 谢谢你的回复。 如果我理解正确,禁用 DQRR 暂存后,CPU 读取 DQRR 条目(在缓存失效和内存屏障之后)会发出触发信号,使缓存行填充,但当 DQRR 条目正在更新时,AXI 回绕突发事务可能会“破坏”这一过程? 我正在使用 LS1046A RDB,但在 NXP 手册中找不到任何关于这种行为的参考,引用。有相关记录吗?我正在寻找参考,引用来证明这个安全复制功能的合理性。 启用 DQRR 缓存后,QMan 会将 DQRR 条目写入缓存。这个问题是否也存在? 再次感谢您的帮助。
View full article
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正しいです。 よろしくお願いします、 アレハンドロ・ガルシア
View full article
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
View full article
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 にブレークポイントを設定します。 よろしくお願いいたします、ジョンウ
View full article
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が成功したので、リセットがハイレベルであることを保証できるはずです。
View full article
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.
View full article
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.
View full article
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.
View full article
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 アリス
View full article
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).
View full article
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
View full article
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 ありがとう、ジョーイ。手動でアップデートしてみます。
View full article
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.
View full article
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にはこの変更を含めないことにしました)。
View full article
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我应该能保证是在高电平了
View full article
如何在 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”按钮后截取的。谢谢。
View full article
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 爱丽丝
View full article
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.  
View full article