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 93 Processor: Explaining Secure Boot Signing and Authentication Recently, legal regulations such as the Cyber Resilience Act (EU) and JC-STAR (Japan) are being established around the world. Secure boot is also included among these technical requirements, and you may have heard of it as an important function. However, many users actually use Secure Boot without understanding how it works. Therefore, I would like to explain how it works using i.MX 93 Secure Boot (AHAB) as an example. table of contents i.MX 93 AHAB Signature and Authentication Mechanism 1. Containerizing the image 2. Add the public key and signature to the container 3. Authenticating Signed Containers 4. Authenticating Signed Containers in U-Boot i.MX 93 AHAB Signature and Authentication Mechanism¶ This article explains how the i.MX 93 processor's Advanced High Assurance Boot (AHAB) signing and authentication works. The i.MX 93 boot file is in a unique container format. Secure boot using AHAB adds a public key and signature to the container, and when the device boots, it authenticates the public key included in the container and verifies that the contents of the container have not been altered, preventing the launch of unauthorized software. 1. Containerize the image¶ Keita_Nagashima_0-1765854081919.png Fig. 1 Containerizing an image¶ Images that i.MX 93's BOOTROM and U-Boot load into memory and use must be converted to container format beforehand. Note The image here refers to U-Boot-SPL, U-Boot, ATF, OPTEE, M-Core SW, Kernel, DTB, Ramdisk, and any other data you want to place in memory. Details of the container format can be found in the System Boot chapter of the i.MX 93 Applications Processor Reference Manual . To containerize the image, use imx-mkimage and the included tool called mkimage_imx8 . When a container is generated, a Container Header is added to the beginning of the container file. This includes an ImageArray that collects the offset, size, hash value, etc. of each image, and a Signature Block where the public key and signature for secure boot are written. The Signature Block is generated in a mostly empty state. Multiple images can be combined into one container, and the image data will be concatenated to the end of the container file. 2. Add public key and signature to container¶ Keita_Nagashima_1-1765854199747.png Fig. 2 Adding a public key and signature to a container¶ To prevent unintended use of containers on i.MX 93 devices and to detect any alteration of the container contents, a public key and signature are added to the container using the Code Signing Tool (hereafter referred to as CST). First, generate a Super Root Key (SRK). The script ahab_pki_tree.sh included in the CST generates the CA and SRK1 to SRK4. The SRK consists of a pair of public and private keys, and the private key must be kept secret. Using srktool included in the CST, an SRK Table is generated by concatenating the four public keys SRK1 to SRK4. At the same time, an SRK Hash, which is the SHA-256 of the SRK Table, is also generated. The SRK Hash is written to the SRK_HASH fuse of the i.MX 93 device. The SRK should be preserved for the long term until the end of the i.MX 93 device lifecycle. Next, cst in the CST will attach the public key and signature to the container. The SRK Table generated earlier is written to the SRK Table field of the Signature Block. The area from the beginning of the Container Header to the end of the SRK Table field is signed using one of the SRK private keys. The signature data is written to the Signature field of the Signature Block. 3. Authenticating Signed Containers¶ Keita_Nagashima_2-1765854309584.png Fig. 3. Signed container authentication¶ First, calculate the SHA-256 of the SRK Table on the container, and if it matches the contents of the SRK_HASH fuse on the i.MX 93 device, you can authenticate that the SRK Table is the same as the SRK used for signing. Once the SRK Table is authenticated, the SRK public key and signature data contained in the SRK Table can then be used to verify whether the area from the beginning of the Container Header to the end of the SRK Table field has been altered. Finally, if you can verify that the Container Header has not been altered, you can verify that the images have not been altered by comparing the hash value written in the ImageArray with the hash value of each Image. 4. Authenticating Signed Containers in U-Boot¶ The U-Boot command auth_cntr is used to authenticate signed containers in U-Boot. https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/arch/arm/mach-imx/ele_ahab.c#L811-L815 auth_cntr When the command is executed, the do_authenticate function is called, which calls the authenticate_os_container function. https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/arch/arm/mach-imx/ele_ahab.c#L400-L416 The authenticate_os_container function calls the ahab_auth_cntr_hdr and ahab_verify_cntr_image functions. https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/arch/arm/mach-imx/ele_ahab.c#L330-L398 The ahab_auth_cntr_hdr function calls the ele_auth_oem_ctnr function. The ahab_verify_cntr_image function calls the ele_verify_image function. https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/arch/arm/mach-imx/ele_ahab.c#L261-L278 https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/arch/arm/mach-imx/ele_ahab.c#L297-L309 The ele_auth_oem_ctnr and ele_verify_image functions send commands to ELE and receive results from ELE. https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/drivers/misc/imx_ele/ele_api.c#L76-L104 https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/drivers/misc/imx_ele/ele_api.c#L134-L161 You can check the authentication result with the U-Boot ahab_status command. The main error codes are as follows: Table 1 Major error codes for the ahab_status command¶ Error Code What the error means Situations in which the error occurs ELE_NO_AUTHENTICATION_FAILURE_IND (0xEE) No authentication was performed. You tried to authenticate an unsigned container. ELE_BAD_KEY_HASH_FAILURE_IND (0xFA) The fuse SRK_HASH does not match the HASH in the SRK Table of the signed container. - Attempting to authenticate a signed container on a device where nothing is written to the fuse SRK_HASH. - An attempt was made to authenticate a container signed with an SRK that is not included in the SRK Table used when generating the FUSE SRK_HASH. - The SRK table of the signed container has been rewritten. - The SRK table for the signed container could not be loaded correctly (it was not written correctly in memory). ELE_BAD_SIGNATURE_FAILURE_IND (0xF0) The signature is incorrect. - The signed region of a signed container has been rewritten. - The signature of a signed container has been rewritten. - One of the above could not be loaded correctly. (It was not written correctly in memory.) ELE_BAD_HASH_FAILURE_IND (0xF1) The image hash is different from the hash written in the image array. - The image of the signed container has been rewritten. - The signed container image could not be loaded correctly (it was not written correctly in memory).   Note These error codes can be observed in the OEM Open state. In the OEM Closed state, the device stops when an error occurs, so no error codes are displayed. This document is a reference for using NXP products. For official specifications, please refer to the product manual and application notes. Actual operation may differ from the contents described due to differences in various conditions, such as the version of the software used. Not all functions have been verified, so please be sure to verify and test the product to suit your intended use. Next time, I would like to explain how Secure Boot (AHAB) is implemented and works. Article: i.MX 93 Processor: How to Implement Secure Boot - Practical Guide (Japanese blog)   =========================​ We are currently unable to respond to comments in the " Comment " section of this post . We apologize for the inconvenience, but when making inquiries, please refer to " How to contact NXP with technical questions ( Japanese blog ) " . (If you are already an NXP distributor or have a relationship with NXP , you may contact the person in charge directly. ) Recently, legal regulations such as the Cyber Resilience Act (EU) and JC-STAR (Japan) are being established around the world. Secure boot is also included among these technical requirements, and you may have heard of it as an important function. However, many users actually use Secure Boot without understanding how it works. Therefore, I would like to explain how it works using i.MX 93 Secure Boot (AHAB) as an example. i.MX Processors Security Japanese Blog
View full article
FreeMaster 3.2 not working with S32k344 Hello NXP MBDT Team, I am working freemaster3.2 on S32k344 and MBDT1.5. I am facing a weird issue like, when I am configuring the single CAN0 with single Rx-Tx CAN object, the free master works. But on configuring more CAN instances with respective single Rx-Tx object the free master stopped working. i have attached the model for your reference where I am calling the free master APIs, because the same issue was face with free master block also.   Re: FreeMaster 3.2 not working with S32k344 Hello May I ask why do you custom code for the FreeMASTER? Why don't you use the included blocks for FreeMASTER? Moreover, if you don't have any hard limitation, I recommend you to install the latest version for S32K3 Toolbox (v1.8.0).  Best regards, Sorin Bancila Re: FreeMaster 3.2 not working with S32k344 I want to stick to MBDT 1.5. We have performed multiple tests using the FreeMASTER blocks provided with the toolbox, but the results show that FreeMASTER is not working properly. Could you please check the model shared in the previous post and make it work for me, or provide a similar model that is compatible with and works correctly with MBDT 1.5? Thanks Re: FreeMaster 3.2 not working with S32k344 Can anyone get the issue.
View full article
[imx95] v4l2-ctl 视频捕获错误 VIDIOC_STREAMON 返回 -1(管道损坏) 大家好, 我们正在将 nvp6188a 移植到 imx95 evk 主板,linux 内核版本:L6.12.38 nvp6188a 是一款四通道模拟输入到 mipi csi 输出芯片。 它的 mipi csi 连接到 imx95 的 mipi rx csi0,使用"virtual-channels" 传输 4 通道 1080p 数据,数据格式:数据格式:YUV422 8 位,数据顺序:UYVY:UYVY。 我们可以看到 nvp6188a 在启动阶段已经初始化得很好; 在执行流捕获命令之后: " v4l2-ctl -d /dev/video0 --set-fmt-video-width=1920,height=1080,pixelformat='NV12' --strean-mmap=4" 我们总是收到这样一条令人心碎的信息: VIDIOC_STREAMON 返回 -1 (管道断裂) 我们尝试了很多方法,但总是弹出这样的信息。 附件中有 nvp6188a 驱动程序、dts 文件、media-ctrl 和 dmesg 信息。 如蒙指教,不胜感激。 谢谢! 祝你愉快 Re: [imx95] v4l2-ctl video capture error VIDIOC_STREAMON returned -1 (Broken pipe) 重新附加文件 Re: [imx95] v4l2-ctl video capture error VIDIOC_STREAMON returned -1 (Broken pipe) 你好 不幸的是,我们没有移植此 NVP6188A 的参考文档,并且我们的 BSP 默认不支持此功能。你可以尝试使用我们的 MX8XMIPI4CAM2 板作为参考,与你的自定义驱动程序进行比较。 检查您的设备树后,我没有发现语法问题。 您收到的错误日志可能是由于格式不匹配或 CSI 端口未激活造成的,但这与相机驱动程序有关。 我建议您检查 CSI 车道是否有活动。 顺祝商祺! Re: [imx95] v4l2-ctl video capture error VIDIOC_STREAMON returned -1 (Broken pipe) 您需要配置链接/路径和格式,然后才能流式传输数据。 例如 # 配置链接 media-ctl -d /dev/media0 -l '"camera 2-0030":0 -> " csidev-4ad30000.csi":0[1]' media-ctl -d /dev/media0 -l '"csidev-4ad30000.csi":1 -> " 4ac10000.syscon:formatter@20":0[1]' media-ctl -d /dev/media0 -l '"4ac10000.syscon:formatter@20":1-> " crossbar":2[1]' media-ctl -d /dev/media0 -l '"crossbar":7 -> " mxc_isi.2":0[1]' media-ctl -d /dev/media0 -l '"mxc_isi.2":1-> "mxc_isi.2.捕获":0[1]' #Configure 路由 media-ctl -d /dev/media0 -R '"crossbar" [2/0 -> 7/0 [1]]' media-ctl -d /dev/media0 -R '"csidev-4ad30000.csi" [0/0 -> 1/0 [1]]' media-ctl -d /dev/media0 -R '"4ac10000.syscon:formatter@20"[0/0 -> 1/0 [1]]' # 配置格式 media-ctl -d /dev/media0 -V '"csidev-4ad30000.csi":0/0 [fmt:YUYV/1920x1080 field:none]' media-ctl -d /dev/media0 -V '"csidev-4ad30000.csi":1/0 [fmt:YUYV/1920x1080 field:none]' media-ctl -d /dev/media0 -V '"4ac10000.syscon:formatter@20":0/0[fmt:YUYV/1920x1080 field:none]' media-ctl -d /dev/media0 -V '"4ac10000.syscon:formatter@20":1/0[fmt:YUYV/1920x1080 field:none]' media-ctl -d /dev/media0 -V '"crossbar":2/0 [fmt:YUYV/1920x1080 field:none]' media-ctl -d /dev/media0 -V '"crossbar":7/0 [fmt:YUYV/1920x1080 field:none]' media-ctl -d /dev/media0 -V '"mxc_isi.2":0/0[fmt:YUYV/1920x1080 field:none]' media-ctl -d /dev/media0 -V '"mxc_isi.2":1/0[fmt:YUYV/1920x1080 field:none]' Re: [imx95] v4l2-ctl video capture error VIDIOC_STREAMON returned -1 (Broken pipe) 酷~ 现在可以用了。谢谢。
View full article
面向基于Simulink™的S12 MagniV (S12ZVM)的电机控制工具箱 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 电机控制开发工具箱包括支持 MCU 的嵌入式目标、Simulink ™插件库以及用于配置和生成必要软件的工具链。     特性 可为独立应用生成代码,可直接下载到支持的目标 优化电机控制库模块,包括Park/Clarke转换、数字滤波器和常规功能 I/O块包括CAN、SPI、PIT定时器、正弦波生成、eTimer、PWM和A/D。 功能和任务的目标分析 使用FreeMASTER工具进行数据采集和校准 在闪存中进行应用编程的引导加载实用程序 与嵌入式编码器(包括SIL和PIL测试)无缝集成   产品 链接 S12ZVM S12ZVM混合信号MCU|MagniV|恩智浦 S12ZVM评估板 S12ZVM评估板 | 恩智浦 链接 MC工具箱 汽车电子 结构框图   汽车电子
View full article
eIQ Neutron NPU 实验室指南 这些实验室指南提供了详细的分步说明,介绍了如何制作量化的 TensorFlow Lite 模型,以及如何使用eIQ 工具包中的中子转换工具,将模型转换为可在 MCX N 设备上的 eIQ 中子核处理器上运行的格式。《eIQ Neutron NPU for MCUs 实验室指南——第 1 部分——Mobilenet》文档重点介绍了如何使用 eIQ Toolkit GUI 方法转换模型,随后将转换后的模型导入 eIQ MCUXpresso SDK 示例中。建议您首先完成这个实验。根据 MCUXpresso SDK 的下载方式,存在两个版本:一个版本可从MCUXpresso SDK Builder 网站下载为 zip 文件,另一个版本可从NXP GitHub 仓库下载。 《eIQ Neutron NPU for MCUs 实验室指南 - 第 2 部分 - 人脸检测.pdf》文档重点介绍了如何使用 eIQ 工具包的命令行工具将模型转换为 eIQ Neutron NPU 格式,并将转换后的模型集成到 Face Detect demo 中,该演示可在 Application Code Hub 中找到。这两个实验室均设计为在 FRDM-MCXN947 上运行,但相同的概念也适用于其他 MCX N 系列开发板,以及搭载 eIQ Neutron 神经处理单元的其他设备,如 i.MX RT700。另外,请务必查看入门社区帖子,以获取有关 eIQ Neutron 神经处理单元的更多详细信息。 ---更新于 2025 年 4 月,适用于 eIQ Toolkit 1.15 MCXN NPU|ML
View full article
最新の SDK_25_12_00 ではデバッグ ツールがグレー表示され、古い SDK_25_03_00 では正常に動作します MCUXpresso IDE V25.6.136 を実行中+ SDK_25_12_00 を搭載した evkmimxrt685 ボード。デバッグが開始されると、すべてのデバッグ ツール (再開 ..) がグレー表示され、プロジェクトを実行できなくなります。古い SDK_25_03_00 では正常に動作しますが、SDK_25_06_00 および SDK_25_09_00 でも同じ問題が発生します。デバッグツールを復元するにはどうすればいいですか Re: Debug tools greyed out with latest SDK_25_12_00, work fine with older SDK_25_03_00 こんにちは、カルロス。これは、Hello World を含むすべての例で発生します。常に「void ResetISR(void)関数の最初の行、つまりstartup_mimxrt685s.cの行__asm volatile ("cpsid i") (行番号381)で停止します。スタートアップディレクトリ内のファイル。evkmimxrt685_dsp_mu_polling_cm33 を実行しようとしています。この例は 25.03 バージョンでは正常に動作します。以降のすべてのバージョン (06、09、12) でこの問題が発生します。24.03 以降の SDK バージョンでは IDE に何か変更を加える必要がありますか?スクリーンショットはあるのですが、どうやって投稿すればいいですか。ありがとう@bobvr Re: Debug tools greyed out with latest SDK_25_12_00, work fine with older SDK_25_03_00 こんにちは、カルロス。スクリーンショットを投稿します。 Hello Worldを含むすべてのサンプルで発生します。常に「void ResetISR(void)」関数の最初の行、つまりスタートアップディレクトリのstartup_mimxrt685s.cファイルの__asm volatile ("cpsid i")行(行番号381)で停止します。main()関数が実行されず、実行が開始されません。evkmimxrt685_dsp_mu_polling_ cm33を実行しようとしています。このサンプルはバージョン25.03では正常に動作します。それ以降のバージョン(06、09、12)ではこの問題が発生しています。24.03以降のSDKバージョンでは、IDEに何か変更を加える必要があるでしょうか?bobvrさん、ありがとうございます。 Re: Debug tools greyed out with latest SDK_25_12_00, work fine with older SDK_25_03_00 こんにちは@bobvr お使いのコンピュータにインストールされている OS を教えていただけますか?Linux、Windows 10、Windows 11? EVK の BOOT_SEL が正しく選択されているか確認してください。 Re: Debug tools greyed out with latest SDK_25_12_00, work fine with older SDK_25_03_00 こんにちは@bobvr セットアップの詳細を共有していただきありがとうございます。 フラッシュを一括消去して、デバッグを再試行してください。 これを行うには、クイックスタートパネルでリンクサーバーアクションを変更してください。 carlos_o_0-1767979142309.png その後、LinkServer プローブを使用してデバッグに戻します。 プロセス中にエラー メッセージが表示された場合は、スクリーンショットを共有してください。 Re: Debug tools greyed out with latest SDK_25_12_00, work fine with older SDK_25_03_00 Dell Alder Lake デスクトップで Windows 11 を実行しています。ブート ジャンパー (JP1) は開いています。これは、マニュアル (MIMXRT685-AUD-EVKUM Rev 3 - 2023 年 7 月 21 日) によるとデフォルトです。これが「EVK の BOOT_SEL を確認する」という意味だと思います。ありがとうbobvr Re: Debug tools greyed out with latest SDK_25_12_00, work fine with older SDK_25_03_00 カルロス、ありがとう。これを実行する前に、私は常に SEGGER J-Link プローブを使用しており、「SEGGER J-Link プローブを使用したフラッシュ アクションの消去」メニュー オプションがあることをお知らせしたいと思います。それを使用して消去する必要がありますか、それとも上記のようにリンク サーバー プローブを使用して消去する必要がありますか。 Re: Debug tools greyed out with latest SDK_25_12_00, work fine with older SDK_25_03_00 カルロス、リンク サーバーで一括消去を試みましたが、エラー メッセージが表示されました - スクリーンショットを添付します。ありがとう Re: Debug tools greyed out with latest SDK_25_12_00, work fine with older SDK_25_03_00 こんにちは、カルロス。Segger J-Link プローブを使用してフラッシュを削除しました (リンク サーバー プローブは Segger ファームウェアによって上書きされているため、リンク サーバー プローブではありません)。ARM コアと HiFi4 DSP の両方をデバッグするには、Segger プローブを使用する必要があることを理解しています。また、Segger ファームウェアを最新バージョン 8.98 にアップデートしました。デバッグ起動ファイルを削除し、起動時に新しいワークスペースを生成するためにワークスペースを削除し、ボードの電源を入れ直しました。まだ同じ問題です。デバッグセッションが実行中であると表示されますが、デバッグできません。前述したように、これは 03 以降のすべてのバージョン (06、09、12) で発生します。startup_mimxrt685s.c で停止します以前と同じようにファイルします。デバッガー コンソールに警告メッセージが表示されますが、これはおそらく無害です。「警告: 'main' をホスト エンコーディング (CP1252) から UTF-32 に変換できませんでした。 通常、このようなことは起きませんので、バグレポートを提出してください。 モニター実行 SetRestartOnClose=1 次のステップについてアドバイスをお願いします。ありがとう、bobvr。 Re: Debug tools greyed out with latest SDK_25_12_00, work fine with older SDK_25_03_00 こんにちは@bobvr ご利用いただいていることを共有いただきありがとうございます。 リンク サーバーでデバッグを試みても問題は解決しませんか?エラーメッセージが表示された場合は、それを共有してください。
View full article
MCUXpresso Config Tool for MCUXpresso IDE Clone an Example Project from MCUXpresso IDE The following steps will guide you through the manipulation of the general-purpose outputs. The example sets up a CTimer to generate a PWM signal and change between two LEDs. Find the Quickstart Panel in the lower left-hand corner and click on Import SDK example(s) Sabina_Bruce_14-1767120564749.png Click on the FRDM-MCXN947 board to select that you want to import an example that can run on that board, and then click on Next Sabina_Bruce_15-1767120575767.png Use the arrow button to expand the  driver_examples  category, then expand the ctimer examples, click on the check box next to  ctimer_match_interrupt_example  to select it. To use the UART for printing (instead of the default semihosting), Select UART as the SDK Debug Console checkbox under the project options. Then, click on Finish Sabina_Bruce_16-1767120587691.png Click on the  “frdmmcxn947_ctimer_match_interrupt_example”  project in the Project Explorer View and build, compile, and run the demo as described in the previous section Sabina_Bruce_17-1767120603466.png You should see the BLUE and RED LED changing back and forth Terminate the debug session Use MCUXpresso IDE Pins Tools to Modify Example Note: Previously, you had to clone an SDK project like in the previous step. Open the pins tool by selecting “ConfigTools” on the top right hand of the file explorer window and then select “ Open Pins” Sabina_Bruce_2-1767120490131.png The pins tool should now display the pin configuration for the ctimer project Sabina_Bruce_3-1767120490074.png In the Pins view deselect “Show dedicated pins” and “Show no routed pins” checkboxes to see only the routed pins. Routed pins have a check in a green box next to the pin name. The functions selected for each routed pin are highlighted in green Sabina_Bruce_4-1767120490861.png In the current configuration, PIO3_2 and PIO3_3 are routed as the outputs of the CTimer. Let’s add a third Ctimer Match output and enable the Green LED Select “Show no routed pins” to see the other options. To enable the third Ctimer Match Output, browse the column for Ctimer and select and output. In this example, we will select, Ctimer4 Match 2 on PIO3_6. Select the item in the Ctimer column to enable Sabina_Bruce_5-1767120490102.png Now, let’s route the Green LED. In the search box type “green” so that the routed pin for this LED is shown. Finally, click the box under the GPIO column. The box will highlight in green, and a check will appear next to the pin Sabina_Bruce_6-1767120489892.png Next configure the GPIO pin as an output in the “Routing Details” window Sabina_Bruce_7-1767120490064.png Now it’s time to implement these changes into the project by exporting the new updated pin_mux.c and pin_mux.h files that are generated by the Pins tool. Click on Update Project in the menu bar Sabina_Bruce_8-1767120490018.png The screen that pops up will show the files that are changing and you can click on “diff” to see the difference between the current file and the new file generated by the Pins tool. Click on “OK” to overwrite the new files into your project Sabina_Bruce_9-1767120490120.png Let’s add some additional code to the example. Open  simple_match_interrupt.c  file and add the following macros for the third ctimer output. Sabina_Bruce_10-1767120489936.png Add the Green LED functions as well. Sabina_Bruce_11-1767120491994.png Some additional code to be implemented will be the third ctimer’s callback, this can be copied from  ctimer_match1_callback  and modify the content to match2. To be able to visually identify the new ctimer, we will remove one of the previous ctimers as shown Sabina_Bruce_12-1767120492171.png The main function will need to include the initialization of both the Green LED and the Ctimer Sabina_Bruce_13-1767120490811.png Build and download the project as done in the previous section Run the application. You should now see the Green and Blue LED blinking back and forth Terminate the debug session
View full article
安装和更新 S32K144 MCU 的 SDK 我安装了 S32 Design Studio 是为了从 S32K144 MCU 的 SDK 示例中创建项目我找不到用于配置示例项目的 SDK 文件夹我已经安装了下面 S32 K144 设备的 SDK 我已经分享了我关于图像的问题请提前参考 谢谢 Re: install and updating the SDK for the S32K144 MCU HI 请安装另外两个软件包,然后你会找到 S32K1 RTD。 S32DS Extensions and Updates install S32K1 RTD300 QLP03.png 我记得以前,我只需要选择其中一个,与 S32K1 RTD 相关的依赖软件包就会自动安装。 请注意,在圣诞假期期间,我们的支持响应时间可能会比平时长。在某些情况下,您的请求可能会在新年后得到处理。感谢您的理解。 祝好, Robin ------------------------------------------------------------------------------- 注: - 如果本帖回答了您的问题,请点击"ACCEPT AS SOLUTION" 按钮。谢谢! - 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略 如果您以后有相关问题,请另开新主题,并参考已关闭的主题。 -------------------------------------------------------------------------------
View full article
D1が赤く点灯しているため、S32K146EVB-Q144ボードをフラッシュできません 当初は正常に動作していた S32K146EVB-Q144 評価ボードを持っています。 Lin スタックを実装したデバッグ セッション中に、動作が停止しました。 コントローラをリセットすると、D1 の赤いライトが点灯し続け、他の 2 つの緑のライトも点灯したままになります。 USB ソースからの電源を選択するために、位置 2-3 の J10 と J107 を使用し、OpenSDA アプリのフラッシュ モードを選択するために、位置 2-3 の J104 を使用しました。 現在、私のコントローラは S32DS によってまったく検出されません。 症状はまったく同じであるように思われたので、以下の投稿に記載されている手順を試してみました。 Re: S32K144 D2 赤色 LED が常時点灯 - NXP コミュニティ ここで、P&E Kinetics Recovery Tool を使用して OpenSDA でプロセッサを停止できましたが、それでも新しいアプリケーションをフラッシュすることはできませんでした。 停止に成功しても再度点滅させることができず、赤色のライトが点灯したままになります。 コントローラはジャンパー J104 を調整することでブートローダーモードに入ることもでき、実際にブートローダーアプリをフラッシュすることもできました。しかし、どういうわけか私は再びフラッシュを書き込むことができず、サンプルの.srecをフラッシュしようとするとファイルでは、D2 は定期的に点滅し続けます (通常、正常に点滅すると 1 回点滅してからアプリの実行が開始されます)。 つまり、簡単に言うと: - コントローラがメインに到達できない、または継続的にリセットされる - コントローラはフラッシュに再度書き込むことができません (セキュリティ上の問題である可能性があります)。 私はデバッグ プローブを持っていないため、SEGGER-JLINK に関連するものを除き、上記の Thread で言及されているテクニックを試しました。私は PE Multilink Universal を持っていますが、フラッシュを回復/消去することはできません。 ボードの詳細は次のとおりです。 ボード名: S32K146EVB-Q144 MicroBootカーネルバージョン: 1.08 ブートローダーのバージョンは: 1.13 インストールされたアプリケーション: PEMicro EVB-S32K144 マスストレージ/デバッグアプリ アプリケーションのバージョン: 1.25 DUID は: 39A33939-91818199-37539805-F97AE678 EUID は: 4141A238-1BDB8733-1854BA22-D38368D6 TUID: 74823938-47328196-8576CC9B-0242983E TOAは次のとおりです: 86B6E505-56F042E0-79B2A114-62BA758F TOA2 は: 86B6E505-EB1A8A7C-AF6E54B6-43532420 SUID は: 86B6E505-5BA18877-37239804-8003EC65 MCU は永久にロックされますか? そうでない場合、どうすればボードを回復できますか? ハードウェアに障害があると思われますか?(参考までに、D2とD3が緑色に点灯しているのは、5Vと3.3Vの電源レールが正常に動作していることを意味していると思います) 物理的に大量消去する方法はありますか?(ボードがまったく検出されないため、S32DS 緊急キネティクス オプションは使用できません)。 OpenSDA チップの任意のピンを接地すると、フラッシュ メモリが消去されますか? Re: Unable to flash S32K146EVB-Q144 board as D1 glowing red クリスマス休暇期間中は、サポートの応答時間は通常より長くなる場合がありますのでご了承ください。場合によっては、ご要望への対応が新年以降になることもあります。ご理解のほどよろしくお願いいたします。 Re: Unable to flash S32K146EVB-Q144 board as D1 glowing red ハイ P&E リカバリ ユーティリティがMCU を停止したら、ツールを閉じます。 次にステップ3に進みます または ステップ4 S32K146 を再プログラムします。 これが原因かどうかは分かりませんが、 アプリケーションのバージョン: 1.25 。リセットボタンSW5を押したまま、USBケーブルを挿入して MSD-DEBUG-S32K146EVB-Q144_Pemicro_v121.SDA BOOTLOADER ドライブに挿入します。これにより、 アプリケーションバージョンを1.21に。 また添付しました lpit_periodic_interrupt_s32k146.srec 。 ちなみに、外付けのSegger J-Linkは必要ありません。ステップ6に従う場合: SW5を押しながらJ7を挿入すると、OpenSDAがブートローダーモードになります。そして、 SEGGER J-Linkアプリケーションファームウェア( OpenSDA_V1.bin )をOpenSDA_V1.binにコピーします。 オンボード デバッガーは J-Link になります。 よろしくお願いします、 ロビン --------------------------------------------------------------------------------- 注記: - この投稿があなたの質問への回答である場合は、「解決策として承認」ボタンをクリックしてください。ありがとう! - Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。 後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。 --------------------------------------------------------------------------------- Re: Unable to flash S32K146EVB-Q144 board as D1 glowing red こんにちは、ロビン。 迅速なご返信ありがとうございます。MSD -DEBUG-S32K146EVB-Q144_Pemicro_v121.SDAにロールバックしてみましたが、 同じように動作します。ブートローダーアプリはフラッシュされますが、D1はまだ赤く点灯しており、.srecをフラッシュできません。kinetis 回復ツールを使用して停止した後のファイル。コントローラが srec をフラッシュしようとしているが、D2 が定期的に点滅するため失敗していることがわかります (通常は 3 ~ 4 回だけ点滅し、アプリがフラッシュされます)。 その後、ブートローダーをOpenSDA_V1.bin に切り替えて、その後 J-Link コマンダーを使用して接続を試みましたが、次のログが表示されました。 SEGGER J-Link Commander V8.94 (2025年12月10日 14:50:47 にコンパイル) DLLバージョンV8.94、2025年12月10日14:49:54にコンパイル USB経由でJ-Linkに接続しています...OK ファームウェア: J-Link OpenSDA コンパイル日: 2023年1月31日 13:42:36 ハードウェアバージョン: V1.00 J-Link の稼働時間(起動以降): 0d 00h 00m 28s シリアル番号: 621000000 VTref=3.300V ターゲット接続を確立するには「connect」と入力し、ヘルプを表示するには「?」と入力します J-Link>接続 デバイス/コアを指定してください。 : S32K146 選択ダイアログに「?」と入力してください デバイス>S32K146 ターゲットインターフェースを指定してください: J) JTAG (デフォルト) S) SWD T) cJTAG TIF>SWD 対象インターフェース速度[kHz]を指定します。 : 4000 kHz 速度>100 デバイス「S32K146」が選択されました。 SWD経由でターゲットに接続する ConfigTargetSettings() の開始 ConfigTargetSettings() 終了 - 22us かかりました InitTarget() 開始 SWDが選択されました。JTAG -> SWD 切り替えシーケンスを実行しています。 CPU の停止中にタイムアウトが発生しました。 InitTarget() 終了 - 392 ミリ秒かかりました ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 APマップをスキャンして利用可能なすべてのAPを見つける AP[2]: APマップの終端に達したため、APスキャンを停止しました AP[0]: AHB-AP (IDR: 0x24770011, ADDR: 0x00000000) AP[1]: JTAG-AP (IDR: 0x001C0000, ADDR: 0x01000000) APマップを反復処理して使用するAHB-APを見つける AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 FPUnit: 6 つのコード (BP) スロットと 2 つのリテラル スロット CoreSight コンポーネント: ROMTbl[0] @ E00FF000 [0][0]: E000E000 CID B105E00D PID 000BB00C SCS-M7 [0][1]: E0001000 CID B105E00D PID 003BB002 DWT [0][2]: E0002000 CID B105E00D PID 002BB003 FPB [0][3]: E0000000 CID B105E00D PID 003BB001 ITM [0][4]: E0040000 CID B105900D PID 000BB9A1 TPIU 126976バイトの作業用RAM(0x1FFF0000)を初期化しています リセットタイプ: NORMAL ( https://kb.segger.com/J-Link_Reset_Strategies ) リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: AIRCR.SYSRESETREQ 経由でデバイスをリセットします。 リセット: S_RESET_ST はクリアされません。CPU は永久にリセット状態のままになっているようです。 リセット: フォールバックを使用: ピンをリセットします。 リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: リセットピン経由でデバイスをリセットします リセット: VC_CORERESET は CPU を停止しませんでした。(デバッグ ロジックもリセット ピンによってリセットされますか?)。 リセット: 再接続して CPU を手動で停止します。 ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 AP マップの検出をスキップしました。手動で構成された AP マップが見つかりました。 AP[0]: AHB-AP (IDR: 未設定、ADDR: 0x00000000) AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 CPUを停止できませんでした リセット: コアはリセット後に停止せず、WDT を無効にしようとしました。 リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: リセットピン経由でデバイスをリセットします リセット: VC_CORERESET は CPU を停止しませんでした。(デバッグ ロジックもリセット ピンによってリセットされますか?)。 リセット: 再接続して CPU を手動で停止します。 ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 AP マップの検出をスキップしました。手動で構成された AP マップが見つかりました。 AP[0]: AHB-AP (IDR: 未設定、ADDR: 0x00000000) AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 CPUを停止できませんでした リセット: 失敗しました。リセット ピンを切り替えてリセット戦略を再度試します。 ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 AP マップの検出をスキップしました。手動で構成された AP マップが見つかりました。 AP[0]: AHB-AP (IDR: 未設定、ADDR: 0x00000000) AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: AIRCR.SYSRESETREQ 経由でデバイスをリセットします。 リセット: S_RESET_ST はクリアされません。CPU は永久にリセット状態のままになっているようです。 リセット: フォールバックを使用: ピンをリセットします。 リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: リセットピン経由でデバイスをリセットします リセット: VC_CORERESET は CPU を停止しませんでした。(デバッグ ロジックもリセット ピンによってリセットされますか?)。 リセット: 再接続して CPU を手動で停止します。 ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 AP マップの検出をスキップしました。手動で構成された AP マップが見つかりました。 AP[0]: AHB-AP (IDR: 未設定、ADDR: 0x00000000) AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 CPUを停止できませんでした リセット: コアはリセット後に停止せず、WDT を無効にしようとしました。 リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: リセットピン経由でデバイスをリセットします リセット: VC_CORERESET は CPU を停止しませんでした。(デバッグ ロジックもリセット ピンによってリセットされますか?)。 リセット: 再接続して CPU を手動で停止します。 ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 AP マップの検出をスキップしました。手動で構成された AP マップが見つかりました。 AP[0]: AHB-AP (IDR: 未設定、ADDR: 0x00000000) AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 CPUを停止できませんでした CPUを停止できませんでした CPUを停止できませんでした ****** エラー: CPU を停止できませんでした。 メモリゾーン: ゾーン: 「デフォルト」 説明: デフォルトのアクセスモード Cortex-M4 が識別されました。 J-Link> Re: Unable to flash S32K146EVB-Q144 board as D1 glowing red オシロスコープを使用してリセットピンの波形を観察し、波形を送信してリセット期間とハイレベル幅を教えてください。場合によっては回復不可能となり、S32K1 チップを交換しなければならないこともあります。   接続戦略と回復手順: 目標: デバッガーにコアを停止し、問題のあるファームウェアを無効にする機会を与えます。 A. SWD速度を下げる + 「リセット時に接続」 J-Link Commanderの場合: J-Link> device S32K146 J-Link> if SWD J-Link> speed 1000 ; start at 1 MHz; if still failing, drop to 100 kHz J-Link> connect それでも失敗する場合は、手動の connect‑under‑reset を使用します。 RESET_b を外部的に低く保持し、ボードに電源を投入します。 Commander で connect を実行します。 リセットを解除し、直ちに次の操作を実行します。 J-Link> r J-Link> h J-Link> halt 特に 100 kHz SWD 速度ではタイミングが重要になる可能性があるため、何度か試してください。 B. J-Linkリセット戦略の変更 リセット戦略の値によって動作が異なります。Commander の場合 (正確な ID はバージョンによって異なる場合があります): J-Link> SetResetType = 3 ; a common “connect under reset / halt after reset”; Try 2 / 4 / 12 etc. depending on your J-Link version J-Link> r J-Link> halt または、J-Link Commander で「リセット状態で接続」を選択してみてください。 Re: Unable to flash S32K146EVB-Q144 board as D1 glowing red S32K146EVB-SPF-29844-RB.pdfによると: J104 1-2 OpenSDAからのリセット信号 J10 2-3 P5V0 外部の 9V または 12V 電源がある場合は、 J107 1-2 P5V_SBC を接続することもできます。PEMicro Multilinkなどの外部デバッガーをお持ちの場合は、それを使用して、S32K146 用のプログラムをダウンロードできるかどうかを確認してください。 最後にダウンロードされたプロジェクトは何ですか?CSEc は有効になっていますか? 前回の質問に答えて、オシロスコープを使用して測定したリセット信号を提供してください。
View full article
S32N55-NETC ハードウェア MAC 学習の問題 こんにちは、チーム お客様 (HKMC) は、SW32N5_GRAYVIP_1_0_22_0 を使用して RDB の ping 機能をテストしたところ、異常な症状が発生しました。 HW_ENABLED と FDB_LOOKUP_FLOOD_FRAMEを有効にすると、ハードウェアによって学習された動的FDB エントリを保存できないようです。ping 機能が開始されると、動的 FDB エントリが繰り返し追加および削除されます。さらに、関連するレジスタ値は 1 または 2 から 0 に繰り返し変化します。 下の図は詳細な情報と構成を示しています。添付ファイルはWiresharkからのpingログ情報です。 さらに情報が必要な場合はお知らせください。 よろしくお願いします!   よろしくお願いいたします。 唐生。 GRAY_VIP 優先度: 重要 RTD 出典: 直接お客様 Re: S32N55-NETC Hardware MAC learning issue チームの皆様、 根本的な原因は、 NETC_ETHSWT_IP_MAIN_FUNCTION_PERIOD の構成が正しくないことです。値は 0.001 である必要がありますが、CRS 上の NETC スイッチのデフォルト構成は 1 です。 次のリリースでこれが修正されるようにしてください。 よろしくお願いします! よろしくお願いいたします。 唐生。
View full article
s32k312 hse work abnormal when enable gcc -O1 Hi NXP expert,     1. i am using s32k312 hse to do a rsa verify function,  i store the rsa public key in NVM catalog  ``` { HSE_ALL_MU_MASK,  HSE_KEY_OWNER_CUST,   HSE_KEY_TYPE_RSA_PUB, 2,  HSE_KEY2048_BITS }, ```    2. it can verify in default project, which in settings, gcc optimization is  None (-O0)   3.  i want to shrink the binary size, and change gcc settings to -O1,  no else changed. then the function returns  failed (0x55a5a164) how to solve this problem    thanks. Re: s32k312 hse work abnormal when enable gcc -O1 Hi victory, Based on your description, it sounds very similar to the issue described in the S32K3常见问题检查列表(Check list)-V1.2-20251113.docx:  4.32 编译器优化设置不当导致HSE服务失败问题 4.32 编译器优化设置不当导致HSE服务失败问题.png Please note that during the Christmas holiday period, our support response times may be longer than usual. In some cases, your request might be addressed after the New Year. Thank you for your understanding. Best Regards, Robin
View full article
[MIMXRT1160-EVK] 1XK搭載: NXP-WIFIドライバをSDRAMに jaseze01_0-1765537499371.png こんにちは!外部SDRAMを使用してRT1160-EVKでNXP Wi-Fiドライバを正常に実行できた方はいますか?オーバーレイで zephyr,sram = &sdram0 を設定したにもかかわらず、ファームウェアのロード中に 0x40000 (DTCM 制限) でバス障害が発生します。ヒープが SDRAM で正しく初期化されていないか、SDIO DMA の正しい MPU/Nocache 構成が欠落しているようです。何かヒントはありますか?また、.overlayも添付しますCASEとして、prj.confも保存してください。 Re: [MIMXRT1160-EVK] with 1XK: NXP-WIFI driver into SDRAM こんにちは、 @jaseze01 Zephyr OS を使用していますか? Zephyr のバージョンと Zephyr SDK のバージョンを教えていただけますか? この問題を再現するための詳細な手順を教えていただけますか? より良いサポートを提供できるよう、ローカルで再現できるかどうか試してみます。 よろしくお願いいたします。 Christine。 Re: [MIMXRT1160-EVK] with 1XK: NXP-WIFI driver into SDRAM こんにちは、クリスティン。 ご協力ありがとうございます。あなたが要求した情報は次のとおりです: ボード: NXP MIMXRT1160-EVK (Rev A) WiFi モジュール: M.2 インターフェース経由の Embedded Artists 1XK (Murata 1XK / NXP IW416)。 Zephyr OS バージョン: 4.3.0 Zephyr SDK バージョン: 0.17.4 ホストOS: Windows 私はこのプロジェクトに個別に取り組んでおり、アドレス `BFAR アドレス: 0x40000` で `正確なデータ バス エラー` (バス障害) が発生しています。このエラーは、ドライバが電圧スイッチを正常にネゴシエートした直後に発生します。 ハードウェアが正しく応答するようになったため (ログで「カードが 1.8V 信号に切り替えられました」と確認されています)、物理的な接続と電源は正常であると考えています。しかし、その直後に事故が起こります。 障害アドレス (`0x40000`) は、内部 ITCM/DTCM の 256 KB 境界と一致します。このことから、問題はメモリの配置に関連しているのではないかと疑っています。WiFi ファームウェアは約 500 KB なので、デフォルトの内部 RAM に収まらないか、DMA がアクセスが許可されていないメモリ領域 (DTCM など) にアクセスしようとしている可能性があります。 再現可能な手順 1.MIMXRT1160-EVK で `nxp,wifi` ドライバを有効にする Zephyr アプリケーションを構築しています。 2. `mimxrt1160_evk.overlay`を修正しましたファームウェアを収容するために外部 SDRAM (64MB の `&sdram0`) を有効にします。 3. 重複を避けるために、さまざまなメモリ構成 (システムとファームウェア用に SDRAM を分割) を試しました。 4. 起動時に、システムは SDIO バスを初期化し、1.8V に切り替えて、バス障害でクラッシュします。シーケンスを示すログ出力は次のとおりです。 [00:00:01.123,000] sd: カードが1.8V信号に切り替えられました [00:00:05.266,000] os: ***** バス障害 ***** [00:00:05.272,000] os: 高精度データ バス エラー [00:00:05.277,000] OS: BFAR アドレス: 0x40000 [00:00:05.283,000] OS: r0/a1: 0x80006945 r1/a2: 0x00040000 r2/a3: 0x0000000c [00:00:05.305,000] os: 障害のある命令アドレス (r15/pc): 0x3000242e リンカーがデータ/スタックを配置する場所と、WiFi ドライバが DMA 操作のためにそれを配置すると想定している場所に関して競合があるようです。 MIMXRT1160 で WiFi ファームウェアを外部 SDRAM に適切にロードするための推奨メモリ構成(オーバーレイ/リンカー)について教えてください。問題をローカルで再現して修正できる場合は、動作するオーバーレイ ファイルを共有していただけますか? よろしくお願いいたします! Re: [MIMXRT1160-EVK] with 1XK: NXP-WIFI driver into SDRAM こんにちは、 @jaseze01 帯域幅が限られているため、返信が遅くなり申し訳ありません。 以下の内容を参考に試してみてはいかがでしょうか。 NXP M.2 Wi-Fi および BT シールド — Zephyr プロジェクト ドキュメント また、このディレクトリにはデフォルトのnxp_m2_1xk_wifi_bt.overlayがあります。 https://github.com/nxp-zephyr/nxp-zephyr/tree/nxp-v4.3-branch/boards/shields/nxp_m2_wifi_bt/ この.overlayもCANで参照できます1xk(M.2に適合インターフェース)を I.MXRT1160-EVK に接続します。 https://github.com/nxp-zephyr/nxp-zephyr/blob/nxp-v4.3-branch/boards/shields/nxp_m2_wifi_bt/boards/mimxrt1060_evk_mimxrt1062_qspi_C.overlay 上記が参考になったかどうかお知らせください。 まだ何か問題がある場合はお知らせください。 よろしくお願いいたします。 Christine。
View full article
IMX8QXP 上 CAN-FD 帧丢失 你好 我正在使用 MCIMX8QXP-CPU 板和 MCIMX8QXP-8X-BB。我在使用数据速率为 2Mbit/s 的 can-fd 帧时遇到了一些问题。使用"classic" CAN 和 CAN-FD 1Mbit/s 时一切正常,但使用 2Mbit/s 时,帧丢失严重。我知道我的输入信号并不完美,因为它们来自免接触式CAN总线读卡器,而且我观察到一些噪音。但我可以使用 Kvaser、pcan 等 CAN 记录器读取所有帧,不会出现问题。 我在另一个主题上看到,CAN 控制器时钟可能会影响帧丢失? 在我的配置中,CAN 时钟频率为 40MHz。 我试图修改它,但没有成功。我首先尝试修改设备树,然后读到它也可能在固件中(scfw)。有关信息,我使用 yocto 来版本系统 你认为这个时钟可能是我丢帧的原因吗?如果是,我该如何更新? 感谢您的帮助。 Re: CAN-FD frames loss on IMX8QXP 你好 问题可能确实与 CAN 控制器的时钟配置有关。对于以更高数据速率(2Mbit/s)运行的 CAN-FD,时钟精度变得至关重要。使用当前的 40MHz CAN 时钟,以及使用会引入一定噪声的免接触式 CAN 总线读卡器时,时序容差可能会变得更加严格。 解决这一问题有两种可能的方法: 1. **SCFW修改**:CAN 控制器时钟在系统控制器固件 (SCFW) 中配置。您需要修改 SCFW 配置文件来调整时钟设置。这需要重建 SCFW。 2。**设备树修改**:您也可以尝试调整设备树中的 CAN 定时参数。对于 CAN-FD 操作,您可能需要启用发射器延迟补偿 (TDC),这对于高于 2.5Mbps 的数据速率尤其重要。 对于免接触式 CAN 总线读取器引入噪声的特定情况,调整位定时参数以更能容忍信号变化可能会对您有所帮助。这可以通过修改设备树配置中的传播分段值来完成。 由于你使用的是 Yocto,你可以通过设备树叠加层或直接修补内核源代码来实现这些更改。 此致     Re: CAN-FD frames loss on IMX8QXP 谢谢谢谢 感谢感谢您的反馈。 I 尝试两个 选项 1) SCFW 修改: 我成功生成了固件 scfw_tcm.bin 文件 然后,在我的 yocto 项目中,我有这些生成的文件: bl31 - im x8qx。bin bl3 1- im x8qx。bin - 选择 m4_image。bin mkimage_imx8 mx8qxc0-ahab-容器。img mx8qx -m ek- scfw-tc m。bin scfw_tcm 。bin soc 。做个小孩。bin u -b oot - imx8qxp-mek。bin - sd u - boot - spl。bin - imx8qxp-mek-sd 当我使用 imx-mkimage 工具时,我必须复制这些文件: bl31 - im x8qx。 bin,u -boot- boot - imx8qxp -mek。 bin - sd,scfw_tcm 。 bin 和 mx8qxc0 -ahab-容器。 img 到我的 imx - mkimage 工具然后当我尝试生成新的二进制文件时我遇到了这个错误: 包括杂项.制造 包括 m4.mak 包括安卓.嗡嗡声 包括测试.使 包括 autobuild.制作 包含别名.mak 使[1]: *** 没有règle pour fabriquer la cible " mx8qxb0-ahab-容器.img",为 "flash "所必需。 设置. 使: ***[Makefile:26: flash] 错误 2 我看到 yocto 生成了 mx8qxc0-ahab-容器.img 而不是 mx8qxc0-ahab-容器.img,所以我还 尝试重命名它,但还是出现了同样的问题。 2) 我成功修改了我的设备树,我可以在板上看到 新的 时钟频率。 然后I 尝试命令更新控制器的时序,但我的新 新设置并没有应用。 你写道:你可能需要启用发射器延迟补偿(TDC),我没有找到任何相关文档。如果我明白可以直接在设备树上设置定时参数吗? Re: CAN-FD frames loss on IMX8QXP 你好 我的问题依然存在:canfd 帧丢失。 正如我所说,我成功地将控制器时钟更新到了 80Mhz。但这还不够。 我无法修改时间。我不知道具体该怎么做?至于启用发射器延迟补偿 (TDC),我没有找到 imx8 的相关文档。 感谢您的帮助、 纪尧姆
View full article
S32K5 RTD 0.8.0 SPI 半双工模式不起作用 大家好 客户舍弗勒使用 S32K5 RTD 0.8.0 CD1/CD3 实现 SPI 半双工模式。我们还帮助他们完成项目版本,但发现SPI半双工似乎不起作用。 我们使用旧的 K3 RTD 示例来帮助我们调试 K5。K3 RTD 6.0 中的 K3 半双工 SPI 示例运行良好。我们发现在 K3 中完成 SPI 初始化后,CS 和 SOUT 引脚均为高电平。 数据可以在 K3 中成功传输。 但在 K5 中,CS、SOUT 引脚在 SPI 初始化后都是低电平,这是不可能的,也不会导致半双工故障。我们检查了端口配置和端口初始化是否正常,K5 中的 SPI 寄存器与 K3 相同。 请帮助检查当前 K5 RTD 驱动器中的半双工 SPI 是否完全正常工作? BR 理查德 优先级:高 RTD Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 嗨 @RichardLi 你 能试试今天(2025 年 12 月 8 日)发布的最新 RTD 版本 0.8.0 吗 由于 CD01 和 CD03 版本的开发团队没有更新 RTD_SPI_UM.pdf,因此我无法确认它是否支持半双工。 在最新版本中,我看到他们提供的示例支持半双工模式,而 UM 文档没有提及半双工模式的限制。 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@RichardLi 让我检查一下你的项目。 同时,您能否查看RTD提供的示例,他们在版本时确认该示例已通过验证。我们可以从软件或硬件方面缩小问题的范围 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@congnguyenphu 感谢您的支持!我查看了 RTD 示例,但没有找到半双工演示。所附项目根据 RTD 示例修改为半双工模式。 如果我能提供更多信息帮助我们解决问题,请告诉我。 BR 理查德 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@congnguyenphu 我试用了 RTD 0.8.0,问题依然存在。SOUT、CS 引脚始终为低电平。我已经上传了项目,您能否帮忙检查一下 RTD 是否支持这种 SPI 半双工模式? BR 理查德 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@congnguyenphu 你那边有什么新情况吗?谢谢! 此致, 理查德 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 经@RichardLi确认 此问题的根本原因是引脚被其他功能复用,因此无法进行 SPI 传输。 在更改为其他 SPI 通道后,SPI 正常工作。 此问题单可以关闭。
View full article
MPC565 中的 UC3FCFIG 你好 我使用的是 CodeWarrior 8.7 我希望我的 MPC565 在硬RESET中从 UC3FCFIG 获得 RCW。但我找不到任何关于如何在 UC3FCFIG 寄存器中设置寄存器值的文档。 谢谢, Rafa Re: UC3FCFIG in MPC565 你好 UC3F EEPROM RESET配置字是在特殊阴影位置的第一个单词(ADDR [23:29] = 0x00)中实现的。RESET配置字及其余的影子信息字位于主管数据地址空间中。RESET配置词的目的是为系统提供RESET配置的替代内部来源。 因此,换句话说,它不是内存映射寄存器,而只是影子闪存空间中的配置字,然后在RESET期间将其复制到相应的寄存器中。 请注意,除位 20 外,UC3FCFIG 中的位与 USIU 硬RESET配置字中的位相同。 来自参考手册: petervlna_0-1764572541927.png 如何设置 UC3FCFIG? UC3FCFIG 不是运行时寄存器,正常运行时不能随意写入。它通常被编程到闪存配置扇区中。 这意味着在 RESET 之前,您需要使用正确的 UC3FCFIG 值对闪存配置模块(通常在闪存的开头)进行编程。 另请参阅第 20.4.3 章 UC3F EEPROM 阴影行 顺祝商祺! Peter Re: UC3FCFIG in MPC565 谢谢您的回答、 关于 : " 这意味着在 RESET 之前,你需要使用正确的 UC3FCFIG 值对闪存配置模块(通常在闪存的开头)进行编程 " 在 CodeWarrior 中如何实现这一目标?我已将 Flash Programmer 配置为使用MPC566EVB_MPC565_MPC566_shadow_init.cfg。 我是否需要在该文件中添加UC3FCFIG 的值? ,谨致问候 、 拉法 Re: UC3FCFIG in MPC565 你好 在 CodeWarrior 中如何实现这一目标? 我对这里的 codewarrior 不熟悉。但它只是一个集成开发环境,因此只需对闪存进行简单编程就能实现神奇的效果。 我已将 Flash Programmer 配置为使用MPC566EVB_MPC565_MPC566_shadow_init.cfg。 我是否需要在该文件中添加UC3FCFIG的值 闪存编程器使用的 .cfg 文件(如 MPC566EVB_MPC565_MPC566_shadow_init.cfg)定义了影子闪存初始化值,其中包括 UC3FCFIG 等配置寄存器。 具体操作如下 UC3FCFIG 的去向 UC3FCFIG 是阴影闪存配置块的一部分。 .cfg 文件包含这些寄存器的条目,因此当您对影子闪存进行编程时,设备在RESET时会使用这些值。 该怎么做 Open MPC566EVB_MPC565_MPC566_shadow_init.cfg. 查找定义阴影寄存器或配置字的部分。 您应该能看到类似的条目:UC3FCFG: 0xXXXXXXXX UC3FCFIG 通常映射在阴影闪存区域(而非 RAM)。 对于 MPC565/MPC566,请查看参考手册 → “闪存配置” 部分。 通常情况下,阴影块从 0xFFF00000 或类似位置开始。 这就告诉闪存编程器将该值写入该地址的影子闪存。 顺祝商祺! Peter
View full article
S32K388CVB-Q289 駆動 PTC21 親愛なるチーム 私は S32K388CVB-Q289 を使用しており、TJA1153 CAN0 とともに FlexCAN_0 を有効にしています。テスト目的で物理バスに 2 番目のノードをコネクテッドしています。 しかし、FlexCAN_0は送信時にAckエラーが発生します AhmadKhalil_0-1764329071712.png TJA1153 トランシーバが有効になっていることを再確認し、J95 のピン 5 を測定すると、約 2 ボルトと表示されます。また、GPDO85 レジスタを 0 と 1 の間で変更しても、ピンで読み取られる電圧は影響を受けません。 AhmadKhalil_1-1764329191048.png GPDO85レジスタでピンがハイに設定され、MSCR85で出力ドライバが有効になっていることがわかりますが、 AhmadKhalil_2-1764329282677.png AhmadKhalil_3-1764329341274.png 構成: AhmadKhalil_4-1764329501186.png AhmadKhalil_5-1764329565448.png AhmadKhalil_6-1764329609295.png Re: S32K388CVB-Q289 Driving PTC21 こんにちは、 ピンレベルを確認するには、J95.5-6ジャンパーを取り外し、MCU(5)とTJA1153(6)側を確認します。 TJA1153のVIOはJ804を使用してVDD_HV_B_PERH(VDD_HV_B 3.3V)にコネクテッドされていますが、使用されているMCUピンはVDD_HV_A(5V)にコネクテッドされています。 ユーザーが TJA1153 モードを切り替える必要がない限り、EN ピンを駆動する必要はありません。EN と STB_N は両方とも外部抵抗によって VIO にプルアップされます。デバイスがバニラ状態の場合、ローカル構成を可能にするために、MCU によって STB_N を低く駆動する必要があります。TJA1153 の構成の最後に、STB は EN、STB_N がハイの状態で通常モードに戻ります。 バス上にメッセージが表示されても ACK されない場合は、両方のノード間の CAN ビット タイミングが一致していないことが原因である可能性が最も高くなります。 とにかく、S32K388EVBのサンプルはここに掲載されている。 https://community.nxp.com/t5/S32K/Need-MCAL-working-CAN-Configuration-for-S32K388-EVB-bench/mp/1923345/highlight/true#M38660   BR、ペトル Re: S32K388CVB-Q289 Driving PTC21 ご返信ありがとうございます。 電圧レベルは今のところ良好なようです。EN と nSTB がハイになります。それでも、Ack エラーが発生し、テスト測定ツールのバスには何も表示されません。 トランシーバがバニラ状態であるため、一度設定するまで動作しない可能性はありますか? 例を読みましたが、現在のセットアップでは、トランシーバを相互に接続するよりも、テスト ツールから CAN メッセージを送信する方がはるかに簡単です。送受信のみの基本構成(セキュリティ要件は不要)の場合、初期化シーケンスと、CAN経由で送信する必要があるものについて教えていただけますか? Re: S32K388CVB-Q289 Driving PTC21 こんにちは、 デフォルトではデバイスはバニラ状態になっているSO、ホストまたはリモートから構成する必要があります。設定後、状態を変更できますが、例では通常 Vanilla 状態に維持されるため、電源を入れるたびに init が必要です。 掲載された例がボード上の FlexCAN モジュール間で動作している場合、CAN ツールに 1 つのモジュールだけをコネクテッドしても同様に動作するはずです。この例では、送信される ID が CAN0 トランシーバのパスリストに追加され、他の構成はデフォルトのままになります。 別の init シーケンスについては、IP レベルで実行された以下の例を参照してください。 https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K358-FlexCAN-TXRX-ISR-S32DS35-RTD400-500/ta-p/1981987 トランシーバもバニラ状態にあることを想定しており、トランシーバのパスリストをすべてのstdおよびext IDを通過させるように設定し、バスからのメッセージをブロックしないようにします。最後に、不揮発性メモリへの書き込みやトランシーバのロックを行わずにコンフィギュレーションモードを終了します(バニラ状態を維持)。 BR、ペトル
View full article
S32K358 上的 CAN(FlexCAN)邮箱 - IFLAG 位 大家好, 我正在使用 S32K358 FlexCAN 模块,我想确认正确的寄存器/标志用法,以及将 64 个硬件消息缓冲器(MB0...MB63)配置为接收邮箱的安全程序。我读过《清除条例》,但我想确保我了解实际行为、 我想知道哪些寄存器/标志指示 FIFO 状态、邮箱中断标志、溢出/警告,以及使用 64 MB 时建议的 MB 读取/清除顺序。 是为所有 MB 启用每个 MB 的中断掩码 (IMASK),还是使用分组方法,在 ISR 中读取 IFLAG1/IFLAG2 并循环处理标记的 MB?对 ISR 的持续时间和优先级是否有任何担忧? 如果我未读取(即,如果在我读取旧帧之前有新帧到达相同的 MB 中),邮箱如何覆盖旗帜/寄存器中的清单 — 有标记吗?如果没有,如何检测是否发生了覆盖? 我试着接收 CAN 数据,发现所有 CAN 帧都只使用 MB0,问题解决了吗? 有人能解释一下 Flexcan 邮箱吗?如果我想使用 64 个消息缓冲区,应该怎么做? Re: CAN (FlexCAN) mailboxes on S32K358 — IFLAG bits 您好, 阅读第 73.3.4 章可解决大部分问题设备 RM 的接收过程和 73.3.5 匹配过程。以下是对您所提问题的快速反馈 问:我想知道哪些寄存器/标志指示 FIFO 状态、邮箱中断标志、溢出/警告,以及使用 64 MB 时建议的 MB 读取/清除顺序。 答: 传统 RX FIFO 模式使用 MB0-MB5 作为接收队列。此外,MB6-MB7(或更多,取决于过滤表配置,CTRL[RFFN])用于指定 ID 过滤表。因此,如果启用传统的 RX FIFO,就不能将所有 64 MB 都用作独立邮箱。除非您将使用最大容量为 96MB 的 FlexCAN 实例(FlexCAN0-2)。或使用增强型 RX FIFO。 如果启用了传统 RX FIFO,则 MB0 是 FIFO 入口点,用户使用 MB0 读取报文。 监测 IFLAG1/IFLAG2 的寄存器和标志:MB0—MB31 和 MB32—MB63 的中断标志。 IMASK1 / IMASK2:每 MB 中断使能屏蔽。 如果启用了传统 RXFIFO RXFIR:表示哪个 FIFO 条目已被填满。 IFLAG1[BUF5I](传统 RX FIFO 中可用帧)--当至少有一个帧可从传统 FIFO 中读取时设置。 IFLAG1[BUF6I](传统 RX FIFO 警告)- 当传统 RX FIFO 收到新报文,使未读报文数量从四个增加到五个时设置。这一变化意味着传统 RX FIFO 几乎已满。该标志保持设置状态,直到 CPU 将其清除。 IFLAG1[BUF7I](传统 RX FIFO 溢出)- 当传入信息因传统 RX FIFO 已满而丢失时设置。 如果设置了相应的屏蔽位,则会产生中断。 问:我应该为所有 MB 启用每个 MB 的中断屏蔽 (IMASK),还是使用分组方法,在 ISR 中读取 IFLAG1/IFLAG2 并在循环中处理标记的 MB?对 ISR 的持续时间和优先级是否有任何担忧? 答: 推荐的 ISR 策略 32MB 有共同的中断向量(0-31、32-64......) 为您关心的所有 MB 启用中断,然后在 ISR 中:读取 IFLAG1 或 IFLAG2。对于每个设置位,处理该 MB。向该位写 1(写 1 清除),清除标记。 如果在 ISR 中循环使用 32 MB,时间可能会很长,但这与应用程序有关。 问:如果我错过读取机会(即,如果在我读取旧帧之前有新帧到达同一 MB 中),邮箱如何覆盖旗帜/寄存器中的清单 — 有标志吗?如果没有,如何检测是否发生了覆盖? 答: 覆盖检测 FlexCAN 没有专用的 MB 覆盖标志。如果在读取旧帧之前有新帧到达,旧数据将无声丢失。中断标志 (IFLAGx) 只是保持设置状态,直到被清除。 只有 MB 的控制/状态字 CODE 文件更改为 OVERRUN 问:我尝试接收 CAN 数据,但所有 CAN 帧都只使用 MB0。 答: 您观察到的 "所有帧都进入 MB0 "通常意味着: 启用了 RX FIFO,MB0 是 FIFO 入口点。 或者您的接受筛选器设置为只匹配 MB0。 BR, Petr
View full article
i.MX93 Cortex-M33 ボードと SDKs を MCUXpresso IDEs にインポートする方法 📌 コンテクスト: MCUXpresso IDEsを使用して、i.MX93 Cortex-M33 (MCIMX93-EVK)ボードでの開発を開始しようとしています。NXP Web サイトから SDK ZIP をダウンロードしましたが、ボードを正常にインポートしたり、その例を使用したりできません。 🛠️ 私がやったこと: SDK ZIPをダウンロードしました: mcuxpresso.NXP.comからの SDK_25_03_00_MCIMX93-EVK.zip MCUXpresso IDEを開きました(バージョン: ここで指定してください) 行き先: インストールされたSDKs > インポート → ZIPファイルを選択 SDK は IDE の「インストールされた SDK」の下に表示されます。 ただし、 「SDKs の例をインポート」に移動すると何も表示されないか、インポートしたプロジェクトをビルドできません。 ❓ 質問: 以下のことを実現できるように、i.MX93 Cortex-M33 ボードと SDK を MCUXpresso IDE にインポートするための正しい完全な手順は何ですか。 サポートされているボードを見る デモ/サンプルアプリケーション(hello_worldなど)にアクセスする エラーなしでプロジェクトをビルドおよびデバッグする 🔍 追加情報: 私はi.MX93のCortex-M33コアをターゲットにしています MCUXpresso IDEのみを使用したい(IARやVS Codeは使用しない) 🧪 期待される結果: MCUXpresso IDE を使用して、MCIMX93-EVK ボード上の cm33_core0 用の hello_world や led_blinky などのサンプル プロジェクトをインポートおよびビルドできるようになります。 これを動作させるために追加のツールや構成が必要な場合はお知らせください。前もって感謝します! i.MX93EVK #i.mx93 cortex-m33 i.MX93 #MCUXpressoIDE ##MCUXpressoSDK Re: How to Import i.MX93 Cortex-M33 Board and SDK into MCUXpresso IDE? こんにちは@Manjunathb 現在、i.MX93 Cortex-M33にも取り組んでいます。MCUXpresso IDEをインストールしましたが、ガイドに従ってSDKの圧縮ファイルを「インストール済みSDK」ビューにドロップした際にエラーが発生しました。 あなたも同じ M33 コアに取り組んでいると理解していますが、これまでの情報や進捗状況を共有していただけますか?VS Code でも MCUXpresso for VS Code を使うべきでしょうか? M33 開発を始めるためのガイドや手順を共有していただければ幸いです。ありがとう。 Re: How to Import i.MX93 Cortex-M33 Board and SDK into MCUXpresso IDE? こんにちは、チャビラさん。 現在、i.MX93 Cortex-M33 コアを使用していますが、このデバイスでは MCUXpresso IDE はサポートされていないものの、VS Code 用の MCUXpresso が推奨ツールであることは理解しています。 すでにインストール済み: MCUXpresso for VS Code拡張機能 i.MX93 SDKパッケージ Arm GCC ツールチェーン そして私はJ-Linkデバッガーを使用しています。 以下の点についてご指導いただけますでしょうか。 i.MX93 Cortex-M33 SDK を VS Code に正しくインポートするにはどうすればよいですか?SDK はどこに配置すればよいですか? また、拡張機能はどのようにして SDK を検出するのでしょうか? Cortex-M33 のデモまたはテンプレート プロジェクト (hello_world や led_blinky など) を作成または開く方法は? MCUXpresso VS Code 環境を使用してコンパイルを成功させるためのビルド設定 (コンパイラ、リンカー パスなど) を構成するにはどうすればよいですか? J-Link プローブまたは remoteproc (Linux を使用している場合) を使用してコンパイルされたアプリケーションをフラッシュおよびデバッグする適切な方法は何ですか? VS Code 用の MCUXpresso を使用する場合、i.MX93 に固有の既知の制限や追加手順はありますか? 完全なステップバイステップの説明や関連ドキュメントへのリンクをいただければ幸いです。どうぞよろしくお願いいたします! よろしくお願いします、 マンジュナス・バディガー Re: How to Import i.MX93 Cortex-M33 Board and SDK into MCUXpresso IDE? わかった 👍 ご返信ありがとうございます Re: How to Import i.MX93 Cortex-M33 Board and SDK into MCUXpresso IDE? こんにちは@Manjunathb ! NXP サポートにお問い合わせいただきありがとうございます。 残念ながら、このCASE、MCUXpresso IDE は互換性がありません。ただし、VS Code ではサポートされており、同様の機能を提供する MCUXpresso for VS Code を使用できます。 よろしくお願いします、 チャビラ
View full article
mke06128vqh4 中的 uart0 朋友们,我有一块用 MKE06Z128VQH4 微控制器设计的板,我在其中使用了多个输出和输入。我使用的是一个 KBI 输入、3 个定时器和一个计数器,所以没有问题 - 我已经进行了配置,它们都能正常工作。 我目前正在研究 UART0 串行端口,我将 USB-TTL 串行适配器连接到 PC,以接收或发送数据。我无法使用 SDK 库发送或接收信息。我使用 MCUXpresso 的配置如图所示: mk1.JPG 针脚: Iotelctronic_0-1764071007390.png 时钟,我有一个 12MHZ 的外部晶体: Iotelctronic_1-1764071084330.png 由于 FLL 出错,我无法设置 FEE 选项,然后我使用 FBELP 进行配置。 在 UART0 中,我使用中断接收和发送轮询进行配置。 Iotelctronic_2-1764071328099.png Iotelctronic_3-1764071349888.png 安装的 sdk 是 Iotelctronic_4-1764071419903.png 我有示例软件包: Iotelctronic_5-1764071510120.png 有了这些例子,我仍然无法让 UART0 正常工作。我需要一些指导 - 几天来我一直在尝试让 UART0 正常工作。 Re: uart0 in mke06128vqh4 你好@Iotelctronic 感谢您的提问。 请首先测试 UART 演示。UART 演示在您那边能正常工作吗? 确保硬件连接正确。连接正确的 TX 和 RX 引脚。 测量 TX/RX 信号。 BR 爱丽丝 Re: uart0 in mke06128vqh4 你好@Iotelctronic 请在不做任何修改的情况下使用演示版。 我已经在我这边进行了测试,没有发现任何问题 BR 爱丽丝 Re: uart0 in mke06128vqh4 嗨,艾丽丝! 我使用轮询对演示进行了测试,但它不起作用。 codigo main.c: #include "pin_mux.h" #include "board.h" #include "fsl_uart.h" /******************************************************************************* * Definitions ******************************************************************************/ /* UART instance and clock */ #define DEMO_UART UART1 #define DEMO_UART_CLK_FREQ CLOCK_GetFreq(kCLOCK_BusClk) /******************************************************************************* * Prototypes ******************************************************************************/ /******************************************************************************* * Variables ******************************************************************************/ uint8_t txbuff[] = "Uart polling example\r\nBoard will send back received characters\r\n"; uint8_t rxbuff[20] = {0}; /******************************************************************************* * Code ******************************************************************************/ /*! * @brief Main function */ int main(void) { uint8_t ch; uart_config_t config; BOARD_InitBootPins(); BOARD_InitBootClocks(); config.baudRate_Bps = 115200U; config.parityMode = kUART_ParityDisabled; config.stopBitCount = kUART_OneStopBit; //config.txFifoWatermark = 0; //config.rxFifoWatermark = 1; config.enableTx = false; config.enableRx = false; // UART_GetDefaultConfig(&config); // config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE; // config.enableTx = true; //config.enableRx = true; UART_Init(DEMO_UART, &config, DEMO_UART_CLK_FREQ); UART_WriteBlocking(DEMO_UART, txbuff, sizeof(txbuff) - 1); while (1) { UART_ReadBlocking(DEMO_UART, &ch, 1); UART_WriteBlocking(DEMO_UART, &ch, 1); } } Re: uart0 in mke06128vqh4 你好@Iotelctronic 1) 关于时钟,请检查 12 MHz 晶振是否正常工作,并验证配置。 2) KE06 不支持 DMA。 谢谢! BR 爱丽丝 Re: uart0 in mke06128vqh4 你好,我找到问题所在了。我使用的 SDK 示例和其他使用寄存器的项目对我不起作用;它们总是发送错误的数据和字符。我使用的是外置 12 MHz 晶振,使用该晶振似乎无法产生精确的 115200 波特率。不过,我将配置改为 8 MHz,而没有拆焊 12 MHz 晶体,结果运行正常。我最大的问题是:如果我将配置修改为 8 MHz,但不更改 12 MHz 晶体,为什么它还能工作?我展示的代码是我在 .freq 中做的修改= 8000000U.有什么解释吗?我还想问一下,MKE06Z128VQH4 微控制器是否有与 UART 一起使用的 DMA? /*********************************************************************************************************************** * This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file * will be overwritten if the respective MCUXpresso Config Tools is used to update this file. **********************************************************************************************************************/ /* * How to setup clock using clock driver functions: * * 1. call CLOCK_SetSimSafeDivs() to set the system clock dividers in SIM to safe value. * * 2. If external oscillator is used Call CLOCK_SetXtal0Freq() to set XTAL0 frequency based on board settings and * call CLOCK_InitOsc0() to init the OSC. * * 3. Call CLOCK_BootToXxxMode()/CLOCK_SetXxxMode() to set ICS run at the target mode. * * 4. If ICSIRCLK is needed, call CLOCK_SetInternalRefClkConfig() to enable the clock. * * 5. call CLOCK_SetSimConfig() to configure the divider in sim. */ /* clang-format off */ /* TEXT BELOW IS USED AS SETTING FOR TOOLS ************************************* !!GlobalInfo product: Clocks v7.0 processor: MKE06Z128xxx4 package_id: MKE06Z128VLK4 mcu_data: ksdk2_0 processor_version: 9.0.0 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/ /* clang-format on */ #include "clock_config.h" /******************************************************************************* * Definitions ******************************************************************************/ /******************************************************************************* * Variables ******************************************************************************/ /* System clock frequency. */ extern uint32_t SystemCoreClock; /******************************************************************************* ************************ BOARD_InitBootClocks function ************************ ******************************************************************************/ void BOARD_InitBootClocks(void) { BOARD_BootClockRUN(); } /******************************************************************************* ********************** Configuration BOARD_BootClockRUN *********************** ******************************************************************************/ /* clang-format off */ /* TEXT BELOW IS USED AS SETTING FOR TOOLS ************************************* !!Configuration name: BOARD_BootClockRUN called_from_default_init: true outputs: - {id: Bus_clock.outFreq, value: 20 MHz} - {id: Core_clock.outFreq, value: 40 MHz} - {id: Flash_clock.outFreq, value: 20 MHz} - {id: ICSFF_clock.outFreq, value: 31.25 kHz} - {id: ICSIR_clock.outFreq, value: 37.5 kHz} - {id: LPO_clock.outFreq, value: 1 kHz} - {id: OSCER_clock.outFreq, value: 8 MHz} - {id: Plat_clock.outFreq, value: 40 MHz} - {id: System_clock.outFreq, value: 40 MHz} - {id: Timer_clock.outFreq, value: 20 MHz} settings: - {id: ICSMode, value: FEE} - {id: ICS.BDIV.scale, value: '1', locked: true} - {id: ICS.IREFS.sel, value: ICS.RDIV} - {id: ICS.RDIV.scale, value: '256'} - {id: ICS_C1_IRCLKEN_CFG, value: Enabled} - {id: OSC_CR_OSCEN_CFG, value: Enabled} - {id: OSC_CR_OSC_MODE_CFG, value: ModeOscLowPower} - {id: OSC_CR_RANGE_CFG, value: High} - {id: OSC_CR_RANGE_RDIV_CFG, value: High} - {id: SIM.DIV2.scale, value: '2'} - {id: SIM.DIV3.scale, value: '2', locked: true} sources: - {id: OSC.OSC.outFreq, value: 8 MHz, enabled: true} * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/ /* clang-format on */ /******************************************************************************* * Variables for BOARD_BootClockRUN configuration ******************************************************************************/ const ics_config_t icsConfig_BOARD_BootClockRUN = { .icsMode = kICS_ModeFEE, /* FEE - FLL Engaged External */ .irClkEnableMode = kICS_IrclkEnable, /* ICSIRCLK enabled, ICSIRCLK disabled in STOP mode */ .bDiv = 0x0U, /* Bus clock divider: divided by 1 */ .rDiv = 0x3U, /* FLL external reference clock divider: divided by 256 */ }; const sim_clock_config_t simConfig_BOARD_BootClockRUN = { .outDiv1 = 0x0U, /* DIV1 clock divider: divided by 1 */ .outDiv2 = 0x1U, /* DIV2 clock divider: divided by 2 */ .outDiv3 = 0x1U, /* DIV3 clock divider: divided by 2 */ .busClkPrescaler = 0x0U, /* bus clock optional prescaler */ }; const osc_config_t oscConfig_BOARD_BootClockRUN = { .freq = 8000000U, /* Oscillator frequency: 12000000Hz */ .workMode = kOSC_ModeOscLowPower, /* Oscillator low power */ .enableMode = kOSC_Enable, /* Enable external reference clock, disable external reference clock in STOP mode */ }; /******************************************************************************* * Code for BOARD_BootClockRUN configuration ******************************************************************************/ void BOARD_BootClockRUN(void) { /* Set the system clock dividers in SIM to safe value. */ CLOCK_SetSimSafeDivs(); /* Initializes OSC0 according to board configuration. */ CLOCK_InitOsc0(&oscConfig_BOARD_BootClockRUN); CLOCK_SetXtal0Freq(oscConfig_BOARD_BootClockRUN.freq); /* Set ICS to FEE mode. */ CLOCK_BootToFeeMode(icsConfig_BOARD_BootClockRUN.bDiv, icsConfig_BOARD_BootClockRUN.rDiv); /* Configure the Internal Reference clock (ICSIRCLK). */ CLOCK_SetInternalRefClkConfig(icsConfig_BOARD_BootClockRUN.irClkEnableMode); /* Set the clock configuration in SIM module. */ CLOCK_SetSimConfig(&simConfig_BOARD_BootClockRUN); /* Set SystemCoreClock variable. */ SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK; } Re: uart0 in mke06128vqh4 谢谢,时钟的问题在于晶体焊接的频率是 8MHZ,而不是 12MHZ
View full article
同时使用 PCIe 和 USB3 时的 iMX8MP 带宽限制 你好 一位客户报告了使用 USB 3 摄像机时的带宽限制。在正常情况下,摄像头运行良好,但一旦开始向 NVMe PCIe 驱动器写入数据,流水线就会因带宽不足而崩溃。 他们进行了一项不同的测试,结果非常有趣。他们没有使用 USB3 摄像头,而是连接了一个 USB3 千兆以太网接口,并开始使用 iperf3 进行带宽测试。测试速度保持在约 900MB/s,直到他们开始使用 dd 向 NVMe 硬盘写入。当出现这种情况时,USB3 的带宽将降至每秒约 400MB。 这是预期行为吗? 我注意到 USB3 和 PCIe 都直接连接到 AXI 总线,这条总线上有 1Gb/s 的限制吗? 在将视频数据写入 NVMe 硬盘时,客户需要稳定的 USB3 带宽(至少足以持续收集帧)。 如有任何帮助,我们将不胜感激、 拉斐尔 Re: iMX8MP bandwidth limitation with simultaneous PCIe and USB3 use 我进行了以下测试,以了解带宽降低的情况。我连接了一个 NVMe 磁盘并将其挂载在 /mnt,并通过电缆将一个 USB3 千兆以太网接口直接连接到我的机器。在不向磁盘写入数据的情况下启动 iperf3,输出结果如下: root@verdin-imx8mp-15207903:~# iperf3 -c 192.168.50.1 Connecting to host 192.168.50.1, port 5201 [ 5] local 192.168.50.58 port 42800 connected to 192.168.50.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 113 MBytes 950 Mbits/sec 0 293 KBytes [ 5] 1.00-2.00 sec 112 MBytes 942 Mbits/sec 0 307 KBytes [ 5] 2.00-3.00 sec 112 MBytes 938 Mbits/sec 0 321 KBytes [ 5] 3.00-4.00 sec 112 MBytes 940 Mbits/sec 0 338 KBytes [ 5] 4.00-5.00 sec 112 MBytes 938 Mbits/sec 0 338 KBytes [ 5] 5.00-6.00 sec 112 MBytes 938 Mbits/sec 0 338 KBytes [ 5] 6.00-7.00 sec 112 MBytes 940 Mbits/sec 0 372 KBytes [ 5] 7.00-8.00 sec 112 MBytes 942 Mbits/sec 0 372 KBytes [ 5] 8.00-9.00 sec 113 MBytes 945 Mbits/sec 0 372 KBytes [ 5] 9.00-10.00 sec 112 MBytes 941 Mbits/sec 0 372 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.10 GBytes 943 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 1.10 GBytes 941 Mbits/sec receiver iperf Done. 现在,我在另一个终端上开始向 NVMe 磁盘写入数据: root@verdin-imx8mp-15207903:~# dd if=/dev/zero of=/mnt/bla bs=1M count=10000 10000+0 records in 10000+0 records out 10485760000 bytes (10 GB, 9.8 GiB) copied, 76.2779 s, 137 MB/s 同时,我再次启动 iperf3: root@verdin-imx8mp-15207903:~# iperf3 -c 192.168.50.1 -t 60 Connecting to host 192.168.50.1, port 5201 [ 5] local 192.168.50.58 port 59494 connected to 192.168.50.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 54.8 MBytes 457 Mbits/sec 0 317 KBytes [ 5] 1.00-2.00 sec 1.38 MBytes 11.5 Mbits/sec 0 317 KBytes [ 5] 2.00-3.01 sec 2.00 MBytes 16.7 Mbits/sec 0 317 KBytes [ 5] 3.01-4.00 sec 1.38 MBytes 11.6 Mbits/sec 0 317 KBytes [ 5] 4.00-5.00 sec 1.88 MBytes 15.7 Mbits/sec 0 317 KBytes [ 5] 5.00-6.00 sec 112 MBytes 937 Mbits/sec 0 335 KBytes [ 5] 6.00-7.00 sec 112 MBytes 942 Mbits/sec 0 335 KBytes [ 5] 7.00-8.00 sec 15.0 MBytes 126 Mbits/sec 0 335 KBytes [ 5] 8.00-9.00 sec 1.38 MBytes 11.5 Mbits/sec 0 335 KBytes [ 5] 9.00-10.00 sec 1.62 MBytes 13.6 Mbits/sec 0 335 KBytes [ 5] 10.00-11.00 sec 1.88 MBytes 15.7 Mbits/sec 0 335 KBytes [ 5] 11.00-12.00 sec 71.9 MBytes 604 Mbits/sec 0 335 KBytes [ 5] 12.00-13.00 sec 113 MBytes 946 Mbits/sec 0 335 KBytes [ 5] 13.00-14.00 sec 65.1 MBytes 546 Mbits/sec 0 335 KBytes [ 5] 14.00-15.00 sec 47.9 MBytes 400 Mbits/sec 0 498 KBytes [ 5] 15.00-16.00 sec 37.2 MBytes 313 Mbits/sec 0 498 KBytes [ 5] 16.00-17.00 sec 39.6 MBytes 331 Mbits/sec 0 498 KBytes [ 5] 17.00-18.00 sec 45.6 MBytes 384 Mbits/sec 0 498 KBytes [ 5] 18.00-19.00 sec 30.0 MBytes 251 Mbits/sec 0 498 KBytes [ 5] 19.00-20.00 sec 1.38 MBytes 11.6 Mbits/sec 0 498 KBytes [ 5] 20.00-21.00 sec 2.00 MBytes 16.8 Mbits/sec 0 498 KBytes [ 5] 21.00-22.01 sec 2.00 MBytes 16.7 Mbits/sec 0 498 KBytes [ 5] 22.01-23.00 sec 14.4 MBytes 121 Mbits/sec 0 498 KBytes [ 5] 23.00-24.00 sec 113 MBytes 946 Mbits/sec 0 747 KBytes [ 5] 24.00-25.00 sec 113 MBytes 950 Mbits/sec 0 747 KBytes [ 5] 25.00-26.00 sec 40.6 MBytes 339 Mbits/sec 0 747 KBytes [ 5] 26.00-27.00 sec 48.1 MBytes 405 Mbits/sec 0 747 KBytes [ 5] 27.00-28.00 sec 25.6 MBytes 215 Mbits/sec 0 747 KBytes [ 5] 28.00-29.01 sec 46.9 MBytes 391 Mbits/sec 0 747 KBytes [ 5] 29.01-30.00 sec 42.4 MBytes 358 Mbits/sec 0 747 KBytes [ 5] 30.00-31.00 sec 29.1 MBytes 244 Mbits/sec 0 747 KBytes [ 5] 31.00-32.01 sec 2.75 MBytes 23.0 Mbits/sec 0 747 KBytes [ 5] 32.01-33.01 sec 1.00 MBytes 8.38 Mbits/sec 0 747 KBytes [ 5] 33.01-34.00 sec 1.50 MBytes 12.7 Mbits/sec 0 747 KBytes [ 5] 34.00-35.00 sec 18.1 MBytes 152 Mbits/sec 0 747 KBytes [ 5] 35.00-36.00 sec 112 MBytes 943 Mbits/sec 0 747 KBytes [ 5] 36.00-37.01 sec 111 MBytes 922 Mbits/sec 0 747 KBytes [ 5] 37.01-38.00 sec 1.62 MBytes 13.7 Mbits/sec 0 747 KBytes [ 5] 38.00-39.00 sec 1.62 MBytes 13.6 Mbits/sec 0 747 KBytes [ 5] 39.00-40.00 sec 1.50 MBytes 12.6 Mbits/sec 0 747 KBytes [ 5] 40.00-41.00 sec 1.38 MBytes 11.5 Mbits/sec 0 747 KBytes [ 5] 41.00-42.00 sec 94.1 MBytes 791 Mbits/sec 0 747 KBytes [ 5] 42.00-43.00 sec 112 MBytes 944 Mbits/sec 0 747 KBytes [ 5] 43.00-44.00 sec 40.5 MBytes 339 Mbits/sec 0 747 KBytes [ 5] 44.00-45.00 sec 1.62 MBytes 13.6 Mbits/sec 0 747 KBytes [ 5] 45.00-46.00 sec 2.88 MBytes 24.1 Mbits/sec 0 747 KBytes [ 5] 46.00-47.00 sec 1.38 MBytes 11.5 Mbits/sec 0 747 KBytes [ 5] 47.00-48.00 sec 54.2 MBytes 456 Mbits/sec 0 747 KBytes [ 5] 48.00-49.00 sec 112 MBytes 937 Mbits/sec 0 747 KBytes [ 5] 49.00-50.00 sec 97.6 MBytes 816 Mbits/sec 0 747 KBytes [ 5] 50.00-51.00 sec 1.38 MBytes 11.6 Mbits/sec 0 747 KBytes [ 5] 51.00-52.01 sec 1.50 MBytes 12.5 Mbits/sec 0 747 KBytes [ 5] 52.01-53.00 sec 1.75 MBytes 14.8 Mbits/sec 0 747 KBytes [ 5] 53.00-54.00 sec 1.38 MBytes 11.5 Mbits/sec 0 747 KBytes [ 5] 54.00-55.00 sec 108 MBytes 904 Mbits/sec 0 747 KBytes [ 5] 55.00-56.00 sec 113 MBytes 947 Mbits/sec 0 747 KBytes [ 5] 56.00-57.00 sec 22.6 MBytes 189 Mbits/sec 0 747 KBytes [ 5] 57.00-58.00 sec 1.38 MBytes 11.6 Mbits/sec 0 747 KBytes [ 5] 58.00-59.00 sec 1.38 MBytes 11.5 Mbits/sec 0 747 KBytes [ 5] 59.00-60.36 sec 2.75 MBytes 16.9 Mbits/sec 0 747 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.36 sec 2.21 GBytes 314 Mbits/sec 0 sender [ 5] 0.00-60.37 sec 2.20 GBytes 313 Mbits/sec receiver iperf Done. dd 写入完成后,以太网端口的带宽就会恢复到约 940Mbits/s。 我们的客户面临的问题略有不同。当它们开始写入 NVMe 磁盘时,由于带宽低,USB3 摄像机捕获失败。如果没有写入磁盘,也不会失败。 Re: iMX8MP bandwidth limitation with simultaneous PCIe and USB3 use 你好 我没有任何记录表明我的团队以前见过这种行为。 AXI 总线不应限制在 1Gb/s 以内,因为只有一条 PCIe 线路将占用几乎所有的带宽。 能否详细介绍一下您的测试设置? 顺祝商祺! Re: iMX8MP bandwidth limitation with simultaneous PCIe and USB3 use 你好 感谢您提供的信息,我将与内部团队分享这些信息,并尽快向您通报最新情况。 顺祝商祺! Re: iMX8MP bandwidth limitation with simultaneous PCIe and USB3 use 另外,我还创建了一个 cgroup 设置,可以对写入 NVMe 磁盘的数据进行节流。看起来 USB3 和 PCIe 子系统在 SoC 内共享一条约 1Gb/s 的管道,因为结果非常直接。如果我增加节流量,USB3 就能立即获得更多带宽。 Re: iMX8MP bandwidth limitation with simultaneous PCIe and USB3 use 你好 感谢您提供的信息。 据内部团队说,他们以前也做过类似的测试,但没有遇到问题。i.MX8MP 支持 USB 和 PCIE 端口同时运行。 你能提供电路板支持包版本吗,我会再试一次。 顺祝商祺! Re: iMX8MP bandwidth limitation with simultaneous PCIe and USB3 use 我使用 Toradex 电路板支持包 7.4.0 进行了测试,它使用恩智浦下游内核 6.6.101。 传输同时进行,只是它们似乎在共享带宽。 Re: iMX8MP bandwidth limitation with simultaneous PCIe and USB3 use 你好,我有最新消息。 我们的内部团队可以重现该问题: 我在 i.MX8MPEVK 上重现了这个问题。目前怀疑是 NOC 带宽造成的问题。 如果使用 eth0/eth1 进行同样的测试不能解决问题,因此不受 AXI 总线的限制。 使用 USB3.0 以太网进行测试: top - 12:36:31 up 43 min, 2 users, load average: 0.41, 0.23, 0.15 Tasks: 160 total, 4 running, 155 sleep, 1 d-sleep, 0 stopped, 0 zombie %Cpu0 : 0.0 us, 7.9 sy, 0.0 ni, 53.5 id, 5.0 wa, 11.9 hi, 21.8 si, 0.0 st %Cpu1 : 2.0 us, 21.8 sy, 0.0 ni, 51.5 id, 20.8 wa, 3.0 hi, 1.0 si, 0.0 st %Cpu2 : 1.1 us, 22.1 sy, 0.0 ni, 50.5 id, 23.2 wa, 3.2 hi, 0.0 si, 0.0 st %Cpu3 : 0.0 us, 2.1 sy, 0.0 ni, 6.4 id, 0.0 wa, 12.8 hi, 78.7 si, 0.0 st MiB Mem : 5606.6 total, 5171.0 free, 403.9 used, 192.0 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 5202.7 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 34 root 20 0 0 0 0 R 38.8 0.0 0:38.37 ksoftirqd/3 1962 root 20 0 3304 2148 1124 D 32.9 0.0 0:03.39 dd 1959 root 20 0 17896 3360 2720 S 13.6 0.1 0:01.91 iperf3 748 parsec 20 0 279360 5148 4636 R 2.9 0.1 0:10.60 parsec 1963 root 20 0 7644 5072 2896 R 1.9 0.1 0:00.10 top 16 root 20 0 0 0 0 R 1.0 0.0 0:25.62 ksoftirqd/0 29 root 20 0 0 0 0 S 1.0 0.0 0:00.20 ksoftirqd/2 801 ntp 20 0 77012 4968 4200 S 1.0 0.1 0:00.23 ntpd 我们将继续在内部讨论这个问题。 顺祝商祺! Re: iMX8MP bandwidth limitation with simultaneous PCIe and USB3 use 你好,@rbeims、 内部团队确认是带宽限制。 在这种情况下,可以尝试使用 CSI 接口摄像头。 顺便问一下,客户能否分享您的 CPU 负载信息? 顺祝商祺! Re: iMX8MP bandwidth limitation with simultaneous PCIe and USB3 use 你好,@rbeims、 感谢您的更新。 能否请您分享一下 CPU 负载? 我会检查是否有办法对优先级进行收费。 致以最崇高的敬意 Re: iMX8MP bandwidth limitation with simultaneous PCIe and USB3 use 你好 在 NOC 块中,PCIE 和 USB 是同一个块,在 doc 中,它们的优先级相同。因此,无法通过修改优先级来实现。 image.png 顺祝商祺! Re: iMX8MP bandwidth limitation with simultaneous PCIe and USB3 use 谢谢你的澄清!
View full article