Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
S32G399 PCIe 无法发送 TLP 数据包 如图所示,请帮帮我。目前,我正在使用 S32G399A 芯片,并通过 PCIe 接口将其连接到 FPGA。在这种配置中,S32G399A 行动 RC,FPGA 行动 EP。我现在遇到的问题是可以访问FPGA的配置空间,但是bar0的内存空间无法触发信号TLP。 下图显示了"dmesg" 在操作系统中打印的信息。在"出境" 部分,显示的是 6OB 和 4IB。应如何配置出站和入站,以及应在何处配置? LONGGANGSU_0-1756785984145.png 另外,原地址 基地址 目标地址分别代表什么? Re: S32G399 PCIe cannot send TLP packets 你好,@龙岗素 是的,根据测试,在当前的电路板支持包驱动程序下,RC 会根据 EP 的 BAR 设置自动将该区域映射到 32 位/64 位地址空间。 BR 切宁 Re: S32G399 PCIe cannot send TLP packets 您是说 PCIe 位宽与 EP 有关吗?如果 EP 端是 64 位,那么是否无需对 RC 端进行任何修改? Re: S32G399 PCIe cannot send TLP packets 你好,@龙岗素 感谢您的回复。 S32G PCIe RC 支持 64 位地址访问 例如,我使用另一个 S32G 板作为 EP,修改了 EP 端的 BAR 的相应位,然后从 RC 端的输出启动 RC 后,映射的一个区域是 " 区域 0:4900000000(64 位,可预取)[size=1M] " 的内存,可以通过 64 位地址访问。 详细修改方法可查看自己的 PCIe EP 驱动程序/RM。 BR 切宁 Re: S32G399 PCIe cannot send TLP packets 请问,如何将 PCIe RC 模式配置为 64 位宽? 目前,我使用 32 位宽度与 FPGA 通信。 Re: S32G399 PCIe cannot send TLP packets 你好,@龙岗素 让我在这里继续支持它。 从显示的日志来看,有 6 个 OB 窗口和 4 个 IB 窗口。 1.OB 窗口和 IB 窗口的数量通常取决于硬件 IP,您认为这些窗口的数量是否足够? 关于 iatu 的配置,您可以查看驱动程序/pci/controller/dwc 下的驱动程序进行设置。 2。原始地址可以是来自内存功能域的请求中的地址,基本地址可以是主机地址空间中该区域的参考点,而目标地址是 PCIe 功能域中的起点。 BR 切宁 Re: S32G399 PCIe cannot send TLP packets @cehnyin_h Re: S32G399 PCIe cannot send TLP packets 您好,@LONGGANGSU 感谢您的回复。 我发现这个问题也是通过其他渠道提出的,请直接向那里求助。 BR 切宁 Re: S32G399 PCIe cannot send TLP packets 你好,@龙岗素 谢谢你的帖子。 1。看来你在用电路板支持包,哪个版本? 2。哪些串行器用于连接设备,使用 PCIe x1? 3.所提到的快照是指哪份文件? BR 切宁
View full article
引导过程 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本节介绍各种非易失性存储器类型或 UART 的 LPC32x0 启动过程。 根据启动设备,启动映像大小可能会受到限制。此限制可能会阻止所需的映像最初加载和执行 - 而是需要先加载较小的引导加载程序,然后使用它来加载和运行功能更强大的引导加载程序或应用程序。 LPC32x0 启动选项 LPC32x0 支持从小块和大块 NAND FLASH、SPI EEPROMS 或 FLASH、NOR FLASH 以及通过 UART 启动。在生产系统中,不使用 UART 启动方法。然而,UART 启动方法在早期电路板调试中非常有用, LPC32x0 的启动顺序如下:UART、SPI、NOR、NAND。可以禁用 UART 启动以减少启动时间。在尝试下一个启动设备之前,将先尝试每个启动设备。如果启动 ROM 找到将设备标识为可启动的特殊启动模式,则该设备可启动。系统可能有 SPI FLASH、NOR FLASH 和 NAND FLASH,并且尽管首先尝试了 SPI 和 NOR 方法,但只能从 NAND FLASH 启动。(例如,Phytec 3250 板具有所有这 3 个启动设备,但通常从 NAND FLASH 启动)。 当LPC32x0芯片复位时,内部启动ROM被执行。它查询每个设备以寻找用于标识设备是否可启动的特殊启动模式。第一个返回正确模式的设备将被引导 ROM 用作可引导设备。然后,引导 ROM 将从可引导设备(NAND 和 SPI FLASH)复制数据或将控制权转移到可引导设备(NOR FLASH)。 以下章节将解释每种启动方法。有关 LPC32x0 启动过程的更多信息,请参阅 LPC32x0 用户指南。 UART启动 UART 启动选项允许将二进制文件下载到电路板中,然后在 NAND、SPI 或 NOR FLASH 中运行任何代码之前执行。这对于将新图像刻录到 FLASH、测试简单应用程序或从损坏的启动代码中恢复主板很有用。 UART 启动与 CDL 包中的刻录工具一起使用,将引导加载程序编程到启动设备中。UART5 支持 UART 启动选项,因此新设计应该使 UART5 可用于调试。对于完全从 IRAM 运行的系统,这允许系统通过 UART 下载图像,一旦执行该图像,即可提供交互式访问。下载的交互式程序可用于带宽或内存测试、寄存器转储、进一步的图像加载或其他功能。 可以使用此启动方法使用S1L的初始版本来测试不同的 SDRAM 配置(使用附带的 SDRAM 初始化代码)。使用这种方法,可以大大简化 SDRAM 代码的启动和调试(推出新电路板时最棘手的问题之一)。 NOR FLASH启动 在从 NOR FLASH 启动的系统上,ARM 内核直接从地址 0xE0000004 开始执行 NOR FLASH 设备中的代码。地址 0xE0000000 处的前 4 个字节用于引导 ROM 所需的特殊引导模式值,以将设备标识为可引导并提供引导宽度(8、16 或 32 位)。 SPI FLASH/EEPROM启动 在从 SPI 启动的系统上,一个小图像从偏移量为 0x8 的 SPI EEPROM 或 FLASH 设备复制到地址为 0x00000000 的 IRAM 中。前 4 个字节用于引导 ROM 所需的特殊引导模式值。接下来的 4 个字节用于指定在 SPI 设备中偏移量 0x8 处加载的图像的大小。将图像加载到 IRAM 后,控制权转移到地址 0x00000000。 使用此方法可以加载的最大映像启动大小为 54K。 NAND闪存启动 在从 NAND FLASH 启动的系统上,一个小图像从 NAND 设备的块 0 或块 1 复制到地址 0x00000000 的 IRAM 中。NAND FLASH 启动的最大可启动映像大小为 54K,或 1 个块减 1 页,以较小者为准。引导块的第一页用于存储引导信息,例如引导映像大小和引导序列所用的引导 ROM 所需的值。 对于小块 NAND(每块 32 页,每页 512 字节),并且块的第一页专用于启动 ROM 启动信息,则最大启动大小为 31 页,每页 512 字节,即 15.5K。对于大块 NAND(64 页,每页 2K 字节),最大启动大小为 54K 字节。 启动 ROM 始终使用 MLC NAND 控制器进行 NAND 启动。这就需要将由引导 ROM 从 NAND 引导的引导映像通过 MLC NAND 控制器或 MLC NAND 控制器所需的 ECC 算法编程到 NAND 中。
View full article
Installing a Zephyr SDK version The Zephyr SDK is a set of build tools for building Zephyr applications. It includes GCC and CMake, and each Zephyr release is tied to a specific Zephyr SDK version. This version is noted in the SDK_VERSION file in the Zephyr repository. Using the recommended Zephyr SDK version is important—mismatched versions can cause build errors. For example, Zephyr v4.1 specifies Zephyr SDK v0.17.0. If you use Zephyr SDK v0.17.2 (meant for Zephyr v4.2) with Zephyr v4.1, you’ll encounter build errors. If you need to build apps for Zephyr v4.1, install Zephyr SDK v0.17.0. You can install multiple Zephyr SDK versions and switch between them at build time (see instructions below). Full vs. Minimal Install Full Install: Includes all toolchains for every supported SoC architecture. Recommended for beginners but requires more disk space and download time. Minimal Install: Lets you choose only the toolchains you need. Saves space and time. For Minimal install, run the setup.cmd script to select which tools to install.  On NXP boards, select: Register Zephyr SDK CMake package Install host tools aarch64-zephyr-elf (64-bit ARM) arm-zephyr-eabi (32-bit ARM, including NXP MCUs) optional  xtensa-nxp… (Cadence Tensilica DSP cores) Installing Zephyr SDK These steps cover installing the Zephyr SDK using the MCUXpresso Installer, West from CLI, or manual download. Installing with MCUXpresso Installer The MCUXpresso Installer started supporting packs for Zephyr with Zephyr v4.2.  Each pack installs the matching Zephyr SDK version (e.g., v4.2 pack installs SDK v0.17.2).  This option Installs a minimal set of tools for NXP development. dereksnell_0-1763125437139.png The MCUXpresso Installer does not support older Zephyr SDK versions. For v0.17.1 or earlier, use West or manual install. Installing with West CLI Zephyr Project added Zephyr SDK installation to West. For CLI, Activate your Python Virtual Environment, then run: west sdk install --version 0.17.0   If --version is omitted, West uses the version in the SDK_VERSION file of the Zephyr repo. By default, installs the Full package. For minimal, add -i . Installing by Manual Download Download the Zephyr SDK from the https://github.com/zephyrproject-rtos/sdk-ng/releases. Choose Full or Minimal for your host OS. Extract to your user folder (default location for West and MCUXpresso): Windows: C:\Users\ \zephyr-sdk-0.17.0 Ubuntu: /home/ /zephyr-sdk-0.17.0 Selecting Zephyr SDK Version Multiple Zephyr SDK versions can coexist. West uses the latest by default, but you can override it: VS Code: When importing examples, select the Zephyr SDK version in the wizard. dereksnell_1-1763126099481.png CLI: Set the environment variable ZEPHYR_SDK_INSTALL_DIR  before building.  This command sets that variable in Ubuntu: export ZEPHYR_SDK_INSTALL_DIR="/home/ /zephyr-sdk-0.17.0" Or in Windows: set ZEPHYR_SDK_INSTALL_DIR= C:\Users\ \ zephyr-sdk-0.17.0   Return to Zephyr Knowledge Hub    
View full article
如何使用QorIQ LS系列处理器设计高能效产品 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议涵盖两个相关主题。第一部分将介绍新 QorIQ LS1 产品线的概述。会议的第二部分将探讨为新型 LS1021A QorIQ 处理器系列设计强大的电源分配网络的关键考虑因素。以新的 LS1021A 电路板为案例研究,我们将回顾电路板上使用的关键因素,例如效率、设计简化和电源系统管理技术,并讨论它们的使用方式和原因。本课程将帮助您了解设计电源分配网络时的关键概念。 由 Linear Technology 的 Sharad Khanal 和 Freescale 的 Satoshi Iida 介绍 2015 年 3 月 26 日在 DwF 硅谷发表 会话 ID:AMF-SNT-T1040 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议涵盖两个相关主题。第一部分将介绍新 QorIQ LS1 产品线的概述。会议的第二部分将探讨为新型 LS1021A QorIQ 处理器系列设计强大的电源分配网络的关键考虑因素。以新的 LS1021A 电路板为案例研究,我们将回顾电路板上使用的关键因素,例如效率、设计简化和电源系统管理技术,并讨论它们的使用方式和原因。本课程将帮助您了解设计电源分配网络时的关键概念。 由 Linear Technology 的 Sharad Khanal 和 Freescale 的 Satoshi Iida 介绍 2015 年 3 月 26 日在 DwF 硅谷发表 会话 ID:AMF-SNT-T1040 Layerscape 处理平台
View full article
Video: Install S32R45 Development Package (view in My Videos)
View full article
恩智浦的xEV能源管理解决方案 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 中国预计到2020年,每家汽车制造商将生产和销售12%的零排放电动汽车,大城市将禁止经典内燃机汽车,汽车制造商将以更快的速度推出新型电动汽车。本次会议将概述影响电动汽车市场的主要力量,描述主要的架构方法和系统组件,以及这对恩智浦具有哪些增长潜力。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 中国预计到2020年,每家汽车制造商将生产和销售12%的零排放电动汽车,大城市将禁止经典内燃机汽车,汽车制造商将以更快的速度推出新型电动汽车。本次会议将概述影响电动汽车市场的主要力量,描述主要的架构方法和系统组件,以及这对恩智浦具有哪些增长潜力。
View full article
应用FXTH8700作为TPMS发射器 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> FXTH87xx 是一款用于监测轮胎压力和温度的传感器。它包含压力和温度传感器、X 轴和 Z 轴加速度计、微控制器、低频接收器和射频发射器。 在一个包内。 最近有客户咨询如何将 FXTH87xx 与英飞凌TPMS 接收器连接。我们经过一系列测试和验证,最终成功连接。本文档旨在介绍如何用 FXTH87xx 替换外部发射器。本文将以示例的方式,向用户介绍如何使用 R&S 或 Anritsu 提供的仪器检测和解码未知传感器的发射器数据包,然后将这些发射器数据包复制到 FXTH87xx 中,从而形成 315MHz、433.92MHz 的 TPMS 接收器。 发射器和接收器解决方案。采用 FXTH87xx 的客户可以使用类似的 概念。 压力传感器
View full article
AUT-N1773 - セキュア V2X イントロ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 米国政府が米国での車間通信の義務化を準備する中、自動車業界は、この専用短距離通信技術をサポートする車を提供する準備を進めています。これが道路利用者にどのようなメリットをもたらすか、ITS-G5規格が世界中でどのように展開されているか、これを市場に投入する際に自動車業界が直面する課題、およびこの展開におけるNXPのリーダーシップの役割について見ていきます。 ビデオプレゼンテーションを見る <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 米国政府が米国での車間通信の義務化を準備する中、自動車業界は、この専用短距離通信技術をサポートする車を提供する準備を進めています。これが道路利用者にどのようなメリットをもたらすか、ITS-G5規格が世界中でどのように展開されているか、これを市場に投入する際に自動車業界が直面する課題、およびこの展開におけるNXPのリーダーシップの役割について見ていきます。 ビデオプレゼンテーションを見る セキュアなコネクテッド&自動運転車
View full article
INS-N2085 Simulity Labs:更大并不一定更好 - 使用 eSIM 节省参考设计中的空间 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 使用 eSIM 节省参考设计中的空间。eSIM(eUICC)及其对芯片组制造商和设备 OEM 的意义。如今,消费者想要更大的屏幕、更长的电池寿命、更大的存储空间、更丰富的媒体内容等等。eSIM 将带来的 (R) 变革是独一无二的、颠覆性的,可以与黑白电视变成彩色电视的时代相媲美。OEM 正在缓慢采用,但就像黑白电视时代一样,网络尚未准备好,就 eSIM 而言,移动运营商也尚未准备好! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 使用 eSIM 节省参考设计中的空间。eSIM(eUICC)及其对芯片组制造商和设备 OEM 的意义。如今,消费者想要更大的屏幕、更长的电池寿命、更大的存储空间、更丰富的媒体内容等等。eSIM 将带来的 (R) 变革是独一无二的、颠覆性的,可以与黑白电视变成彩色电视的时代相媲美。OEM 正在缓慢采用,但就像黑白电视时代一样,网络尚未准备好,就 eSIM 而言,移动运营商也尚未准备好! 洞察与创新
View full article
TN013_LPCOpen UART RB示例Tx问题 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> lpcopen。uart #ring_buffer
View full article
DwF 深圳 - 2015-06-25 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 汽车和联网汽车 设计、软件和服务 IAR:C 环境下的安全 智能工业 洞察与创新 智能网络
View full article
DwF物联网无线模块解决方案 - 广州 - 2015-06-11 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 智能家居和建筑 实践研讨会:物联网 Wi-Fi 模块开发套件 - 快速入门 智能网络
View full article
Technical Report Valasi.pdf The Freescale Cup High School Challenge technical report from team Valasi from Stredni Skola informatiky, Elektrotechniky a Remesel Roznov (Czech Republic) The Freescale Cup High School Challenge technical report from team Valasi from Stredni Skola informatiky, Elektrotechniky a Remesel Roznov (Czech Republic)
View full article
Example MPC5566EVB PinToggleStationery CW210 ******************************************************************************** * Detailed Description: * Application performs basic initialization, setup PLL to maximum allowed freq., * initializes interrupts, blinking one LED by interrupt, second LED by software * loop, initializes and display notice via UART terminal and then terminal ECHO. * The example configures the device for maximum performance (OPTIMIZATIONS_ON). * Its intention is to offer advanced startup code additional to CW stationery. * ------------------------------------------------------------------------------ * Test HW:        MPC5566EVB * MCU:            PPC5566MVR132 * Fsys:           144/132/112/80/12 MHz * Debugger:       Lauterbach Trace32 *                 PeMicro USB-ML-PPCNEXUS * Target:         RAM, internal_FLASH * Terminal:       19200-8-no parity-1 stop bit-no flow control on eSCI_A * EVB connection: TPU_PORT_37 -> USER_LED_8 *                 TPU_PORT_38 -> USER_LED_7 (to see blinking LEDs)    * ******************************************************************************** ******************************************************************************** * Detailed Description: * Application performs basic initialization, setup PLL to maximum allowed freq., * initializes interrupts, blinking one LED by interrupt, second LED by software * loop, initializes and display notice via UART terminal and then terminal ECHO. * The example configures the device for maximum performance (OPTIMIZATIONS_ON). * Its intention is to offer advanced startup code additional to CW stationery. * ------------------------------------------------------------------------------ * Test HW:        MPC5566EVB * MCU:            PPC5566MVR132 * Fsys:           144/132/112/80/12 MHz * Debugger:       Lauterbach Trace32 *                 PeMicro USB-ML-PPCNEXUS * Target:         RAM, internal_FLASH * Terminal:       19200-8-no parity-1 stop bit-no flow control on eSCI_A * EVB connection: TPU_PORT_37 -> USER_LED_8 *                 TPU_PORT_38 -> USER_LED_7 (to see blinking LEDs)    * ******************************************************************************** General
View full article
如何为 KSDK 和 PEx 项目的新 MQX RTOS 添加 MFS 和 Shell 支持 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 大家好, 基于如何使用 KDS 和 KSDK 将 RTCS 添加到处理器专家项目,您可以在下面找到使用 KSDK1.2 和处理器专家将 MFS 和 Shell 包含到 KDS3.0 项目的步骤。 感谢Carlos_Musich提供的出色文档以及本文档的草稿。 此致, 艾萨克·阿维拉 文件系统 回复:如何为 KSDK 和 PEx 项目的新 MQX RTOS 添加 MFS 和 Shell 支持 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 感谢 Isaac 的演讲。 我使用 Shell 和适用于 K60D100M micro 的 shell 创建了 KDS3.0 项目。KSDK 1.2.0。 我遇到的唯一问题是构建变量。 在 Properties\C/C++ Build\Build Variables 中缺少 KSDK_PATH(参见插入的图像)。 我创建了几个任务并在调试器下运行应用程序。调试器下没有 TAD 信息。 我知道,只需查看 TAD 信息,调试器就应该在运行后在任务内部的某个地方停止。 也许你已经解决了这个问题。 谢谢! 列昂尼德·博尔夏克。
View full article
示例 S32K118-SRAM-keep_data_over_SW_reset v0_1 S32DS.ARM.2.2 ******************************************************************************** * Detailed Description: * The purpose of this example is show how to keep data in SRAM memory over SW * reset. SW reset is triggered by pressing the SW3 button on the S32K118EVB. * Reset is delayed for 514 LPO cycles. In the RCM interrupt, SRAMU_RETEN is * cleared allowing to retain SRAM data during the reset. After SW reset, * SRAMU_RETEN is set to allow accesses to SRAM. * File startup_S32K116.S in modified to skip ECC RAM initialization for SW reset * source. To check whether stored data stayed unmodified in the SRAM, specified * address is read and the LED lights up. * ------------------------------------------------------------------------------ * Test HW: S32K118EVB-Q064 * MCU: S32K118 LAMLH 0N97V QTZE1802B * Fsys: fsys = 48MHz * Debugger: Lauterbach Trace32 * Target: Debug * Terminal: 19200-8-no parity-1 stop bit-no flow control * EVB connection: default ******************************************************************************** Revision History: Ver Date Author Description of Changes 0.0 May-17-2023 David Tosenovjan Initial version *******************************************************************************/
View full article
Importing a Wrapped Key Blob Using PSA Crypto APIs on RW612 Introduction In a previous article, we demonstrated how to import an RFC3394-wrapped key blob into ELS by manually performing the following operations: Deriving NXP_DIE_KEK_SK using CKDF-SP800-108 Importing the wrapped blob with mcuxClEls_KeyImport_Async() Deleting the temporary KEK after import While this approach provides full visibility into the underlying ELS operations, applications using the PSA Crypto API can achieve the same result with significantly less code. This article demonstrates how to use psa_import_key() together with PSA_KEY_LOCATION_S50_RFC3394_STORAGE to import a wrapped key blob stored in OTP. The PSA Oracle driver transparently handles the secure key loading sequence, including KEK derivation, key unwrapping, ELS slot management, and cleanup. Prerequisites FRDM-RW612 Key blob wrapped using RFC3394 format using HSM_STORE_KEY Key blob programmed to OTP fuses using LoadKeyBlob command. Required Headers: #include "mcux_els.h" #include "psa/crypto.h" #include "mcuxClPsaDriver_Oracle_Interface_key_locations.h" #include "fsl_romapi_otp.h" Step 0 – Read the Wrapped Key Blob from OTP The example reads the blob directly from OTP memory. static psa_status_t read_blob_from_otp(uint8_t *blob_data, uint32_t blob_length, uint32_t starting_fuse_index) { status_t otp_status; uint32_t num_fuse_words = blob_length / 4u; PRINTF("Reading %d fuse words starting from index %d\n", num_fuse_words, starting_fuse_index); otp_status = otp_init(DEFAULT_SYSTEM_CLOCK); if (otp_status != kStatus_Success) { PRINTF("Error: otp_init failed: 0x%x\n", otp_status); return PSA_ERROR_HARDWARE_FAILURE; } for (uint32_t i = 0u; i < num_fuse_words; i++) { uint32_t fuse_word = 0u; otp_status = otp_fuse_read(starting_fuse_index + i, &fuse_word); if (otp_status != kStatus_Success) { PRINTF("Error: Failed to read fuse word %d, status: 0x%x\n", starting_fuse_index + i, otp_status); return PSA_ERROR_HARDWARE_FAILURE; } /* Store fuse word as 4 bytes in little-endian order */ blob_data[i * 4u + 0u] = (uint8_t)((fuse_word >> 0u) & 0xFFu); blob_data[i * 4u + 1u] = (uint8_t)((fuse_word >> 8u) & 0xFFu); blob_data[i * 4u + 2u] = (uint8_t)((fuse_word >> 16u) & 0xFFu); blob_data[i * 4u + 3u] = (uint8_t)((fuse_word >> 24u) & 0xFFu); PRINTF(" Fuse[%d] = 0x%08X\n", starting_fuse_index + i, fuse_word); } PRINTF("Blob data read from OTP successfully\n"); return PSA_SUCCESS; } Each fuse word contains four bytes.   These words are assembled into a contiguous buffer: blob_data[i * 4 + 0] = (fuse_word >> 0) & 0xFF; blob_data[i * 4 + 1] = (fuse_word >> 8) & 0xFF; blob_data[i * 4 + 2] = (fuse_word >> 16) & 0xFF; blob_data[i * 4 + 3] = (fuse_word >> 24) & 0xFF; The resulting buffer contains the RFC3394 wrapped key. Step 1 – Configure PSA Key Attributes Before importing the blob, PSA key attributes must describe how the key should be managed. The most important configuration is the key location: psa_set_key_lifetime( &attributes, PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION( PSA_KEY_PERSISTENCE_VOLATILE, PSA_KEY_LOCATION_S50_RFC3394_STORAGE)); The PSA_KEY_LOCATION_S50_RFC3394_STORAGE location informs the Oracle driver that: The provided data is an RFC3394-wrapped key blob. The blob requires unwrapping before use. NXP_DIE_KEK_SK must be derived automatically during key loading. In this example we used an AES 128-bit key. The key type and size must match the wrapped key: psa_set_key_type(&attributes, PSA_KEY_TYPE_AES); psa_set_key_bits(&attributes, 128); Usage permissions are then assigned: psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT); Finally, specify the algorithm: psa_set_key_algorithm( &attributes, PSA_ALG_ECB_NO_PADDING); Step 2 – Import the Wrapped Blob The blob is imported using a single PSA API call: psa_import_key( &attributes, blob_data, blob_length, &key_handle); For developers familiar with the low-level ELS implementation, this single call effectively replaces: derive_nxp_die_kek_sk() import_wrapped_key_blob() delete_key_from_slot() At this point, PSA stores the wrapped blob and returns a key handle: psa_key_id_t key_handle; The returned handle is subsequently used for cryptographic operations. Next Steps At this point, the wrapped key blob has been successfully imported into the target ELS key slot, and the temporary  NXP_DIE_KEK_SK  has been removed. The imported key is now available for use by ELS-protected cryptographic operations without exposing the underlying key material to application software. The next step is to validate the imported key by performing the operation it was provisioned for.  For this example, we used AES-ECB encryption: psa_cipher_encrypt( key_handle, PSA_ALG_ECB_NO_PADDING, plaintext, sizeof(plaintext), ciphertext, sizeof(ciphertext), &ciphertext_length); Step 4 – Cleanup Once the key is no longer required, destroy it using: psa_destroy_key(key_handle); This releases the PSA key object and allows the Oracle driver to clean up any associated secure resources. Unlike the low-level ELS implementation, the application does not need to explicitly manage ELS keyslots. PSA vs Direct ELS Implementation Direct ELS API PSA Crypto API Derive KEK manually Automatic Import blob manually Automatic Manage keyslots Managed by Oracle Delete temporary KEK Automatic Greater control Simpler application code Higher implementation effort Faster integration Both approaches ultimately leverage the same secure hardware mechanisms within RW612. The PSA approach simply abstracts the underlying ELS operations behind a standardized cryptographic interface.
View full article
s32k322 EMAC RMII 问题 您好, 我们 我们 使用 的 恩智浦 S32K322 微控制器 并 经历 以太网 以太网 接收 问题: TX 传输 正常工作 正常、 但 RX 接收 不 不 功能.关于 硬件 硬件方面 硬件方面、 硬件方面 RMII 接口 是 直接 与 直接连接到 以太网 以太网 交换机、 并且 我们 我们 验证了 开关 电路板 PCB 迹线 长度 匹配 和 阻抗 控制 满足 设计 设计 符合设计要求。用于 功率 排序、 我们 目前 确保 手动 确保 开关 开关 完成 其 开机 之前 在 S32K322。 测试期间 测试期间、 我们 我们 开关 开关 发送 ARP 数据包 并 已 测量到 测量了 与 RX 信号 波形 用 示波器 示波器、 所有 所有 所有 看起来 正确。然而 然而 S32K322 EMAC 不 不 进入 接收 接收 中断 (与 相同 波形 成功 成功 接收到 在 另一个 ECU 平台)。我们 我们还 还 检查了 我们还检查了 EMAC 接收 和 错误 计数器 中的 寄存器中的 和错误计数器、 和 都 读取 为 零.所有 时钟 频率 配置 已 已 时钟频率配置 频率配置 正确。 正确。请 帮助 提供 额外的 故障排除 意见 或 建议。   顺祝商祺! 李永祥 Re: s32k322 EMAC RMII issue 你好@PavelL、 感谢您的答复。我们已经检查了所提供的一些要点。 只有在交换机完全启动并运行(确认与其他端口通信)后,才会接通 MCU 的电源。我们增加了图中所示的延迟,但无济于事。 我们检查了时钟并重新配置了它,但 RX 计数器仍然没有显示新的计数。 在外设配置中选择 RMII 模式。 交换机可以从 TX 方向正确接收和转发 RMII 帧到其他端口,因此交换机配置似乎是正确的。我们还扫描了交换机和 MCU RX0/RX1 信号提供的 TXCLK,波形看起来很好,交换机的帧没有明显问题。 我们正在对照参考示例进行交叉检查。 我们使用的是 RTD 6.0.0。测试项目附后,以供验证(代码混乱,敬请原谅,这是测试固件)。   顺祝商祺! 李永祥 Re: s32k322 EMAC RMII issue 你好@YongxiangLi、 有几个方面看起来值得首先检查。 由于发送工作正常,但 RX 数据包计数器和 RX 错误计数器都保持为 0,我目前怀疑 EMAC 根本无法识别有效的 RMII 接收活动,而不是接收帧后再丢弃它们。   最重要的检查是   1) 初始化期间的 RMII 参考时钟计时 在执行 emac/引脚/时钟初始化之前,请验证来自交换机的外部 50 MHz RMII 参考时钟是否已经存在并稳定在 S32K322 引脚上。很可能需要增加较小的延迟,正如 S32K3-T-BOX 所建议的那样。另请注意下面代码片段的第一行: PavelL_0-1781082817961.png 2) MCU 内部的 RMII 时钟配置 对于 S32K3 RMII,MAC 在 EMAC_MII_RMII_TX_CLK 上使用 50 MHz 的 RMII 参考时钟,而外部 RX_CLK 引脚不在 RMII 模式下使用。但是,仍需要正确配置内部 EMAC RX/TX 时钟(100 Mbps 通常为 25 MHz,源自 50 MHz RMII 参考时钟)。请仔细检查 EMAC 时钟多路复用器/分频器设置。 用于 S32K3 的 RMII 时钟 3) RMII 模式选择 请确认 gmac 驱动程序(用于 EMAC 外设)确实配置为 RMII 模式(而非 MII),并且在初始化过程中尽早进行了选择。   4) 开关侧 RMII 模式 由于您的 MAC 直接连接到交换机端口,而不是分立的 PHY,因此还请验证交换机端口是否真正配置为 RMII/rev-RMII 运行,并且正在向 MCU 驱动正确的 50 MHz 参考时钟。   5) 或者,您可以将您的项目与我的 S32K344 EMAC lwIP 项目进行比较 S32K 示例   为了缩小范围,请与我们分享一下: - 您使用的是哪个版本的 S32K3 RTD 驱动程序? - 能否至少分享您项目的简约版本或 mex 文件?   顺祝商祺! 帕维尔 Re: s32k322 EMAC RMII issue 你好@YongxiangLi、 我仔细审查了您的项目,对每个细节都格外关注。我实在想不出Rx为什么对你不起作用。虽然有些细节可以调整,但这些调整微乎其微。 您使用的是哪种 VDD_HV_B? 作为诊断步骤,您还可以尝试在 GMAC 驱动程序中启用混杂模式。 这样,MAC 就能接受所有传入帧,而不受目标 MAC 地址过滤的限制,这有助于判断问题是与帧过滤相关,还是接收路径在更底层出现了故障。 如果启用混杂模式后行为未发生改变,且接收计数器仍保持为零,那么问题很可能出在数据包过滤层之下(例如 RMII 时钟、接收路径初始化或 DMA/描述符处理)。 作为另一个有用的调试步骤,我建议您退一步,从标准的 InternalLoopback 示例开始,并根据您的硬件平台进行调整。 首先,请验证 InternalloopBack 示例在您的主板上是否能正常运行。这有助于确认 GMAC 的基本初始化、描述符处理、缓冲区配置以及软件流程在 S32K322 上均按预期运行。 之后,您可以取消勾选“内部环回模式”,并将该项目作为与外部交换机通信的最小基线。换句话说,使示例尽可能接近有效的参考设计,并再次测试帧的传输和接收。 这种方法有助于确定问题是源于与交换机的硬件接口(例如 RMII 时序/时钟),还是由当前项目中更高层级的软件集成差异所导致。 顺祝商祺! 帕维尔 Re: s32k322 EMAC RMII issue 你好@PavelL  感谢您的耐心支持。我们将按照您的建议在周末继续进行调查,并将于下周一或周二给您回复。 顺祝商祺! 李永祥 Re: s32k322 EMAC RMII issue 你好@PavelL、 很抱歉回复晚了。我们根据最近的研究结果进行了进一步的测试。我们测试了混杂模式,但结果没有变化。 我们还有一点观察结果:在重新设计 PCB 并实现外部环回后,MCU 能够接收自己发送的帧。然而,同一台交换机使用相同的配置,通过同一端口,经由 RMII 与另一产品板上的不同 MCU 成功通信。这让我们非常困惑,究竟是什么原因导致了这个问题。 我们将继续进行分析。我们目前的计划是通过让MCU TX和交换机输出相同的包来比较波形。然而,这在实施上具有挑战性,我们仍在努力——交换机转发的帧并不干净,因为它们包含许多其他数据包,会干扰波形捕获。 我们非常感谢您能提供任何其他建议。   顺祝商祺! 李永祥 Re: s32k322 EMAC RMII issue 你好@YongxiangLi、 谢谢你的更新。 根据您最新的观察,下一步的一个有用方法可能是通过交换机本身创建一个更可控的交换机到 MCU 接收测试。   由于 MCU 端的外部环回功能正常,这表明基本的 GMAC TX/RX 路径和软件流程是功能正常的。因此,隔离从开关输出到 MCU RMII 接收接口的特定路径可能很有帮助。   如果你的交换机支持,你可以尝试以下方法之一: 1. 配置一个非常简单的静态 L2 转发路径,以便将已知的测试帧仅转发到 MCU RMII 端口。 2. 或者,如果支持,可以使用端口镜像生成向 MCU 端口的受控出口帧。 如果交换机支持,我还建议暂时禁用所有端口的 MAC 地址学习功能。   无论哪种情况,我都建议禁用或过滤所有其他不必要的流量,如果可能的话,禁用转发到所有其他端口。目标是只让一个已知的帧模式到达 MCU,以便更清晰地捕获 RMII 接收波形(REF_CLK、CRS_DV、RXD0、RXD1)。 顺祝商祺! 帕维尔
View full article
在基于 NXP 的 SoM(Layerscape SoC)上调用 DDR 在我公司的几个月内,我们将准备好推出新的SoM(建立在恩智浦 LS1028 SoC 之上)。因此,我想向您--更有经验的开发人员--请教一些知识,您是如何进行 DDR 更新的?使用什么工具?如何进行 DDR 初始化?您要执行哪些步骤?关于 DDR 有哪些常见误区?我应该注意什么? Re: DDR bring-up on NXP based SoM (Layerscape SoC) 关于 DDR 验证,请遵循《QCVS_DDR_用户指南》。 成功完成 QCVS 验证后,点击"Generate processor expert code" 的图标,在 \ \Generated_Code\ddr_init1.c,then将优化的计时参数集成到 ATF ddr_init.c 中。   QCVS DDR 是 codewarrior Developer Suite Level 的一个工具。 您还可以从以下链接下载 codewarrior Developer Suite Level Evaluation Edition。 https://www.nxp.com/design/software/development-software/codewarrior-development-tools/codewarrior-network-applications/codewarrior-development-suites-for-networked-applications:CW-DS-NETAPPS 评估版可免费使用,但有时间限制。   调试工具用于连接 LS1028A 客户板和 codewarrior 开发者套件级别,请在以下链接中找到该工具: https://www.nxp.com/design/design-center/development-boards-and-designs/CW_TAP CodeWarrior TAP 高性能探针基础单元,支持以太网和 USB(单独订购提示)。 cwh-ctp-base-he CWH-CTP-CTX10-YE Layerscape 处理器(Coretex 10 引脚)   DDR 布局应遵循 AN5097 AN5097,DDR4 同步动态随机存取存储器(SDRAM) 内存接口的硬件和布局设计注意事项
View full article
用于 IMX8MPLUS 的 LPDDR4 美光 MT53E1536M32D4DE-046 AA T: C 是一 款 48Gb (6GB) LPDDR4 动态随机存取存储器(DRAM) 元器件。 它在技术上与 i.MX 8M Plus 处理器兼容吗?由于 LPDDR4 兼容性问题,我的 IMX8MPLUS 板面临很多挑战。我的板是为大小为 32Gbit (4GB) 的双列双通道 LPDDR4 设计的。我找不到任何有现货的 LPDDR4。与其他 32Gbit (4GB) 但双通道单列的 LPDDR4 面临密码兼容性问题。请在这方面帮助我。我能否使用 MT53E1536M32D4DE-046 AAT: C 代替 32Gbit (4G B) LPDDR4。 Re: LPDDR4 for IMX8MPLUS 它可能不会使用 6GB LPPDR4 来取代当前的 4GB,因为使用 x32bus 的 6GB 需要 4 个引脚,而 I.mx8 plus 只有 2 个引脚。 Re: LPDDR4 for IMX8MPLUS 你好@Vighnesh imx8MP 可以毫无问题地支持 MT53E1536M32D4DE-046 AAT: C LPDDR4,我们已经验证了这款动态随机存取存储器(DRAM)。而且它有两个等级,而不是4个等级。 B.R Re: LPDDR4 for IMX8MPLUS 感谢您的确认。看来我犯了一个错误...
View full article