Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
使用 i.MX28 添加对新型 NAND 的支持——NAND 分析 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本页介绍如何确定 NAND 驱动程序中使用的 NAND 时序参数。这与可能使用的任何操作系统无关。 分析NAND数据表 我们使用电子表格来捕获和分析 NAND 特性。该电子表格[附加到此 wiki 页面|使用 i.MX28 添加对新 NAND 的支持 - Nand 分析^nand_analysis_template.xls]。 我们分析一个 NAND,如下所述。 我们必须有 NAND 数据表才能进行分析。 将*分析电子表格*复制到一个新文件名,其中包含正在分析的 NAND 的确切零件编号。 填写分析电子表格的第 1 页(“封面”)。 接下来处理第 3 张表: 基本特征。 其他表。 如果 NAND 是数据表中列出的某个系列之一,则使用一个电子表格来分析整个系列。您可以使用“类似”行来查找家庭的其他成员。如果需要,添加更多行。 大多数 NAND 都有异步接口,因此不涉及简单的时钟频率。相反,存在各种设置时间、保持时间和输出延迟,这意味着 NAND 的 I/O 速率受到限制。电子表格比较了 NAND 的时序规格,以查看设置、保持和输出时间的总和是否短于最小读取周期或写入周期时间。该电子表格专门用于 STMP378x/i.MX233/i.mx28 中的 Nand 控制器芯片,因此电子表格执行时序计算,目的是得出这些 CPU 的时序参数 *TSU*、*TDS* 和 *TDH*。如果在计算完所有时间之后,TDS 和/或 TDH 量 {color:#ff0000} 变为红色{color},则计算出的 TDS 和/或 TDH 对于 NAND 的指定周期时间来说太短。在这种情况下: 您必须在软件中增加其中一个或两个。 在分析电子表格中的某处写下您选择的值的注释,但不要弄乱自动计算。 记录闪存如何表示工厂标记的坏块。(有些使用块的第一页,有些使用最后一页,等等)将其与此[当前坏块标记方法超集[ http://wiki.freescale.net/display/PSGSW/Storage+Media%2C+Flash+Bad+Block+Marks ]进行比较用于检测任何闪存工厂坏块。 实例分析 NAND 数据表和分析的示例可以在 [Hynix NAND 页面 | http://wiki.freescale.net/display/PSGSW/Hynix+NAND+Flash+Documents ] 上找到。 i.MX2x 回复:使用 i.MX28 添加对新 NAND 的支持–NAND 分析 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,谢谢你的信息。由于某些原因,链接不起作用。您能否提供分析电子表格的新链接?谢谢,马克
View full article
实践研讨会:利用恩智浦汽车智能射频远程控制接口 (RCI) 进行开发 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> NXP 的 RF 产品 Lizard、MantraCS、MantraF 的 RCI 介绍。使用 RCI 固件和配置开发套件 (CDK) 可以轻松实现系统集成和开发。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> NXP 的 RF 产品 Lizard、MantraCS、MantraF 的 RCI 介绍。使用 RCI 固件和配置开发套件 (CDK) 可以轻松实现系统集成和开发。
View full article
New CodeWarrior for MCU V10.7 is available Greetings, CodeWarrior for MCU V10.7 is now available for download from nxp.com at CodeWarrior for Microcontrollers-Eclipse IDE|NXP   Major features Combines all the previous CodeWarrior for MCU V10.6.x downloads into a single download and installer Windows 8 and 10 support Added S12Z and S08 device support Updated P&E and Segger debug libraries Various enhancements and bug fixes See attached release notes for details.   It is available as 'offline' and 'online' version: The offline package contains all architectures supported (ColdFire, ColdFire+, S08, RS08, S12, S12/XGATE, S12Z, DSC, Qorivva, Kinetis), while the online setup executuble contains the common parts, and the selected architectures are downloaded on demand. The setup will install a 30 day temporary professional license which afterwards default to 'special' edition (code size limited) mode. CodeWarrior for MCU V10.7 is compatible with V10.6 and any existing professional V10.6 license can be used with V10.7. It is not necessary to uinstall any previous CodeWarrior version, as V10.7 can be installed side by side with existing CodeArrior versions.     NXP CodeWarrior Team General Re: New CodeWarrior for MCU V10.7 is available hi       Does this software support MPC5748G development? Re: New CodeWarrior for MCU V10.7 is available thank you very much! Re: New CodeWarrior for MCU V10.7 is available Hello, yes, the offline package contains all the architectures shown in your last screenshot. So it supports the S12Z, and *not* the normal S12 you are showing in your previous screenshot: If you want to use S12, you have to use Codewarrior (classic, not Eclipse based) 5.x. And yes, USBDM is not included in that installation, but I think you can add it (refer to the USBDM pages for this). I hope this helps, Erich Re: New CodeWarrior for MCU V10.7 is available Hi Erich Styger,This offline package contains all architectures supported (ColdFire, ColdFire+, S08, RS08, S12, S12/XGATE, S12Z, DSC, Qorivva, Kinetis)? I want to add same S12 derivatives (For example,MC9S12G48).What do I need to do?  I need to use USBDM,but CodeWarrior5.1/5.2 don't support it.
View full article
EUF-DES-T1741 可扩展多核 QorIQ Layerscape 处理器,基于 64 位软件环境,适用于企业、家庭和工业应用.pdf <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
View full article
通用更新工具 (UUU) <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 开始使用适用于 i.MX 系列的 UUU 工具。新型固件下载工具“通用更新工具”概述,该工具已取代原有制造工具。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 开始使用适用于 i.MX 系列的 UUU 工具。新型固件下载工具“通用更新工具”概述,该工具已取代原有制造工具。 i.MX 应用处理器
View full article
[Zephyr ® Series] Part 4: Overview and Practical Applications of Kconfig and Device Trees (Japanese Blog)   From this point on, we'll be moving on to the advanced topics of Zephyr. This session will cover an overview of Kconfig and device trees, followed by hands-on programming exercises to help you utilize them effectively.   One of the key features of Zephyr RTOS, as mentioned previously, is its software scalability (reusability), which makes it easy to reuse software developed once in other projects or derivative products, enabling rapid development.   Furthermore, to support a wide range of hardware platforms, Zephyr employs a powerful configuration system called "Kconfig" and "Devicetree".   This allows you to port programs to different microcontroller boards simply by changing configuration files, without having to rewrite the source code in the same C/C++ language. This article explains the basic mechanisms of Kconfig and the device tree. As a practical application, we will modify the hardware-independent LED blinking program created in Part 3 to run on two different microcontroller boards: " FRDM-MCXA153 " and " FRDM-MCXN947 ".   To run the same application on different boards (microcontrollers and processors), we will explain practical programming methods using Kconfig and the device tree.     table of contents   Preparation Kconfig Basics Device tree fundamentals Best practices for improving software reusability Kconfig and the Device Tree in Practice Create a simple program (hands-on) 1. Program Specifications 2. Directory structure 3. Create Kconfig and prj.conf 4. Creating device tree overlays and board-specific settings 5. Hardware-independent common code (main.c) Create 6. Build and run summary Preparation   Hardware preparation   This article will primarily use the following boards to create and test programs. FRDM-MCXA153 (main use) Additionally, the following boards will be used as supplementary tools to verify the portability of the program you have created. FRDM-MCXN947   SW preparation   This guide assumes that you have already set up the Zephyr development environment (Zephyr SDK, West command, etc.). If you haven't set it up yet, please refer to the second article on environment setup. [Zephyr ® Series] Part 2: First Build and Testing (Japanese Blog)   We will be using the LED blinking program created in the third installment of the Zephyr series. If you haven't created it yet, we recommend creating it by referring to the previous article. [Zephyr ® Series] Part 3: First Steps in Blinking an LED and Software Reusability (Japanese Blog)   Kconfig Basics     Kconfig is a configuration system also used in the Linux kernel. In Zephyr, it is used to manage whether to "enable or disable" software features, or "what parameters to set," such as kernel functions, device drivers, subsystems, and application-specific settings. The following two files are important for Kconfig: The "Kconfig" file defines the selectable configuration items (symbols), their default values, and dependencies. "prj.conf" file *: This file is where application developers specify the values they want to set for items defined in "Kconfig" (such as enabling them with "y" or providing specific numerical values). Using Kconfig, you can exclude unnecessary code from compilation and optimize memory usage. Furthermore, the Kconfig and prj.conf files are all written in text format. How to enable the feature The prj.conf file enables features for the entire project. For example, the ADC, DAC, and OPAMP drivers are defined in Kconfig. When using the functions defined in Kconfig, you declare them by adding "CONFIG_" to the beginning of prj.conf. Kconfig:ADCの定義Kconfig: ADC definition prj.conf例prj.conf example   Device tree fundamentals   Devicetree例Example of a device tree   The device tree is a text file that describes what hardware (CPU, memory, peripherals, pin settings, etc.) a microcontroller supports, as well as the settings and configuration of that hardware. These settings and configurations are then expanded into macros.   Instead of directly writing hardware addresses into C code (hardcoding), information described in the device tree can be read through Zephyr macros, enabling hardware-independent programming. Nodes and Properties: Each element of hardware is represented as a "node" in a hierarchical structure, and register addresses, interrupt numbers, etc., are described as "properties." ".dts" and ".dtsi": Standard hardware configurations for each microcontroller and board are predefined within the Zephyr repository in ".dts" (Devicetree Source) and ".dtsi" (Include) files. dts: Described as the device tree of the board. dtsi: Describes the device tree of an SoC/microcontroller and is provided by the device manufacturer. ".overlay" file: This file is created when you want to override application-specific wiring (e.g., connecting an LED to a specific GPIO pin) or default settings.   Best practices for improving software reusability   To enhance software reusability in Zephyr, it is important to follow the following design principles: Separation of hardware-dependent and hardware-independent parts: C code (`main.c`) For example, avoid directly writing about specific microcontroller register operations or pin numbers. Leverage device tree aliases: Instead of directly referencing actual hardware nodes (e.g., `&red_led` or `&gpioa`), applications should reference abstract names defined in the `aliases` node (e.g., `led0`). This allows you to adapt to different boards simply by changing what the alias points to. Prepare a board-specific device tree (overlay) : When there are differences in some functions, such as in derivative products, you can overwrite (overlay) only the parts with hardware differences for each board. Switching features with Kconfig : Application behavior parameters and the on/off status of specific features are controlled using Kconfig symbols instead of C language "#define".   Kconfig and the Device Tree in Practice   From here, we will learn how to use Kconfig and the device tree by creating a simple program so that we can actually use them in practice .     Create a simple program (hands-on) The program will be created by modifying the LED blinking program we created last time, and will have the following specifications.   Here, as a practical exercise, we will create a common application that runs on both "FRDM-MCXA153" and "FRDM-MCXN947". 1. Program Specifications Source code : Use the code from "Part 3: Your First LED Blinking Program" and make the following modifications. LED blinking speed: The blinking interval can be set using Kconfig. Button Function (Enable/Disable): The button function can be enabled or disabled via Kconfig settings. When enabled, pressing the button will toggle between blinking and constant illumination of the LED. Outputting board name: At startup, the "device (board) name" configured in Kconfig will be output to standard output (terminal). 2. Directory structure   The project directory structure should be as follows:   Add the Kconfig file and boards folder to the "my_hello" folder of the LED blinking program you created last time. Any method of adding the files is fine. On Windows, use the PowerShell `ni` command or a text editor to create a new file and save it in the `my_hello` folder. In Linux, you can create a new, empty file using the `touch` command.   The files under "boards/" handle hardware differences and unique settings specific to each board.     my_hello/ ├── CMakeLists.txt ├── Kconfig <- 新規追加:アプリ独自のKconfig ├── prj.conf <- アプリの共通設定 ├── src/ │ └── main.c <- ハードウェア非依存の共通コード └── boards/ <- 新規作成フォルダ  ├── frdm_mcxa153.overlay <- 新規作成:FRDM-MCXA153用のデバイスツリー設定  ├── frdm_mcxa153.conf <- 新規作成:FRDM-MCXA153用のKconfig設定  ├── frdm_mcxn947_cpu0.overlay <- 新規作成:FRDM-MCXN947用のデバイスツリー設定  └── frdm_mcxn947_cpu0.conf <- 新規作成:FRDM-MCXN947用のKconfig設定   Note : By creating specific files within your application's directory, Zephyr's build system (West) will automatically recognize them and apply the settings. Adding Kconfig: You can add your own configuration symbols by placing a "Kconfig" file in your Applications folder. Board-specific settings ("boards/" directory): By creating a "boards" directory within your application and placing "[board name].overlay" or "[board name].conf" files there, the overlay and Kconfig overrides will be automatically applied only when building with that board as the target.   3. Create Kconfig and prj.conf First, create your own "Kconfig" in the application root directory and define application-specific parameters. my_hello/Kconfig   mainmenu "my LED blink" config CUSTOM_BLINK_RATE_MS int "LED blink rate in milliseconds" default 1000 help Set LED blink frequency. #LEDの点滅周期(ミリ秒)を設定します config ENABLE_BUTTON_TOGGLE bool "Enable button to toggle LED state" default y help Enable button to toggle LED state. # ボタン入力によるLEDの点滅/点灯状態>の切り替え機能を有効にします。 config BOARD_NAME_STRING string "Board Name String" default "Unknown Board" help Set board name for printf. # 標準出力に表示するボード名を設定します。 source "Kconfig.zephyr"     Next, as a common setting for the entire application, there is "prj.conf". This will be written. In this prj.conf file, use the Kconfig symbol you just created to configure it as follows: my_hello/prj.conf   # GPIOの有効化 CONFIG_GPIO=y # アプリケーションの共通設定 CONFIG_CUSTOM_BLINK_RATE_MS=500 CONFIG_ENABLE_BUTTON_TOGGLE=y   4. Creating device tree overlays and board-specific settings Create a directory called "boards" and prepare the necessary files for each board. Main board for FRDM-MCXA153     We map the button on the board (`sw2`) so that it can be accessed from the application using the standard alias `sw0`. `led0` is already in the board definition so it can be omitted here, but it can be explicitly overridden if needed.   my_hello/boards/frdm_mcxa153.overlay / { aliases { sw0 = &user_button_2; /* FRDM-MCXA153のユーザーボタン */ }; };   my_hello/boards/frdm_mcxa153.conf   CONFIG_BOARD_NAME_STRING="FRDM-MCXA153 Board"   By referencing the symbols in this .conf (board-specific Kconfig) within the application (main.c), it becomes possible to output the board name to standard output using the printf function. For FRDM-MCXN947 Similarly, we define "sw0" in the FRDM-MCXN947. This handles any differences in the hardware names of the buttons.   In fact, if the hardware names (which differ depending on the peripheral or instance) vary across boards, you assign the actual hardware to the alias node in the device tree. my_hello/boards/frdm_mcxn947_cpu0.overlay   / { aliases { sw0 = &user_button_3; /* FRDM-MCXN947のユーザーボタン */ }; };   my_hello/ boards/frdm_mcxn947_cpu0.conf   I'll try overriding the LED blinking speed to 250ms only when building with MCXN947.   CONFIG_BOARD_NAME_STRING="FRDM-MCXN947 Board" CONFIG_CUSTOM_BLINK_RATE_MS=250 The application code is the same for FRDM-MCXA153 and FRDM-MCXN947, but you can configure the blinking behavior of the LED separately here. 5. Hardware-independent common code (main.c) Create Write the following in "my_hello/src/main.c":   The LED control section reuses the hardware-independent code (using the "led0" alias) created in the previous article, and incorporates Kconfig and button control into it. my_hello/ src/main.c   #include #include #include /* Devicetreeのエイリアスを参照する */ /* どのボードでも、一番目のLEDは通常 "led0" と定義されています */ #define LED0_NODE DT_ALIAS(led0) #define SW0_NODE DT_ALIAS(sw0) /* エイリアスからGPIO仕様(ポート、ピン、フラグ)を取得 */ static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios); /* ボタン機能がKconfigで有効化されている場合のみコンパイルされる部分 */ #ifdef CONFIG_ENABLE_BUTTON_TOGGLE static const struct gpio_dt_spec sw = GPIO_DT_SPEC_GET(SW0_NODE, gpios); static struct gpio_callback button_cb_data; static bool is_blinking = true; void button_pressed(const struct device *dev, struct gpio_callback *cb, uint32_t pins) { is_blinking = !is_blinking; if (!is_blinking) { /* 点滅オフ時はLEDを点灯させた状態にする */ gpio_pin_set_dt(&led, 1); } } #endif //CONFIG_ENABLE_BUTTON_TOGGLE int main(void) { int ret; /* Kconfigで設定されたボード名を出力 */ printf("Starting application on %s\n", CONFIG_BOARD_NAME_STRING); /* デバイスの準備確認 */ if (!gpio_is_ready_dt(&led)) { return -1; } /* ピンの設定 (Devicetreeで定義された初期状態などを考慮して設定) */ ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE); if (ret < 0) { return -1; } #ifdef CONFIG_ENABLE_BUTTON_TOGGLE if (!gpio_is_ready_dt(&sw)) { return -1; } ret = gpio_pin_configure_dt(&sw, GPIO_INPUT); if (ret < 0) { return -1; } ret = gpio_pin_interrupt_configure_dt(&sw, GPIO_INT_EDGE_TO_ACTIVE); if (ret < 0) { return -1; } gpio_init_callback(&button_cb_data, button_pressed, BIT(sw.pin)); gpio_add_callback(sw.port, &button_cb_data); #endif //CONFIG_ENABLE_BUTTON_TOGGLE while (1) { #ifdef CONFIG_ENABLE_BUTTON_TOGGLE if (is_blinking) { ret = gpio_pin_toggle_dt(&led); } #else /* ピンの状態を反転 (ボタン機能が無効な場合は常に点滅) */ ret = gpio_pin_toggle_dt(&led); #endif //CONFIG_ENABLE_BUTTON_TOGGLE /* Kconfigで設定された点滅間隔で待機 */ k_msleep(CONFIG_CUSTOM_BLINK_RATE_MS); } return 0; }     6. Build and run Now, let's actually test its functionality. Please refer to the previous article for instructions on setting up the build environment and enabling the west command. First, navigate to the directory of your installed zephyrproject repository as shown in the command instructions below, enable west, and then proceed. Operation confirmed with FRDM-MCXA153 (main) Build using the following command and write it to the FRDM-MCXA153.   ## ホームディレクトリからZephyrprojectディレクトリに移動 cd ~/zephyrproject ## west環境を有効化 source .venv/bin/activate ## zephyr v4.3をチェックアウトしていない場合は、前回(第3回 初めてのLチカとソフトウェアの再利用性)を参考にv4.3をチェックアウトしてください。 west build -b frdm_mcxa153 my_hello west flash     Execution result   コンソール出力Console output   LED点滅、点灯モード切り替えLED flashing and steady light mode switching   The message "Starting application on FRDM-MCXA153 Board" will appear in the terminal. The LED blinks at 500ms intervals ("prj.conf"). (Settings). Pressing SW2 ("custom-sw") will turn it on, and pressing it again will return it to blinking. Operation confirmed with FRDM-MCXN947 We'll build the project using the exact same C source code, only changing the board specification.   # -pオプションを使用し、frdm_mcxa153のビルド情報をクリーンしてビルドします。 west build -p -b frdm_mcxn947//cpu0 my_hello west flash   Execution result   The contents of "boards/frdm_mcxn947_cpu0.conf" will be automatically applied, and the terminal will display "Starting application on FRDM-MCXN947 Board". The LED blinks rapidly at 250ms intervals (configured in "prj.conf"). Pressing SW3 (the button mapped to "user_button_3" on the MCXN947) will similarly switch between LED illumination and blinking. While the FRDM-MCXA153 and FRDM-MCXN947 use different GPIOs for controlling LEDs and switch buttons, the device tree effectively absorbs these differences, demonstrating how cleanly the application program and hardware are separated.   summary     In this session, we learned the basics of Kconfig and device trees in Zephyr, and practiced techniques to separate hardware-dependent parts from C code by utilizing them.   I believe you've experienced a powerful mechanism for reusing the same source code across multiple different boards, where hardware settings are absorbed by the device tree overlay (".overlay"), application parameters can be flexibly changed and features can be easily enabled or disabled using board-specific Kconfig files (".conf").   ========================== We are currently unable to respond to comments left in the "Comment" section of this post. We apologize for the inconvenience, but please refer to "Technical Questions to NXP - How to Contact Us (Japanese Blog)" when making inquiries. (If you are already an NXP distributor or have a relationship with NXP, you may ask your representative directly.) This document provides an overview of the device tree and Kconfig, features designed to enhance Zephyr's software reusability. It then outlines the steps required to utilize these features in practice. After reading through this Zephyr series, from the first installment to the fourth, you will be able to write programs using the Zephyr RTOS. General Purpose Microcontrollers MCX Japanese Blog
View full article
HSE_b: Not allowed to import RSA key to RAM I'm trying to understand how to use the key import service by importing a single 1024-bit RSA public key into the RAM catalog, but the server responds HSE_SRV_RSP_NOT_ALLOWED. My test application formats the RAM key catalog as follows: { { muMask = HSE_MU0_MASK | HSE_MU1_MASK, groupOwner = HSE_KEY_OWNER_ANY, keyType = HSE_KEY_TYPE_RSA_PUB, numOfKeySlots = 2, maxKeyBitLen = HSE_KEY1024_BITS, }, { muMask = HSE_MU0_MASK | HSE_MU1_MASK, groupOwner = HSE_KEY_OWNER_ANY, keyType = HSE_KEY_TYPE_ECC_PUB_EXT, numOfKeySlots = 2, maxKeyBitLen = HSE_KEY256_BITS, }, { muMask = 0, groupOwner = 0, keyType = 0, numOfKeySlots = 0, maxKeyBitLen = 0 }, } and I get server reply HSE_SRV_RSP_OK. I then try to import an RSA key with the following key info: { keyFlags = HSE_KF_USAGE_VERIFY, keyBitLen = HSE_KEY1024_BITS, keyCounter = 0x0, smrFlags = 0x0, keyType = HSE_KEY_TYPE_RSA_PUB, specific = { pubExponentSize = 4, } } and my request is as follows: { targetKeyHandle = 0x20000, pKeyInfo = 0x20401f74, pKey = { 0x210034b4, 0x21003534, 0x0}, keyLen = { 0x80, 0x4, 0x0}, } . I have set HSE_RAM_PUB_KEY_IMPORT_POLICY_ATTR_ID to HSE_KM_POLICY_ALLOW_RAM_PUB_KEY_IMPORT, and read it back as the same. LC attribute is 0x04, HSE error flags are 0x0000, HSE status flags are 0x0B60. Firmware version reads as 0x0F SoC ID 0x0000 FW type 0x02 major 0x32 minor 0x00 patch. Re: HSE_b: Not allowed to import RSA key to RAM Hi @Emma_G-gbg  Your parameters are correct, I can see nothing wrong there. If you have super user rights, it’s not even necessary to set that attribute. I was testing something very similar yesterday, so I just slightly updated my code to import 1024bit RSA public key with 4-bytes public exponent. It looks like this: Notice that it’s not necessary to set pubExponentSize when importing RSA public key. HSE ignores this parameter. It uses keyLen[1] instead. Parameter pubExponentSize is used when reading the keyInfo by service HSE_SRV_ID_GET_KEY_INFO. This is what I got when I read the keyInfo of that key: Isn’t that just data cache issue? Could you try to disable data cache to see if it makes a difference? Regards, Lukas Re: HSE_b: Not allowed to import RSA key to RAM Thank you, I had missed filling in cipher and auth key handle information, I hadn't checked so I thought HSE_INVALID_KEY_HANDLE would be zero. It's currently working with at least some of the values in cached memories, with cache maintenance operations before and after service calls. Since we are adding HSE services to an existing project we are precluded from changing the cache structure, but so far everything has worked as long as we make sure it's actually written to the shared memory, although I did also try disabling the cache for the relevant memories, which made no difference.
View full article
iMX8MP MIPI DSI 至 HDMI 转换器(LT9611UXD)调出 您好, 我们设计了一款基于 imx8MP 的主板,用于使用 LT9611UXD 将 MIPI DSI 转换为 HDMI,但该芯片不断报告错误,例如 MIPI DSI 时钟不稳定和无法同步。 我们试图用 LT9611UXC 替换同一块主板上的 LT9611UXD,HDMI 有输出,但是换回来后 LT9611UXD 仍然无法工作。 能否请您指点一二? 1。恩智浦是否有 LT9611UXD 的解决方案或演示板? 2.恩智浦是否遇到过 MIPI DSI 时钟不稳定的问题?是如何解决的?    Re: iMX8MP MIPI DSI to HDMI Convertor(LT9611UXD) Bring Up 你好@杨志荣 希望你一切都好。 实际上,我们在 i.MX95 15mm x 15mm EVK DTSO 中使用了 LT9611UXC。 请看一看: https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm64/boot/dts/freescale/imx95-15x15-evk-lt9611uxc.dtso 对于 i.MX8MP,我们没有任何示例。 此外,您还可以使用 i.MX8MP 的原生 HDMI 来代替 LT9611UXD。 顺祝商祺! 萨拉斯
View full article
Ara240 Module Bring-Up on FRDM-IMX95 Getting Started Video: (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'); }); }); }); } }})(); (view in My Videos) This guide provides step-by-step instructions on how to verify successful communication with the Ara240 module and the runtime software environment to interface  with the FRDM i.MX 95 development board. Out of the Box Get Familiar with the Ara240 Module   Ara240 Module [Top view]Ara240 Module [Top view] Ara240 Module [Back view]Ara240 Module [Back view]      Connecting the M.2 Module This section explains how to connect Ara240, a discrete module, to the FRDM i.MX 95 development board. The instructions in the FRDM i.MX 95 Quick Start Guide will walk you through the boot-up process for the pre-loaded Embedded Linux image on the board and how to connect the USB debug cable. For additional details, see the official FRDM i.MX 95 Development Board documentation. References: FRDM i.MX 95 Quick Start Guide FRDM i.MX 95 Development Board product page FRDM i.MX 95 getting started page Getting Started with ARA2-M2-16G-GT Follow the steps below to connect the Ara240 module to the FRDM i.MX 95 development board: Spoiler (Highlight to read) Important: Ensure the board is powered off before making any connections. Important: Ensure the board is powered off before making any connections. Insert the Ara240 module into the M.2 Key-M socket on the FRDM i.MX 95 development board. Using the screw provided, secure the module. Connect the fan cable to the board’s fan header (refer to the FRDM i.MX 95 board documentation for the exact header location). Connect the Ara240 to the FRDM i.MX 95 development board.Connect the Ara240 to the FRDM i.MX 95 development board. Power on the Board Follow the instructions to power on (boot) the board found in the Getting Started with FRDM-IMX95. After powering on, verify that the fan and green LED indicators Ara240 module are on are on.   Get the Software This section will walk you through the Ara240 Runtime software development kit (SDK), a streamlined subset of the Ara240 SDK designed for rapid enablement and execution on NXP platforms. The Runtime SDK simplifies installation and configuration, enabling developers to quickly deploy and run AI/ML workloads on the Ara240 module with minimal effort. Overview Refer to Ara240 software release notes for details on the Ara240 software development kit (SDK) The Getting Started page for Ara240 only outlines usage on specific i.MX development platforms For any other platforms please reach out to your NXP representative for guidance. Module Enumeration and Software Configuration This section provides instructions to verify proper installation of Ara240 module and configuration of the Ara240 Runtime SDK on the FRDM i.MX 95 development board. Verify Device Detection Once the board has successfully booted, connect to the serial debug port to monitor system logs. To confirm that the Ara240 module is being detected by the board, run the following command: $ lspci | grep 1e58 Expected output: 0000:01:00.0 Processing accelerators: Device 1e58:0002 (rev 02) Enable Ara240 device For quick enablement, the Ara240 Runtime SDK starts at boot time. Refer to the Ara240 Runtime SDK documentation for detailed instructions and environment setup steps. Developer Experience This section provides an overview of Ara240 runtime software enablement using the FRDM i.MX 95 development board. Verify Setup Environment Use the following guidance on how to connect required devices. For most of the demos, you would need a camera, keyboard, mouse, internet connection and a HDMI display monitor. Setup preparation for FRDM i.MX 95 board [Top view]Setup preparation for FRDM i.MX 95 board [Top view] Setup preparation for FRDM i.MX 95 board [Back view]Setup preparation for FRDM i.MX 95 board [Back view] Spoiler (Highlight to read) NOTE: You might need to use a USB hub to connect keyboard, mouse and camera at the same time. NOTE: You might need to use a USB hub to connect keyboard, mouse and camera at the same time.   Runtime setup Description: Runtime SDK delivers a complete runtime environment that enables AI/ML acceleration on the Ara240 module. To run demo applications, ensure that the Ara240 bring-up process has been successfully completed and the system is ready for demo evaluation. Refer to the Runtime SDK documentation for detailed guidance on: Verifying correct installation of the Runtime SDK. Checking and updating the Ara240 firmware version. Validating proxy service bring-up status. Executing benchmark tests on Ara240. Following these steps ensures that the module is properly initialized and ready for use. Ara240 supports the execution of CNNs, LLMs, VLMs, and agentic frameworks, enabling advanced AI workloads to run directly on Ara. For comprehensive examples and end-to-end workflow guidance, please refer to the Ara SDK documentation page. FRDM-IMX9
View full article
S32G:为什么 QSPI_IP_HyperflashProgram 每 2 字节发送一次写入命令? 专家们好 CTM: 法雷奥 平台:S32G3 模块:RTD 5.0.0QLP04 Fls 驱动程序 客户报告说,他们遇到的或非闪存写入吞吐量明显低于预期。 客户可能想知道为什么 QSPI_IP_HyperflashPro gram 函数 2 字节以 2 字节传输数据。看来这就是瓶颈所在。 是否有专家能就这一问题提供帮助? 感谢你的支持 狮子座 RTD Re: S32G: why the Qspi_Ip_HyperflashProgram sends write command for every 2 bytes? 你好@Nhi_Nguyen 谢谢您的帮助。但是在我们的驱动程序中一次写入 2 字节对客户来说太慢了吗?怎样才能提高性能? BR、 狮子座 Re: S32G: why the Qspi_Ip_HyperflashProgram sends write command for every 2 bytes? 你好@LeoLiAP、 这是因为 Hyperbus 支持以下两种类型的数据发送: 驱动程序支持将单个字写入内部缓冲(您的代码是每个地址数据的单个字),然后调用命令将缓冲区发送到 Fls(写入缓冲区)。 顺祝商祺! Nhi Re: S32G: why the Qspi_Ip_HyperflashProgram sends write command for every 2 bytes? 你好@LeoLiAP、 写入 2 字节遵循 Hyperbus 协议,所以我知道我们无法改变这一点。但 SW 团队将改进代码以节省时间,相关票据为ARTDCMEM-1247。 顺祝商祺! Nhi
View full article
CLRC663 と CLRC663 plus AUX1 および AUX2 ピン構成の違い。 CLRC663およびCLRC663plusのAUX1およびAUX2のデフォルト状態に関する質問 アプリケーション ノートでは、AUX1 ピンと AUX2 ピンのデフォルトの予想される状態は次のように記載されています。 CLRC663 のGND 。 CLRC663plus 用にオープン。 具体的な質問: CLRC663 では AUX1 と AUX2 のデフォルト状態が GNDなのに、CLRC663plus ではオープンになっているのはなぜですか? CLRC663+ で AUX1 と AUX2 をオープンのままにせずにGNDに接続すると、何が起こるでしょうか、またはどのような影響があるでしょうか? CLRC663plus でこれらのピンを接地すると、LPCD の誤起動の原因になったり、デバイスの動作に他の影響が生じたりしますか? Re: CLRC663 and CLRC663 plus AUX1 and AUX2 pin configuration difference. こんにちは@rahultt999 あなたの調子が良いといいのですが。 CLRC663 の非プラス バージョンは新しいデザインには推奨されないことにご注意ください。 これらのテスト信号は通常の動作モードでは使用できません。これらのピンをデバッグ目的で設定する場合は、必ずCLRC663 アンテナデザインのセクション 4.4.2 の指示に従ってください。そうしないと、デバイスが損傷する可能性があります。NFC アンテナ設計トレーニング シリーズ、講義 4 (約 24 分 30 秒) もご覧ください。 これらのピンを使用していない場合は、AUX1 ピンと AUX2 ピンの対応するアプリケーション ノートの推奨接続に従ってください。 - AN11145はCLRC663にGNDを推奨しています - AN11783はCLRC663プラスでオープンにしておくことを推奨しています よろしくお願いいたします エドゥアルド。 Re: CLRC663 and CLRC663 plus AUX1 and AUX2 pin configuration difference. こんにちは、 必要に応じて、これらのピンを (適切な構成後に) アナログ デバッグに使用できるように、テスト ポイントに接続することをお勧めします。AN11145 および AN11783 の推奨事項は、低電力デザインを目的としています。 よろしくお願いいたします エドゥアルド。 Re: CLRC663 and CLRC663 plus AUX1 and AUX2 pin configuration difference. こんにちは、エドゥアルドさん。 早速のご返信ありがとうございます。 現在の製品設計では、 CLRC663 plusチップを使用しており、これらの特定のピンは現在接地されています。ただし、「プラス」バージョンのアプリケーション ノートでは、これらのピンをオープンのままにしておくことを推奨していることに気付きました。 これらのピンをオープンのままにせずにグランドに接続したままにしておくと、製品のパフォーマンスに既知の影響やリスクはありますか? Re: CLRC663 and CLRC663 plus AUX1 and AUX2 pin configuration difference. ありがとう、エドゥアルド。これらのピンをオープンにしない場合、消費電力に具体的な影響があるかどうかご存知ですか?これらのピンの内部回路の詳細がなければ、決定的な結論を導き出すことができないため、質問しています。
View full article
i.MXRT1176 无法在外部 QuadSPI 或非 Flash IS25WP256 上启动 您好, 我们正在尝试在定制主板上的 QuadsPI NOR Flash IS25WP256 上启动 i.MXRT1176。我们连接内存的方式与 MIMXRT1170EVK 评估板上的连接方式相同(引脚 GPIO_SD_B2_05 至 11)。我们还将启动引脚设置为与评估板上的相同状态。 我编写了一个简单的"Hello world" 应用程序,在 M7 内核上运行。此应用程序可以在评估板上正确启动,但无法在我们的自定义板上启动。这两个板之间的唯一区别是我们的自定义板上的内存为32MB,评估板上的内存为16MB。 因此,我这样修改了 FCFB(在闪存中编程为 0x400): 我将闪存大小更改为 32MB,并将 LUT 中的 READ命令 更改为使用具有 32 位地址的 READ命令(而不是足以容纳评估板上的闪存的 24 位地址)。 尽管进行了这些更改,但i.MXRT无法在我们的自定义主板上启动。 所以,我看了总线的信号。 启动 ROM 正确地从闪存中读取 FCFB(512 字节)并进行一些配置(写入启用、设置读取参数、读取状态寄存器)。根据 RM 中的记录,时钟频率为 30MHz。 此后,启动 ROM 进行 4 次读取访问,每次 64 字节,时钟频率为 133MHz(这确认了启动 ROM 读取 FCFB 并应用了设置)。但是,它会读取地址为 0x0000、0x0040、0x0080 和 0x00C0 的内存。这些是启动 ROM 的最后一次访问,而 M7 内核无法启动。我将 jLink 探针连接到 M7 内核,发现启动 ROM 在 0x223104 处陷入了无限循环。 我预计启动 ROM 会读取位于 0x1000 的 IVT 表,这样它就可以加载应用程序代码并开始执行。 我试着将时钟频率改为 30MHz(而不是 133MHz)。启动 ROM 以 30MHz 进行最后四次读取访问,但应用程序仍无法启动。 我做错了什么? 我被卡住了,希望得到任何帮助 😉 戴维 Re: i.MXRT1176 does not boot on external QuadSPI NOR Flash IS25WP256 你好,@davidjaouen、 看来问题可能与调试器有关,因为执行卡在地址0x223104,本页的 “RESET” 部分提到了该地址。请终止调试会话,然后清理并重建项目。然后,尝试在不进入调试模式的情况下运行应用程序,并将结果告诉我。 BR Habib Re: i.MXRT1176 does not boot on external QuadSPI NOR Flash IS25WP256 嗨,哈比卜 谢谢您的回答。 不幸的是,我断开了调试器探头与主板的连接并进行了硬件RESET,但是 i.MXRT 仍然无法从闪存启动。 还有其他想法吗? 此致, 戴维 Re: i.MXRT1176 does not boot on external QuadSPI NOR Flash IS25WP256 你好 Habib, 我们终于在 QSPI Flash 上制作了我们的定制板启动。问题出在 BOOT_CFG1[1] 引脚上,它是高电平而不是低电平。因此,启动 ROM 尝试启动加密映像,但我们的映像未加密。 感谢您的帮助。 戴维 Re: i.MXRT1176 does not boot on external QuadSPI NOR Flash IS25WP256 不要劫持主题 - 自己开主题。 Re: i.MXRT1176 does not boot on external QuadSPI NOR Flash IS25WP256 你好@Habib_MS、 我遇到了同样的问题,即RESET/调试启动后目标保持在 0x002231 FC。但是,如果我重新启动主板,应用程序将从 QSPI 闪存启动并正常运行 。 我正在使用: 微控制器: i.MX RT1176 IDE:MCUXpresso 集成开发环境 调试探头:MCULink 根据我的观察,该问题仅在调试器 RESET/调试启动期间出现,而不是在独立启动期间出现。 你能否建议正确的RESET/调试配置或解决方法来解决这个问题? 等待您的回复。 谢谢 纳根德拉-库马尔-S
View full article
S32K148 回路図ドキュメント (SCH-29643 REV C) こんにちは、NXP チームの皆様、 S32K148 評価ボードを使用しており、ボードの回路図ドキュメント SCH-29643、リビジョン C を探しています。 利用可能なリソースを検索しましたが、Rev C の回路図を見つけることができません。 S32K148 EVB の SCH-29643 Rev C 回路図ドキュメントを共有していただけますか (または適切なダウンロード リンクを提供していただけますか)? サポートいただきありがとうございます。 Re: S32K148 schematic Document (SCH-29643 REV C) こんにちは、 添付したものを見つけました。 BR、ペトル
View full article
ベアメタル用のOSタイマーインターフェース Arm 用の S32DS で動作していた古いドライバ モデルには、ベア メタル実装をサポートするタイマー遅延用の API がありました。新しいリアルタイム・ドライバ モデルでは、同等のものが見つかりません。これを実行しようとするとエラーが発生します。添付のスクリーンショットを参照してください。 それを行う方法はありますか? プロジェクトの詳細: MCU: 144ピン構成のS32K148 システムOS: ベアメタル RTD バージョン: 3.0.0 ドライバー構成: 低レベル (非 Autosar)。スクリーンショットを参照してください。 Re: OS Timer interface for bare metal こんにちは@danielmartynek 更新ありがとうございます。これは私が発見したものと一致しています。いくつかフォローアップがあります: 1.SO、リアルタイム・ドライバには OSIf_TimeDelay() に相当するものはないのでしょうか?ドライバー API の他の部分にも同様のギャップが見られ、既存のコードの移植がやや困難になっています。 2. これらの API はすべての MCAL 実装で統一されていますか?言い換えれば、MCAL 準拠を主張する別のベンダーのハードウェアと MCAL 実装を使用する場合、これらすべての API がそのドライバ実装で利用できると期待できますか?(これを逆に読むこともできます。MCAL 準拠を主張する別のベンダーから NXP に移行する場合、NXP ドライバが他のベンダーのドライバが提供するすべての API を提供すると期待できますか?) よろしくお願いいたします。 ドゥルガー・チョードリー Re: OS Timer interface for bare metal こんにちは、 @durga_choudhuryさん、 OsIf.hを参照してください。以下の機能があります: OsIf_Init()、 OsIf_GetCounter()、 OsIf_MicrosToTicks()、 OsIf_GetElapsed()、 BR、ダニエル Re: OS Timer interface for bare metal こんにちは@durga_choudhuryさん、 1. いいえ、そのような関数はありません。個々のドライバは OsIf API を使用します。たとえば、次のようになります。 2. RTD には以下が含まれます。 AUTOSAR MCALドライバ 低レベルのIPレベルドライバ MCAL の最上位層 (AUTOSAR) のみがポータブルです。 たとえば、Adc_Init()。 しかし、OsIf_GetElapsed() は AUTOSAR API ではなく、NXP 固有のものです。 よろしくお願いいたします。 ダニエル
View full article
What is the meaning of FLEXIO_CTRL[DBGE] The reference manual wording on DBGE is a bit short with only "Enables the FLEXIO operation in Debug mode" What happens if it is disabled and you debug code? Trying to figure out what debug operations are safe when using FLEXIO and debugging FLEXIO drivers. I guess it is NOT safe to let the debugger read SHIFTBUFn in receive mode or any other hardware register with read sideeffect, not even by accidently howering over it in the debugger. Re: What is the meaning of FLEXIO_CTRL[DBGE] Hi @Henrik-Wires  If the "Enable FLEXIO operation in debug mode" is disabled, the FLEXIO module stops when the debugger stops the CPU. All FIexIO activity is freeze until execution resumes. This topic has also been discussed in the following thread: Does it means that flexio can't work in debug mode? BR, VaneB Re: What is the meaning of FLEXIO_CTRL[DBGE] Does that also mean that it is safe to access the FLEXIO registers using the debugger if DBGE is disabled, or will reading SHIFTBUFn with the debugger disturb the Shift Status Flag SHIFTSTAT[SSF] Re: What is the meaning of FLEXIO_CTRL[DBGE] Hi @Henrik-Wires  As stated in the S32K3 reference manual, the SHIFTBUFn register must be read only when the corresponding SHIFTSTAT[SSF] flag is set. Re: What is the meaning of FLEXIO_CTRL[DBGE] Hi @Henrik-Wires  Could you please clarify what this will be used for or what kind of analysis you are trying to achieve? Re: What is the meaning of FLEXIO_CTRL[DBGE] Can I somehow block S32DS from attempting to access registers? Only briefly howering over a pointer to SHIFTBUFn makes the debugger access the value which disturbs the FLEXIO state by clearing SHIFTSTAT[SSF] Re: What is the meaning of FLEXIO_CTRL[DBGE] Hi @Henrik-Wires  The IDE itself does not block access to registers. That kind of protection can be implemented using the MPU or XRDC; however, I do think that approach aligns with what you are trying to achieve. Instead, you could monitor when SHIFTSTAT[SSF] is set and then verify whether the corresponding SHIFTBUFn register contains the expected value. Re: What is the meaning of FLEXIO_CTRL[DBGE] I am exploring, writing and debugging a custom low level FLEXIO driver. Experienced odd results while debugging which I suspect is due to S32DS fetching SHIFTBUFn register values while stepping thru the driver, disturbing the SHIFTSTAT[SSF] state and resulting in lost events. Re: What is the meaning of FLEXIO_CTRL[DBGE] The driver obviously monitors SHIFTSTAT and access SHIFTBUFn accordingly. My issue is that it that stepping over the driver code with S32DS can trigger a debug read of SHIFTSTAT, which seems to disturb the state held in that register. For example when howering with the mouse over a pointer to SHIFTSTAT. If I carefully avoid touching any such pointers with the debugger then the driver works. I had hope that disabling DBGE would allow the debugger to access SHIFTSTAT without disturbing the **bleep**FSTAT register state, but from your response this is not the case. Re: What is the meaning of FLEXIO_CTRL[DBGE] Hi @Henrik-Wires  Disabling the DBGE bit does not prevent the debugger from disturbing registers such as SHIFTSTAT, because DBGE does not control debug read behavior. Instead, DBGE controls whether the peripheral keeps running when the core is halted.
View full article
HSE data reflected in memory only after multiple soft resets Steps followed: 1. Provide the HSE ELF file (containing HSE data bytes programmed at HSE memory locations) to Cyclone image creator 2. Create a Cyclone .sap file to enable and program HSE. 3. Flash the .sap file on the S32K312 board using the Cyclone debugger via JTAG. 4. Perform a power cycle. 5. Load the workspace and verify HSE data in memory. 6. Perform multiple soft resets via the debugger. Observed behavior: • After the initial power cycle, the HSE data is not immediately reflected in memory. • The HSE data becomes visible in memory only after multiple soft resets. (Issue) • Also tried allowing with delay, still the same behavior Question: • Why are multiple soft resets required for the HSE data to be reflected in memory? • Is there a recommended workaround (e.g.,reset sequence, or configuration change)? Re: HSE data reflected in memory only after multiple soft resets Hi @abdul_rahiman_csg  First of all, could you please explain what do you mean by "Provide the HSE ELF file (containing HSE data bytes programmed at HSE memory locations)"?  When HSE firmware is installed, only HSE has exclusive access rights to HSE secure memory (HSE firmware, HSE data). Secure memory is removed from memory map and user can't access it at all.  Regards, Lukas Re: HSE data reflected in memory only after multiple soft resets This ELF contains HSE data programmed in the address ranges 0x004D2000–0x004D2060 and 0x1B000000–0x1B000360 Re: HSE data reflected in memory only after multiple soft resets Hi @abdul_rahiman_csg  This does not make sense from microcontroller point of view. It seems to be related to tools. Could you try to discuss this with Pemicro directly? https://www.pemicro.com/support/index.cfm Regards, Lukas
View full article
i.MX RT1060 API の LPSPI_MasterTransferEDMA は 24 ビットのフレーム サイズをサポートしていませんか? LPSPI を使用して DMA 経由で 24 ビット フレームを書き込もうとしています。アプリケーションは重要ではありませんが、私の例では、メモリから外部 DAC にデータを送信することです。私はこれを DMA で動作させたいと思っています。なぜなら、最終的には TCD のリンク リストを PIT と一緒に使用して、CPU オーバーヘッドなしで DAC を継続的に更新するためです。これは外部 ADC および DAC を使用する一般的なアプリケーションです。16 ビット DAC/ADC には 24 ビットのフレーム要件があることも一般的です (上位バイトはコマンド用、下位バイトはデータ用)。uint8_t データを使用して転送を 3 バイトに分割するのではなく、uint32_t データを使用して 24 ビットのフレーム サイズで送信し、先頭バイトを無視します。 さて、LPSPI と DMA の構成に移ります。 1.imxRT1060 SDK の API LPSPI_MasterInit 関数の lpspi_master_config_t 構造を使用すると、 bitsPerFrame を 24 に設定できます。DMA を使用せずに標準転送を行う場合、これは問題ではありません。 2. ただし、API の LPSPI_MasterTransferEDMA 関数で DMA を使用する場合、24 ビット フレーム サイズのケースは eDMA ハードウェアによって処理またはサポートされませんか?LPSPI_MasterTransferEDMALite では、DMA 転送幅は edma_transfer_config_t 構造体で設定されます。具体的には、srcTransferSize フィールドと destTransferSize フィールドは、SPI フレーム サイズ (bytesPerFrame) から導出される bytesEachRead 値と bytesLastWrite 値に基づいて構成されます。 /* LPSPI_MasterTransferPrepareEDMALite */ uint32_t bytesPerFrame = ((base->TCR & LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT) / 8U + 1U; if (bytesPerFrame <= 4U) { handle->bytesEachWrite = (uint8_t)bytesPerFrame; // for 24bit frames = 3 handle->bytesEachRead = (uint8_t)bytesPerFrame; // .... handle->bytesLastRead = (uint8_t)bytesPerFrame; // .... } /* now back in LPSPI_MasterTransferEDMALite */ switch (handle->bytesEachRead) //bytes each transfer { case (1U): transferConfigRx.srcTransferSize = kEDMA_TransferSize1Bytes; transferConfigRx.minorLoopBytes = 1; if (handle->isByteSwap) { addrOffset = 3; } break; case (2U): transferConfigRx.srcTransferSize = kEDMA_TransferSize2Bytes; transferConfigRx.minorLoopBytes = 2; if (handle->isByteSwap) { addrOffset = 2; } break; case (4U): transferConfigRx.srcTransferSize = kEDMA_TransferSize4Bytes; transferConfigRx.minorLoopBytes = 4; break; default: transferConfigRx.srcTransferSize = kEDMA_TransferSize1Bytes; transferConfigRx.minorLoopBytes = 1; assert(false); break; } デフォルトのケースが発生し、3 バイトのケースは処理されないためエラーが発生します。EDMAハードウェアは3バイト転送をサポートしていますか?基本的に、uint32_tのデータとフレームを3バイトとして扱い、最上位バイトを無視してDMA転送を行いたいのですが、可能ですか? Re: i.MX RT1060 API's LPSPI_MasterTransferEDMA does not support 24bit framesize? こんにちは@azoneさん、 弊社の製品にご興味をお持ちいただき、またコミュニティをご利用いただき誠にありがとうございます。 次のリンクを確認してください。eDMA は 1、2、4、8、16、32、64 バイトの転送サイズをサポートしており、24 ビット (3 バイト) の転送サイズはサポートしていないことが説明されています。 MCUXpresso SDK APIリファレンスマニュアル: EDMA: 拡張ダイレクトメモリアクセス (eDMA) コントローラドライバ よろしくお願いいたします。 メイリュー Re: i.MX RT1060 API's LPSPI_MasterTransferEDMA does not support 24bit framesize? わかりました。確認してくれてありがとう。これで、動作させるために時間を無駄にすることがなくなりました。したがって、唯一の方法は、すべてをuint8_tデータとしてkLPSPI_MasterPcsContinuousで3バイトとして送信することです。これは他のすべてのペリフェラルでも同じ方法で実行しているので問題ありませんが、16ビットDAC実装の場合は不要なオーバーヘッドが発生します。ありがとうございます。
View full article
i.MX 8/8X 系列 DDR 工具发布 重要提示:如果您对 DDR 工具或支持文档有任何疑问,或想报告相关问题,请在 i.MX 社区创建支持工单。请注意,任何私人消息或直接电子邮件均不会被监控,也不会收到回复。 i.MX 8/8X DDR 工具概览 此页面包含 i.MX 8/8X DDR 工具的最新发布版本。本页面所述工具适用于以下配备系统控制器单元(SCU)的 i.MX 8/8X 系列 SoC: i.MX 8QuadMax 及其衍生产品 i.MX 8QuadPlus i.MX 8QuadXPlus 及其衍生产品 i.MX 8DualXPlus 和 i.MX 8DualX i.MX 8DXL (i.MX 8XLite) 及其衍生产品 i.MX 8SXL 注意:有关 i.MX 8M 系列的 DDR 工具,请参考:i.MX 8M 系列 DDR 工具发布说明                          i.MX 8/8X DDR 工具的用途是让用户能够根据其设备配置(密度、片选数量等)和电路板布局(数据总线位交换等)生成并测试自定义的 DRAM 初始化程序。此过程使用户能够继续进行引导加载程序和操作系统的启动工作。操作系统启动后,建议运行基于操作系统的内存测试(如 Linux memtester),以进一步验证和测试 DDR 内存接口。 i.MX 8/8X DDR 工具包括: DDR 寄存器编程辅助工具 (RPA) DDR 压力测试 有关这些 DDR 工具及其用法的更多详细信息,请参阅本页附带的 MX8X_DDR_Tools_quickstart_guide.pdf。 i.MX 8/8X DDR 寄存器编程辅助工具 (RPA) i.MX 8/8X DDR RPA(简称 RPA)是一个 Excel 电子表格工具,用于根据用户特定的 DDR 配置(DDR 设备类型、密度等)开发 DDR 初始化程序。RPA 以两种格式生成 DDR 初始化程序(在单独的 Excel 工作表标签中): DDR 压力测试脚本:此格式专门用于 DDR 压力测试,方法是先复制此工作表标签中的内容,然后将其粘贴到文本文件中,并将该文档命名为带有 “.ds” 文件扩展名的文件。用户在执行 DDR 压力测试时将选择此文件。 DCD CFG 文件:此格式是系统控制器单元固件 (SCFW) 专门使用的配置文件。在这种情况下,用户复制此工作表标签中的内容,将其粘贴到文本文件中,将该文档命名为带有 “.cfg” 文件扩展名的文件,并将此文件放置在适当的 SCFW 板文件目录中。 i.MX 8/8X DDR 寄存器编程辅助工具 (RPA):当前版本 注意:在所有情况下,RPA 版本都与最低 SCFW 版本对齐,如下表所示。在某些情况下,提供 BSP 对齐作为额外细节,但是,RPA 工具专门与最低 SCFW 版本及更高版本对齐。 要获取最新的 RPA,请参考以下链接(注意,现有的 RPA 已从本主页面移除,并移至下方特定于 SoC)的链接中): i.MX8QM: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QM-DDR-Register-Programming-Aid-RPA/ta-p/1166307 i.MX8QXP/QXP/DX: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QXP-DXP-DX-DDR-Register-Programming-Aid-RPA/ta-p/1166302 i.MX8DXL/SXL: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8DXL-DDR-Register-Programming-Aid-RPA/ta-p/1602262 处理器 掩模版本 支持的存储器 最新 RPA 版本 * 说明 i.MX 8QM B0 LPDDR4 版本 23*** 启示录 22** 版本 21** 版本 20** 版本 19** 版本 23:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 22:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 版本 21:修复了 1 个 DRC 操作,将对 VREF 训练的调用注释掉以用于 DRC1,并添加了 DDRC_SCHED 寄存器编程,以与最新的 SCFW 编程对齐(有关更多详细信息,请参考 RPA 修订历史)。 Rev 20:与 SCFW 1.4.0 和 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本一起使用(以支持 SW VREF 训练规避命令) 版本 19:与 SCFW 1.3.1 和 NXP BSP GA 版本 L5.4.3_1_0_0 一起使用 i.MX 8QXP C0、B0 LPDDR4 版本 16*** 版本 15** 版本 14** 版本 13** 版本 16:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 15:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 版本 14:与 SCFW 1.4.0 和 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本一起使用(以支持 SW VREF 训练变通命令) 版本 13:与 SCFW 1.3.1 和 NXP BSP GA 版本 L5.4.3_1_0_0 一起使用 i.MX 8QXP C0、B0 DDR3L 启示录 23 版本 22*** 版本 21 版本 20 版本 23: -修正了寄存器配置 DDR_PHY_PTR4.tDINIT1 位域编程。以前,计算仅基于 tRFC,但是,计算应该基于 “tRFC + 10ns”。此问题已得到纠正。 -将 DDRC_INIT4、DDR3 MR2.ASR = 1 设置为默认设置,以允许 DRAM 根据其外壳温度自动选择自刷新速率(但用户可以通过下拉菜单选择禁用)。此外,删除了 DTCR0.DTRDBITR 的条件设置,因为 DDR3 不支持 DBI,所以不需要该设置。此设置的默认值为零,并将保持不变。 -为用户提供了根据 DDR3L 设备的预期最高温度(1X、2X、4X)选择自动刷新速率的选项。用户应参考 DDR3L 数据表以了解支持的温度范围和相关的刷新速率。 版本 22:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 21:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 - 与 SCFW 1.1.10 及更高版本兼容 -此版本所做的更改不会影响基于 v19 的 DCD CFG 文件输出 -在 DDR 压力测试脚本中发现问题,即某些命令没有根据寄存器配置工作表中的 ECC 设置进行正确配置;此问题已得到解决(单元格 A84、A87、A90、A93) -此外,在 DCD CFG 和 DDR 压力测试脚本工作表中,所有依赖于 ECC 配置的命令都已更新,以包括与数据总线是否配置为 16 位的 “或” 运算(ECC 仅支持全 32 位数据总线宽度配置) i.MX 8DualX C0、B0 LPDDR4 版本 16*** 版本 15* 版本 14** 版本 13** 版本 16:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 15:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 版本 14:与 SCFW 1.4.0 和 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本一起使用(以支持 SW VREF 训练变通命令) 版本 13:与 SCFW 1.3.1 和 NXP BSP GA 版本 L5.4.3_1_0_0 一起使用 i.MX 8DualX C0、B0 DDR3L 版本 21 版本 20*** 版本 19 版本 18 版本 21: -修正了寄存器配置 DDR_PHY_PTR4.tDINIT1 位域编程。以前,计算仅基于 tRFC,但是,计算应该基于 “tRFC + 10ns”。此问题已得到纠正。 -将 DDRC_INIT4、DDR3 MR2.ASR = 1 设置为默认设置,以允许 DRAM 根据其外壳温度自动选择自刷新速率(但用户可以通过下拉菜单选择禁用)。此外,删除了 DTCR0.DTRDBITR 的条件设置,因为 DDR3 不支持 DBI,所以不需要该设置。此设置的默认值为零,并将保持不变。 -为用户提供了根据 DDR3L 设备的预期最高温度(1X、2X、4X)选择自动刷新速率的选项。用户应参考 DDR3L 数据表以了解支持的温度范围和相关的刷新速率。 版本 20:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 19:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 - 与 SCFW 1.1.10 及更高版本兼容 *有关 RPA 以前版本的历史记录,请参考相应 RPA 的 “修订历史” 标签。 ** 一般来说,即使使用预发布的 BSP,也建议使用最新的 RPA 工具,因为它确保您使用最新的修复程序和功能进行测试。可能会提供较旧版本的 RPA 以支持 BSP 的现有/已发布版本。这仅适用于那些与预发布 BSP 兼容但可能与 BSP 的已发布版本不兼容的 RPA 工具。 ***重要提示:如表格上方所述,对于所注明的 RPA 版本,它与 SCFWv1.7.0(及更高版本的 SCFW)对齐。旧版本的 RPA 与 SCFWv1.7.0(及更高版本的 SCFW)不对齐。如果尝试将旧版本的 RPA 与 SCFWv1.7.0(及更高版本的 SCFW)一起使用,将导致 SCFW 无法启动。DCD 输出中的问题行如下: 对于 MX8QXP/DualX: 数据 4 0xff190000 0x00000CC8 /* DRC0 启动 */ 对于 MX8QM: 数据 4 0xff148000 0x00000885 /* DRC0 启动 */ 数据 4 0xff1a0000 0x00000885 /* DRC1 启动 */ 如果用户希望使用带有 SCFW 1.7.0(及后续版本)的较旧 RPA(不推荐),则必须从较旧 RPA DCD 文件输出中删除上述行。此外,这些行被以下预处理命令包裹:"#ifndef SCFW_DCD"、"#else" 和 "#endif"。这些也应该被移除。例如 MX8QXP: [移除] ifndef SCFW_DCD [移除] /* 对于 1200MHz DDR,DRC 600MHz 操作 */ [移除] DATA 4 0xff190000 0x00000CC8 /* DRC0 启动 */ [移除] #else [移除] #endif 注意:当提到 “SCFWv1.7.0(及更高版本的 SCFW)” 时,它指的是 SCFWv1.7.0、1.7.1、1.7.2……1.8.0、1.9.0、1.10.0…… 等,其中 “……” 是次要版本 / 补丁,因此当您看到 1.7.2…… 时,它指的是 1.7.3、1.7.4 等)。除非另有说明,表格上方所示的最新 RPA 与最新的 SCFW 版本对齐。 i.MX 8/8X DDR 压力测试 i.MX 8/8X DDR 压力测试工具是一个基于 Windows 的软件工具,用于在构建用于 u-boot 和操作系统启动的 SCFW 之前,验证 DDR 初始化程序是否可运行。DDR 压力测试使用从 RPA 工具生成的 .ds DDR 压力测试脚本以及 SCFW 的特殊构建版本,该版本使用以下选项构建: DDR_CON=ddr_stress_test_parser 或者在 i.MX 8QuadMax 的情况下使用一个 DDR 控制器: DDR_CON=ddr_stress_test_parser_DRC0_only DDR 压力测试提供了一个 “Target” 选项,用于指定正在测试的 SoC。以下是可供选择的目标选项: MX8QM – 用于测试 i.MX 8QuadMax 及其衍生产品 i.MX 8QuadPlus MX8QX – 用于测试 i.MX 8QuadXPlus 及其衍生产品 i.MX 8DualXPlus/DualX MX8DXL – 用于测试 i.MX 8DXL 及其衍生产品 i.MX8 SXL   要安装 DDR 压力测试工具,请保存并解压 zip 文件 mx8_ddr_stress_test_ERxx_installation.zip(其中 “xx” 是当前版本号),然后按照屏幕上的安装说明进行操作。 注意,解压 DDR 压力测试工具 .zip 文件时,建议执行 “在此处解压” 操作。某些系统不允许从另一个文件夹运行解压后的安装可执行文件,只有从与原始下载的 zip 文件相同的位置执行时才能工作。 有关 DDR 压力测试使用方法的更多详细信息,请参考 DDR 压力测试工具交付内容中的 MX8_DDR_Tool_User_Guide。 注意:在新的自定义板上使用 DDR 工具之前,用户应正确地将系统控制器单元固件(SCFW)移植到此新板上。没有正确移植且可工作的 SCFW,DDR 工具将无法运行。          i.MX 8/8X DDR 压力测试 要求 该工具需要访问Windows注册表,因此用户必须以管理员模式运行它。 该工具不能在需要由客户签名的镜像的 OEM 封闭设备上运行。 当用户设计新的 i.MX 8/8X 板时,请确保遵循相应的硬件开发指南和 MX8_DDR_Tool_User_Guide 中概述的规则,这可以帮助用户在其各自的 i.MX 8/8X 板上启动 DDR 设备。   i.MX 8/8X DDR 压力测试 SECO 固件 通常不建议更新 DDR 压力测试默认附带的 SECO (ahab) 固件。不建议这样做是因为 DDR 压力测试的目的是测试 DDR 内存接口,而非整个 SCFW 到 SECO 固件的操作,即便较新版本的 SCFW 可能会提示 SECO 固件版本不是最新的。DDR 压力测试附带的 SECO 固件版本在 DDR 压力测试发布前已通过工厂测试并证实可用;将 SECO 固件更新为其他版本可能会导致意外后果,使 DDR 压力测试无法运行。在大多数情况下,仅更新 SCFW 而不更新 SECO 固件是允许的。 如果用户希望更新 DDR 压力测试中的 SECO 固件版本,则需要重命名该固件,去掉芯片版本(例如,更新 MX8QM SECO 固件时,用户需要将 mx8qmb0-ahab-container.img 重命名为 mx8qm-ahab-container.img,主要是去掉 “b0”)。MX8QXP 是个例外,如果更新 C0 芯片版本的 SECO 固件,用户应保留 C0 这一命名。 如果用户发现更新后的 SECO 固件导致 DDR 压力测试无法运行,建议恢复为 DDR 压力测试发布时附带的默认 SECO 固件版本。 i.MX 8/8X DDR压力测试用户指南 i.MX 8/8X DDR 压力测试工具包含文档:MX8_DDR_Tool_User_Guide.pdf 注意:使用本工具前,请仔细阅读包内的 MX8_DDR_Tool_User_Guide。 DDR 压力测试修订历史 版本 主要变更(功能) NXP BSP软件版本 ER 14 已更新以支持解析 DDR 压力测试脚本中的 VREF 训练命令 此版本与 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本对齐。 ER15 - 支持 i.MX 8Lite(又名 DXL) - 在数据训练失败时提供更详细的输出,特别是指出哪些字节通道失败 - 有助于调试电路板布局问题 此版本与 NXP BSP GA 版本 Linux 5.15.71_2.2.0 及更高版本保持一致。  相关资源链接: i.MX 8ULP DDR 工具:i.MX 软件和开发工具 | NXP Semiconductors 向下滚动到“其他资源 --> 工具 --> DDR 工具” i.MX 8M 系列 DDR 工具发布 i.MX 6/7 DDR 压力测试 GUI 工具 i.MX 8QM RPA: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QM-DDR-Register-Programming-Aid-RPA/ta-p/1166307 i.MX 8QXP/DXP/DX RPA: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QXP-DXP-DX-DDR-Register-Programming-Aid-RPA/ta-p/1166302 i.MX 8DXL (i.MX 8XLite) RPA: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8DXL-DDR-Register-Programming-Aid-RPA/ta-p/1602262 常见问题: 问:DDR 压力测试运行时,会显示先测试区域 1,然后测试区域 2。什么是区域 1 和区域 2? 答:i.MX8X 系列中有两个不同的 DDR 内存区域,这是由于 Cortex A 内核的架构以及 i.MX8X 相关的内存映射所致。 区域 1 是 32 位区域,起始地址为 0x080000000,结束地址为 0x0FFFFFFFF(共 2GB) 区域 2 是 64 位区域(针对 Cortex A 内核架构),起始地址为 0x880000000,结束地址取决于剩余密度: •对于板载总密度为 4GB 的情况,区域 1 为 2GB,区域 2 为 2GB,因此区域 2 的结束地址为 0x8FFFFFFFF(0x900000000 减 1) •对于总密度为 6GB(NXP 板卡密度)的情况,区域 1 为 2GB,区域 2 为 4GB,因此区域 2 的结束地址为 0x97FFFFFFF(0x980000000 减 1) •对于总密度为 8GB 的情况,区域 1 为 2GB,区域 2 为 6GB,因此区域 2 的结束地址为 0x9FFFFFFFF(0xA00000000 减 1) 因此,区域 1 和区域 2 之间的内存映射存在一个 “空洞”。因此,DDR 压力测试首先测试较低的区域(区域 1),直到该区域测试完毕(最多 2GB),如果 DDR 密度超过 2GB,测试将在区域 2 中测试剩余密度。 问:i.MX8X 系列片上系统是否支持具有 17 个行地址 (R [16:0]) 的 LPDDR4 存储器? 答:i.MX8QM、i.MX8QXP 和 i.MX8DXP 片上系统及其衍生产品不支持较新的 17 行地址 LPDDR4 存储器。这意味着,为了支持最大 4GB(32Gb)的 LPDDR4 密度,配置必须为 16 行、2 秩(而非不支持的 17 行、1 秩)。即将推出的 i.MX8DXL 计划支持 17 行地址的 LPDDR4 设备。 问:运行 DDR 压力测试时,我可以选择不同的 i.MX8X AP UART 端口吗? 答:强烈建议遵循 NXP 板卡设计,包括选择相同的 UART 端口;这将减轻用户的软件移植工作,并最大限度地减少不必要的调试问题。DDR 压力测试需要使用 USB OTG 端口和 AP UART 端口(强烈建议连接 SCFW UART 端口以获取 SCFW 调试信息)。到目前为止,工厂认为用户没有理由选择与 NXP 板卡上使用的不同的 AP UART 端口。选择相同的 AP UART 端口可确保 DDR 压力测试更快启动,而不是不必要地调试为什么不同的 UART 端口无法工作。 无论如何,有些人出于某种原因希望使用不同的 UART 端口,因此,NXP 提供了变通方法以允许选择不同的 UART 端口。要选择不同的 UART 端口(0、1 或 2),用户只需在 DDR 压力测试 DDR 初始化(.ds)脚本的末尾添加以下行: memory set  0x5C01042C 32   内存设置 0x5C01042C 32 0x00000000 # UART0 端口选择用于 AP UART(默认) 内存设置 0x5C01042C 32 0x00000001 # UART1端口选择用于AP UART 内存设置 0x5C01042C 32 0x00000002 # UART2端口选择用于AP UART 请注意,UART 端口 0、1 和 2 具有作为默认 UART 引脚的焊盘名称(IOMUX ALT0 配置)。到目前为止,DDR 工具不支持在其他非默认 UART 引脚上多路复用的其他 UART 端口。不过,i.MX8QXP/DXP 和即将推出的 i.MX8DXL 是个例外,它们可以使用在 FLEXCAN2 上多路复用的 UART3。要选择此端口,请在 .ds 文件的末尾添加以下内容: 内存设置 0x5C01042C 32 0x00000003 # UART3 端口选择用于 AP UART(i.MX8QXP/DXP 和 i.MX8DXL 除外) 有些 RPA 内置了支持(通过下拉菜单)来选择 UART 端口。对于那些没有此功能的 RPA,这是因为这些 RPA(恩智浦板卡)未使用不同的 UART 端口进行测试,因为板卡需要切割线路并重新连接 UART 信号,而且有些板卡可能没有现成的这些 UART 线路。不过,用户仍然可以手动添加此 UART 端口选择。参考以下 RPA 以查看 UART 端口选择选项: MX8QXP DDR3 MX8DXP DDR3 问:测试 [8GB(64Gb)的 MX8QM 或 4GB(32Gb)的 MX8QXP] 的 LPDDR4 内存时,DDR 压力测试为何似乎挂起? 答:此问题并非由 DDR 压力测试本身引起,而是由所使用的 SCFW 版本导致。默认版本的 SCFW 二进制文件早于 SCFW 所做的一项更改,即当检测到 DDR 压力测试正在运行时忽略 DRAM 密度限制。与 DDR 压力测试 ER14 相关联的此版本 SCFW 将可测试的 DRAM 密度限制为 [MX8QM:6GB,MX8QXP:3GB],因为此版本的 SCFW 配置为在恩智浦板卡上运行作为基础。如 DDR 压力测试用户指南中所述,建议用户在使用 DDR 压力测试之前,先将最新的 SCFW 移植到其板卡上,以考虑恩智浦板卡与其板卡之间的差异。此外,用户有以下选项可启用超出 [MX8QM:6GB,MX8QXP:3GB] 的测试;请注意,在运行 DDR 压力测试之前,用户有责任确保 SCFW 有一个正常工作的移植版本。 1.最新的 SCFW 应包含一项更新,即如果检测到 SCFW 是为与 DDR 工具一起使用而构建的,则设置无密度限制 —— 用户可以尝试获取最新的移植工具包并构建新的固件。这是推荐的更改。 2. 如果使用早于此更改的现有/较旧版本的 SCFW,在 board.c 的 board_system_config () 函数中,有以下代码块(显示 MX8QM 示例): /* Board has 6GB memory so fragment upper region and retain 4GB */         BRD_ERR(rm_memreg_frag(pt_boot, &mr_temp, 0x980000000ULL,             0xFFFFFFFFFULL)); 用户可以按如下方式进行修改:     if (ddrtest == SC_FALSE)     {         sc_rm_mr_t mr_temp;         /* Board has 6GB memory so fragment upper region and retain 4GB */         BRD_ERR(rm_memreg_frag(pt_boot, &mr_temp, 0x980000000ULL,             0xFFFFFFFFFULL));         BRD_ERR(rm_memreg_free(pt_boot, mr_temp));     } 如果 SCFW 是为 DDR 工具构建的,这将禁用此部分代码的执行(与 1 相同,但使用较早的固件版本时需要用户手动完成)。 3. 在上述代码块中,将 0x980000000 更改为 0xA00000000。这应该允许上述 MX8QM 示例支持 8GB 密度(对于 MX8QXP,将 0x8C0000000ULL 更改为 0x900000000ULL 以支持 4GB 密度)。 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus
View full article
FormatKeyCatalog 返回不同的错误代码 你好@lukaszadrapa 我在 S32K344 上运行 HSE 的同一个项目有 2 种不同的版本配置,我遇到了一个奇怪的问题,那就是我的 FormatKeyCatalog API 在项目 A 中返回 HSE_SRV_RSP_OK,而在项目 B 中它在同一硬件上返回 HSE_SRV_RSP_NOT_SUPPORTED。 我还附上了两个方案的 SS。两种配置均在禁用 D-Cache 的情况下运行。 Re: FormatKeyCatalog returns different error codes 请注意,在圣诞假期期间,我们的支持响应时间可能会比平时长。在某些情况下,您的请求可能会在新年后得到处理。感谢您的理解。 Re: FormatKeyCatalog returns different error codes 你好@R_S002 " 同一个项目的 2 种不同的版本配置 " 是什么意思? 两个项目的目录是否相同?或者有什么区别?我需要更多的详细信息,以便提供一些帮助。 此致, Lukas
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