Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
Example S32K144 FlexCAN0 RXFIFO DMA nonSDK S32DS13 ******************************************************************************** Detailed Description: Configures the FlexCAN 0 to transmit and receive message into RXFIFO. LOOPBACK mode is enabled. Two IDs are set into RXFIFO ID table. DMA is configured to read the message from RXFIFO. Within DMA major interrupt the new message is send according to which Identifier Acceptance Filter was hit. ------------------------------------------------------------------------------  Test HW:         S32K144 EVB-Q100  MCU:             PS32K144HFVLL 0N77P  Fsys:            160MHz  Debugger:        Lauterbach  Target:          internal_FLASH ******************************************************************************** Revision History: 1.0     Sep-4-2017     Petr Stancik    Initial Version ******************************************************************************* General Re: Example S32K144 FlexCAN0 RXFIFO DMA nonSDK S32DS13 where did you added the above code ..I am also facing the same issue  Re: Example S32K144 FlexCAN0 RXFIFO DMA nonSDK S32DS13 solved after aligning the CAN software buffer memory. union {  uint8_t buffer[64];  struct  {   uint32_t Buff1;   uint32_t Buff2;   uint32_t Data1;   uint32_t Data2;  }MBS[8]; }CAN_RxData __attribute__((aligned(64)));; Re: Example S32K144 FlexCAN0 RXFIFO DMA nonSDK S32DS13 I have the same problem as you. Have you solved it yet Re: Example S32K144 FlexCAN0 RXFIFO DMA nonSDK S32DS13 Hi,     I am trying to do CAN using DMA in the s32K144 Eval kit. Softyware triggered DMA works fine but it is not working fine when I configured it for CAN RX FIFO. No DMA major loop complete interrupt is received. I am using SDK's and processor expert generated code to initialize the CAN and DMA. Did you have sample code with SDK's? The attached code is not working for me...it is entering the default ISR.
View full article
PMIC PF3000/3001 资源 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> PF3000 是一款电源管理集成电路 (PMIC),专为与 NXP i.MX 7 和 i.MX 6SL/SX/UL 应用处理器配合使用而设计。PF3000 配备最多四个降压转换器、六个线性稳压器、RTC 电源和纽扣电池充电器,可以为整个系统(包括应用处理器、内存和系统外设)供电。该设备采用 SMARTMOS 技术。 最新版本的数据表: https://www.nxp.com/docs/en/data-sheet/PF3000.pdf 应用笔记: https://www.nxp.com/docs/en/application-note/AN5132.pdf https://www.nxp.com/docs/en/application-note/AN5161.pdf https://www.nxp.com/docs/en/application-note/AN5094.pdf https://www.nxp.com/docs/en/application-note/AN5113.pdf 评估板用户指南: https://www.nxp.com/docs/en/user-guide/KTPF3000FRDMEVMUG.pdf PF 电源管理开发工具的 GUI: https://www.nxp.com/downloads/en/device-drivers/PF3000-HID-GUI.zip EVM 和工具: https://www.nxp.com/webapp/sps/download/license.jsp? colCode=KITPF3000FRDMEVM 更多信息: https://www.nxp.com/products/power-management/pmics/pmics-for-i.mx-application-processors/12-channel-configurable-pmic:PF3000 PF3000PF3001
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
下一代功能安全架构 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 概述 S32x 下一代安全架构,涵盖 ASIL B 至 ASIL D。有哪些新功能以及我们如何更好地为客户提供全套安全附属品,包括 MCU HW、SW 和 SBC HW。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 概述 S32x 下一代安全架构,涵盖 ASIL B 至 ASIL D。有哪些新功能以及我们如何更好地为客户提供全套安全附属品,包括 MCU HW、SW 和 SBC HW。
View full article
示例 MPC5604B ADC-Pot-ADCWatchDog-INTC-printf CW210 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 示例根据板上电位器调暗 LED1。LED2 和 LED3 演示 * ADC 看门狗功能。当信号电平低于低电平时,LED2 亮起 * 阈值,当信号高于高阈值时,LED3 亮起。 * 示例还将转换结果显示到终端窗口。 * ---------------------------------------------------------------------------------------------- * 测试硬件:XPC560B 100LQFP,XPC56XX EVB MOTHEBOARD Rev.C * 微控制器: PPC5604BE MLL 1M27V * 终端:19200-8-无奇偶校验-1 停止位-LINFLEX_0 无流量控制 * 系统频率:64/48 MHz * 调试器:Lauterbach Trace32 * PeMicro USB-ML-PPCNEXUS * 目标:RAM、internal_FLASH * EVB 连接: - 将 PB[8] 初始化为 ANS0:将电位器连接到 PB[8] 引脚,移除 J30 跳线并将 J30.2 与 P2.9 连接 - 接头 J8 (LED_EN) 已完全安装 ******************************************************************************** <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 示例根据板上电位器调暗 LED1。LED2 和 LED3 演示 * ADC 看门狗功能。当信号电平低于低电平时,LED2 亮起 * 阈值,当信号高于高阈值时,LED3 亮起。 * 示例还将转换结果显示到终端窗口。 * ---------------------------------------------------------------------------------------------- * 测试硬件:XPC560B 100LQFP,XPC56XX EVB MOTHEBOARD Rev.C * 微控制器: PPC5604BE MLL 1M27V * 终端:19200-8-无奇偶校验-1 停止位-LINFLEX_0 无流量控制 * 系统频率:64/48 MHz * 调试器:Lauterbach Trace32 * PeMicro USB-ML-PPCNEXUS * 目标:RAM、internal_FLASH * EVB 连接: - 将 PB[8] 初始化为 ANS0:将电位器连接到 PB[8] 引脚,移除 J30 跳线并将 J30.2 与 P2.9 连接 - 接头 J8 (LED_EN) 已完全安装 ******************************************************************************** 概述
View full article
INS-N2085 Simulity Labs:更大并不一定更好 - 使用 eSIM 节省参考设计中的空间 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 使用 eSIM 节省参考设计中的空间。eSIM(eUICC)及其对芯片组制造商和设备 OEM 的意义。如今,消费者想要更大的屏幕、更长的电池寿命、更大的存储空间、更丰富的媒体内容等等。eSIM 将带来的 (R) 变革是独一无二的、颠覆性的,可以与黑白电视变成彩色电视的时代相媲美。OEM 正在缓慢采用,但就像黑白电视时代一样,网络尚未准备好,就 eSIM 而言,移动运营商也尚未准备好! <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 使用 eSIM 节省参考设计中的空间。eSIM(eUICC)及其对芯片组制造商和设备 OEM 的意义。如今,消费者想要更大的屏幕、更长的电池寿命、更大的存储空间、更丰富的媒体内容等等。eSIM 将带来的 (R) 变革是独一无二的、颠覆性的,可以与黑白电视变成彩色电视的时代相媲美。OEM 正在缓慢采用,但就像黑白电视时代一样,网络尚未准备好,就 eSIM 而言,移动运营商也尚未准备好! 洞察与创新
View full article
FTF-ACC-F1276.pdf <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议将解释飞思卡尔如何帮助客户使用 MPC577xK MCU 开发 76-81 GHz 短程和长程雷达应用,并将解释雷达算法的概念,包括 SDADC 或 MIPI CSI 采样、Chirp 生成、数据压缩、R、V FFT、检测和跟踪算法等实际方面,以及新飞思卡尔 IP 的优势,这些优势可以帮助客户提高系统分辨率和准确性。在本次会议中,客户将详细了解如何使用 MPC577xK MCU 开发快速调制雷达系统,包括其带来的 BOM 成本优势。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议将解释飞思卡尔如何帮助客户使用 MPC577xK MCU 开发 76-81 GHz 短程和长程雷达应用,并将解释雷达算法的概念,包括 SDADC 或 MIPI CSI 采样、Chirp 生成、数据压缩、R、V FFT、检测和跟踪算法等实际方面,以及新飞思卡尔 IP 的优势,这些优势可以帮助客户提高系统分辨率和准确性。在本次会议中,客户将详细了解如何使用 MPC577xK MCU 开发快速调制雷达系统,包括其带来的 BOM 成本优势。
View full article
i.MX6 上的高保证启动 (HAB) <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 抽象的 安全是我们日常生活中不可避免的一个词。对于我们许多人来说,没有安全性的技术就是没有“信任”的技术。我们都知道,从工作场所到社交聊天,安全在我们的生活中扮演着重要的角色。即使是嵌入式系统也应该实施安全措施,以防止未经授权访问敏感数据。我们如何确保 i.MX6 平台只能使用授权图像启动?让我们来看看名为高保证启动 (HAB) 的酷东西,它使启动映像变得安全而简单。 介绍 数字安全自诞生以来就成为我们生活中不可避免的一部分。对于任何嵌入式系统来说,这种情况都没有什么不同,特别是在处理敏感数据时。许多用于银行交易、国防、医疗、工业和汽车领域的嵌入式设备都严格执行安全规定。 几乎所有嵌入式系统都是根据闪存图像给出的特定指令来工作的。想象一下,如果黑客可以将自己的指令刷入嵌入式设备,那么他就可以完全控制该设备需要执行的操作。如果该设备用于银行目的,那么黑客将获得包括密码在内的所有详细信息!如果该设备用于国防或医疗领域,这种情况会变得更加糟糕。我们如何才能防止这种情况发生?嗯,答案并不那么简单! 嵌入式系统操作系统映像可以从不同的介质(例如 MMC、SD 卡、SATA、以太网等)闪存。由于 SD 卡等介质可以轻松地从一个介质替换到另一个介质,因此在介质上实施安全检查将很困难。此外,人们可以在将操作系统映像刷入这些介质后对其进行更改。因此,仅在刷新图像之前实施安全检查不足以解决这个问题。那么我们如何实施安全检查以确保我们的操作系统映像是安全的?答案是 HAB(高保证靴)。 飞思卡尔在 i.MX6Q 处理器中提供了 HABv4(最新 HAB 版本 4)作为可选功能。HAB 是飞思卡尔安全模块的一部分,可以与 CAAM 和 TrustZone 等其他安全功能协同工作。 使用HAB的优点包括但不限于以下几点: HABv4 实现了启动 ROM 级别的安全性,一旦融合就无法改变。 高效的。 图像控制系统之前的安全检查。 允许多个根密钥。 利用数字签名——保护操作系统映像的最有效方法。 将安全性直接附加到操作系统映像,而不会影响操作系统映像的功能。 通过操作系统映像验证的处理器级别检查可以完全确保安全启动。 HAB 如何运作? HAB基于数字签名的原理。数字签名通过对内容上下文进行签名,使得内容变得安全。该签名过程应包含多种安全算法,以加强最终结果。 HAB 数字签名是 open-ssl 认证、MD5 哈希和 RSA-AES-DES 公钥和私钥检查的组合。 HAB 通过将引导加载程序(u-boot)和操作系统映像(uImage)制作成签名映像来确保安全性。这些签名的图像包含正常的图像内容和安全指令。这些图像也包含公钥和私钥。在HAB过程中,组合得到的公钥哈希码将融合到i.MX6处理器的启动ROM代码中。这种融合使得平台更加安全并且以后无法更改。 在启动过程中,首先启动过程的初始参数应从闪存介质(例如 SD 卡)中获取启动 ROM 代码。然后,HAB 指令将检查启动 ROM 和签名图像中的哈希值。当这两个哈希值匹配时,HAB 进程允许平台启动映像。否则系统将停止所有进程并等待授权图像。 这样,系统就可以防止未经授权的访问,即使有人在后期更改了签名的图像(这最终会改变图像的哈希值,因此在运行时检查期间失败)。 iWave 已成功在我们的i.MX6Q iW-RainboW-G15D-Q7 Linux 平台上实现 HAB,并验证了 HAB 如何保护平台安全。然而,HAB 并非开发平台或模块购买时提供的标准 BSP 的一部分。仅应特殊要求提供。 结论 HAB 是防止未经授权访问操作系统映像的最佳解决方案之一。处理敏感数据(银行、国防等)的嵌入式系统应集成 HAB,以防止外部来源控制整个系统。虽然 HAB 在 i.MX6 平台中是可选功能,但为了确保启动过程更安全,建议集成 HAB。 参考: AN4581_HAB_Application_Note.pdf - 使用 HABv4 在 i.MX50、i.MX53 和 i.MX 6 系列上进行安全启动的应用说明 i.MX_6_Linux_High_Assurance_Boot_(HAB)_User's_Guide.pdf - i.MX 6 Linux 高保证启动 (HAB) 用户指南 概述
View full article
ESC技术报告.pdf <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 飞思卡尔杯技术报告 韩国ESC团队 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 飞思卡尔杯技术报告 韩国ESC团队
View full article
I2C NCSWの使用例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> NCSW(NetCommソフトウェア)は、フリースケールのPowerQUICCおよびQorIQプロセッサ・プラットフォームでの開発を迅速化するためのパッケージです。これには、NCDD(NetComm Device Drivers)およびその他のコンポーネントが含まれています。ここでは、バージョンGA_4.7でサポートされているP3041 I2Cを例にとり、NetCommソフトウェアの構造とデバイスドライバの使用状況を分析します。CW PA 10.3 は、ユースケースコードと互換性を持つために使用されます。
View full article
FAQ 全ボード GPIOテスト <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> カーネル空間内でGPIOを制御するための独自のドライバを開発することも可能ですが、ユーザー空間からGPIOにアクセスするためのより簡単な方法があります。タイミング要件が問題にならない場合は、GPIO-SYSFSを使用できます。 SYSFSは、カーネル内部フレームワークの一部の機能をユーザー空間にエクスポートする仮想ファイル・システムであり、GPIOはSYSFSを通じて機能をエクスポートできるフレームワークの1つです。 GPIO-SYSFS機能は2.6.27以降のすべてのメインライン・カーネルで使用可能です。 SYSFS経由でGPIOをエクスポートするためのカーネルの構成 SYSFSでGPIOを有効にするには、次のカーネル・オプションを選択してください: デバイスドライバー --->       --- GPIOサポート             [*] /sys/class/gpio/...(sysfsインターフェース) i.MX233またはi.MX28を使用している場合、カーネルを再コンパイルした後、ltibでも自動的に実行されないため、ブート・ストリームを再度生成することを忘れないでください。 使用するピンが本当に GPIO ピンとしてアクセス可能であり、カーネルによって要求されていない(gpio_request)ことを確認してください。ピンが gpio_request された場合、SYSFS 経由でアクセスできるようにするには、カーネル内で同じピンを gpio_export する必要があります。ピンがデフォルトで GPIO として設定されていない場合、 /arch/arm/mach-XXX 内の適切なファイルで IO MUX を設定する必要があります。 ユーザー空間でのGPIOへのアクセス GPIO-SYSFS 機能を有効にした後、新しいカーネルでデバイスを起動してテストを行うことができます。 まず、テストするGPIOをユーザー空間にエクスポートする必要があります: echo XX > /sys/class/gpio/export XXは、次のアルゴリズムによって特定されます: GPIOA_[B]はエクスポートしたいGPIOです。ここで、「A」はGPIOバンク、「B」はバンク内のピンのオフセットです。 最初の利用可能なGPIOバンクが0の場合//(たとえばiMX.28)    XX = A×32 + B; それ以外の場合//最初のGPIOバンクは1    XX =(A-1)×32 + B; GPIOピンをエクスポートした後、次の場所にエクスポートされたGPIOインターフェースを確認できるようになります: /sys/class/gpio/gpioXX このインターフェースを通じて、次のようなことができるようになります: #ピンの値を読みます cat /sys/class/gpio/gpioXX/value #ピンの向きを変える > /sys/class/gpio/gpioXX/directionにエコーイン エコーアウト> /sys/class/gpio/gpioXX/direction # GPIO出力レベルの切り替え echo 0 > /sys/class/gpio/gpioXX/value echo 1 > /sys/class/gpio/gpioXX/value GPIO仮想ファイル・システムでは、一度に1つのGPIOピンしか処理できないことに注意することが重要です(コマンドごと)。 Re:FAQすべてのボードGPIOテスト <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> これは愚かな質問かもしれませんが、どのピンがgpioXXに物理的にリンクされているかを知るにはどうすればよいでしょうか?
View full article
eIQ Toolkit for MCU - Getting Started Labs The tools previously bundled as part of eIQ Toolkit are now released as standalone packages and eIQ Toolkit will no longer be updated after the eIQ Toolkit v1.17 in Q3 2025. Going forward the tools previously included in eIQ Toolkit can now be found at: eIQ Neutron SDK now contains the latest versions of the Neutron Converter tool eIQ Time Series Studio can now be found in a standalone package eIQ Model Creator provides an option for vision based model creation eIQ AI Toolkit will provide model optimization functionality (Coming Soon) Netron provides TFLite model viewing functionality This article will remain up for existing users. --------- eIQ Toolkit enables machine learning development with an intuitive GUI (named eIQ Portal) and development workflow tools, along with command line host tool options as part of the eIQ ML software development environment. Developers can create, optimize, debug and export ML models, as well as import datasets and models, rapidly train and deploy neural network models and ML workloads. The eIQ Portal provides output TensorFlow Lite models that seamlessly feed into eIQ inference engines like TensorFlow Lite and TensorFlow Lite for Microcontrollers. Using a tool called Model Runner, eIQ Toolkit can also generate runtime insights to help optimize neural network architectures on i.MX RT and i.MX devices. These labs go over how to use eIQ Portal. It is recommended to do them in the following order: Data Import Lab Model Runner Lab The labs are written for using a FRDM-MCXN947 and i.MX RT1170-EVK, but other eIQ supported devices can be used as well.  MCX N i.MX RT1050 i.MX RT1060 i.MX RT1064 i.MX RT1160 i.MX RT1170 i.MX RT1180 i.MX RT500 i.MX RT600 For details on the Time Series Studio tool please see the Time Series Studio lab guides. For  i.MX RT
View full article
HSE_b: RSAキーをRAMにインポートすることは許可されていません 1024ビットのRSA公開鍵を1つRAMカタログにインポートして鍵インポートサービスを使用する方法を理解しようとしていますが、サーバーからHSE_SRV_RSP_NOT_ALLOWEDという応答が返されます。 私のテストアプリケーションは、RAMキーカタログを次のようにフォーマットします。 { { 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 }, } そして、サーバーからの応答としてHSE_SRV_RSP_OKを受け取りました。 次に、以下のキー情報を使用してRSAキーをインポートしようとします。 { keyFlags = HSE_KF_USAGE_VERIFY, keyBitLen = HSE_KEY1024_BITS, keyCounter = 0x0, smrFlags = 0x0, keyType = HSE_KEY_TYPE_RSA_PUB, specific = { pubExponentSize = 4, } } 私の要望は以下のとおりです。 { targetKeyHandle = 0x20000, pKeyInfo = 0x20401f74, pKey = { 0x210034b4, 0x21003534, 0x0}, keyLen = { 0x80, 0x4, 0x0}, } . HSE_RAM_PUB_KEY_IMPORT_POLICY_ATTR_ID を HSE_KM_POLICY_ALLOW_RAM_PUB_KEY_IMPORT に設定し、読み戻した結果も同じでした。 LC属性は0x04、HSEエラーフラグは0x0000、HSEステータスフラグは0x0B60です。ファームウェアバージョンは、0x0F SoC ID 0x0000 FWタイプ 0x02 メジャー 0x32 マイナー 0x00 パッチと読み取られます。 Re: HSE_b: Not allowed to import RSA key to RAM こんにちは、 @Emma_G-gbgさん パラメータは正しく設定されています。特に問題は見当たりません。スーパーユーザー権限を持っている場合は、その属性を設定する必要すらありません。 昨日、これと非常によく似たことをテストしていたので、1024ビットのRSA公開鍵と4バイトの公開指数をインポートするようにコードを少し更新しました。見た目はこんな感じです。 RSA公開鍵をインポートする際には、pubExponentSizeを設定する必要がないことに注意してください。HSEはこのパラメータを無視します。代わりにkeyLen[1]を使用します。 パラメータ pubExponentSize は、サービス HSE_SRV_ID_GET_KEY_INFO によって keyInfo を読み取る際に使用されます。そのキーのkeyInfoを読み取った結果は以下のとおりです。 それは単なるデータキャッシュの問題ではないでしょうか?データキャッシュを無効にして、違いが出るかどうか試していただけますか? よろしくお願いいたします。 ルーカス Re: HSE_b: Not allowed to import RSA key to RAM ありがとうございます。暗号鍵と認証鍵のハンドル情報の入力を忘れていました。確認していなかったので、HSE_INVALID_KEY_HANDLE はゼロになると思っていました。 現在は、キャッシュメモリ内の少なくとも一部の値を使用して動作しており、サービス呼び出しの前後にキャッシュメンテナンス操作が行われています。既存のプロジェクトにHSEサービスを追加しているため、キャッシュ構造を変更することはできませんが、共有メモリに実際に書き込まれていることを確認する限り、これまでのところすべて正常に動作しています。ただし、関連するメモリのキャッシュを無効にしてみましたが、違いはありませんでした。
View full article
LX2160 定制板上模块的掉电 在我们基于 LX2160 的定制主板中,没有 SPDT 开关可用于通过软件控制电源轨。 不过,我们的目标是降低 USB、WiFi、BT、PoE 和蜂窝模块的功耗。 我方提出了当前的意见和做法: 1.WiFi、BT 和蜂窝模块通过 PCIe 连接。 我们观察到,这些功能可以通过 SerDes 配置禁用。 通过将 SerDes 协议配置为 S2 = 9,所有相应的通道都被配置为 SGMII,而不是 PCIe,从而有效禁用 PCIe 连接的模块。 2.USB 模块似乎没有类似的基于 SerDes 的禁用选项。 对于 USB,我们目前正在尝试使用以下方法基于 GPIO 禁用: USB1_MUX_EN USB2_MUX_EN RCW 配置已经过验证,相应引脚已确认配置为 GPIO。 然而,即使驱动这些 GPIO 进行禁用操作,也无法观察到预期的功耗降低。 3.PoE 模块(AQR113c 用于以太网) 请就可能需要修改的其他文件或配置提出意见/建议,以便完全禁用和降低功耗。 Re: Power down of modules on LX2160 custom board 闲置时是否可以对 USB、WiFi、BT、PoE 和蜂窝模块掉电?还是产品的配置不同,这些接口根本不会被使用?   请注意,即使接口未使用,仍需为其电源轨供电。LX2160A 不支持从其轨道上拔下电源。 如果断开接口设备的电源,则需要确保 LX2160A I/O 不会发生泄漏   你能做什么? 1) 内核消耗最大功率。SDK 支持在不使用 CPU 时降低其频率,以节省功耗。 Refer 电源管理单元 - [Layerscape Software Development Kit User Guide | NXP 半导体|https://docs.nxp.com/bundle/GUID-487B2E69-BB19-42CB-AC38-7EF18C0FE3AE/page/GUID-2E8E375E-7DCD-4671-B0CF-D4713D8BB9EB.html] 2) 未使用的 IP 可通过 DEVDISR 进行时钟门控。不过,一旦禁用,就无法再启用。 3) 如果 SerDes 通道未使用,可将其断电。参见第 26.10.2 节LX2160A 参考手册中未使用的车道 4) 当通过 RCW 设置选择 SerDes 协议时,它还会根据协议要求配置与该协议相关的寄存器。因此,重新配置车道并不是正确的方法。 5) 从原理图片段来看,您已将 SerDes#2 配置为 SRDS_PRTCL_S2 =3,但只使用了单通道。 你可以使用 SRDS_PRTCL_S2=11 并按照 (4) 对未使用的通道进行掉电。类似的机制也可应用于其他 SerDes。 6) 如果 PCIe 未使用 Gen3,则 PLLF 可以断电。同样,未使用的 PLL 也可以断电 谢谢! Re: Power down of modules on LX2160 custom board 如何测量耗电量? 请注意,对于 SerDes 通道,您需要检查为 SerDes I/O 供电的 0.9V 和 1.8V 电源通道。 对于 DFS,请检查 VDD(0.8V)电源的功耗。 既然这是你的定制电路板,你有电源轨的功率测量电路吗? 如果你在自定义主板的输入上进行衡量,我不确定你会看到多大的差异。这还取决于测量的最小计数。 为进行检查,可在较低配置下运行核心/平台。查看设计检查表,其中有 VDD 轨功耗图表。 Re: Power down of modules on LX2160 custom board 你好, 感谢您的及时回复。我附上了我对您分享的有关功率优化建议的观察和测试结果。请查看它们,并与我们联系是否建议进行其他检查或配置。 要点 说明 CPU 热插拔/频率缩放观测 我们使用以下方法测试了 CPU 热插拔、CPU 频率缩放和不同的 CPU 模式: lscpu | grep line 观察结果: On-line CPU(s): 9 Off-line CPU(s): 0-8,10-15 不过,在这些情况下都没有观察到明显的功耗降低。 通过 DEVDISR 进行未使用的 IP 时钟门控 我们知道未使用的 IP 可以通过 devDisr 进行时钟门控。但是,由于禁用这些区块如果不重置就不可逆转,我们认为这种方法风险很高,因此不建议在我们当前的测试中使用这种方法。 未使用的 SerDes 通道掉电 寄存器写入成功。 不过,迄今为止还没有观察到明显的功耗降低。 SerDes 协议配置优化 PLL 掉电未使用的 Gen3 PCIe 应用配置: SRDS_REFCLKF_DIS_S2 = 1 SRDS_PRTCL_S2 = 11 SRDS_INTRA_REF_CLK_S2 = 0 SRDS_PLL_PD_PLL3 = 1 Re: Power down of modules on LX2160 custom board 你好, 我们正在使用这些连接到 BMC 的电流传感器来测量功耗,其中 VCC_12V 感应定制板的输入,而 VCC_0V8 正在感应恩智浦 (LX2160A) 芯片组的输入。 同样 在闪存时(这些以 VCC_12V 即总功耗测量)-使用 CodeWarrior(可能会下降约 10W)和 -使用 (echo mem > /sys/power /state & echo freeze > /state sys/power/state)(可能会下降约 6W)(但在此之下,由于不存在用户交互,因此不建议将其用于我们的测试), Re: Power down of modules on LX2160 custom board 与内部团队讨论,我们我们已经回答了 您的与配置相关的问题。 在 12V 输入电压下,10 瓦的功耗在我们看来是相当合理的。 我们对于 LX2160A 而言,这是很合理的。 请 请分享您的目标,您的 示意图和配置、日志和应用。我们将检查还能实现哪些功能。
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
i.MX8QX6 – UUUフラッシュがlibusbエラーで停止する(LPDDR4行アドレスの不一致の可能性) こんにちは、 現在、以下の構成で作業を行っています。 SoC: NXP i.MX8QX6(MIMX8QX6AVLFZAC) LPDDR4: Micron MT53E768M32D2ZW-046 (AIT:C) Yoctoリリース: walnascar-6.12.34-2.1.0 Universal Update Utility を使用して imx-boot-imx8qxp-mek-sd.bin-flash_spl イメージをフラッシュしようとしています。 フラッシュ処理中にツールが停止し、最終的にLIBUSB_ERROR_NO_DEVICEを報告して、フラッシュ処理が完了しなくなります。 トラブルシューティングを実施しました 問題を特定するために、以下のことを試みました。 以前のリリースに含まれる古いimx-bootバイナリを使用してテストしました。 LF_v6.6.52-2.2.2_images_IMX8QXPC0MEK LF_v5.15.32-2.0.0_images_IMX8QXPC0MEK UUUツールの最新バージョンを使用しました フラッシュ処理を複数回繰り返した しかし、その行動は変わらない。 疑われる原因 メモリデバイスの仕様を精査した結果、社内調査により、 SoCのDDRコントローラ構成と実際のLPDDR4デバイスとの間でDDRアドレス行構成の不一致が発生している可能性があることが示唆されました。 Micronのデータシートによると、メモリデバイスは行アドレスR[16:0](17行)を使用します。 しかし、SoCのドキュメントによると、DDRコントローラは最大16行のアドレス線(R0~R15)をサポートしているようです。 この違いから、 DDRコントローラ構成とメモリデバイスのアドレス指定方式に不一致がある可能性があると推測されます。 質問 LPDDR4構成における行アドレスの不一致が原因で、起動初期段階でUUUフラッシュ処理がLIBUSB_ERROR_NO_DEVICEエラーで停止する可能性はありますか? これが原因である可能性がある場合、 i.MX8QX6 上のこの LPDDR4 デバイスの DDR パラメータを正しく設定するための推奨される方法は何ですか? 構成はNXPが提供するDDRツール/RPAツールを使用して生成すべきでしょうか、それともこの特定のメモリデバイス用のリファレンス構成は既に用意されているのでしょうか? 何かご助言やご提案があれば、大変ありがたく思います。 よろしくお願いします。 Re: i.MX8QX6 – UUU flashing stalls with libusb error (possible LPDDR4 row address mismatch) こんにちは、 @Yogesh_   私は自分のimx8qxpボードでテストしました。問題は発生していません。私は以下のコマンドを使用してflash.binファイルをフラッシュします。 uuu -b emmc .\imx-boot-imx8qxpc0mek-sd.bin-flash   ご質問にお答えします: Q1 & Q2:これはこの問題を引き起こしません Q3:DRAMの適切なパラメータを設定する必要があります。次に、新しいflash.binファイルを再コンパイルします。しかし、おっしゃる通りです。お使いのDRAMの行数は17ですが、imx8qxpがサポートする最大行数は16です。ですから、16行の別のDRAMに交換してください。つまり、最大4GB(32Gb)のLPDDR4密度をサポートするには、構成は16行2ランクでなければならない。 BR Re: i.MX8QX6 – UUU flashing stalls with libusb error (possible LPDDR4 row address mismatch) UUUツールがハングアップ/停止する問題を解決するための代替案をご提案いただけますでしょうか?以前のバージョンと最新バージョンのUUUツール両方を試してみましたが、依然として同じエラーが発生します。 Re: i.MX8QX6 – UUU flashing stalls with libusb error (possible LPDDR4 row address mismatch) ご返信ありがとうございます。 Yoctoで生成されたimx-boot-imx8qxp-mek-sd.bin-flash_splとflash.binイメージの両方のログを添付しました。flash.binはRPAツールを使用して設定され、SCFWポーティングキットでビルドされ、正常に起動しています。 Re: i.MX8QX6 – UUU flashing stalls with libusb error (possible LPDDR4 row address mismatch) こんにちは、 @Yogesh_ 以下のコマンドを実行した結果はどうなりますか? uuu -lsusb BR Re: i.MX8QX6 – UUU flashing stalls with libusb error (possible LPDDR4 row address mismatch) こんにちは、 @Yogesh_ 以下のコマンドは使用しないでください sudo uuu -v -b emmc_all imx-boot-imx8qxp-mek-sd.bin-flash_spl 以下のコードを使用してください。 uuu -b emmc imx-boot-imx8qxp-mek-sd.bin-flash_spl 1. Windows OS上でuuuツールを実行してみてください。 2. 下記のコマンドの結果を共有してください。 uuu -lsusb BR
View full article
割り込みハンドラからI/Oを実行する この質問に関連するパラメータは次のとおりです。 1. IDE: S32 DS for ARM v 2.2 (これは古いですが、問題の製品自体も古いので、既存のコードのサポートが必要です) 2. チップ: S32K148 3. OS: Windows 11 4. システムOS: ベアメタル ISR であらゆる種類の SPI マスター転送を実行しようとするとハングし、通常、中断された API はブロッキング I/O (I2C または SPI) 呼び出しです。 ブロッキング呼び出し (LPSPI_DRV_MasterTransferBlocking() へ) では、sysTick 割り込みが発生していないように見えるため呼び出しがハングし、MCU は経過時間を把握できません。 非ブロッキング呼び出し (LPSPI_DRV_MasterTransfer() の後に LPSPI_DRV_MasterGetTransferStatus(SPI1, &byte_remaining) が続く) では、byte_remaining は元の値のままになります。非同期転送のために LPSPI_DRV_MasterTransfer() を呼び出す前に LPSPI_DRV_MasterAbortTransfer(SPI1) への呼び出しを追加しようとしましたが、結果は同じです。 少し関連する質問ですが、SysTick_Handler() をトリガーするものは何ですか?私の直感では、1 ミリ秒ごとにティック カウントを増やしながら常に実行されているはずですが、その本体にブレーク ポイントを設定すると、一部の時間しかヒットしないようです。不思議なことに、ブロッキング SPI 転送が成功した場合でもヒットしないことがあります。これは、システム タイマーが以前は解除されていた場合は、システム タイマーが起動される必要があるためです。 もう 1 つの関連する質問は、SPI の S32 クックブックのサンプル コードでは、SDKs が提供する API が使用されていないことです。サンプルでは、すべてのレジスタ ビットを直接操作します。車輪の再発明ではなく、少なくとも NXP API を呼び出すという点で、本番環境に適したコードに近い例はありますか? Re: Doing I/O from an interrupt handler こんにちは@PetrS どうもありがとうございます。割り込み優先度によって、問題は確かに解決しました。しかし、私は疑問を持っています。 ISR 内でブロックするのは良いアイデアではないことに同意しますが、シングル スレッド アプリケーションでは代替手段は何でしょうか?SPI 転送が完了するまで、アプリケーション コンテキストでスピンできます。これにより、他の I/O 割り込みが発生するようになります (私の理解では、負の優先度の割り込みはいずれにせよ発生します。正の優先度の ISR に入っても、それらは無効になりません)。しかし、私の状況では、重複する I/O を実行することは不可能であり、望ましくもありません。 1.S32K148 はすべてのバスのバス・マスタであるため、これは不可能です。SO、ISR で SPI 転送を実行している場合、別の I/O バスを駆動することはできず、したがって割り込みをトリガーすることはできません。 2. ISR 間でグローバルが共有される可能性があるため、現在の I/O が完了するまで新しい I/O を開始したくない、SO これは望ましくありません。 シングル Thread のベア メタル アプリケーションの場合、この状況に対処するにはどのような方法をお勧めしますか? Re: Doing I/O from an interrupt handler こんにちは、 OK、では単純に優先順位を中断すると、この動作が発生する可能性があります。両方の割り込みの優先度が同じ場合、GPIO ISR がアクティブな間は LPSPI ISR を実行できないため、ブロッキング API がハングします。ブロッキング呼び出しは、ISR が転送を完了してセマフォをポストするまで待機しますが、その ISR は GPIO ISR が終了するまで CPU 時間を取得しません。SDKs のドライバは実際には LPSPI 割り込みで転送を終了し、その後でセマフォをポストしてブロッキング呼び出しを解放します。SO、優先順位が同じ ISR はこのように転送をデッドロックします。 非ブロッキング API の動作は同じです。同じ優先度の GPIO ISR から呼び出された場合、LPSPI ISR はそれをプリエンプトすることができないSO、ドライバ ステート マシンは LPSPI IRQ によって処理されないSO、byte_remaining は変更されません。LPSPI の優先度を高く(数値的に低い値に)した後にのみ、LPSPI 割り込みが直ちに発生し、転送が完了し、ブロッキング API と非ブロッキング API の両方が期待どおりに動作できるようになります。試す /* 数字が小さいほど、Cortex-M での優先度が高くなります */ INT_SYS_SetPriority ( SysTick_IRQn 、 0 ) ;     // ティックタイムアウトに依存している場合 INT_SYS_SetPriority ( LPSPI1_IRQn 、 1 ) ;      // GPIO より高くなければなりません INT_SYS_SetPriority ( PORTC_IRQn 、 2 ) ;       // ボタンの PORTx IRQ   注: 優先度の修正に関係なく、ISR 内でブロッキング SPI API を使用しないことをお勧めします。同様に、ISR 内で非ブロッキング転送が完了するまで待機しないこともお勧めします。S32K LPSPI ドライバーは割り込みハンドラー内で転送を進行しますが、ISR が長いと他の割り込みの実行が妨げられる可能性があります。   BR、ペトル Re: Doing I/O from an interrupt handler こんにちは@PetrS ご返答ありがとうございます。しかし、よく理解できていないようで申し訳ありません。 あなたが言っているのは、ISR 内でブロッキング I/O を実行するのは悪い考えだということのようですが、私も同感です。しかし、なぜそれが機能しないのでしょうか?ティック カウンタは、優先度 -1 の割り込みハンドラ内で増加します。これは、どの I/O 割り込み優先度よりも高い優先度です。また、コード内の割り込みマスクは変更していませんが、ドライバが内部的にそれを変更するのでしょうか? 私たちのアプリケーションはベアメタル (シングル スレッド) なので、ISR コンテキストとアプリケーション コンテキストで待機することはほぼ同じです。唯一の違いは、ISR コンテキストでは、他の I/O 割り込みがブロックされることです。しかし、これはまさに私が望んでいるものなのです。ただし、優先度が高いため、タイマー ISR をブロックしてはなりません。ISR の最初の行に ENABLE_INTERRPUTS() の呼び出しを追加してみましたが、違いはありませんでした。 非ブロッキング バージョンも試してみましたが、これも別の方法でハングします。非ブロッキング呼び出し(LPSPI_DRV_MasterTransfer() の後に LPSPI_DRV_MasterGetTransferStatus(SPI1, &byte_remaining) )では、byte_remaining は元の値のままです。非同期転送のために LPSPI_DRV_MasterTransfer() を呼び出す前に LPSPI_DRV_MasterAbortTransfer(SPI1) の呼び出しを追加しようとしましたが、結果は同じでした。上記のAPI呼び出しはどちらもISRから実行されます。ユースケースとしては、ユーザーがボタンを押すとGPIO割り込みが発生し、SPI経由で値を読み取るというものです。 もう一度指摘しておく価値のあることは、ISR が中断している API はブロッキング SPI 転送であるということです。新しい転送を開始する前に ISR に LPSPI_DRV_MasterAbortTransfer() の呼び出しを追加しても、効果はありませんでした。 この問題に関しては期限が非常に迫っているため、どんな助けでも大歓迎です。 Re: Doing I/O from an interrupt handler こんにちは、 ISR からの I/O をブロックすることは、S32K1 SDK では機能しません。LPSPI_DRV_MasterTransferBlocking() は OSIF セマフォを待機します。ISR コンテキストではブロックする場所がなく、進めるティック/タイム ベースもないため、ハングします。非ブロッキング API (LPSPI_DRV_MasterTransfer) を使用して、LPSPI ISR/コールバックで転送を完了し、タスク/メイン ループを信号します。また、SysTick はタイマー ラップ時に起動しますが、そのハンドラーはマスクされておらず、十分な NVIC 優先度がある場合にのみ実行されます。そのため、PRIMASK が設定されている場合、または優先度の高い ISR にいる場合は延期されます。 クックブック プロジェクトは意図的に軽量化されており、高レベルのドライバの抽象化なしでペリフェラルの使用を直接示します。これは、実稼働での使用ではなく、学習の開始点として意図されています。NXP ドライバ スタイルの例が必要な場合は、クックブックではなく SDK、または RTD ドライバ/サンプル プロジェクトを参照してください。   BR、ペトル Re: Doing I/O from an interrupt handler こんにちは、 今では「動作する」ようになりましたが、ISR 内で SPI 転送を行うことは依然として推奨されません。 後で優先順位を変更したり、別のペリフェラルを追加したりする場合は、診断したデッドロック状態を簡単に再現できます。最も安全なデザインは、ISR を常に短く保ち、実際の作業をメイン ループに延期することです。 ISR はトリガーとしてのみ使用し、SPI 転送を main() で同期的に実行するか、ISR で開始されて LPSPI ISR によって完了する非ブロッキング転送として実行し、main は完了フラグを待機します。 BR、ペトル
View full article
Doing I/O from an interrupt handler The relevant parameters for this question are as follows: 1. IDE: S32 DS for ARM v 2.2 (Yes, I know this is old, but so is the product in question; we need to support the existing code) 2. Chip: S32K148 3. OS: Windows 11 4. System OS: Bare metal Attempting to do any kind of SPI Master transfer in an ISR hangs, and usually the API that was interrupted is a blocking I/O (I2C or SPI) call. On a blocking call (to LPSPI_DRV_MasterTransferBlocking() ), the call hangs because sysTick interrupts do not seem to be happening, so the MCU does not get a sense of elapsing time. On a non-blocking call (LPSPI_DRV_MasterTransfer() followed by LPSPI_DRV_MasterGetTransferStatus(SPI1, &byte_remaining) ), byte_remaining stays at the original value. I have attempted to add a call to  LPSPI_DRV_MasterAbortTransfer(SPI1) before calling LPSPI_DRV_MasterTransfer() for the async transfer, but the result is the same. On a semi-related question, what triggers the SysTick_Handler() ? My intuition says it should be running all the time increasing the tick count every 1ms, but putting a break point in the body of it seems to hit only some time. Strangely, it is sometimes not hit even when a blocking SPI transfer is successful, which should be arming the system timer if it was unarmed before. Another semi-related question is that in the S32 Cookbook example code for SPI, there are no use of the SDK provided APIs; the examples do all the register bit banging directly. Are there any examples that are closer to production worthy code, in that they at least call the NXP APIs instead of re-inventing the wheel? Re: Doing I/O from an interrupt handler Hello @PetrS  Thank you very much. The interrupt priority indeed solved the problem. However, I do have a question: I agree that blocking inside an ISR is not a good idea, but what is the alternative in a single threaded application? I could spin in the application context until the SPI transfer is done. That will allow other I/O interrupts to happen (my understanding is that negative priority interrupts will fire anyway; they are not disabled when a positive priority ISR is entered). But in my situation doing overlapping I/O is neither possible nor desirable. 1. It is not possible because the S32K148 is the bus master for all the buses. So if it is doing a SPI transfer in an ISR, it cannot possibly drive another I/O bus and therefore cannot trigger interrupts. 2. It is not desirable because there could be shared globals between the ISRs, so I don't want to start a new I/O until the current one is complete. For a single threaded bare metal application, what would be your recommendation to handle this situation? Re: Doing I/O from an interrupt handler Hi, OK, then simply interrupts priorities could cause this behavior. The blocking API hangs simply because the LPSPI ISR cannot run while the GPIO ISR is active if both interrupts have the same priority. The blocking call waits for the ISR to finish the transfer and post the semaphore - but that ISR never gets CPU time until the GPIO ISR exits. The SDK’s driver indeed finishes transfers in the LPSPI interrupt, and only then posts the semaphore to release the blocking call, so equal‑priority ISRs will deadlock the transfer this way.  The non‑blocking API behaves the same: if called from a GPIO ISR of equal priority, the LPSPI ISR cannot preempt it, so byte_remaining never changes because the driver state machine is never serviced by the LPSPI IRQ. Only after raising LPSPI to a higher priority (numerically lower value) will the LPSPI interrupt fire immediately, complete the transfer, and allow both blocking and non‑blocking APIs to work as expected. Try  /* Smaller number = higher priority on Cortex-M */ INT_SYS_SetPriority(SysTick_IRQn, 0);     // if you rely on tick timeouts INT_SYS_SetPriority(LPSPI1_IRQn, 1);      // must be higher than GPIO INT_SYS_SetPriority(PORTC_IRQn, 2);       // your button’s PORTx IRQ   Note: regardless of the priority fix, it’s still advisable not to use the blocking SPI API inside an ISR, and likewise not to wait inside an ISR for a non‑blocking transfer to finish. The S32K LPSPI driver progresses transfers in its interrupt handler, and long ISRs can prevent other interrupts from running.   BR, Petr Re: Doing I/O from an interrupt handler Hello @PetrS  Thank you for your response, but I am afraid I don't really understand it. What you seem to be saying is that doing blocking I/O inside an ISR is a bad idea, and I agree. But why should it not work? The tick counter increments in an interrupt handler that priority -1, that is higher than any I/O interrupt priority. And I am not changing any interrupt mask in my code; does the driver change it under the hood? Our application is bare metal (single threaded), so waiting in an ISR context and application context is pretty much the same thing. The only difference is that in an ISR context, other I/O interrupts will be blocked. But this is exactly what I want anyway. The timer ISR, however, should not be blocked because of the higher priority. I have tried adding a call to ENABLE_INTERRPUTS() on the first line of the ISR, but it made no difference. I have tried the non-blocking version also, and that also hangs, in a different way. On a non-blocking call (LPSPI_DRV_MasterTransfer() followed by LPSPI_DRV_MasterGetTransferStatus(SPI1, &byte_remaining) ), byte_remaining stays at the original value. I have attempted to add a call to  LPSPI_DRV_MasterAbortTransfer(SPI1) before calling LPSPI_DRV_MasterTransfer() for the async transfer, but the result is the same. Both of the above API calls are made from the ISR. The use case is that if the user presses a button, a GPIO interrupt is fired and it wants to read a value over SPI. One thing worth pointing out again is that the API that the ISR is interrupting is a blocking SPI transfer. Adding a call to LPSPI_DRV_MasterAbortTransfer() in the ISR before starting the new transfer also did not help. I am on a very tight deadline on this issue; any help is greatly appreciated. Re: Doing I/O from an interrupt handler Hi, Blocking I/O from an ISR won’t work with the S32K1 SDK. LPSPI_DRV_MasterTransferBlocking() waits on an OSIF semaphore; in ISR context there’s no place to block and no tick/time base to advance, so it hangs. Use the non‑blocking API (LPSPI_DRV_MasterTransfer) and complete the transfer in the LPSPI ISR/callback, then signal a task/main loop. Also, SysTick fires on timer wrap, but its handler only runs when not masked and with sufficient NVIC priority—so if PRIMASK is set or you’re in a higher‑priority ISR, it will be deferred.  The cookbook projects are deliberately lightweight, showing peripheral use directly without the higher‑level driver abstractions; they’re intended as learning starting points, not production usage. If you want NXP driver‑style examples, look to SDK, or rather RTD driver/example projects rather than the cookbook.   BR, Petr Re: Doing I/O from an interrupt handler Hi, even though it now “works” you should still discourage doing the SPI transfer inside the ISR.  If you ever change priorities later, or add another peripheral, you can easily re‑create the deadlock condition you just diagnosed. The safest design would be always to keep ISRs short and defer real work to the main loop. Use the ISR only as a trigger; perform the SPI transfer synchronously in main() or as a non‑blocking transfer initiated in the ISR but completed by the LPSPI ISR, and main waits for the completion flag. BR, Petr
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 RT 跨界 MCU 的高级声明式用户界面框架?我希望能用 Swift 或 JavaScript 等高级语言编写代码,然后使用类似 SwiftUI 或 React 的东西创建用户界面。 Re: High level declarative UI framework 你好@MatthewRuzzi、 感谢您关注恩智浦 MIMXRT 系列! 恩智浦正式提供 GuiGuider 工具,以 LVGL 作为底层框架,帮助客户快速开发用户界面软件。此外,SDK 还包括 emWin 和 VGLite 的示例项目。虽然目前官方并不支持高级语言的实现,但我建议探索以下方法: 1.https://doc.qt.io/QtForMCUs/qtul-zephyr-mimx1060-evk.html https://www.embeddedartists.com/wp-content/uploads/2023/06/QtMCUs_ProgramDevelopment.pdf 2https://www.nxp.com/design/design-center/training/TIP-CREATE-USER-INTERFACE-QT 3.https://docs.microej.com/en/latest/GettingStarted/gettingStartedIMXRT1170.html 4.https://github.com/lvgl/lv_micropython 5.https://www.swift.org/blog/embedded-swift-examples/ 我希望这些资源能对您的发展有所启发。 致以最诚挚的问候, Gavin Re: High level declarative UI framework 目前是否有任何项目正在开展这方面的工作?我非常希望能够使用 Swift 或 JavaScript 这样的语言。有什么办法能让我今后更有可能这样做吗?我应该在哪些地方提交或投票表决功能请求,或者在哪些地方发布此信息?
View full article