Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
系统控制器固件 101 - 入门 使用评估套件时,你会获得一个包含在 BSP 中的系统控制器固件 (SCFW) 二进制文件。此 SCFW 二进制文件是为特定开发板量身定制的,你可能需要修改一些板级依赖项以适配你的特定硬件。 本文件旨在提供有关SCFW移植流程的概述,详细信息请参阅《系统控制器移植指南》(sc_fw_port.pdf)。 系统设置 SCFW 是在 Linux 主机上构建的。设置系统的步骤如下: 从 ARM 官网下载 GNU ARM 嵌入式工具链:6-2017-q2-update(2017 年 6 月 28 日版本): 选择一个目录解压该文件,例如: mkdir ~/gcc_toolchain cp ~/Downloads/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 ~/gcc_toolchain/ cd ~/gcc_toolchain/ tar xvjf gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 将 TOOLS 环境变量设置为包含工具链的目录,在上面的示例中为 “~/gcc_toolchain”,也可以修改 .bash_profile 来导出此环境变量: export TOOLS=~/gcc_toolchain/ 构建过程还需要 srec_cat,它通常包含在 srecord 包中,在 Ubuntu 上可以执行: sudo apt-get update sudo apt-get install srecord 现在你可以切换到移植工具包目录(例如 scfw_export_mx8qm)并构建 SCFW。 系统控制器固件移植工具包 SCFW移植套件包含源文件和目标文件,这些文件将允许您修改SCFW以使其与您的开发板兼容。 你可以从 i.MX 软件和开发网页获取最新的系统控制器固件移植工具包: 获取移植工具包后,解压它: tar xvzf imx-scfw-porting-kit-1.1.tar.gz‍ 您将看到以下的文件结构: 移植工具包包含在 packages 目录下,README 文件中包含提取移植工具包的说明,主要步骤如下: cd packages/ chmod a+x imx-scfw-porting-kit-1.1.bin ./imx-scfw-porting-kit-1.1.bin‍‍‍ 您将被提示接受最终用户许可协议: 接受协议后,移植工具包将被提取到一个新文件夹中,文件夹结构如下: 所有关于 SCFW 的文档都在 doc/pdf 目录下,也有 html 格式可供选择,建议阅读 sc_fw_port.pdf。 不同 SoC 变体(QM A0、QM B0 和 QXP B0)的移植工具包在 src 目录下,以 tar.gz 格式打包,其他所有文件都是用于不同软件包(如 Linux、QNX、FreeRTOS、U-boot、ARM 可信固件等)的 SCFW 库。 如果你要处理多个 SoC 变体(同时处理 QXP 和 QM),建议将所有移植工具包提取到一个目录中,这样你就可以从该目录为任何变体进行构建,执行以下命令: cd imx-scfw-porting-kit-1.1/ cd src/ find scfw_export_mx8*.gz -exec tar --strip-components 1 --one-top-level=scfw_export_mx8 -xzvf {} \;‍‍‍ 将创建一个 scfw_export_mx8 文件夹,从这里你可以为任何受支持的变体构建 SCFW。或者,你也可以只提取你感兴趣的变体的包并使用它。 cd scfw_export_mx8/‍ 所有构建文件夹都包含 SCFW 的构建结果,而 platform 目录则存储 SCFW 的源代码。 所有特定于开发板配置的代码都在 “platform/board/mx8 _ ” 目录下,其中 derivative 是 i.MX8 芯片系列(如 QXP 或 QM),board name 是 SCFW 包所针对的开发板名称。 将 SCFW 移植到你的开发板的第一步是为你的 i.MX8 衍生产品和开发板创建一个文件夹,你可以选取一个现有的开发板示例并重命名该文件夹,这将为你提供一个入门项目,例如: cp -r platform/board/mx8qm_val/ platform/board/mx8qm_myBoard/‍‍‍‍‍‍‍‍‍‍ 在此示例中,该开发板将被称为 “myBoard”,它适用于 i.MX8QM B0 设备。要为该开发板构建 SCFW,只需执行: make qm R=B0 B=myBoard‍‍‍‍‍‍‍‍‍‍‍‍ 如果目标是 i.MX8QXP,只需选取一个基于该设备的开发板,并将命令改为 “make qx”。 更多信息(如构建选项和详细的启动信息)可以在《SCFW 移植指南》(sc_fw_port.pdf)中找到,该文档的第 2 章是对移植过程的清晰介绍。 概述和有用信息 PMIC 配置概述和 board.c 的常见修改 需要修改的主要文件(如果不是唯一的话)是 “board.c” 文件,它位于 “platform/board/mx8X_board/” 目录下。board.c 文件包含大多数与开发板相关的信息,如 SCU UART 端口、PMIC 初始化程序、PMIC 温度报警设置,你还可以修改它来配置 LDO 电压并与 PMIC 进行总体通信。board.c 文件中的所有函数都由 SCU 本身执行,这使你能够访问用于与 PMIC 通信的 I2C 接口。 由外部电源(例如 PMIC LDO)供电的 SoC 资源(如 AP 内核和 GPU)通过 board_set_power_mode 进行开关,资源到特定 PMIC 电源的映射在 board_get_pmic_info 中进行,例如,在我们的 i.MX8QM 验证板上,使用 A53 子系统由 PF100 PMIC 卡上第三个 PMIC(PMIC_2_ADDR 地址从 PMIC_0 开始)的 SW2 供电,由 PF8100 PMIC 卡上第一个 PMIC (PMIC_0_ADDR) 的 SW5 供电。 case SC_SUBSYS_A53: pmic_init(); if (pmic_card == PF100) { pmic_id[0] = PMIC_2_ADDR; pmic_reg[0] = SW2; *num_regs = 1; } else {/* PF8100_dual Card */ pmic_id[0] = PMIC_0_ADDR; pmic_reg[0] = PF8100_SW5; *num_regs = 1; } break; ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 由外部电源(AP 内核、GPU 等)供电的 SoC 资源的电压由 board.c 文件中的 board_set_voltage 管理。资源到电源的映射如上面的示例所示,在 board_get_pmic_info 中进行。 有八个 “板载资源” (SC_R_BOARD_R0,... SC_R_BOARD_R7)b 可用,这些资源允许你定义 SCU 可以管理的开发板上的组件,例如,开发板上由某个 PMIC LDO 供电的传感器可以映射到一个板载资源,并且可以修改 board.c 文件来开关该传感器以及修改其电压。 修改板载资源的电压可以通过修改 board_trans_resource_power 处的电压来完成(见下文),或者如果需要在运行时更改电压,可以修改 board_set_control 函数,以便在对该资源进行杂项调用(详见《杂项服务 101》)时更改电压。例如,要更改 SC_R_BOARD_R7 上的电压,你可以在 board_set_control 中使用以下情况: case SC_R_BOARD_R7: if (ctrl == SC_C_VOLTAGE) { /* Example only PMIC_X_ADDR and PMIC_SUPPLY need to match an actual device */ pmic_interface.pmic_set_voltage(PMIC_X_ADDR, PMIC_SUPPLY, val, step); } else return SC_ERR_PARM; break;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 每当应用程序调用以下函数时,SCU 将执行上面的代码: sc_misc_set_control( ipc, SC_R_BOARD_R7, SC_C_VOLTAGE, voltage_val);‍‍‍‍‍‍‍‍ 板载资源的开关在 board.c 文件的 board_trans_resource_power 中进行。例如,在 NXP 的验证板上,板上的 PTN5150 通过板载资源 0 进行管理,其开关管理如下: case BRD_R_BOARD_R0 : /* PTN5150 (use SC_R_BOARD_R0) */ if (pmic_ver.device_id == PF100_DEV_ID) { if (to_mode > SC_PM_PW_MODE_OFF) { pmic_interface.pmic_set_voltage(PMIC_2_ADDR, VGEN6, 3300, SW_RUN_MODE); pmic_interface.pmic_set_mode(PMIC_2_ADDR, VGEN6, VGEN_MODE_ON); } else { pmic_interface.pmic_set_mode(PMIC_2_ADDR, VGEN6, VGEN_MODE_OFF); } } else {/* PF8100_dual Card */ if (to_mode > SC_PM_PW_MODE_OFF) { pmic_interface.pmic_set_voltage(PMIC_1_ADDR, PF8100_LDO1, 3300, REG_RUN_MODE); pmic_interface.pmic_set_mode(PMIC_1_ADDR, PF8100_LDO1, RUN_EN_STBY_EN); } else { pmic_interface.pmic_set_mode(PMIC_1_ADDR, PF8100_LDO1, RUN_OFF_STBY_OFF); } } break;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 每当从应用程序端调用以下函数时,SCU 将执行上面的代码: sc_pm_set_resource_power_mode(ipc, SC_R_BOARD_R0, SC_PM_PW_MODE_ON/OFF);‍‍‍‍‍‍‍‍ board_config_sc 用于标记 SCU 需要的资源,例如用于与 PMIC 通信的 I2C 模块和焊盘,board.c 函数工作所需的任何资源都应在此函数中标记为不可移动,例如,要保留 SCU I2C 模块,需添加以下行: rm_set_resource_movable(pt_sc, SC_R_SC_I2C, SC_R_SC_I2C, false);‍‍‍‍‍‍‍‍‍ 以下焊盘属于 SCU,应用程序无法访问它们: - SC_P_SCU_PMIC_MEMC_ON - SC_P_SCU_WDOG_OUT - SC_P_PMIC_EARLY_WARNING - SC_P_PMIC_INT_B - SC_P_SCU_BOOT_MODE0 到 SC_P_SCU_BOOT_MODE5 board_system_config 是早期资源管理发生的地方,该函数仅在图像中设置了 alt_config 标志时被调用,并且它可以创建分区并为其分配资源。更多详细信息可在资源管理服务 101 中找到。 board_get_pcie_clk_src 定义了 PCIe 使用的时钟,它可以是 BOARD_PCIE_PLL_EXTERNAL 或 BOARD_PCIE_PLL_INTERNAL。 board_print 对于调试你的更改非常有用,其语法如下: board_print(3, "Debug printout %d\n", val);‍‍‍‍‍‍‍ 其中第一个参数是调试级别,从那里开始它的工作方式与标准 printf 相同。只有当 SCU 是在相应的调试级别下构建时,输出才会在 SCU 调试输出上可见,在上面的示例中,需要按以下方式构建 SCFW 才能看到输出: make qm B=myBoard‍‍‍‍ DL=3 or higher (debug level goes from 0 to 5)‍‍‍‍‍‍‍ 用法示例 以下工具展示了如何发出系统控制器固件请求,并提供了一种通过 QNX 和 Linux 上的命令行界面发出此类请求的方法 适用于 Linux 和 QNX 的系统控制器固件命令行工具 系统控制器固件 101 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus
View full article
用于 PHY 寄存器操作的以太网工具 大多数以太网 PHY 支持多功能,并提供更灵活的配置能力,通过配置其寄存器可对时序进行微调或启用功能。以太网 PHY 寄存器工具提供了一种通过 MDC/MDIO 接口简单读写 PHY 寄存器的方法。这有助于开发或问题调试。  工业控制
View full article
S32K389 AES_ACCEL 在加密 64KB 数据时会挂起/冻结 您好,NXP团队: 我正在使用S32K389并测试AES_ACCEL (ACE/MSC)模块。我在处理大型数据缓冲区时遇到了稳定性问题。 测试设置: 模式: AES-密码块链接(CBC) 案例 1(通过):加密4KB数据工作正常。 案例 2(失败):加密64KB数据会导致芯片在执行 AES 服务时立即崩溃/挂起。 观察到的行为: S32DS(S32 设计工作室)在执行 AES 服务期间冻结。 尝试通过调试器连接到 S32K389 完全失败。 问题: 对于每个 AES_ACCEL 事务的最大数据长度,是否存在任何已知的限制? 此致, 显龙 Re: S32K389 AES_ACCEL hangs/freezes when encrypting 64KB data 嗨@wuxianlong 让我查一下。我会尽快回复您。 此致, Lukas Re: S32K389 AES_ACCEL hangs/freezes when encrypting 64KB data 很抱歉耽搁了,我遇到了一些内部资源访问权限方面的问题,解决起来比预期要花更多时间。我会尽快回复。感谢您的耐心等待。 此致, Lukas Re: S32K389 AES_ACCEL hangs/freezes when encrypting 64KB data 嗨@wuxianlong CMAC生成验证服务存在以下限制: 我还在确认加密方面是否存在限制。我稍后会通知你。 此致, Lukas Re: S32K389 AES_ACCEL hangs/freezes when encrypting 64KB data 你好, @lukaszadrapa 非常感谢您的解释。加密和 CMAC 验证可能面临同样的局限性。 此致, 显龙 Re: S32K389 AES_ACCEL hangs/freezes when encrypting 64KB data 我了解到大小限制为 512KB - LEN 位域的大小为 19 位。 有趣的是,程序执行完全崩溃了。我预计 AES_ACCEL 在参数无效的情况下会返回一些错误代码。 那不是XRDC引起的吗?XRDC 是否已启用?您能否尝试将其禁用以进行测试? 此致, Lukas Re: S32K389 AES_ACCEL hangs/freezes when encrypting 64KB data 你好, @lukaszadrapa 使用 64KB 进行测试仍然失败。启用 AEC 错误检测后发现,IP 驱动程序宏将限制设置为(1 << 19) - 1​ 位 < 64 KB。 此致, 显龙
View full article
EdgeLock SE051:OpenSSL プロバイダを読み込んだ後にSCP03エラーでse05x_Minimal失敗 こんにちは、 Linux上でEdgeLock SE051とSCP03を使ってOpenSSL プロバイダを使おうとしています。se05x_Minimal例が最初は完璧に動作するのに、OpenSSL プロバイダの共有ライブラリをインストールし た後に SCP03認証エラーで失敗するという問題に直面しました。 この対立の原因についてアドバイスをいただけますか? 環境: 基板: MCIMX8M-WEVKおよびOM-SE051ARD SoC: i.MX 8M Linuxバージョン: 6.1.151-cip46 OpenSSLバージョン: 3.0.20 Plug & Trust MW バージョン: 04.07.01 講じた措置: 以下のCMake構成を使用して、Plug & Trust MWをビルドしました。 cmake ../simw-top \ -DPTMW_Applet=SE05X_C \ -DPTMW_SE05X_Ver=07_02 \ -DPTMW_Host=iMXLinux \ -DPTMW_SMCOM=T1oI2C \ -DPTMW_HostCrypto=OPENSSL \ -DPTMW_RTOS=Default \ -DPTMW_mbedTLS_ALT=None \ -DPTMW_SCP=SCP03_SSS \ -DPTMW_FIPS=None \ -DPTMW_SBL=None \ -DPTMW_SE05X_Auth=PlatfSCP03 \ -DPTMW_Log=Default \ -DCMAKE_BUILD_TYPE=Release \ -DPTMW_SE_RESET_LOGIC=1 Plug & Trust MWディレクトリから i.MX 8Mの/rootにsimw-top/demos/linux/common/openssl30_sss_se050.cnfをコピーしました。 設定環境変数をエクスポートしました。 export OPENSSL_CONF=/root/openssl30_sss_se050.cnf SE051とSCP03が正しく動作することを確認するため、se05x_Minimalを実行しました。それは成功した。 App :INFO :Running bin/se05x_Minimal App :INFO :If you want to over-ride the selection, use ENV=EX_SSS_BOOT_SSS_PORT or pass in command line arguments. App :INFO :PlugAndTrust_v04.07.01_20250519 App :INFO :Using default PlatfSCP03 keys. You can use keys from file using ENV=EX_SSS_BOOT_SCP03_PATH sss :INFO :atr (Len=35) (snip) App :INFO :mem=17196 App :INFO :se05x_Minimal Example Success !!!... App :INFO :ex_sss Finished libsssapisw.so 写した。libsss_pkcs11.so、そして/usr/local/lib/に libsssProvider.so。(注:/usr/local/lib/ は、/root/openssl30_sss_se050.cnf の [nxp_prov_sec] セクションで指定されているパスです。) se05x_Minimalを再度実行しました。今回は、以下のエラーが発生して失敗しました。 エラー出力: App :INFO :Running bin/se05x_Minimal App :INFO :If you want to over-ride the selection, use ENV=EX_SSS_BOOT_SSS_PORT or pass in command line arguments. App :INFO :PlugAndTrust_v04.07.01_20250519 App :INFO :Using default PlatfSCP03 keys. You can use keys from file using ENV=EX_SSS_BOOT_SCP03_PATH sss :INFO :atr (Len=35) (snip) App :INFO :If you want to over-ride the selection, use ENV=EX_SSS_BOOT_SSS_PORT or pass in command line arguments. App :INFO :Using default PlatfSCP03 keys. You can use keys from file using ENV=EX_SSS_BOOT_SCP03_PATH sss :INFO :atr (Len=35) (snip) sss :ERROR:Error in RAND_pseudo_bytes scp :WARN :nxEnsure:'status == kStatus_SSS_Success' failed. At Line:121 Function:nxScp03_AuthenticateChannel sss :ERROR:Could not set SCP03 Secure Channel App :ERROR:sss_session_open failed App :WARN :nxEnsure:'kStatus_SSS_Success == status' failed. At Line:240 Function:OSSL_provider_init smCom :ERROR:phNxpEseProto7816_DecodeFrame Max retry count reached!!! smCom :ERROR:phNxpEseProto7816_Transceive Transceive failed, hard reset to proceed smCom :ERROR: phNxpEse_Transceive phNxpEseProto7816_Transceive- Failed smCom :ERROR: Transcive Failed sss :WARN :nxEnsure:'retStatus == SM_OK' failed. At Line:7977 Function:sss_se05x_channel_txn sss :WARN :nxEnsure:'ret == SM_OK' failed. At Line:7839 Function:sss_se05x_TXn sss :WARN :APDU Transaction Error: Error (0xFFFF) scp :ERROR:GP_InitializeUpdate Failure on communication Link FFFF scp :ERROR:nxScp03_GP_InitializeUpdate fails with Status 3C3C0000 sss :ERROR:Could not set SCP03 Secure Channel App :ERROR:sss_session_open failed App :ERROR:ex_sss_session_open Failed App :ERROR:!ERROR! ret != 0. OpenSSLプロバイダーが設定によって正常にロードされると、(おそらくRAND_pseudo_bytesに関連する)何かがSCP03チャネルの確立を壊すようです。 同様の現象に遭遇した方、または他にどのような設定が不足しているかご存知の方はいらっしゃいますか? ご協力ありがとうございます。 Re: EdgeLock SE051: se05x_Minimal fails with SCP03 errors after loading OpenSSL Provider こんにちは、 @Uc_S さん。 適切なバージョンのopensslを設定しましたか?以下のオプションをご利用ください。 -DPTMW_OpenSSL=3_0 ちなみに、テスト目的で、より詳細なデバッグ情報を取得するために、詳細ログを有効にしてください。 -DPTMW_Log=詳細 すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: EdgeLock SE051: se05x_Minimal fails with SCP03 errors after loading OpenSSL Provider アドバイスをいただき、本当にありがとうございました。あなたの言う通りでした。 問題の根本原因は、CMakeの設定ファイルに「-DPTMW_OpenSSL=3_0」オプションが欠落していたことでした。 「-DPTMW_OpenSSL=3_0 -DPTMW_Log=Verbose 」を追加してMWを再構築したところ、問題は完全に解決しました。結果は以下のとおりです。 ステップ6を実行しても、エラーは発生しなくなりました。期待どおりに「App :INFO :mem=17196」が出力されます。 また、ログレベルを元の設定(「-DPTMW_Log=Default」に設定しても、アプリケーションは完璧に動作し、「App :INFO :mem=17196」を出力することも確認しました。 このトピックは解決したとマークします。
View full article
在 FRDM-IMX95 上调试 Ara240 模块 入门视频 (function() { var wrapper = document.getElementById('lia-vid-6393577020112w960h540r856'); var videoEl = wrapper ? wrapper.querySelector('video-js') : null; if (videoEl) { if (window.videojs) { window.videojs(videoEl).ready(function() { this.on('loadedmetadata', function() { this.el().querySelectorAll('.vjs-load-progress div[data-start]').forEach(function(bar) { bar.setAttribute('role', 'presentation'); bar.setAttribute('aria-hidden', 'true'); }); }); }); } }})(); (在我的视频中查看) 本指南提供分步说明,说明如何验证与 Ara240 模块的成功通信以及与 FRDM i.MX 95 开发板接口的运行时软件环境。 打破常规 熟悉 Ara240 模块 Ara240 Module [Top view]Ara240 模块 [俯视图] Ara240 Module [Back view]Ara240 模块 [后视图]      连接 M.2 模块 本节介绍如何将分立模块 Ara240 连接到 FRDM i.MX 95 开发板。FRDM i.MX 95 快速入门指南中的说明将引导您完成主板上预加载的嵌入式 Linux 映像的启动过程以及如何连接 USB 调试电缆。有关其他详细信息,请参阅 FRDM i.MX 95 开发板官方文档。 参考,引用: FRDM i.MX 95 快速入门指南 FRDM i.MX 95 开发板产品页面 FRDM i.MX 95 入门页面 ARA2-M2-16G-GT 入门 按照以下步骤将 Ara240 模块连接到 FRDM i.MX 95 开发板: 剧透 (加亮显示以阅读) 重要:在进行任何连接之前,请确保主板已关闭电源。 重要:在进行任何连接之前,请确保主板已关闭电源。 将 Ara240 模块插入 FRDM i.MX 95 开发板上的 M.2 Key-M 插槽。 使用提供的螺钉固定模块。 将风扇电缆连接到主板的风扇接头(有关接头的确切位置,请参阅 FRDM i.MX 95 主板文档)。 Connect the Ara240 to the FRDM i.MX 95 development board.将 Ara240 连接到 FRDM i.MX 95 开发板。 开启板电源 按照《FRDM-IMX95 入门》中的说明开启(启动)板。 开机后,检查风扇和 Ara240 模块的绿色 LED 指示灯是否亮起。   获取软件 本节将向您介绍 Ara240 Runtime 软件开发工具包 (SDK),这是 Ara240 SDK 的精简子集,旨在恩智浦平台上快速启用和执行。Runtime SDK 简化了安装和配置,使开发人员能够以最小的工作量在 Ara240 模块上快速部署和运行 AI/ML 工作负载。 概述 有关 Ara240 软件开发套件 (SDK) 的详细信息,请参阅 Ara240 软件发行说明 Ara240 入门页面仅概述了在特定 i.MX 开发平台上的使用情况 对于任何其他平台,请联系您的恩智浦代表寻求指导。 模块枚举和软件配置 本节提供有关在 FRDM i.MX 95 开发板上验证是否正确安装了 Ara240 模块和 Ara240 Runtime SDK 配置的说明。 验证设备检测 主板成功启动后,连接到串行调试端口以监测系统日志。要确认主板是否检测到 Ara240 模块,请运行以下命令: $ lspci | grep 1e58 预期输出: 0000:01:00.0 Processing accelerators: Device 1e58:0002 (rev 02) 启用 Ara240 设备 为了快速启用,Ara240 运行时 SDK 会在启动时启动。有关详细说明和环境设置步骤,请参阅Ara240 Runtime SDK 文档。 开发人员体验 本节概述了使用 FRDM i.MX 95 开发板支持 Ara240 运行时软件。 验证设置环境 使用以下指南来了解如何连接所需设备。对于大多数演示,你需要摄像头、键盘、鼠标、互联网连接和一个 HDMI 显示器。 Setup preparation for FRDM i.MX 95 board [Top view]FRDM i.MX 95 主板的设置准备 [顶部视图] Setup preparation for FRDM i.MX 95 board [Back view]FRDM i.MX 95 主板的设置准备 [返回视图] 剧透 (加亮显示以阅读) 注意:您可能需要使用 USB 集线器来同时连接键盘、鼠标和摄像头。 注意:您可能需要使用 USB 集线器来同时连接键盘、鼠标和摄像头。   运行时设置 说明 Runtime SDK 提供了一个完整的运行环境,可在 Ara240 模块上实现 AI/ML 加速。要运行演示应用程序,请确保 Ara240 启动过程已成功完成,系统已为演示评估做好准备。 请参阅 Runtime SDK 文档,了解有关以下方面的详细指导: 验证 Runtime SDK 的正确安装。 检查并更新 Ara240 固件版本。 验证代理服务启动状态。 在 Ara240 上执行基准测试。 按照这些步骤操作可确保模块正确初始化并可随时使用。Ara240 支持执行 CNN、LLM、VLM 和代理框架,使高级人工智能工作负载能够直接在 Ara 上运行。有关全面的示例和端到端工作流程指导,请参阅Ara SDK文档页面。 FRDM-IMX9
View full article
NXP FS45 SBC RTD Requese 我目前正在使用 SBC FS45 开发汽车控制软件,主控芯片是 S32K342。我想知道是否有基于 EB Tresos 配置的 FS45 RTD 软件包? Re: NXP FS45 SBC RTD requese 我们只有带示例的 FS6500/FS4500 通用 SW 驱动程序 嵌入式软件:FS65/FS45 软件驱动程序 | 恩智浦半导体
View full article
[Introduction to NXP Microcontrollers] [Motor Control] [Basics Part 3] How Permanent Magnet Synchronous Motors Work and How to Control Them (Japanese blog) table of contents   [Introduction to NXP Microcontrollers] [Motor Control] [Basics Part 3] Mechanism and Control Method of Permanent Magnet Synchronous Motors The unsung hero! What are Clark Transform and Park Transform? It all began with the complex waves of three-phase AC Step 1: Clarke Transformation - Simplifying 3D into 2D Step 2: Park Transformation - "The Magic of the Merry-Go-Round" - Freeze the Moving World Why go through such a tedious conversion process? What are the huge benefits? Summary: The power of mathematics to manipulate complex waves at will [Introduction to NXP Microcontrollers] [Motor Control] [Basics Part 3] Mechanism and Control Method of Permanent Magnet Synchronous Motors The unsung hero! What are Clark Transform and Park Transform? Hello! When an electric vehicle (EV) takes off smoothly and a high-performance air conditioner operates surprisingly quietly, microcomputers perform complex calculations at ultra-high speeds and skillfully control the motor. This time, let's unravel the mysteries of the "Clark Transformation" and the "Park Transformation" (transformations named after two great experts who work in " vector control ," the heart of control technology), with the GIF animation below! (function() { var wrapper = document.getElementById('lia-vid-6377224605112w540h540r855'); var videoEl = wrapper ? wrapper.querySelector('video-js') : null; if (videoEl) { if (window.videojs) { window.videojs(videoEl).ready(function() { this.on('loadedmetadata', function() { this.el().querySelectorAll('.vjs-load-progress div[data-start]').forEach(function(bar) { bar.setAttribute('role', 'presentation'); bar.setAttribute('aria-hidden', 'true'); }); }); }); } }})(); (View My Videos) It all began with the complex waves of three-phase AC First, the top row. This is the world of three-phase AC , the basic energy required to run a motor. Graph on the right (Three-Phase Sine Waves) : Three waves, A, B, and C, are constantly changing in magnitude and direction as they flow. These three waves are interconnected, but as they are, it is extremely difficult to intuitively determine how much force should be applied to the motor at any given time. It's like trying to conduct three musicians who are each playing different pieces of music at the same time. Left graph (Rotating Vector) : However, when the forces of these three waves are combined, something interesting happens. A single force ( rotating vector ) is created that rotates smoothly and constantly, while maintaining a constant magnitude. Physically, this is the " rotating magnetic field " created by the stator coil. It is this rotating magnetic field that attracts the rotor magnet and is the source of the force that turns the motor. Problem: How can we easily and accurately control these "three constantly changing waves" using a microcontroller? Step 1: Clarke Transformation - Simplifying 3D into 2D The first magic is the " Clark transformation ," which transforms a complex 3D world into a more understandable 2D world. The calculation formula is as follows: In normal motor control, the following simplified formula is used, assuming amplitude invariant transformation (K=2/3) and balanced three-phase (i_a+i_b+i_c=0).   ​ The graph on the right (Two-Phase Sine Waves α-β) : Look! The three waves have been consolidated into two waves, α (alpha) and β (beta). The wave shape (alternating current) is still there, but one variable has been removed, making it much easier to see. Graph on the left (Clarke Transformation α-β) : This shows the world as seen from two axes (α, β) that intersect at right angles to the rotation vectors seen from three axes (A, B, C). It's like turning a solid object seen from an angle into a flat view from directly above. The rotation vector itself continues to rotate in the same way without any change. [Key points of Clarke conversion] Without losing any information, we simplified the problem by converting from the somewhat difficult to handle three-phase coordinate system to Cartesian coordinates (α-β stationary coordinate system), which are familiar from mathematics. Step 2: Park Transformation - "The Magic of the Merry-Go-Round" - Freeze the Moving World The values of α and β are still changing like waves, and it is difficult to keep track of them. This is where the essence of vector control, the " Park transformation ," comes in! The calculation formula is as follows: ​​ This is a major shift in thinking : "Let's stop looking at the rotating vector from the stationary ground (α-β coordinates) and jump on a merry-go-round that rotates at the same speed as the rotating vector!" This new rotating coordinate system is called the " dq rotating coordinate system ." Right graph (Two-Phase Value dq) : What an amazing result! The two waves that had been changing so drastically have now turned into **almost constant values (direct current)** called d and q! Left graph (Park Transformation dq) : You can see that the dq coordinates rotate in perfect synchronization with the rotation vector. If you stand right next to a horse on a merry-go-round, the horse appears stationary to you, right? It's the exact same principle. From the perspective of the rotating object, it appears stationary. [Points to note about park conversion] By observing from a coordinate system (dq coordinates) that rotates at the same speed as the rotating vector, AC values can be treated as DC values. Why go through such a tedious conversion process? What are the huge benefits? This two-step transformation brings us a tremendous benefit: overwhelming simplification of control . Controlling constantly changing AC values is difficult, but what about DC values? If it's higher than the target value, lower it; if it's lower, raise it. With this simple operation (PID control) that even an elementary school student can understand, you can achieve perfect control of a motor. The DC values of d and q each have an important physical meaning. q-axis value (Quadrature-axis): This directly controls the motor's torque (rotational force). When you step on the accelerator of an EV, the car accelerates sharply because the microcomputer is raising the target value of this q-axis. It is truly a "power dial." d-axis value (Direct-axis): Controls the motor's magnetic flux (magnet strength). In the case of a permanent magnet motor, the strength of the rotor magnet is constant, so basically it is most efficient to control the d-axis current to zero. It is truly an "efficiency dial." In other words, the Clarke and Park transformations are magical in that they separate the "power" and "efficiency" elements of a motor, which are normally mixed together, into two independent DC dials (d and q) . Summary: The power of mathematics to manipulate complex waves at will The complex wave of three-phase AC creates a rotating force (rotation vector) inside the motor. Clarke transformation simplifies the problem by redrawing the three-dimensional world into two dimensions (α-β). The park transformation involves riding on a rotating merry-go-round (dq coordinates) and converting AC values into DC values. The DC torque (q) and magnetic flux (d) values can be easily and accurately controlled using a PID controller! This series of elegant mathematical processes is the basis of "vector control," which supports modern high-performance motors. It is this magic that allows us to enjoy the full benefits of powerful, quiet, and energy-efficient motors. Thank you for reading to the end! If you would like to read the next basic chapter, click here ↓ [Basics Part 4] Practice! Let's see how vector control works using a block diagram! Click here for an explanation of the specific setup method and how to run the sample code. [Introduction to NXP Microcontrollers] [Motor Control] [Practical Part 1] Mechanism and Control Method of Permanent Magnet Synchronous Motors (Japanese blog) Here is a website that compiles articles about NXP motor control: NXP Motor Control - Summary Page - (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. ) This article will provide an easy-to-understand explanation of motor control using the NXP FRDM board "FRDM-MCXA156." It is divided into a basic section and a practical section, so we hope you will refer to the section that interests you. ・Basics ①~⑦, Practical ①~③ This time, as part 3 of the Basics, we will explain the mechanism and control method of permanent magnet synchronous motors using NXP microcontrollers. MCUXpresso MCUXpresso IDE MCUXpresso SDK MCX Motor Control Technology Focus Japanese Blog
View full article
Viable replacement for DSP56F807 Hi team, We have a customer seen the EOL that was sent out on the DSP56F807, specifically we use the DSP56F807VF80E. Since we are faced with having to tackle this and there were no direct replacements listed, I was wondering what the most similar part would be from your point of view? We are thinking if we can find anything that requires little to no redesign work. Thank you for any support you can give on this.
View full article
LED code example does not work I was following this example on my s32k116: https://www.nxp.com/design/design-center/training/TIP-GET-TO-KNOW-THE-USER-FRIENDLY-MBDT-D0609 I did exactly what was shown in the video to get the LED working. My code builds too. But the LED wont turn on when I turn the potentiometer. I have attached a picture of the board for reference. Kindly guide me on where I might be going wrong Re: LED code example does not work Hello, Please note that the video you mentioned uses another evaluation kit (S32K144EVB) and the pins might not be the same for S32K116. Did you check the schematic to see the pins used by the potentiometer and the LED? As a recommendation, try to use the FreeMASTER tool to visualize the data on the board. You have to add data store memory blocks to save the data from the ADC and the state of the LED. Please set them to Volatile (in order to see them in FreeMASTER).  Another variant is to use the S32 Design Studio to directly debug the application, by placing breakpoints at specific lines and see the values read from the potentiometer. Best regards, Sorin Bancila  Re: LED code example does not work I tried doing that but when I try to start a session on freemaster, it cannot detect the board information. And I set the block state ("pot_adc") as Volatile which is why is shows up as a symbol when I go to the symbol table preview . Here is the screenshot. I am not sure why the board is not responding
View full article
Homebrew RF 设计挑战赛获胜者 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 描述 第一名 第二名 第三名 结束语 描述 今年早些时候,恩智浦为业余无线电爱好者组织了一次促销机会,让他们发挥创造力,构建自己的功率放大器设计。 NXP 在这次竞争激烈的 Homebrew RF 设计挑战赛中收到了大量富有创意的作品。我们感谢社区的奉献和热情,使这次比赛取得了成功。 第一名 MRF101AN 宽带放大器设计,具有 1 W 输入、100 W 输出 1.8-54 MHZ 放大器平台。(更多信息请访问: NXP MRF-101 - RFPowerTools ) 该放大器带宽为1.8MHz至54MHz。最大输出功率在30MHz时为100W,在50MHz时为70W。 最大电源50V至4A,电压驻波比最大为1.5:1。 PCB 的设计尺寸为 5x5 厘米(2x2 英寸)。包括风扇和散热器在内重量为310克。 第二名 采用经济实惠的 LDMOS 器件的 600W 宽带 HF 放大器(更多信息请访问: https ://qrpblog.com/2019/10/a-600w-broadband-hf-amplifier-using-affordable-ldmos-devices/) 该项目旨在展示 MRF300 晶体管作为 2-50MHz 范围内的线性宽带设备的能力,并供无线电爱好者用作中高功率放大器的起点。这也是我参加 2019 年 NXP Homebrew RF 设计挑战赛的作品。 为了实现 600W 输出的目标,同时最大限度地降低偶次谐波的水平,使用了两个晶体管的“推挽”配置。幸运的是,制造商提供了两个具有镜像引脚排列的版本(MRF300AN 和 MRF300BN),从而可以轻松设计此类产品的 PCB 布局。采用常见的TO-247封装,源极接极耳。 每个 MRF300 LDMOS 晶体管的额定输出功率为 330W,工作频率范围为 1.8-250MHz,最大增益为 28dB,效率超过 70%。建议的电源范围是 30-50Vdc。通过研究规格,看起来通过正确的宽带匹配和一些操作安全裕度,我们可以在相当大的带宽上以大约 45V 的电压获得接近 600W 的输出;目标是覆盖 1.8 至 54MHz。 设计该放大器时的主要挑战是在整个频率范围内实现良好的输入和输出匹配以及保持高而平坦的增益。良好的线性度和低水平的谐波产物是必需的。由于 TO-247 不是专门为高功率射频设计的封装,因此在热设计和 PCB 布局方面也存在一些挑战。 信息取自获奖者的文章。 第三名 用于立方体卫星等离子推进器的高效开关模式射频放大器,采用 MRF101AN LDMOS 器件(更多信息请访问:研究 - SuperLab@Stanford ) E 类放大器利用有源器件作为开关,仅在截止(关闭)和饱和(打开)条件下工作。这最大限度地减少了电压和电流的重叠,减少了有源器件的损耗。为了进一步减少损耗,E 类放大器利用电感调谐谐振网络实现零电压开关,在开启之前将开关两端的电压降至零,从而消除有源器件输出电容中存储的否则会耗散的能量。这是通过电感调谐串联谐振输出滤波器实现的。 在 E 类放大器中,损耗几乎完全由有源器件传导的电流决定,因此需要较高的漏极阻抗来最大限度提高效率。漏极阻抗最终受开关额定电压的限制。对于我们期望的 40W 输出功率和 MRF101AN 的最大额定电压 133V,该阻抗仍然小于 50 欧姆,因此使用 L 匹配电路将漏极阻抗匹配至 50 欧姆。我们设计中的负载网络提供了15.4+12.8j的漏极阻抗。 由于 MRF101AN 将在饱和状态下运行,因此需要较高的驱动水平。为了消除对前置放大器的需求并允许数字控制,我们使用开关模式电源中通常使用的高速栅极驱动芯片 LMG1020 来驱动 MRF101AN,而不是 RF 前置放大器。谐振网络用于提供基波和三次谐波的电压增益,在栅极上提供准方波,有助于确保器件保持饱和状态。 结束语 这是一场惊险刺激且竞争非常激烈的比赛!每位参与者都以自己富有创意、独特且令人印象深刻的方式展示这些新部件的功能。 NXP 始终致力于迎接新的设计挑战。 准备好迎接下一个挑战了吗? 汽车电子 工业控制 移动设备 回复:自制射频设计挑战赛获胜者 展示设备实际用户的应用程序是一个非常好的主意。
View full article
EB tresos 许可证到期 我的 EB Tresos 许可证有效期至 2025 年 12 月 31 日(即将到期)。 如何在过期前获得新的激活码? Re: Expiration of EB tresos license 嗨,Joung、 请注意,在圣诞假期期间,我们的支持响应时间可能会比平时长。在某些情况下,您的请求可能会在新年后得到处理。感谢您的理解。 几天前,我给 [email protected] 发了电子邮件,提醒他们更新 EBTresos 激活码,但至今没有收到回复。 恐怕要到新年后才能更新。 很抱歉给您带来不便! 祝好, Robin ------------------------------------------------------------------------------- 注: - 如果本帖回答了您的问题,请点击"ACCEPT AS SOLUTION" 按钮。谢谢! - 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略 如果您以后有相关问题,请另开新主题,并参考已关闭的主题。 -------------------------------------------------------------------------------
View full article
EIQ 時系列生成モデルは、PowerQuad DSP または Neutron N1-16 NPU を使用して高速化されます。 質問: PowerQuad DSP または Neutron N1-16 NPU を使用して EIQ 時系列生成モデルを高速化するにはどうすればよいですか? 図に示すように、別のライブラリ ファイルを追加する必要がありますか、それとも生成されたモデルの静的ライブラリにはすでに PowerQuad DSP または Neutron N1-16 NPU アクセラレーションが含まれていますか? 想定される回答:PowerQuad DSPまたはNeutron N1-16 NPUアクセラレーションを使用したドキュメントまたはプロジェクトをご提供ください。TSSで更新可能な関連プロジェクトはありますか? マクネン NPU|ML Re: eiq time series 生成模型使用PowerQuad DSP or Neutron N1-16 NPU加速 こんにちは@xiaobai_226 アクセラレータのサポート。  PowerQuad : NXP ハードウェア IP は、FFT 計算を高速化するのに役立ちます。選択したターゲットにこのハードウェア モジュールが含まれている場合は、デフォルトで表示され、有効になります。 Neutron NPU : NXP ハードウェア IP はディープラーニング モデルの予測を高速化するのに役立ちます。これは、選択したデバイスにこのハードウェア モジュールが含まれている場合にサポートされます。 BR ハリー Re: eiq time series 生成模型使用PowerQuad DSP or Neutron N1-16 NPU加速 こんにちは、ハリー TSS によって生成されたライブラリ ファイルには、すでに加速プロセッシングユニットが組み込まれているということをおっしゃっているのでしょうか?.lib 以降TSSによって生成されたファイルには、プロセッシングユニットが含まれているかどうかが明示的に示されておらず、SDKの例とTensorFlow for NPUの両方でNPUは.aの形式で提供されることを考えると、ファイルでは、TSS で生成されたファイルに加速ユニットが含まれているかどうかは不明のままです。テストに使用する評価ボードは MXCN947EVK です。
View full article
Wi-Fi Easy Connect (DPP) Between Two MediaTek Genio-510 Boards Hi NXP Community, Problem Statement I am trying to connect two MediaTek Genio-510 EVK boards using Wi-Fi Easy Connect (DPP). Board A → AP + DPP Configurator (hostapd) Board B → STA + DPP Enrollee (wpa_supplicant) DPP authentication succeeds, but configuration fails with the error: DPP-FAIL Configurator rejected configuration DPP-CONF-FAILED I would like to understand what is causing the configurator to reject the configuration, even though DPP authentication completes successfully. Board Configuration Details 🔹 Board A (AP + DPP Configurator) hostapd version: v2.10 Interface: wlp1s0 Mode: AP Security: DPP only /etc/hostapd_nxp3.conf ctrl_interface=/var/run/hostapd interface=wlp1s0 driver=nl80211 ssid=DPP_AP111 hw_mode=g channel=1 country_code=IN ieee80211n=1 ieee80211w=2 wmm_enabled=1 auth_algs=1 # ---- DPP CONFIG ---- wpa=2 wpa_key_mgmt=DPP rsn_pairwise=CCMP dpp_connector=1 Start command: hostapd /etc/hostapd_nxp3.conf -B AP verification: iw dev # Interface wlp1s0 # type AP # ssid DPP_AP111 # channel 1 (2412 MHz) 🔹 Board B (STA + DPP Enrollee) wpa_supplicant version: v2.10 Mode: Managed (STA) /etc/wpa_supplicant_nxp.conf ctrl_interface=/var/run/wpa_supplicant update_config=1 pmf=2 dpp_config_processing=2 Start command: wpa_supplicant -i wlp1s0 -D nl80211 -c /etc/wpa_supplicant_nxp.conf -B DPP Procedure Followed On Board A (Configurator) hostapd_cli Commands executed: dpp_configurator_add dpp_bootstrap_gen type=qrcode chan=81/1 mac=a8:41:f4:89:a2:5d dpp_bootstrap_set 1 conf=sta-dpp ssid=DPP_AP111 configurator=1 dpp_bootstrap_get_uri 1 dpp_listen 2412 Result: DPP Authentication → SUCCESS DPP Configuration Sent → ✅ Relevant logs: DPP-AUTH-SUCCESS init=0 DPP-CONF-REQ-RX DPP-CONF-SENT On Board B (Enrollee) wpa_cli Commands executed: DPP_QR_CODE dpp_auth_init peer=1 role=enrollee Logs observed: DPP-AUTH-SUCCESS init=1 GAS-QUERY-DONE result=SUCCESS DPP-FAIL Configurator rejected configuration DPP-CONF-FAILED Questions Why does the configurator reject the configuration even though authentication succeeds? Should the configurator send PSK/SAE credentials instead of sta-dpp? Is this a driver or firmware limitation on MediaTek Genio-510 for full DPP support? Any guidance or working reference configuration for Genio-510 DPP AP ↔ STA would be very helpful.
View full article
使用直接内存寻址进行 CRC 评估 大家好 我使用的是 S32K358 MCU、MBD Toolbox v1.6.0 和 Matlab R2024a。 我知道工具箱不支持 Crc 模块,所以我配置了 .mex然后,我编写了一个 Matlab 函数,以便作为自定义代码手动调用"Crc_SetChannelCalculate" 函数。 这样做效果很好,我可以正确评估数组等数据流的 CRC。 现在我想做的是,直接使用内存地址作为数据输入,对内存区域进行 CRC 评估。如果我使用 S32DS IDE(在 Matlab 之外)手动编写代码"" ,代码看起来像这样: //--- 代码开始 uint32 CrcResult; uint8 *data; data = (uint8 *)0x40A1F0; // 为开始计算而选择的任意地址 CrcResult = Crc_SetChannelCalculate(CRC_LOGIC_CHANNEL_2, data, 16, 0, TRUE); //用这种方式我计算 16 字节的 CRC,起始值 = 0,直接从地址 0x40a1f0 开始在闪存中读取 //--- 当然,在此之前,我用适合我的应用的属性初始化了逻辑通道 CRC_LOGIC_CHANNEL_2。 这段代码运行良好,但我无法在 Matlab 上已翻译 " 它,因为我没有找到合适的方法来进行直接内存寻址(而且,如果我没错的话,Matlab 不支持这种可能性)。" 请问谁有办法解决这个问题? 感谢您的帮助和支持。 丹尼尔
View full article
使用 jLink Segger 探针 RESET MIMXRT1176-EVKB 您好, 我正试图使用 Segger JLink 探头对评估套件(MIMXRT1176-EVKB,修订版"55139 REV C3" )进行编程。 为此,我在 JP5 上添加了一个跳线,以断开嵌入式 MCU 链接,从而使探针能够对闪存编程。 尝试对二进制文件进行编程后,探测器似乎无法正确RESET CPU。编程完成后,CPU无法RESET,我必须手动RESET。 这让我觉得探头和 CPU 之间有问题,可能缺少了什么东西(跳线?其他?) 这是一个已知问题吗?我是否遗漏了文件中的某些内容? 感谢您的帮助、 布伦丹 Re: Reset MIMXRT1176-EVKB with JLink Segger Probe 嗨,@BrendanLT、 您是否还短接了 JP4?正如 MIMXRT1170-EVKB 板硬件用户指南中所述: BR, Edwin.
View full article
What`s the meaning of the 'P1' in the type of "LPC1769FBD100/P1" Hi All, Recently, I received a pack of LPC1769 chips. The strange thing is that the number at the end of it is P1, which seems a little special, and I have not been able to find out the specific meaning and manual of LPC1769 as a P1. Therefore, I came here specially to consult everyone and hope to get your help. Thanks~~~ LPC1769FBD100  大家好, 最近我收到一包LPC1769芯片,奇怪的是它的末尾编号是P1,似乎有些特殊,而且未能查到有关于LPC1769这款P1的具体含义以及手册。 所以,特地前来,咨询大家,希望得到大家的帮助。谢谢大家。 LPC1769FBD100  Note: Attached image was removed. LPC17xx Re: What`s the meaning of the 'P1' in the type of "LPC1769FBD100/P1" Hi @Kuroky_Rasum, P1 is an internal identifier and does not impact the functionality of the MCU. You can find more details in the following community post. Difference between LPC1769FBD100, 551 / LPC1769FBD100K / LPC1769FBD100/P1K - NXP Community Best Regards, Pablo
View full article
IMX8mini Yocto Linux 的 rootfs 大小 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 对不起,我必须在这里提出这个问题。 [我的情况]: imx8mini,8G emmc,运行 Yocto Linux,Linux 4.14.98 电路板支持包。 [问题]: 默认情况下,Yocto Linux 版本的 rootfs 大概是 1.3GB,当我把它刷到 EVK 时,整个系统显示的只有 1.3GB,这绝对不合理,因为我的 emmc 是 8GB。 [我目前得到的解决方案] 在上网搜索 Yocto 之后,我知道可以使用 IMAGE_ROOTFS_EXTRA_SPACE=" xxxxxx" 或IMAGE_ROOTFS_SIZE="xxx" 来扩展整个大小。 [我的问题] 但是,如果这样做,我发现我的 rootfs 也会被强制放大到文件大小以上。 e,g,如果我将 IMAGE_ROOTFS_EXTRA_SPACE= " xxxxx " 设置为 8GB,那么版本 rootfs 图像大小也是 8GB!!!!!!!!!!!! 真糟糕,rootfs 添加了这么多无用的零填充,真正的 rootfs 只有 800MB,为什么要添加这么多无用的数据,强行放大到无用的 8GB?????!!!!!!!!!!!这导致我花了太多无用的时间将无用的 8GB 数据闪存到 EMMC!!!!!!!! 这既浪费了闪存图像时间,也浪费了我的硬盘存储!!!!!!!!! 为什么 Yocto 的设计如此糟糕??????? 为什么不使用 Android 的智能方式?????对于 Android,整个 system.img 只有大约 800MB,闪存到 EVK 后,整个系统(/)仍然显示 8GB emmc,而不是 800MB。 有谁能帮助我解决这个令人沮丧的问题?非常感谢。 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus Linux Re: rootfs size for IMX8mini Yocto Linux 嗨,@Yuri、 我们使用的是 i.MX8M Plus EVK,它有 32 MB QSPI 闪存。 我们的目标是完全从 QSPI 闪存启动 U-Boot、Linux 内核、设备树和 initramfs (rootfs.img)。 我们能够成功启动: U-Boot(来自 flash.bin) Linux 内核(Image.gz) 设备树 (imx8mp-evk.dtb) 但是,我们在从 QSPI 闪存加载和使用 initramfs/rootfs 映像时遇到了问题。内核启动成功,但内核在 Waiting for removable media(等待可移动媒体)处挂起....,请参阅下面附带的日志。 -----Flash 布局和图像大小---------------- QSPI 闪存大小:32 MB flash.bin (U-Boot + SPL) ~2.3 MB Image.gz (内核) ~13.5 MB imx8mp-evk.dtb ~86 KB rootfs.img ~12.6 MB ----QSPI 偏移布局---------- flash.bin @ 0x00000000 Image.gz @ 0x00240000 imx8mp-evk.dtb @ 0x01000000 rootfs.img @ 0x01080000 ------ 将文件编入 QSPI(来自 SD 卡)--------- sf probe 0 sf erase 0x0 0x2000000 fatload mmc 1${loadaddr} flash.bin sf 写${loadaddr} 0x0${filesize} fatload mmc 1${loadaddr} Image.gz sf 写${loadaddr} 0x240000${filesize} fatload mmc 1${loadaddr} imx8mp-evk.dtb sf 写${loadaddr} 0x1000000${filesize} fatload mmc 1${loadaddr} rootfs.img # initramfs (cpio.gz) sf 写${loadaddr} 0x1080000${filesize} ------闪烁后,重启板------------------ 从 u-boot 启动后,为 Linux 内核 (Image.gz)、设备设置环境变量树 (imx8mp-evk.dtb),rootfs.img。 sf probe 0 setenv loadaddr 0x40480000 // 核心 setenv fdt_addr 0x43000000 //dtb setenv initrd_addr 0x43800000 //rootfs setenvkernel_comp_addr_r 0x50000000 setenv kernel_comp_size 0x04000000 sf read${loadaddr} 0x240000 0xCD3CE2 sf read${fdt_addr} 0x1000000 0x14360 sf read${initrd_addr} 0x1080000 0xC04DB0 setenv bootargs"console=ttymxc1,115200 root=/dev/ram0 rw" setenv bootcmd 'sf probe 0; sf read${loadaddr} 0x240000 0xCD3CE2; sf read${fdt_addr} 0x1000000 0x14360; sf read${initrd_addr} 0x1080000 0xC04DB0; booti${loadaddr} ${initrd_addr} ${fdt_addr} ' saveenv ----------------------------------------------------------------------- 1. 使用 SD 卡 Wic 文件在分区(启动/根目录)上运行良好。 2.We genarated Two yocto images ==> 1.bitbake core-image-minimal-initramfs (generated initramfs.cpio.gz)这个 cpio.gx 使用这个 cmd mkimage-A arm-O linux-T ramdisk-d (来自 linux 用户指南)== > 2. 还从 yocto 中生成了使用 bitbake core-image-tiny 生成的微小 rootfs。 core-image-tiny-imx8mp-evk.tar.zst,该 tar 已解压缩到 SD 卡中的 EXT4 分区,并成功加载了微小的 rootfs。 3.但正如第二点所说,rootfs.img 也被放入了 SD 卡的 EXT4 根分区,但却无法加载 rootfs。 ------------------------------------------------------------------------------------------- 1. 这是启动 initramfs (rootfs.img) 的正确方法吗从 QSPI 直接连接 i.MX8M Plus EVK? ----------------------------------------------------------------------------------------------- 3. 有没有推荐的恩智浦参考镜像用于在 i.MX8MP(Linux 内核 (Image.gz)、设备上完全从 QSPI 启动内核和 initramfs树 (imx8mp-evk.dtb),rootfs.img)? 4.如何在 I.MX8MP 上从 QSPI 闪存加载 rootfs.img? Re: rootfs size for IMX8mini Yocto Linux <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> [email protected] 你好 以下是文档,描述了如何版本和使用分区。 分区用户手册 也许使用大尺寸图片会更容易些:-( 此致, 尤里。 Re: rootfs size for IMX8mini Yocto Linux <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,尤里、 谢谢您的帮助。但对于 此外,还可以使用parted之类的实用程序来版本小尺寸的 文件系统并调整部分大小。 如何做到这一点?我很难理解这一点。这是否意味着有一种名为"parted" 的工具可以做到这一点?还是别的什么? 我用"Yocto + parted 谷歌了一下,没有得到任何有用的信息。" 谢谢! Re: rootfs size for IMX8mini Yocto Linux <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好 无论如何,使用 Yocto 方法生成 Linux 系统需要 大量主机资源。如恩智浦Linux文档中所述,客户只需版本一次 文件系统,然后在没有Yocto环境的情况下重新编译U-启动和/ 或内核。此外,还可以使用parted之类的实用程序来构建小尺寸的 文件系统并调整部分大小。 此致, 尤里。
View full article
S32K312:如何设置芯片的低电压检测 你好,NXT 团队   我只能找到 LVRBLPEN,描述如下   LVRBLP 在 LPM 期间启用位控制 VD D_HV_B 功率域上的低压 RESET 检测 (LVRBLP) 在 LPM 中处于活动状态还是非活动状态   然而,312 引脚上没有 VDD_HV_B,这让我很困惑   顺祝商祺! 赵 Re: S32K312:How to set low voltage detection for chips 你好,彼得 感谢您的回复 我能这样理解吗,低压检测只能在 LPM 模式下关闭? 如果不能关闭,能否配置这个阈值? 我目前正在测试RESET将在2.8V左右触发信号 顺祝商祺! 赵 Re: S32K312:How to set low voltage detection for chips 你好 请问我是否要禁用低电压RESET功能,我需要操作哪个寄存器? 您无法在此设备上禁用低压检测。它会导致意想不到的行为,最后肯定会RESET。 我也认为没有理由这样做,因为我们只保证 uC 的运行符合规范。 顺祝商祺! Peter Re: S32K312:How to set low voltage detection for chips 你好,彼得 感谢您的回复请 问我是否要禁用低电压RESET功能,我需要操作 哪个寄存器? 看来将LVRBLPEN寄存器设置为0将阻止MCU在LPM模式下RESET,在其他模式下应该控制 哪个寄存器? 顺祝商祺! 赵 Re: S32K312:How to set low voltage detection for chips 你好 LVRBLPEN 控制 VDD_HV_B 功能域的低电压 RESET 检测在电源模式 (LPM) 期间是否保持活动状态。 术语 VDD_HV_B 是指内部电源功能域,而不是物理引脚。它是 MCU 内部高压功能域的一部分,为某些外设和逻辑模块供电。 以下是 S32K312 的功率域: 和 S32K312 的耗材表: 该手册在 S32K3xx 系列中很常见。因此,通常所有功能都是笼统描述的,然后有必要注意哪些功能对您的设备衍生产品真正有效。 顺祝商祺! Peter Re: S32K312:How to set low voltage detection for chips 你好,彼得 感谢您的回复 我目前的检测结果是 该芯片将直接在2.8V左右RESET,这是预期的 但是 5.8V 无法RESET 此中断必须配对,并且必须在中断本身内调用RESET函数 请问高低压RESET的不同表现是否归因于芯片的特殊设计 顺祝商祺! 赵 Re: S32K312:How to set low voltage detection for chips 你好 我能这样理解吗,低压检测只能在 LPM 模式下关闭?如果无法将其关闭,我们可以配置这个阈值吗? 我目前正在测试RESET将在2.8V左右触发信号 不能配置其阈值。恩智浦工厂对其进行了微调。 请遵守数据表中规定的操作条件。 顺祝商祺! Peter Re: S32K312:How to set low voltage detection for chips 你好 即使禁用了 LVDIE,设备仍将 RESET 为相同的 2.8 V 阈值。 这种行为(没有 ISR 输入并在低电压跳闸点立即 RESET)是预期的操作,还是低压检测应该能够在 RESET 之前执行其中断处理程序? 这是意料之中的行为。我不清楚 S32K3 是如何实现的,但通常有两套 LVD。一种触发信号中断,另一种在电压下降时触发信号RESET。 这就是你的 2.8 伏电压。因为中断没有意义。因为你的内存、内核执行、寄存器设置可能已经损坏。你也不会因为故障而中断任何操作。 顺祝商祺! Peter Re: S32K312:How to set low voltage detection for chips 你好 请问高低压RESET的不同表现是否归因于芯片的特殊设计 我不明白这个问题。 您可以在低压检测或 HVD 支持的标志上配置中断: 但是 5.8V 无法RESET 但是为什么要RESET呢?高电压不会像低电压一样导致设备故障。 1* - 最高 6.0 伏,使用寿命 10 小时;最高 7.0 伏,使用寿命 60 秒。 甚至可以在 7V 电压下运行。 请遵守数据表的绝对最大额定值。 顺祝商祺! Peter Re: S32K312:How to set low voltage detection for chips 你好 Peter 谢谢你的回复,抱歉,我之前可能没有明确我的问题。 当我启用高压检测中断启用 (HVDIE) 时,调试器可以在中断服务例程的电压约为 5.8 V 时停止。 但是,当我启用低压检测中断启用 (LVDIE) 时,MCU 会立即 RESET 于 ≈ 2.8 V,我永远无法进入 ISR。 即使禁用了 LVDIE,设备仍会在相同的 2.8 V 阈值处触发 RESET。 这种行为(没有 ISR 输入并在低压检测低电压跳闸点立即 RESET)是预期的操作,还是低压检测应该能够在 RESET 之前执行其中断处理程序? 致以最崇高的敬意 Zhao Re: S32K312:How to set low voltage detection for chips 你好 对于 RESET 级别的低压检测(在我的测试中以 2.8 V 跳闸的那个),数据表中是否列出了任何允许我移动其阈值的用户可见的微调位、寄存器字段或出厂配置选项,还是固定、不可屏蔽的电压监测? 客户看不到。此外,每个芯片都有自己的调节器校准值,这些校准值在恩智浦工厂进行修整,以满足规范要求。 对于中断级低压检测(应该更早触发的那个,在 3 V—4 V 左右),手册是否提供了可编程的寄存器场(例如LVDVSEL、LVDSEL 或类似),让我选择其确切的跳变点,如果可以,允许的步长/分钟-最大范围是多少? S32K3 (PMC‑LVDSC1) 上的中断级低压检测不提供 LVDVSEL 或 LVDSEL 等可编程阈值场。其跳闸点在出厂前已校准,无法通过软件进行调整。 如果两个阈值都有记录,请注明寄存器名称和位域;如果其中一个是硬接线,请说明哪一个是固定的 两者都无法让用户访问。 两个跳闸点都是硬接线。 顺祝商祺! Peter Re: S32K312:How to set low voltage detection for chips 你好, 我将 VDD 从 5 V 慢慢降低, 我预计中断电平低压检测将会在更高的阈值(3 V,3.2 V,不管配置如何)下触发,这样我的 ISR 才能在电源变得临界之前运行,只有在导轨最终达到 2.8 V 硬复位跳闸点时,MCU 才会 RESET。 对于 RESET 级别的低压检测(在我的测试中以 2.8 V 跳闸的那个),数据表中是否列出了任何允许我移动其阈值的用户可见的微调位、寄存器字段或出厂配置选项,还是固定、不可屏蔽的电压监测? 对于中断级低压检测(应该更早触发的那个,在 3 V—4 V 左右),手册是否提供了可编程的寄存器场(例如LVDVSEL、LVDSEL 或类似),让我选择其确切的跳变点,如果可以,允许的步长/分钟-最大范围是多少? 如果两个阈值都有文件记录,请注明寄存器名称和位字段;如果其中一个是硬连线,请说明哪个是固定的 最佳问候, Zhao Re: S32K312:How to set low voltage detection for chips 您好 以HVD为例,电压调节至6V,根据MCAL配置项的描述,PMC中断会在HVDAF寄存器被置1时触发,我在触发POWER_IP_E_ISR_HIGH_VOLTAGE事件后在McuErrorIsrNotification回调函数中执行了复位操作,复位后看到HVDAF寄存器被清0,但不会再被置1,所以PMC中断只会触发一次,只执行了一次复位操作,请问这个现象是正常的吗 顺祝商祺 liao
View full article
What could be the reason for the ABIST2_EXT self-test failure of the S32K3X4EVB-T172? I am using the S32K3X4EVB-T172 for development. I tried using Sbc_fs26_PerformAbist2Check to check: SBC_FS26_MOR_VPRE = 0 SBC_FS26_MOR_VCORE = 1 SBC_FS26_MOR_LDO1 = 2 SBC_FS26_MOR_LDO2 = 3 SBC_FS26_MOR_TRK1 = 4 SBC_FS26_MOR_TRK2 = 5 SBC_FS26_MOR_VREF = 6 SBC_FS26_MOR_VEXT = 7 However, I found that only Sbc_fs26_PerformAbist2Check(SBC_FS26_MOR_VEXT) makes ABIST2_PASS of FS_DIAG_SAFETY1 show as 0 / ABIST2 Fail or not executed, but I don't know why? Could the issue be due to an incompatible OTP configuration of the FS26 part number PFS2613AMDA2AD used in the S32K3X4EVB-T172, or is it a faulty FS26 IC? Re: What could be the reason for the ABIST2_EXT self-test failure of the S32K3X4EVB-T172? I confirmed on EVB that it's the OTP that's causing it, same as I said before. If the OTP turns off the VMON behind it, you don't need to configure the bit of the corresponding channel. Re: What could be the reason for the ABIST2_EXT self-test failure of the S32K3X4EVB-T172? Yes, when executing ABIST2 self-tests, only ABIST2_EXT fails and shows ABIST2_PASS = 0, which may be a failure or not executed, but I can't think of a reason, but all other ABIST2 self-tests work and show 1 for PASS = ABIST2_PASS.
View full article
支持 S32K344 的 MATLAB 和 S32DS 您好,先生, 我正在尝试为 S32K344 制作一个简单的版本模型,并使用 S32 配置工具对其进行配置。但是,它并没有像预期的那样工作,我觉得我可能遗漏了一些步骤。 我已经查看了恩智浦网站上的论坛和视频,但仍然无法解决这个问题。 我附上了一些我的工作截图,供您审阅。 我恳请您就正确的程序或我可以遵循的任何文件提供指导。非常感谢你们的支持。 谢谢! Re: Support on MATLAB and S32DS for S32K344 你好 我检查了您所附的图片,似乎您正确地将 PTB26 配置为输出引脚。 您遇到的问题是,在应用程序刷新到板后,PTB26 的逻辑电平仍然很低。我说得对吗? 为了更好地理解这个问题,你能告诉我你正在使用的开发板的确切模型吗?您安装的是什么版本的 S32K3?您使用的是哪个版本的 MATLAB? 顺祝商祺! 索林-伊万尼德-班奇拉 Re: Support on MATLAB and S32DS for S32K344 你好 我昨天漏查了一件事。 除了引脚和 DIO 元器件外,您还需要将端口元器件配置为使用指定的引脚。由于您使用的是旧版本的工具箱,端口引脚不会根据引脚配置自动更新(这也是它能在 S32DS 中工作的原因)。 总而言之 1。打开配置项目并导航到 Port 元器件。 2.在Dio 端口容器中,添加一个新的端口引脚 ,其 MSCR 为所需引脚的 MSCR(在本例中,对于 PTB28,MSCR 为 60)。 如果这能解决你的问题,请告诉我。 顺祝商祺! 索林-伊万尼德-班奇拉 Re: Support on MATLAB and S32DS for S32K344 感谢您的回复。 所需的详细信息请参见下文: MATLAB 版本:R2022a 开发板:S32K344-172 S32K3 软件包版本:1.6 与此同时,我们还使用 PTA27 进行了测试,但观察到了相同的行为。这让我们怀疑在 DIO 配置和引脚配置之间可能缺少一个环节。我们恳请就正确的程序提供指导,以确保不遗漏任何配置步骤。 关于我前面提到的一点:当我说它可以使用"嵌入式代码时," ,我的意思是我们通过 S32DS 平台使用嵌入式 C 代码测试了相同的逻辑,在这种情况下,引脚的表现与预期完全一致。该问题仅在使用 MATLAB/Simulink 生成的代码时出现。 Re: Support on MATLAB and S32DS for S32K344 是的,现在 Dio 的问题已经解决,而且工作正常。 Re: Support on MATLAB and S32DS for S32K344 你好 我们刚刚发布了 S32K3 工具箱的新版本 (1.8.0)。如果你想升级到最新版本,请前往 MATLAB 中的插件管理器并搜索 nxp_support_package_s32K3。安装支持软件包后,你可以运行 GettingStarted.mlx 脚本,该脚本将指导你安装最新版本。 顺祝商祺! 索林-班奇拉 Re: Support on MATLAB and S32DS for S32K344 您好,感谢您的回复。 您提到的是旧版本的软件。为了便于配置,你能否与我们联系应该使用哪个版本? Re: Support on MATLAB and S32DS for S32K344 你好,@chaudharimohit73、 如果建议的解决方案解决了您的问题,请告诉我。 顺祝商祺! 索林-班奇拉 Re: Support on MATLAB and S32DS for S32K344 您好, DIO 配置成功后,我现在正试图配置 CAN。我想使用混合标准报文和扩展报文的 CAN。 能否请您指导我完成配置步骤?
View full article