Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
S32K3: スリープモード中のWKPUウェイクアップ割り込み動作 こんにちは、NXPサポートの皆さん、 S32K312 MCUを使用しており、割り込みコールバック付きのWKPU(ウェイクアップユニット)チャネルを設定しています。 注:Wkpu[n]に+4のオフセットを加算します -> n+4 ECUが低電力モードに入った際のWKPUの動作について明確にしたいと思います。 私たちの質問は次のとおりです。 MCUがスリープ/スタンバイモードの場合、WKPUは設定済みの外部ウェイクアップピンを引き続き監視しますか? 設定済みの外部エッジがスリープ/スタンバイモードで検出された場合、WKPUはMCUを起動させますか? MCUが起動した後、設定されたWKPU割り込みコールバックは自動的に実行されるのか、それとも追加のソフトウェア処理が必要になるのか? スリープ/スタンバイモードからの覚醒を保証するために、特定のWKPU、NVIC、または電源管理の設定が必要ですか? S32K312でサポートされている低電力モード(スリープ、ストップ、スタンバイなど)間で、WKPUのウェイクアップ動作に違いはありますか? 私たちはこのS32K312にNXP RTDドライバを使用しています。 再開まで今しばらくお待ちください。 Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode こんにちは、NXP チームの皆様、 迅速なご対応ありがとうございます。 私はNXP S32K312 MCUを使っています。PTB2(WKPUチャネル8)に外部割り込みソース(WKPU)を設定しました。割り込みは、センサーINT2ピンがアサートした際にMCUをスリープ/スタンバイモードから起動させることを目的としています。 私の質問は次のとおりです。 外部WKPU割り込みを受信した場合、ウェイクアップ後に設定されたコールバック関数を自動的に呼び出すべきでしょうか? それとも、WKPUは外部ソースがWKPUピンの入力として設定されているときだけウェイクアップイベントを発生させ、PTB2をEIRQピンとして設定し、WKPU**ドライバ**を**ペリフェラル**として使う必要があるのでしょうか? コールバックが想定される場合、追加の設定(NVIC、割り込みルーティング、WKPU設定、モード依存の制限など)が必要ですか? 私の現在の実装では、外部割り込みは実行モードでEIRQ/ECUとして設定するとMCUを正常に起動させますが、スタンバイモードでは動作せず(Wkpuがピンとペリフェラルの両方に設定されている場合)、設定されたコールバックは実行されません。 WKPUの期待される挙動とコールバック実行に必要な設定について、説明していただけますか? よろしくお願いします。 Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode こんにちは、 @Dia さん。 はい、WKPUエンジンは複数の設定可能な非同期ウェイクアップイベントからチップをウェイクアップする機能を持っています。 はい。こちらがWKPUの起床イベント後の待機出口シーケンスです: スタンバイモード終了後、以下のイベントが発生します。 目覚めのイベントが訪れる FIRCは(スタンバイモードで無効になっている場合)電源がオンになります。 PMCはFPMへの移行プロセスを開始します(例えば、ラストマイルレギュレータを有効にし、チップにV1_RUN電源を供給します)。 MC_PCUは実行ドメインとスタンバイドメインの分離を解消します ドメインリセット解除(スタンバイエントリ時にアサートされる)を実行すると、チップはこのドメインの機能リセット終了シーケンスを実行します。 チップは動作実行モードに入ります 追加の設定が必要です。ウェイクアップフラグレジスタはウェイクアップ後も保持されるため、ウェイクアップユニットのNVIC→ISERがコードで有効化されるとウェイクアップISRを入力できます。したがって、ウェイクアップ後、実行モードでプラットフォーム関数を呼び出してウェイクアップ用の割り込みを有効にする(WKPU_IRQnにISERを設定しNVIC_)すると、プログラムはウェイクアップ割り込み機能にジャンプします。 S32K3は2つのモードのみをサポートしています:ランとスタンバイ。 しかし、ウェイクアップの挙動には違いがあり、S32K3は通常のスタンバイ出口または高速スタンバイ出口を選択できます。 リセットと通常のスタンバイ終了はHSE sBAFの初期化コードとHSE_FW検証の両方を実行し、高速スタンバイ終了は時間を節約するためにバイパスし、ユーザー定義のアドレスで起動します。詳細については、S32K3XXのリファレンスマニュアルにある 図176 (電源起動シーケンス)を参照してください。 S32K3の低電力管理ANやデモのパワーマネージメントドキュメントを調べてみることをおすすめします。 最新の例も参照できます:[RTD600 MCAL & IP] S32K3 低パワーマネージメントANやデモ。 よろしくお願いします、 ジュリアン Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode こんにちは、 @Dia さん。 外部WKPU割り込みを受信した場合、ウェイクアップ後に設定されたコールバック関数を自動的に呼び出すべきでしょうか? 割り込み初期化を呼び出すと、WKPU_EXT_IRQ_SINGLE_ISR()が入力されます。コールバックを使う場合は、割り込み初期化を呼び出す前に以下の行を追加できます: Wkpu_Ip_u32ChState[0].chInit = TRUE; Wkpu_Ip_u32ChState[0].notificationEnable = TRUE; Wkpu_Ip_u32ChState[0].WkpuChannelNotification = Wkpu_Callback; IntCtrl_Ip_Init(&IntCtrlConfig_0); ISRの処理が完了すると、WKPUコールバックが開始されます。 それとも、WKPUは外部ソースがWKPUピンの入力として設定されているときだけウェイクアップイベントを発生させ、PTB2をEIRQピンとして設定し、WKPU**ドライバ**を**ペリフェラル**として使う必要があるのでしょうか? これも妥当な意見です。コールバック設定を使って、WKPUリクエストがスタンバイ前に呼び出されたかどうかを確認できます。 コールバックが想定される場合、追加の設定(NVIC、割り込みルーティング、WKPU設定、モード依存の制限など)が必要ですか? 最初の回答を参照してください。 スタンバイ出口(ウェイクアップ)直後にMCUを止めて、MCUがジャンプしているかどうかを確認するためにWKPU_EXT_IRQ_SINGLE_ISRの中にブレークポイントを入れることはできますか? よろしくお願いします、 ジュリアン
View full article
pn7642 Does PN7642 GPT support hardware Input Capture on GPIO pins? If yes, which GPIOs can be connected to GPT capture channels? If not, what is the recommended method for timestamping ASK/FSK edges for 125 kHz RFID processing? Re: pn7642 Hello @AlexPI Hope you are doing well. General Purpose Timers may not support such feature. Perhaps you could consider the SCTimer/PWM module; more information on this can be found in the secure User Manual (NDA is required, and must be requested through the Secure Access Rights | NXP Semiconductors). Regards, Eduardo.
View full article
PMIC PF8200 I2C register default/reset values I am using the PF8200 with an OTP configuration. I need to load some registers by SCFW with new values to change the PMIC configuration. The register bits which are not loaded by OTP values do not have default values specified in datasheet.  What are these values to know if it is useful or not to load all the registers not already loaded by OTP. Thanks; Re: PMIC PF8200 I2C register default/reset values Thanks for quick answer. I do not find any information about their default values after power-up. Please, let me inform where I can find this information ! Re: PMIC PF8200 I2C register default/reset values Hello, Registers or bits that are not loaded from OTP are initialized to their default values after power-up. Therefore, it is not necessary to configure all non-OTP registers through SCFW unless you need values different from the default settings. To determine whether additional initialization is required, please compare your desired configuration against the default register values. Please see PF82 family I2C register Map Hope this helps! Re: PMIC PF8200 I2C register default/reset values Could you please confirm which registers you are interested in?  Re: PMIC PF8200 I2C register default/reset values For example, register 05 INT_MASK_1. But all registers specified as OFF_TOGGLE. Thanks.
View full article
S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode Hello NXP Support, We are using the S32K312 MCU and have configured a WKPU (Wake-Up Unit) channel with an interrupt callback. Note: Add +4 offset to Wkpu[n] -> n+4 We would like to clarify the behaviour of the WKPU when the ECU enters a low-power mode. Our questions are: If the MCU is in Sleep/Standby mode, does the WKPU continue monitoring the configured external wake-up pin? When the configured external edge is detected during Sleep/Standby mode, will the WKPU wake the MCU? After the MCU wakes up, will the configured WKPU interrupt callback be executed automatically, or is additional software handling required? Are there any specific WKPU, NVIC, or Power Management configurations required to ensure wake-up from Sleep/Standby mode? Are there any differences in WKPU wake-up behaviour between the supported low-power modes (Sleep, STOP, STANDBY, etc.) on the S32K312? We are using the NXP RTD drivers for the S32K312. Thank you for your support. Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode Hi NXP Team, Thanks for your quick response. I am using the NXP S32K312 MCU. I have configured an external interrupt source (WKPU) on PTB2 (WKPU Channel 8). The interrupt is intended to wake the MCU from Sleep/Standby mode when the Sensor INT2 pin asserts. My question is: When an external WKPU interrupt is received, should the configured callback function be invoked automatically after wake-up? Or does the WKPU only generate a wake-up event when the external source is configured as an input on the WKPU pin, and do I need to configure PTB2 as an EIRQ pin and use the WKPU driver as the peripheral? If a callback is expected, are there any additional configurations required (e.g., NVIC, interrupt routing, WKPU settings, or mode-dependent limitations)? In my current implementation, the external interrupt successfully wakes the MCU when configured as EIRQ/ECU in Run mode, but it does not work in Standby mode(Wkpu configured in both pin and peripherals), and the configured callback is not executed. Could you please clarify the expected WKPU behavior and the required configuration for callback execution? Thank you. Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode Hi @Dia, Yes, the WKPU engine has the wake-up capability to the chip from multiple configurable asynchronous wake-up events. Yes. Here is the standby exit sequence after a WKPU wake-up event: After Standby mode exit, the following events occur: A wake-up event arrives FIRC gets powered up (if disabled in Standby mode) PMC starts the transition process to FPM (for example, enables the last-mile regulator and provides V1 _RUN supply to the chip) MC_PCU removes the isolation between Run and Standby domains Run domain reset deasserts (it’s asserted on Standby entry) and the chip undergoes a functional reset exit sequence for this domain The chip enters Run mode of operation Additional configuration is needed. Since the wakeup flag register is retained after waking up, the wakeup ISR can be entered once the NVIC→ISER of Wakeup Unit is enabled by code. So, after wake-up and in Run mode, if you call Platform functions to enable interrupt for wake-up (configure NVIC_ ISER for WKPU_IRQn) then your program will jump into wake-up interrupt function. S32K3 only supports two modes: Run & Standby. However, there is a difference in wake-up behavior, as S32K3 can select normal Standby exit, or Fast Standby exit: Reset and normal Standby exit will perform both the HSE sBAF initialization code and HSE_FW verification, while fast standby exit will bypass it to save time, and boot to a user defined address. You can refer to Figure 176 (Power-up sequence) from the S32K3XX reference manual for further details. I suggest looking into the low power management documentation from S32K3 Low Power Management AN and demos. You can also refer to the latest examples: [RTD600 MCAL & IP] S32K3 Low Power Management AN and demos. Best regards, Julián Re: S32K3: WKPU Wake-Up Interrupt Behaviour During Sleep Mode Hi @Dia, When an external WKPU interrupt is received, should the configured callback function be invoked automatically after wake-up? After calling interrupt initialization, WKPU_EXT_IRQ_SINGLE_ISR() will be entered. If you need to use callback, you can add the following lines before calling interrupt initialization: Wkpu_Ip_u32ChState[0].chInit = TRUE; Wkpu_Ip_u32ChState[0].notificationEnable = TRUE; Wkpu_Ip_u32ChState[0].WkpuChannelNotification = Wkpu_Callback; IntCtrl_Ip_Init(&IntCtrlConfig_0); After ISR is serviced, WKPU callback will be entered.  Or does the WKPU only generate a wake-up event when the external source is configured as an input on the WKPU pin, and do I need to configure PTB2 as an EIRQ pin and use the WKPU driver as the peripheral? This is valid as well. You can use callback configuration to know if a WKPU request was called before Standby. If a callback is expected, are there any additional configurations required (e.g., NVIC, interrupt routing, WKPU settings, or mode-dependent limitations)? See first response. Can you stop MCU right after Standby exit (wake-up), and place a breakpoint inside WKPU_EXT_IRQ_SINGLE_ISR to see if MCU is jumping to it?  Best regards, Julián
View full article
RDDRONE-BMS772 Development Board Accessories RDDRONE-BMS772开发板配件 I apologize, you didn't understand me. My current research is about battery state estimation, which requires measuring the voltage, current, and temperature data of a real battery. Therefore, I don't need a battery simulator; I need a real battery. So, I need a battery compatible with my development board and a specific model of the corresponding battery charger. Also, are the PEMicro adapter and SEGGER J-Link Mini debugger mentioned in the link necessary hardware for debugging or programming the development board? Can't the development board be directly connected to a computer for debugging and programming? Are these adapters and debuggers available on the market? Furthermore, besides the hardware you mentioned, are there any other necessary hardware components for the development board? If so, please list the detailed accessory categories and their corresponding models. Thank you very much for your detailed answers to these questions. 抱歉,你没理解我的意思,我目前的研究是关于电池状态估计的,需要测量真实电池的电压电流和温度数据,所以我不需要电池模拟器,我需要的是真实的电池,所以我需要适配开发板的电池和对应电池充电器的具体型号;并且那个链接里提到的PEMicro适配器以及SEGGER J-Link Mini调试器是开发板调试或者烧录算法必须的硬件吗?开发板不能直接连接到电脑上进行调试和烧录程序吗?这些适配器和调试器在市面上可以买到吗?还有,开发板除了你提到的这几个硬件之外还有别的必须硬件吗?如果有的话请帮我列出详细的配件类别及其对应的型号;请您详细解答一下这些疑问,万分感谢。 Re: RDDRONE-BMS772 Development Board Accessories RDDRONE-BMS772开发板配件 Dear Fan007, For battery state estimation research, the RDDRONE-BMS772 supports real 3S to 6S Li-ion/LiPo battery packs (6 V to 26 V) and does not require a specific battery model. The selected battery must include a cell-balancing connector.  A charger compatible with the selected battery chemistry and cell count is required. No dedicated BMS communication interface is needed, as the RDDRONE-BMS772 can disconnect the charging path when necessary. For firmware development and debugging, NXP recommends an external SWD debugger such as a PEMicro Universal Multilink or SEGGER J-Link Mini. The RDDRONE-BMS772 does not include an onboard USB debug interface, so an external debugger is necessary. These debuggers are commercially available. For battery characterization and SOC/SOH algorithm development, a programmable electronic load (E-load) is also highly recommended to perform controlled charge/discharge testing.    With Best Regards, Jozef
View full article
i.MX6ULL Ethernet Clock Bug in 6.12 kernel The device tree example in 6.12 hard codes the Ethernet Phy rather than fixing this bug which did not exist in the NXP 5.15 kernel we were using. We ended up writing a patch because we would like the flexibility of the kernel detecting the PHY which is broken in the fec module.  This patch causes the phy registers to be read when the driver is loaded, rather than circumvention in device tree. On i.MX6UL boards that hang both RMII PHYs on FEC2's MDIO bus, PHY@0 uses the FEC1 (ENET1) RMII reference clock. Kernel 6.12 routes that clock through ENET1_REF_SEL, which may not be active when FEC2 reads PHY@0's ID during of_mdiobus_register(), yielding a bogus ID (0x01080108) and binding the generic PHY driver. Briefly enable FEC1's enet_clk_ref (looked up from DT, not via probe defer) around of_mdiobus_register() so the PHY ID read succeeds without changing FEC probe order and breaking FEC_QUIRK_SINGLE_MDIO. --- drivers/net/ethernet/freescale/fec_main.c | 59 +++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 811a66062..46f37be0c 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -2540,6 +2540,39 @@ static int fec_enet_mii_probe(struct net_device *ndev) return 0; } +static bool fec_enet_mdio_has_phy_addr0(struct device_node *mdio) +{ + struct device_node *child; + u32 reg; + + for_each_available_child_of_node(mdio, child) { + if (of_property_read_u32(child, "reg", ®)) + continue; + if (reg == 0) { + of_node_put(child); + return true; + } + } + return false; +} + +static struct clk *fec_enet_get_rmii_master_refclk(void) +{ + struct device_node *np = NULL; + struct clk *clk; + + while ((np = of_find_compatible_node(np, NULL, "fsl,imx6ul-fec"))) { + if (of_get_child_by_name(np, "mdio")) { + of_node_put(np); + continue; + } + clk = of_clk_get_by_name(np, "enet_clk_ref"); + of_node_put(np); + return clk; + } + return NULL; +} + static int fec_enet_mii_init(struct platform_device *pdev) { static struct mii_bus *fec0_mii_bus; @@ -2553,6 +2586,8 @@ static int fec_enet_mii_init(struct platform_device *pdev) u32 mii_speed, holdtime; u32 bus_freq; int addr; + struct clk *rmii_master_refclk = NULL; + bool peer_ref_enabled = false; /* * The i.MX28 dual fec interfaces are not equal. @@ -2662,7 +2697,26 @@ static int fec_enet_mii_init(struct platform_device *pdev) fep->mii_bus->priv = fep; fep->mii_bus->parent = &pdev->dev; + if (node && fec_enet_mdio_has_phy_addr0(node)) { + rmii_master_refclk = fec_enet_get_rmii_master_refclk(); + if (IS_ERR(rmii_master_refclk)) { + err = PTR_ERR(rmii_master_refclk); + goto err_out_free_mdiobus; + } + if (rmii_master_refclk) { + err = clk_prepare_enable(rmii_master_refclk); + if (err) + goto err_out_free_mdiobus; + peer_ref_enabled = true; + usleep_range(100, 200); + } + } + err = of_mdiobus_register(fep->mii_bus, node); + if (peer_ref_enabled) + clk_disable_unprepare(rmii_master_refclk); + if (!IS_ERR_OR_NULL(rmii_master_refclk)) + clk_put(rmii_master_refclk); if (err) goto err_out_free_mdiobus; of_node_put(node); Re: i.MX6ULL Ethernet Clock Bug in 6.12 kernel You only need to look at device tree changes to see that the new fec driver cuts corners and no longer has a clock, so the phy registers do not read initially. This is fine if you do not plan on having multiple vendors for the phy. The compatible line is needed to specify the phy register which has a bad value when there is no clock: https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm/boot/dts/nxp/imx/imx6ul-14x14-evk.dtsi#L205 In older kernels (the heritage of our device tree) the compatible line was not present for the phy. This fix allows the clock to be turned on before reading the phy so registers can be read properly, so the compatible line is not required, as it was not there in older device trees: https://github.com/nxp-imx/linux-imx/blob/lf-5.4.y/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi#L224 I have not had time to test your boards as I am busy getting our boards to work. I consider this to be a regression in the kernel. Re: i.MX6ULL Ethernet Clock Bug in 6.12 kernel Hello, Thanks for sharing the analysis and patch. Have you been able to validate this on an NXP EVK board? Best regards.
View full article
如何在LVGL中流畅地显示相机帧? 您好,我正在使用MIMXRT1176DMAA芯片。该板配备MIPI摄像头和MIPI液晶显示屏,液晶显示屏主要用于显示LVGL GUI。 目前,我希望在屏幕上显示摄像头的图像,同时在摄像头画面上叠加一些 LVGL 标签。我尝试通过 LVGL Canvas 显示相机帧,但这种方法在将相机帧传输到 Canvas 时引入了额外的处理开销,导致 CPU 使用率高和相机画面卡顿。 请问这个问题有解决办法吗?例如,LCDIFV2 的层功能能否用于在不同的层上显示内容?非常感谢您能提供任何建议。 Re: How to smoothly display camera frames in LVGL? 你好@Vinos ,如果这不是秘密,那解决方案是什么? 此致敬礼 Re: How to smoothly display camera frames in LVGL? 已解决。 Re: How to smoothly display camera frames in LVGL? 经过尝试,我发现只有在 LVGL 任务关闭时,相机屏幕才能流畅运行。目前,Layer0 是 GUI,Layer1 是摄像头。当 Layer0 关闭且 Layer1 打开时,我想添加另一个 Layer2。在 Layer3 的中心,应该有一个空心圆,除了弧形部分以外,其余部分都是透明的。 因此,我使用了 ARGB4444 格式,并通过在 LCD 上绘制一个正方形进行了简单的测试(启用 Layer0 并禁用 Layer1;或者禁用 Layer0 并启用 Layer1)。然而,生成的图像并不透明。每当调用 LCDIFV2_SetLayerBlendConfig 函数时,LCD 上的 Layer3 都不会显示图像。但是,如果将此函数注释掉,液晶显示屏将显示预期的非透明图像。 以下是代码,请参考 SDK 中的示例“lcdifv2_embedded_alpha_cm7”。 #define LCD_WIDTH 480 #define LCD_HEIGHT 640 #define CENTER_LAYER 2 #define DEMO_FB0_ADDR ((uint32_t)s_frameBuffer[0]) AT_NONCACHEABLE_SECTION_ALIGN( uint8_t s_frameBuffer[1][LCD_HEIGHT][LCD_WIDTH][2], 32); void DEMO_FillFrameBuffer(void) { uint32_t x, y; for (y = 0; y < LCD_HEIGHT; y++) { for (x = 0; x < LCD_WIDTH; x++) { s_frameBuffer[0][y][x][0] = 0x11; s_frameBuffer[0][y][x][1] = 0x11; } } } void lcd_center_layer_init() { DEMO_FillFrameBuffer(); /* Layer 1: ARGB4444 */ const lcdifv2_buffer_config_t fb1Config = { .strideBytes = (LCD_WIDTH * 2), .pixelFormat = kLCDIFV2_PixelFormatARGB4444, }; const lcdifv2_blend_config_t blend1Config = { .alphaMode = kLCDIFV2_AlphaEmbedded, }; LCDIFV2_SetLayerBufferConfig(LCDIFV2, CENTER_LAYER, &fb1Config); LCDIFV2_SetLayerSize(LCDIFV2, CENTER_LAYER, 240, 240); LCDIFV2_SetLayerOffset(LCDIFV2, CENTER_LAYER, 0, 0); /* comment or not */ LCDIFV2_SetLayerBlendConfig(LCDIFV2, CENTER_LAYER, &blend1Config); LCDIFV2_SetLayerBufferAddr(LCDIFV2, CENTER_LAYER, DEMO_FB0_ADDR); LCDIFV2_EnableLayer(LCDIFV2, CENTER_LAYER, true); LCDIFV2_TriggerLayerShadowLoad(LCDIFV2, CENTER_LAYER); } 我的代码有错误吗?谢谢。 Re: How to smoothly display camera frames in LVGL? @Vinos ,你好! 请查看以下链接: https://github.com/lvgl/lvgl/issues/262我相信这对您的询问会很有帮助。 如果对你有帮助,请告诉我! 埃德温。 Re: How to smoothly display camera frames in LVGL? 谢谢你的建议。我尝试了第二种解决方案,但是在 LVGL 中,背景是白色的,上面有一些标签。实际结果是,除了标签之外,白色背景完全覆盖了相机图像。如何将这些白色背景设置为透明? Re: How to smoothly display camera frames in LVGL? 嗨@Vinos , 我不清楚您打算如何申请这份申请,所以以下是我的建议: 请参考示例“SDK_MIMXRT1170-EVK\boards\evkmimxrt1170\driver_examples\csi\mipi_rgb”。需要将摄像机捕获的视频与 LVGL 的帧缓冲区进行合成。有两种方法可以做到这一点: 1)将相机图像从相机输出缓冲区复制到LVGL的帧缓冲区。虽然可以用 memcpy 实现,但性能会很差,所以我建议改用 DMA。 2) 直接使用另一层 LCDIFv2 作为相机的输出缓冲区,然后 LCDIFv2 硬件在显示屏上合成不同的层而无需复制。 BR, 埃德温。
View full article
Does i.MX95 support LPDDR5X memory? Does i.MX95 support LPDDR5X memory? If MR8[1:0]=01 or MR5 ID is not in your support list How do i.MX95 check supported or not? check MR register? Re: Does i.MX95 support LPDDR5X memory? Thanks for your quickly apply. Re: Does i.MX95 support LPDDR5X memory? As you said "MR8[1:0] = 01 means the device is LPDDR5X-only " MR8[1:0]=00 support LPDDR5, MR8[1:0]=01 support LPDDR5x. So what should MR8[1:0]=?? support LPDDR5 and LPDDR5x ? Re: Does i.MX95 support LPDDR5X memory? Yes, i.MX95 can work with many LPDDR5X devices, but only if those devices also support LPDDR5 backward-compatibility mode. i.MX95 does NOT support LPDDR5X-only devices.  Therefore, checking whether a memory is supported is not simply a matter of looking at MR8[1:0] or MR5 vendor ID alone. MR8[1:0] = 01 means the device is LPDDR5X-only → treat it as not supported for i.MX95, because NXP states LPDDR5X-only devices cannot be used. MR5 manufacturer/device ID is not in NXP’s validated list → it is not validated by NXP , but that alone is not the same as “impossible.” You still need to confirm from the memory datasheet that the part supports LPDDR5 mode and matches the supported density/organization/timing constraints, then validate it in the board design.
View full article
キーファクタープラグインで画像を作成する際のエラー spsdkとspsdk-pluginsをインストールして、keyfactorプラグインを使ってRT1064用のイメージを作成しました。venvでbuild_image_win.batファイルを起動すると、エラーが発生します。 SPSDKError: SPSDK: シグネチャプロバイダーはconfig type=keyfactorから作成できませんでした;url=... ログファイルに以下のエラーが表示されています。 INFO:spsdk.utils.service_provider:読み込み中プラグイン: spsdk.sp INFO:spsdk.utils.service_provider:キーファクター型のSignatureProviderが見つかりませんでした。 デバッグ:spsdk.apps.utils.utils:SPSDK:シグネチャプロバイダーはconfig type=keyfactorから作成できませんでした。URL 以下に示すように、環境のアクティブな Python エントリ ポイントを検査するテストを実行しました。 "python -c "import importlib.metadata;print([p.namep は に importlib.metadata.entry_points(group='spsdk.sp')]))」テスト結果は良好で、重要な要素はアクティブなPythonエントリポイントにあります。 ビルドバッチファイルとYAMLファイルを添付しました。 この問題をどう解決すればいいですか? Re: Error when building a image using keyfactor plugin こんにちは、 @cleo さん、 プラグインが正常に読み込まれなかったようです。https://github.com/nxp-mcuxpresso/spsdk_plugins/tree/master/keyfactorのガイドに従いましたか? https://github.com/nxp-mcuxpresso/spsdk_pluginsを参照してください。詳細については、こちらをご覧ください。 お役に立てば幸いです。 すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 -------------------------------------------------------------------------------
View full article
#S32K312 IO 输入配置 我想使用LPUART0 RX,需要配置IMCR[699],但规范中只列出了IMCR[473],那我该怎么办? Re: #S32K312 IO input config 嗨@joshua9264 S32K3xx 参考手册第 12 版第 10.1.2 节指出: “附件 IOMUX 文件中定义的 IMCR 相对于 SIUL2 内存映射部分中定义的 IMCR 编号有 512 的偏移量。” 为了帮助阐明如何应用偏移量,RM 第 4.4.3 节还提供了一个示例。 BR,VaneB Re: #S32K312 IO input config 是的,我找到了。谢谢
View full article
i.MX95はLPDDR5Xメモリをサポートしていますか? i.MX95はLPDDR5Xメモリをサポートしていますか? もしMR8[1:0]=01またはMR5 IDがサポートリストにない場合 i.MX95がサポートされているかどうかを確認するにはどうすればよいですか?MR登録簿を確認してください。 Re: Does i.MX95 support LPDDR5X memory? 迅速なご応募ありがとうございます。 Re: Does i.MX95 support LPDDR5X memory? あなたが言ったように、「MR8[1:0] = 01 は、デバイスが LPDDR5X 専用であることを意味します」 MR8[1:0]=00はLPDDR5をサポートし、MR8[1:0]=01はLPDDR5xをサポートします。 では、MR8[1:0]=??LPDDR5とLPDDR5xはサポートできますか? Re: Does i.MX95 support LPDDR5X memory? はい、i.MX95は多くのLPDDR5Xデバイスで動作しますが、それらのデバイスがLPDDR5の後方互換性モードをサポートしている場合に限ります。 i.MX95はLPDDR5X専用デバイスをサポートしていません。 したがって、メモリがサポートされているかどうかを確認するには、単にMR8[1:0]やMR5のベンダーIDだけを見るだけでは不十分です。 MR8[1:0] = 01 はデバイスがLPDDR5Xのみであることを意味します NXPはi.MX95では サポートされていない として扱→。NXPはLPDDR5Xのみデバイスは使用できないと明記している。 MR5の製造元/デバイスIDはNXPの検証済みリストに含まれていません。 → それは NXPによる検証は行われていません しかし、それだけでは「不可能」と同じではない。それでも、メモリデータシートで部品がLPDDR5モードをサポートし、対応される密度・組織・タイミングの制約に合致しているかを確認し、基板設計で検証する必要があります。
View full article
Error when building a image using keyfactor plugin I have installed spsdk and spsdk-plugins to build an image for RT1064 using the keyfactor plugin. When I am launching in venv the build_image_win.bat file I keep getting an error  SPSDKError: SPSDK: Signature provider could not be created from config type=keyfactor;url=... The log file shows the below error. INFO:spsdk.utils.service_provider:Loading plugins: spsdk.sp INFO:spsdk.utils.service_provider:SignatureProvider of type keyfactor was not found. DEBUG:spsdk.apps.utils.utils:SPSDK: Signature provider could not be created from config type=keyfactor;url I ran a test to  inspect the environment's active Python entry points as shown below "python -c "import importlib.metadata; print([p.name for p in importlib.metadata.entry_points(group='spsdk.sp')])"  " and the result of the test is good, keyfactor is in the active Python entry points. I have attached the build batch file and the yaml file. How can I fix this issue? Re: Error when building a image using keyfactor plugin Hi @cleo , Looks like the plugin was not loaded successfully. Did you follow the guide from  https://github.com/nxp-mcuxpresso/spsdk_plugins/tree/master/keyfactor ?  Please refer to https://github.com/nxp-mcuxpresso/spsdk_plugins for more details. Hope that helps, Have a great day, Kan ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "Mark Correct" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. -------------------------------------------------------------------------------
View full article
#S32K312 IO入力設定 LPUART0 RXを使用したいのですが、IMCR[699]を設定する必要がありますが、仕様にはIMCR[473]しかありません。どうすればよいでしょうか? Re: #S32K312 IO input config こんにちは、@joshua9264さん S32K3xxリファレンスマニュアル改訂版12のセクション10.1.2には次のように記されています。 「添付のIOMUXファイルで定義されているIMCRは、SIUL2メモリマップセクションで定義されているIMCR番号に対して512のオフセットを持っています。」 オフセットの適用方法を明確にするために、RMのセクション4.4.3にも例が記載されています。 BR、VaneB Re: #S32K312 IO input config はい、見つけました。ありがとう
View full article
6.12 内核中的 i.MX6ULL 以太网时钟错误 6.12 中的设备树示例对以太网 Phy 进行了硬编码,而不是修复我们在使用的 NXP 5.15 内核中不存在的这个错误。 我们最终编写了一个补丁,因为我们希望内核能够灵活地检测 PHY,而 fec 模块中存在这个问题。该补丁使得在加载驱动程序时读取物理寄存器,而不是在设备树中进行规避。 On i.MX6UL boards that hang both RMII PHYs on FEC2's MDIO bus, PHY@0 uses the FEC1 (ENET1) RMII reference clock. Kernel 6.12 routes that clock through ENET1_REF_SEL, which may not be active when FEC2 reads PHY@0's ID during of_mdiobus_register(), yielding a bogus ID (0x01080108) and binding the generic PHY driver. Briefly enable FEC1's enet_clk_ref (looked up from DT, not via probe defer) around of_mdiobus_register() so the PHY ID read succeeds without changing FEC probe order and breaking FEC_QUIRK_SINGLE_MDIO. --- drivers/net/ethernet/freescale/fec_main.c | 59 +++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 811a66062..46f37be0c 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -2540,6 +2540,39 @@ static int fec_enet_mii_probe(struct net_device *ndev) return 0; } +static bool fec_enet_mdio_has_phy_addr0(struct device_node *mdio) +{ + struct device_node *child; + u32 reg; + + for_each_available_child_of_node(mdio, child) { + if (of_property_read_u32(child, "reg", ®)) + continue; + if (reg == 0) { + of_node_put(child); + return true; + } + } + return false; +} + +static struct clk *fec_enet_get_rmii_master_refclk(void) +{ + struct device_node *np = NULL; + struct clk *clk; + + while ((np = of_find_compatible_node(np, NULL, "fsl,imx6ul-fec"))) { + if (of_get_child_by_name(np, "mdio")) { + of_node_put(np); + continue; + } + clk = of_clk_get_by_name(np, "enet_clk_ref"); + of_node_put(np); + return clk; + } + return NULL; +} + static int fec_enet_mii_init(struct platform_device *pdev) { static struct mii_bus *fec0_mii_bus; @@ -2553,6 +2586,8 @@ static int fec_enet_mii_init(struct platform_device *pdev) u32 mii_speed, holdtime; u32 bus_freq; int addr; + struct clk *rmii_master_refclk = NULL; + bool peer_ref_enabled = false; /* * The i.MX28 dual fec interfaces are not equal. @@ -2662,7 +2697,26 @@ static int fec_enet_mii_init(struct platform_device *pdev) fep->mii_bus->priv = fep; fep->mii_bus->parent = &pdev->dev; + if (node && fec_enet_mdio_has_phy_addr0(node)) { + rmii_master_refclk = fec_enet_get_rmii_master_refclk(); + if (IS_ERR(rmii_master_refclk)) { + err = PTR_ERR(rmii_master_refclk); + goto err_out_free_mdiobus; + } + if (rmii_master_refclk) { + err = clk_prepare_enable(rmii_master_refclk); + if (err) + goto err_out_free_mdiobus; + peer_ref_enabled = true; + usleep_range(100, 200); + } + } + err = of_mdiobus_register(fep->mii_bus, node); + if (peer_ref_enabled) + clk_disable_unprepare(rmii_master_refclk); + if (!IS_ERR_OR_NULL(rmii_master_refclk)) + clk_put(rmii_master_refclk); if (err) goto err_out_free_mdiobus; of_node_put(node); Re: i.MX6ULL Ethernet Clock Bug in 6.12 kernel 你只需要查看设备树的变化,就会发现新的 FEC 驱动程序偷工减料,不再有时钟,因此物理寄存器最初无法读取。如果你不打算使用多个物理供应商,那么这样做没问题。兼容行用于指定在没有时钟信号时值错误的物理层寄存器: https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm/boot/dts/nxp/imx/imx6ul-14x14-evk.dtsi#L205 在较旧的内核(我们设备树的遗留版本)中,phy 不存在兼容行。此修复允许在读取 PHY 之前打开时钟,以便正确读取寄存器,因此不需要兼容线路,因为旧设备树中没有该线路: https://github.com/nxp-imx/linux-imx/blob/lf-5.4.y/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi#L224 我还没时间测试你们的电路板,因为我正忙着调试我们自己的电路板。我认为这是内核的退步。 Re: i.MX6ULL Ethernet Clock Bug in 6.12 kernel 你好, 感谢分享分析和补丁。 您是否已在 NXP EVK 开发板上验证过这一点? 顺祝商祺!
View full article
How to smoothly display camera frames in LVGL? Hello, I am using the MIMXRT1176DMAA chip. The board is equipped with a MIPI camera and a MIPI LCD, and the LCD primarily used for displaying LVGL GUI. Currently, I would like to display the camera's images on the screen while overlaying some LVGL labels on top of the camera feed. I have attempted to display the camera frames through an LVGL Canvas, but this approach introduced additional processing overhead in transferring camera frames to the Canvas, resulting in high CPU usage and choppy camera feed. Could you please advise if there is a solution to this issue? For instance, can the Layer feature of LCDIFV2 be utilized to display content on different layers? I would greatly appreciate any suggestions you could provide. Re: How to smoothly display camera frames in LVGL? Hello @Vinos , what was the solution if it's not a secret? Kind regards Re: How to smoothly display camera frames in LVGL? Solved. Re: How to smoothly display camera frames in LVGL? After trying, I found that the camera screen only works smoothly when the LVGL task is closed. Currently, Layer0 is the GUI and Layer1 is the camera. I would like to add another Layer2 when Layer0 is closed and Layer1 is opened. In the center of Layer3, there should be a hollow circle with transparency in all parts except for the arc. Therefore, I used the ARGB4444 format and performed a simple test by drawing a square on the LCD(Layer0 enable and Layer1 disable;or Layer0 disable and Layer1 enable). However, the resulting image was not transparent. Whenever the LCDIFV2_SetLayerBlendConfig function is called, there is no image on Layer3 on the LCD. However, if this function is commented out, the LCD displays the expected non-transparent image. Below is the code,reference the example " lcdifv2_embedded_alpha_cm7" in SDK #define LCD_WIDTH 480 #define LCD_HEIGHT 640 #define CENTER_LAYER 2 #define DEMO_FB0_ADDR ((uint32_t)s_frameBuffer[0]) AT_NONCACHEABLE_SECTION_ALIGN( uint8_t s_frameBuffer[1][LCD_HEIGHT][LCD_WIDTH][2], 32); void DEMO_FillFrameBuffer(void) { uint32_t x, y; for (y = 0; y < LCD_HEIGHT; y++) { for (x = 0; x < LCD_WIDTH; x++) { s_frameBuffer[0][y][x][0] = 0x11; s_frameBuffer[0][y][x][1] = 0x11; } } } void lcd_center_layer_init() { DEMO_FillFrameBuffer(); /* Layer 1: ARGB4444 */ const lcdifv2_buffer_config_t fb1Config = { .strideBytes = (LCD_WIDTH * 2), .pixelFormat = kLCDIFV2_PixelFormatARGB4444, }; const lcdifv2_blend_config_t blend1Config = { .alphaMode = kLCDIFV2_AlphaEmbedded, }; LCDIFV2_SetLayerBufferConfig(LCDIFV2, CENTER_LAYER, &fb1Config); LCDIFV2_SetLayerSize(LCDIFV2, CENTER_LAYER, 240, 240); LCDIFV2_SetLayerOffset(LCDIFV2, CENTER_LAYER, 0, 0); /* comment or not */ LCDIFV2_SetLayerBlendConfig(LCDIFV2, CENTER_LAYER, &blend1Config); LCDIFV2_SetLayerBufferAddr(LCDIFV2, CENTER_LAYER, DEMO_FB0_ADDR); LCDIFV2_EnableLayer(LCDIFV2, CENTER_LAYER, true); LCDIFV2_TriggerLayerShadowLoad(LCDIFV2, CENTER_LAYER); } Is there any error in my code? Thank you. Re: How to smoothly display camera frames in LVGL? Hi again @Vinos, Please look into the following link: https://github.com/lvgl/lvgl/issues/262 I believe it will prove very useful for your inquiry. Let me know if it helps! Edwin. Re: How to smoothly display camera frames in LVGL? Thank you for your suggestion. I have tried the second solution, but in LVGL, the general background is white and there are some labels on top. The actual result is that the white background completely covers the camera image except for the labels. How can I make these white backgrounds transparent? Re: How to smoothly display camera frames in LVGL? Hi @Vinos, I am not aware of how you are approaching this application, so here is my recommendation on how to do so: Refer to the example "SDK_MIMXRT1170-EVK\boards\evkmimxrt1170\driver_examples\csi\mipi_rgb". The captured video from camera needs to be composited with framebuffer of LVGL. There are two methods to do this: 1) Copying the camera image from camera output buffer to framebuffer of LVGL. This can be done with memcpy but it will result in bad performance, so I'd recommend using DMA instead. 2) Using another layer of LCDIFv2 as output buffer of camera directly, then LCDIFv2 h/w composites different layers on display without copy. BR, Edwin.
View full article
PMIC PF8200 I2Cレジスタのデフォルト値/リセット値 私はOTP構成でPF8200を使用しています。 PMICの設定を変更するために、SCFWを使っていくつかのレジスタに新しい値をロードする必要があります。 OTP値によってロードされないレジスタビットには、データシートにデフォルト値が指定されていません。 これらの値を知ることで、OTPによって既にロードされていないすべてのレジスタをロードすることが有用かどうかを判断できます。 ありがとう; Re: PMIC PF8200 I2C register default/reset values 迅速なご回答ありがとうございます。 電源投入後のデフォルト値に関する情報は見つかりませんでした。 どうか、この情報をどこで見つけられるか教えさせてください! Re: PMIC PF8200 I2C register default/reset values こんにちは、 OTPからロードされないレジスタまたはビットは、電源投入後にデフォルト値に初期化されます。したがって、デフォルト設定とは異なる値が必要な場合を除き、すべての非OTPレジスタをSCFW経由で設定する必要はありません。 追加の初期化が必要かどうかを判断するには、希望する設定とデフォルトのレジスタ値を比較してください。 PF82ファミリのI2Cレジスタマップをご参照ください お役に立てば幸いです! Re: PMIC PF8200 I2C register default/reset values どのレジスターに興味があるのか確認していただけますか? Re: PMIC PF8200 I2C register default/reset values 例えば、レジスタ05 INT_MASK_1。 しかし、すべてのレジスタはOFF_TOGGLEとして指定されています。 ありがとうございます。
View full article
使用 keyfactor 插件构建镜像时出错 我已经安装了 spsdk 和 spsdk-plugins,以便使用 keyfactor 插件为 RT1064 构建镜像。当我在虚拟环境中运行 build_image_win.bat 文件时,一直出现错误。 SPSDK错误:SPSDK:无法根据配置 type=keyfactor;url=... 创建签名提供程序 日志文件显示以下错误。 信息:spsdk.utils.service_provider:正在加载插件:spsdk.sp INFO:spsdk.utils.service_provider:未找到类型为 keyfactor 的 SignatureProvider。 调试:spsdk.apps.utils.utils:SPSDK:无法根据配置 type=keyfactor;url 创建签名提供程序 我运行了一个测试来检查环境中活动的 Python 入口点,如下所示。 "python -c "import importlib.metadata;print([p.namefor p in importlib.metadata.entry_points(group='spsdk.sp')])"测试结果良好,关键因素在于活跃的 Python 入口点。 我已附上版本批处理文件和 yaml 文件。 我该如何解决这个问题? Re: Error when building a image using keyfactor plugin 嗨@cleo , 插件似乎加载失败。您是否按照https://github.com/nxp-mcuxpresso/spsdk_plugins/tree/master/keyfactor中的指南操作?请参考https://github.com/nxp-mcuxpresso/spsdk_plugins更多详情请见下文。 希望对您有所帮助。 祝你有美好的一天, 坎 ------------------------------------------------------------------------------- 笔记: - 如果此回复解答了您的问题,请点击“标记为正确答案”按钮。谢谢你! - 我们会持续关注帖子,从最后一条回复发出后持续7周,之后的回复将被忽略。 如果您之后有相关问题,请另开新帖并引用已关闭的帖子。 -------------------------------------------------------------------------------
View full article
MCXC242VFM vs MCXC244VFM pinout differences Hello there, I'm designing a board with the MCXC242VFM chip, but I wanted to make it pin to pin compatible with the MCXC244VFM in case I need more FLASH and RAM. From the MCUXpresso Config Tool I see that there's a few pins that differ between MCXC242VFM and MCXC244VFM, but I cannot find any documentation that explains in detail the difference of pinouts.; only thing I can find online on NXP website is that from the product selection tool the MCXC242VFM is reported to have no I2S and 24 GPIOs, while the MCXC244VFM has 1 I2S and 23 GPIOs. For my project I'm not interested in the I2S. Can someone please point me to a document that clearly states the differences of pinout and pins assignment between these two chips? Kind regards, Michele Perla Board Design MCXC Package and IO|GPIO Re: MCXC242VFM vs MCXC244VFM pinout differences Hi @MichelePerla  The MCXC242VFM and MCXC244VFM are both available in the 32-QFN package, but they should not be assumed to be fully pin-to-pin compatible. Please compare the pin assignment tables in the MCX C24X and MCX C44X reference manual. In particular, several pins differ between the two devices. For example, pin 5 is USB_VDD on MCXC242VFM but VOUT33 on MCXC244VFM; pin 6 is PTE16 on MCXC242VFM but VREGIN on MCXC244VFM; and pin 9 also has different analog/reference-related definitions. Therefore, if the board is intended to support both devices, these pins must be reviewed carefully in the schematic and PCB design. MCXC242 RM: MCX C24X Sub-Family Reference Manual MCXC244 RM: MCX C44X Sub-Family Reference Manual Hope it helps. BR Alice
View full article
MCXC242VFM 与 MCXC244VFM 引脚排列差异 你好呀, 我正在设计一款采用 MCXC242VFM 芯片的电路板,但我希望它能与 MCXC244VFM 引脚兼容,以防我需要更大的 FLASH 和 RAM。 从 MCUXpresso 配置工具中,我发现 MCXC242VFM 和 MCXC244VFM 之间有一些引脚不同,但我找不到任何文档详细解释引脚排列的差异。我在 NXP 网站上唯一能找到的信息是,根据产品选择工具显示,MCXC242VFM 没有 I2S 接口,有 24 个 GPIO 接口,而 MCXC244VFM 有 1 个 I2S 接口和 23 个 GPIO 接口。我的项目对 I2S 不感兴趣。 请问谁能提供一份文档,清楚地说明这两款芯片的引脚排列和引脚分配的区别? 此致敬礼, 米歇尔·佩拉 电路板设计 MCXC 代码包,软件包和 I/O|GPIO Re: MCXC242VFM vs MCXC244VFM pinout differences 嗨@MichelePerla MCXC242VFM 和 MCXC244VFM 均采用 32-QFN 封装,但不应假定它们引脚完全兼容。请比较 MCX C24X 和 MCX C44X 参考手册中的引脚分配表。 具体来说,这两个设备有几个引脚不同。例如,MCXC242VFM 的引脚 5 为 USB_VDD,而 MCXC244VFM 的引脚 5 为 VOUT33;MCXC242VFM 的引脚 6 为 PTE16,而 MCXC244VFM 的引脚 6 为 VREGIN;引脚 9 的模拟/参考相关定义也不同。因此,如果板要支持这两个设备,则必须在原理图和 PCB 设计中仔细检查这些引脚。 MCXC242 RM: MCX C24X 子系列参考手册 MCXC244 RM: MCX C44X 子系列参考手册 希望对您有所帮助。 BR 爱丽丝
View full article
Alternative part for NVT4857UKAZ This is less directly software related, but we recently discovered that the NVT4857UKAZ has already reached EOL, and there are no pin-to-pin compatible replacement parts available. Since SD card support is a required feature for our i.MX95-based device, we're trying to understand what alternative solutions are available given this situation. Could you share your recommendations on possible replacement options or design approaches? Re: Alternative part for NVT4857UKAZ Hello! You can refer NVT4858 as a replacement. However, please note that NVT4858 is not a drop-in replacement. Therefore, both hardware and software modifications may be required to accommodate the new device in your application. We recommend carefully reviewing the specifications and design requirements to evaluate the impact of the migration. Hope this helps! Re: Alternative part for NVT4857UKAZ Hello! You can refer NVT4858 as a replacement. However, please note that NVT4858 is not a drop-in replacement. Therefore, both hardware and software modifications may be required to accommodate the new device in your application. We recommend carefully reviewing the specifications and design requirements to evaluate the impact of the migration. Hope this helps!
View full article