Multi Source Translation Content

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Multi Source Translation Content

讨论

排序依据:
I.MX8M Plus – Booting U-Boot, Kernel, DTB, and Initramfs from 32 MB QSPI Flash (Kernel Hangs) Hi, We are working with a custom i.MX8M Plus DDR4 board that includes 32 MB QSPI NOR flash. Our objective is to boot U-Boot, Linux kernel, device tree, and initramfs (rootfs.img) entirely from QSPI flash, without using SD/eMMC. We are able to successfully boot up to U-Boot (flash.bin) from QSPI flash. -----Flash Layout and Image Sizes---------------- QSPI flash size: 32 MB flash.bin (U-Boot + SPL) ~2.4 MB Image.gz (Kernel) ~15 MB imx8mp-evk.dtb ~85 KB rootfs.img ~12.6 MB ----QSPI Offset Layout---------- flash.bin @ 0x00000000 Image.gz @ 0x0024D000 imx8mp-evk.dtb @ 0x010A6B00 rootfs.img @ 0x010BB800 U-Boot Environment Setup After booting into U-Boot from QSPI, we configure the following environment variables to load the kernel, device tree, and initramfs from flash: sf probe 0 setenv loadaddr 0x40480000 // kernel setenv fdt_addr 0x43000000 //dtb setenv initrd_addr 0x43800000 //rootfs (minimal initramfs) setenv kernel_comp_addr_r 0x50000000 setenv kernel_comp_size 0x04000000 Reading Images from QSPI Flash sf read ${loadaddr} 0x0024D000 0x00E59A6F sf read ${fdt_addr} 0x010A6B00 0x00014BBA sf read ${initrd_addr} 0x010BB800 0x00C04DB0 Boot Command setenv bootargs console=${console},${baudrate} earlycon=${earlycon},${baudrate} rdinit=/dev booti ${loadaddr} ${initrd_addr} ${fdt_addr} Issue Observed The kernel starts executing but hangs at “Starting kernel …”. Please refer to the attached kernel boot log (kernel_bootlog1). When using the following boot arguments: setenv bootargs setenv bootargs "console=ttymxc1,115200 earlycon root=/dev/ram0 rw rdinit=/sbin/init loglevel=8" The kernel progresses further but hangs midway during boot. Please refer to the attached kernel boot log (kernel_bootlog2). Attached the kernel DTS and kernel defconfig for reference. Kindly let us know if any modifications are required. Questions: 1. Are there any recommended changes required in the kernel DTS for booting initramfs entirely from QSPI on a custom i.MX8M Plus DDR4 board? 2. Are there any additional boot arguments recommended by NXP for initramfs-based boot on i.MX8MP from QSPI flash? 3. What could be the possible reason for the kernel not booting correctly? We followed the same procedure that works successfully on the i.MX8MP LPDDR4  EVK, where the kernel and root filesystem boot properly from QSPI flash. The only differences in our setup are the flash.bin and device tree, which were modified according to the DDR configuration of our custom board. thank you. Re: I.MX8M Plus – Booting U-Boot, Kernel, DTB, and Initramfs from 32 MB QSPI Flash (Kernel Hangs) Hi @Bhardwaj  1. Please add size for booti. The booti needs initrd size. booti ${loadaddr} ${initrd_addr}:0x00C04DB0 ${fdt_addr} booti command — Das U-Boot unknown version documentation 2. The bootlog2 shows that the kernel can't find correct mount point, this should be related to the rootfs parameter you passed in. Best Regards, Zhiming Re: I.MX8M Plus – Booting U-Boot, Kernel, DTB, and Initramfs from 32 MB QSPI Flash (Kernel Hangs) @Bhardwaj  I follow this doc, it works fine.  I just use the ramdisk of the demo.  https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/all-bootloader-device-tree-Linux-kernel-rootfs-in-spi-nor-demo/ta-p/1663994 Re: I.MX8M Plus – Booting U-Boot, Kernel, DTB, and Initramfs from 32 MB QSPI Flash (Kernel Hangs) HI @Zhiming_Liu , We are still facing the same issue on our i.MX8M Plus DDR4 custom board and would appreciate your guidance. We have attached the detailed kernel boot log for your review. The same procedure and images work correctly on the i.MX8M Plus LPDDR4 EVK. The same procedure doing as same as EVK ,But the kernel does not fully boot on our custom DDR4 board. Question : 1.After giving setenv bootargs "console=ttymxc1,115200 earlycon root=/dev/ram rw rdinit=/sbin/init loglevel=8"  going forward , WHY? rather then thos loglevel not moving forwad as said in kernel_bootlog1. 2.Are there any mandatory changes required in the Linux device tree (linux-imx) specifically for a custom DDR4 configuration on i.MX8M Plus, beyond updating DDR timing and memory size? 3.The same kernel image, initramfs, and boot flow work correctly on the i.MX8M Plus LPDDR4 EVK, but fail on our custom DDR4 board. 4.What are the possible reasons for this behavior? Could this be related to DDR configuration, memory mapping, or reserved memory differences? Re: I.MX8M Plus – Booting U-Boot, Kernel, DTB, and Initramfs from 32 MB QSPI Flash (Kernel Hangs) I think you should check the device tree to see if there are any address conflicts with the ramdisk. Alternatively, use a higher address for the ramdisk, or use a smaller ramdisk as the one in the demo Hogole mentioned. Re: I.MX8M Plus – Booting U-Boot, Kernel, DTB, and Initramfs from 32 MB QSPI Flash (Kernel Hangs) You can try booting without mounting the ramdisk first to see if it works. This would mean only the root filesystem is not mounted. This can help narrow down the problem. booti ${loadaddr} - ${fdt_addr} Re: I.MX8M Plus – Booting U-Boot, Kernel, DTB, and Initramfs from 32 MB QSPI Flash (Kernel Hangs) Hi @gehimiy , As suggested, we tried booting the kernel without an initramfs using the command:   booti ${loadaddr} - ${fdt_addr} However, there is no response from the kernel, and the system still hangs at “Starting kernel …”. The below are the Ram address and flash address using to load the files.  setenv loadaddr 0x40480000 // kernel setenv fdt_addr 0x43000000 //dtb setenv initrd_addr 0x43800000 //rootfs (minimal initramfs) setenv kernel_comp_addr_r 0x50000000 setenv kernel_comp_size 0x04000000 Reading Images from QSPI Flash sf read ${loadaddr} 0x0024D000 0x00E59A6F sf read ${fdt_addr} 0x010A6B00 0x00014BBA sf read ${initrd_addr} 0x010BB800 0x00C04DB0 Questions: Where should we check for possible address conflicts between: Kernel load address Initramfs (ramdisk) address Reserved memory regions If the issue is related to ramdisk address overlap, where can we: Change the ramdisk load address in U-Boot and kernel ? Adjust or reserve memory regions in the device tree? Is there a recommended higher memory address range for loading the ramdisk on i.MX8M Plus DDR4 Custom Board systems? With same address and files working fine for IMX8MPLUS LPDDR4 EVK. We have attached the current DTS file for your reference. Please let us know what changes are required. Thanks in advance for your support.
查看全文
S32K144 MCUのSDKsのインストールとアップデート S32K144 MCUのSDKsサンプルからプロジェクトを作成するためにDesign Studioをインストールしましたが、サンプルプロジェクトを構成するためのSDKsフォルダが見つかりません。以下にS32 K144デバイスのSDKsをインストールしましたが、画像に関する問題を共有します。 よろしくお願いします Re: install and updating the SDK for the S32K144 MCU ハイ 他の 2 つのパッケージをインストールすると、S32K1 RTD が見つかります。 以前は、そのうちの 1 つを選択するだけで、S32K1 RTD 関連の依存パッケージが自動的にインストールされたことを覚えています。 クリスマス休暇期間中は、サポートの応答時間は通常より長くなる場合がありますのでご了承ください。場合によっては、ご要望への対応が新年以降になることもあります。ご理解のほどよろしくお願いいたします。 よろしくお願いします、 ロビン --------------------------------------------------------------------------------- 注記: - この投稿があなたの質問への回答である場合は、「解決策として承認」ボタンをクリックしてください。ありがとう! - Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。 後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。 ---------------------------------------------------------------------------------
查看全文
MCU-Linkデバッグプローブツールを使用してフラッシュロックされたLPC4088を一括消去する方法 こんにちは、 MCU-Link デバッグ プローブを使用して、外部フラッシュを備えた LPC4088 マイクロコントローラをプログラムしています。「LinkServer.exe」を使用して正常にフラッシュできましたMCU-Link デバッグ プローブ SWD インターフェイスを介したコマンド ツール。LPC4088にリリース(ロック)バージョンのファームウェアをフラッシュした後、「LinkServer.exe」経由でMCU-Linkデバッグプローブを使用してロック解除または一括消去することができませんでした。ソフトウェア。UART ブートローダー モードで Magic ソフトウェアを使用してロックを解除しました。しかし、MCU-Link デバッグ プローブは使用できませんでした。 MCU-Link デバッグ プローブ SWD インターフェイスを使用して LPC4088 のロックを解除する方法を教えてください。 ありがとうございます。 Re: How to mass erase flash locked LPC4088 using MCU-Link Debug Probe tool こんにちは@asanga_viraj LPC についてまだ質問がある場合は、LPC 製品フォーラムでチケットを作成してください。あなたの質問はすぐにそこにCAN表示されます。 この問題に関して、まだ解決していない場合は、フラッシュのリリースバージョンをロックする方法をお知らせください。   よろしくお願いします。 BR アリス Re: How to mass erase flash locked LPC4088 using MCU-Link Debug Probe tool こんにちは、アリス。 SWD インターフェースを使用して CP2 レベルロックされた LPC4088 のロックを解除する方法を説明していただけますか? ありがとうございます。
查看全文
Clarification on RTD Driver Availability with FS32K144HAT0MMHT EVK Hi everyone, I am interested in buying the FS32K144HAT0MMHT MCU and the associated evaluation kit (EVK). I would like to know: Does the EVK include the RTD driver at no additional cost? If not, is it necessary to purchase the RTD driver separately? Thanks in advance for your help! Re: Clarification on RTD Driver Availability with FS32K144HAT0MMHT EVK Hi @NagulMeera  Real-Time Drivers (RTD) and S32 Design Studio (S32DS) are free of charge. EB tresos Studio is available with a free evaluation license, but a production license must be ordered from Elektrobit. We also offer premium software such as: - S32 Safety Software Framework (SAF) and Safety Peripheral Drivers (SPD) - Structural Core Self-Test (SCST) For premium software, contact your NXP representative. BR, VaneB
查看全文
i.MX6ULL:BT+WiFi 芯片(高通 QCA9377)的 132MHz sdio 时钟输出问题 恩智浦社区成员,你们好、 我有一块装有 IMX6ULL 和高通 BT+WiFi 组合芯片的定制板。 该项目基于 Yocto kirkstone、linux-imx 5.15.71 内核版本。 mx6ull 和 qca9377 之间的通信方式是 sdio。 关于 mx6ull 和 qca9377 之间的 sdio 通信过程中偶尔出现的通信错误,我有几个问题。 1. 将 dts 设置为使用 132MHz 的 sdio 时钟速度 imx6ul-14x14-evk.dtsi &usdhc1 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc1>; pinctrl-1 = <&pinctrl_usdhc1_100mhz>; pinctrl-2 = <&pinctrl_usdhc1_200mhz>; bus-width = <4>; vmmc-supply = <&reg_sd1_vmmc>; pm-ignore-notify; keep-power-in-suspend; non-removable; status = "okay"; }; &iomuxc { pinctrl_usdhc1: usdhc1grp { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x17059 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x10071 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x17059 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059 MX6UL_PAD_GPIO1_IO00__GPIO1_IO00 0x130b0 >; }; pinctrl_usdhc1_100mhz: usdhc1grp100mhz { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170b9 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100b9 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170b9 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170b9 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170b9 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170b9 >; }; pinctrl_usdhc1_200mhz: usdhc1grp200mhz { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170f9 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100f9 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170f9 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170f9 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170f9 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170f9 >; }; }; mmc0 信息 # cat /sys/kernel/debug/mmc0/ios clock: 132000000 Hz actual clock: 132000000 Hz vdd: 21 (3.3 ~ 3.4 V) bus mode: 2 (push-pull) chip select: 0 (don't care) power mode: 2 (on) bus width: 2 (4 bits) timing spec: 6 (sd uhs SDR104) signal voltage: 1 (1.80 V) driver type: 0 (driver type B) 3. 有时会打印出如下 sdio 通信错误日志 AR6000: SDIO bus operation failed! MMC stack returned : -84 __HIFReadWrite, addr:0X001000, len:00000256, Read , Sync Debug Assert Caught, File /usr/src/debug/kernel-module-qca9377/3.1-r0/git/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c, Line: 1459, Test:status == A_OK || status == A_ECANCELED "Change sdio clock speed (132MHz -> 50MHz)" 1. 将 DTS 设置为使用 sdio 时钟速度为 50MHz。 imx6ul-14x14-evk.dtsi &usdhc1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc1>; bus-width = <4>; vmmc-supply = <&reg_sd1_vmmc>; pm-ignore-notify; keep-power-in-suspend; non-removable; status = "okay"; }; mmc0 信息 # cat /sys/kernel/debug/mmc0/ios clock: 50000000 Hz actual clock: 44000000 Hz vdd: 21 (3.3 ~ 3.4 V) bus mode: 2 (push-pull) chip select: 0 (don't care) power mode: 2 (on) bus width: 2 (4 bits) timing spec: 2 (sd high-speed) signal voltage: 0 (3.30 V) driver type: 0 (driver type B) 不显示 sdio 通信错误日志。 1.当 sdio 时钟设置为 132MHz 时,mx6ull 和 qca9377 之间的 sdio 通信似乎不稳定。有没有办法通过修改 dts 值来改进它? 2.如果不可能,您建议使用什么值作为 sdio 时钟值? 提前谢谢您。 致以最诚挚的问候 i.MX6 全部 i.MX6UL Linux Yocto Project Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 请参阅数据表,SDR104/SDR50 模式的信号电平为 1.8 V。请检查您的硬件并仔细确认这一点 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的谢琼 感谢您的快速回复。   让我再解释一下。   <HW> - Soc 是 NXP mx6ull 处理器 (MCIMX6Y2DVM09AB) - mmc0 连接到高通 BT/WiFi Combo 芯片(sdio 连接) -> 132MHz,1.8V - mmc1 连接到 8G eMMC -> 132MHz,1.8V   <mmc0> # cat /sys/kernel/debug/mmc0/ios 时钟:132000000 赫兹 实际时钟:132000000 赫兹 Vdd:21(3.3 ~ 3.4 V) 总线模式:2(推拉) 芯片选择: 0(无所谓) 电源模式:2(开启) 总线宽度:2(4 位) 定时规格 6(SD UHS SDR104) 信号电压: 1 (1.80 V) 驱动器类型: 0(驱动程序类型 B)   <mmc1> # cat /sys/kernel/debug/mmc1/ios 时钟:132000000 赫兹 Vdd:21(3.3 ~ 3.4 V) 总线模式:2(推拉) 芯片选择: 0(无所谓) 电源模式:2(开启) 总线宽度:3(8 位) 定时规格 9 (mmc HS200) 信号电压: 1 (1.80 V) 驱动器类型: 0(驱动程序类型 B)   <说明> - 与连接到 mmc1 的 eMMC 的通信以 132MHz 和 1.8V 电压运行,没有任何问题。 - 与连接到 mmc0 的 BT/WiFi 芯片的 sdio 通信也是以 132MHz 和 1.8V 电压驱动的,但会出现间歇性的 sdio 通信错误。   更多问题见下文: 1.对于 eMMC(mmc1),HS200(132MHz/1.8V)似乎是有保证的、但对于 SDIO(mmc0),在 SDR104 模式下似乎只能保证高达 104MHz 的频率。请检查? 2.如果是,mx6ull 芯片是否能保证最高 104MHz 的 sdio 时钟速度? (我想确认一下 MX6ULL 芯片能否保证 SDIO 132MHz 的时钟速度)。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 感谢您的快速回复。 关于问题 1,我想我大错特错了。很抱歉。 我检查了你提到的如下内容 ""SD/SDIO UHS-I 模式(SDR 模式下最高 208 MHz,DDR 模式下最高 50 MHz)" 因此,如果我们在 mmc0 中使用 sdr104,最大时钟频率为 208MHz,那么有可能保证 132MHz 的时钟频率吗? Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 1.对于 eMMC(mmc1),HS200(132MHz/1.8V)似乎是有保证的、但对于 SDIO(mmc0),在 SDR104 模式下似乎只能保证高达 104MHz 的频率。请检查? >请参阅数据表,最高可达 UHS-I SDR104 模式 104MB/s,不是 104Mhz max,请参阅 RM:SD/SDIO UHS-I 模式(SDR 模式下最高 208MHz,DDR 模式下最高 50MHz) 2. (我想确认 MX6ULL 芯片是否能保证 SDIO 132MHz 的时钟速度)。 >您可以参阅数据表,对于 SDR104,频率最高可达 200Mhz,我们已经在 mmc0 上测试了 SDR104,频率最高可达 198Mhz,参阅您的日志,似乎您的 mmc1 可以在 HS200 下工作? Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 是的,您可以参考默认设置为 132M 的 dtsi 文件,也可以转储时钟树来检查时钟是否为 132Mhz Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 谢谢 joanxie、 我会再检查一下,看看是否真的是时钟速度问题,然后再问。 谢谢。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 我在 SW 中调试了上述内容。 请在确认细节后回答我的问题。 1.芯片勘误表 芯片勘误表i.MX 6ULL "ERR010450 MMC:EMMC 只能在低于或等于 150 MHz 的频率下运行" https://www.nxp.com/docs/en/errata/IMX6ULLCE.pdf        2.SW 调试 1) 误差值定义 incl@@ ud e/ uapi / asm -generic / errno.h: 67: #define EILSEQ 84 /* 非法字节序列 */ 2) EILSEQ 设置位置 -cmd 司机/mmc/主机/sdhci.c: sdhci_cmd_irq() 如果如果 &(sdhci_int_timeout |SDHCI_INT_CRC |sdhci_int_end_bit |sdhci_int_index)){ 如果(intmask &sdhci_int_timeout) 主机->cmd->错误 = -ETIMEDOUT; 不然 主机->cmd->错误 = -EILSEQ;                     -数据 司机/mmc/主机/sdhci.c: sdhci_data_irq() 如果(intmask &sdhci_int_data_timeout) 主机->数据->错误 = -ETIMEDOUT; 否则 如果(intmask &sdhci_int_data_end_bit) 主机->数据->错误 = -EILSEQ; 3) 对数 [418.109795][sdhci_cmd_irq()] intmask = 0xa0001 [418.114178][sdhci_data_irq()] intmask = 0x200002 [ 418.118999] AR6000:S DIO 总线操作失败! 返回的 MMC 堆栈:-8 4 [418.125847]__HIFReadWrite, addr:0X000800, len:00000044, 读 , 同步 [418.144284]调试断言捕获,文件 /usr/src/调试/内核-模块-qca9377/3.1-r0/git/核心/服务/HIF/sdio/linux/native_sdio/src/hif.c, 行: 1459, 测试:状态 ==A_OK ||状态 ==A_ECANCELED 3.SDHCI 寄存器 1) sdhci_cmd_irq() 的掩码值为 0xa0001 位 0 (0x00001)😞 sdhci_int_response -> 命令响应 OK 位 17 (0x20000)😞 SDHCI_INT_INDEX -> 命令索引错误 位 19 (0x80000)😞 SDHCI_INT_CRC -> 命令 CRC 错误 2)的内屏蔽值 的掩码值是() 的掩码值为 0x200002 位 1 (0x00002)😞 sdhci_int_data_end -> 数据确定 位 21 (0x200000)😞 SDHCI_INT_DATA_CRC -> 数据 CRC 错误 4.猜谜 根据 imx6ull 勘误表 ERR010450、 "1.8 V 的 SDR104 只能在低于或等于 150 MHz 的频率下工作。" 如果它的工作频率高达 150MHz看来 cmd/数据 CRC 错误将在 132MHz 时在 132MHz 频率下,由于温度/时间差/电压波动等因素造成的时序余量。 5.问题 目前,我们无法通过硬件调整来调整数值,必须通过软件来响应。 降低 sdio 时钟值似乎可以减少或消除 CRC 错误率。 率。恩智浦有什么看法? 谢谢。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的 joanxie 根据您提供的信息,我使用下面的寄存器进行了测试。 sdhci-esdhc-imx.c #define ESDHC_MIX_CTRL_SMPCLK_SEL (1<< 23) #define ESDHC_MIX_CTRL_AUTO_TUNE_EN (1<< 24) #define ESDHC_MIX_CTRL_FBCLK_SEL (1<< 25) SMPCLK_SEL 0 AUTO_TUNE_EN 1 FBCLK_SEL 1 1. 测试 1) 设置 AUTO_TUNE_EN 1-> 0 2) 日志 [39.150703] AR6000:取消向总线驱动程序 注册 3) wlan0 注册失败 $ ifconfig wlan0 up ifconfig:SIOCGIFFLAGS:没有这样的设备 2. 测试 2 1) 设置 FBCLK_SEL 1-> 0 2) 日志 [39.160750] AR6000:取消向总线驱动程序注册 3) wlan0 注册也失败 $ ifconfig wlan0 up ifconfig:SIOCGIFFLAGS:没有这样的设备 3. 测试 3 1) 设置 AUTO_TUNE_EN 1-> 0 & & FBCLK_SEL 1-> 0 2) 系统在启动时死机,如下面的日志所示 [18.834619] wlan:加载驱动程序 v4.5.25.65 [ 18.894917] hifDeviceInserted:Dumping clocks (50000000,132000000) 我试着参考恩智浦社区的文章对其进行修改和测试,但结果并不令人满意。 请注意 感谢您的帮助 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的 joanxie, 感谢您的快速回复。 在参考您的指南后,我会告诉您的。 祝你今天和周末愉快 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 我咨询了无线团队,他们已经通过 usdhc 验证了 imx6ull 的 WIFI,并且可以设置最大时钟频率为 150Mhz,因此对于 imx6ull 端,可以支持这一点,而且我发现一些 WIFI 芯片会影响自动运行,因此我建议您可以禁用这些寄存器来检查,如果这些不是根本原因,我建议您需要检查您的硬件和 PCB 设计,如果您无法确认这一点,您可以提交票据进行 SCHEMATIC 审核。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 我咨询了无线团队,他们已经通过 usdhc 验证了 imx6ull 的 WIFI,并且可以设置最大时钟频率为 150Mhz,因此对于 imx6ull 端,可以支持这一点,而且我发现一些 WIFI 芯片会影响自动运行,因此我建议您可以禁用这些寄存器来检查,如果这些不是根本原因,我建议您需要检查您的硬件和 PCB 设计,如果您无法确认这一点,您可以提交票据进行 SCHEMATIC 审核。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 这就是我之前谈到的,关于自动调谐影响故障的详细信息 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/uSDHC-auto-tuning-and-possible-SDIO-failures/ta-p/1352855 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 很高兴听到这些补丁起作用了,但事实上新的 电路板支持包 已经合并了,据我所知,我没听见 imx6ull 和 wifi 芯片之间存在任何其他问题 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的 joanxie 感谢您的友好指导。 我参照您提供的链接调试了这个问题。 1. 补丁 1 1) 参考您提供的链接使用补丁 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/uSDHC-auto-tuning-and-possible-SDIO-failures/ta-p/1352855 2. 补丁 2 1) 在 dts 文件上添加"fsl,sdio-async-interrupt-enabled" imx6ul-14x14-evk.dtsi: &usdhc1 { fsl,sdio-async-interrupt-enabled; //add this line 2) 以下部分已启用 sdhci-esdhc-imx.c: usdhc_auto_tuning_mode_sel() /* * If sdio device use async interrupt, it will use DAT[1] to signal * the device's interrupt asynchronous when use 4 data lines. * Then hardware auto tuning circuit MUST NOT check the DAT[1] line, * otherwise auto tuning will be impacted by this async interrupt, * and change the delay cell incorrectly, which then cause data/cmd * errors. * This is the hardware auto tuning circuit limitation. */ if (imx_data->boarddata.sdio_async_interrupt_enabled) auto_tune_buswidth = ESDHC_VEND_SPEC2_AUTO_TUNE_1BIT_EN; 打上上述补丁后,通过调试,问题没有再出现。 (sdio 时钟变化测试(50MHz->100MHz->132MHz)、ping 测试、iperf3 测试等)。 再问一个问题,确认一下你们的补丁指南。 如果我打上这个补丁,问题就会得到解决、 但它是否有可能对 mx6ull 和 wifi 芯片之间的 sdio 通信产生其他影响?   感谢您的支持。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 谢谢 joanxie、 我还检查了另一个 yocto 版本(imx-6.6.52、fslc-6.1.72) 我在 yocto scarthgap imx-6.6.52 版本上找到了类似的补丁,如下所示 /* * For USDHC, auto tuning circuit can not handle the async sdio * device interrupt correctly. When sdio device use 4 data lines, * async sdio interrupt will use the shared DAT[1], if enable auto * tuning circuit check these 4 data lines, include the DAT[1], * this circuit will detect this interrupt, take this as a data on * DAT[1], and adjust the delay cell wrongly. * This is the hardware design limitation, to avoid this, for sdio * device, config the auto tuning circuit only check DAT[0] and CMD * line. */ if (imx_data->init_card_type == MMC_TYPE_SDIO) auto_tune_buswidth = ESDHC_VEND_SPEC2_AUTO_TUNE_1BIT_EN; esdhc_clrset_le(host, ESDHC_VEND_SPEC2_AUTO_TUNE_MODE_MASK, auto_tune_buswidth | ESDHC_VEND_SPEC2_AUTO_TUNE_CMD_EN, ESDHC_VEND_SPEC2); 但未在 yocto scarthgap fslc-6.1.72 上打补丁版本。 我将根据您的指导检查其他 yocto 版本。 感谢您的支持。
查看全文
[ABUSE] Post By: @JohnKlug / Board: imx-processors / Reported by: svyruh svyruh has reported the post Could not invoke dnf for external kernel module in Yocto kirkstone posted by @JohnKlug for the following reasons: Reason: Something else Details: https://museusvalenciapre.grupotecopy.es/en/node/3710"> http://surfing.4fan.cz/node/137"> https://for-um.auc.org.ua/faq/30092025-1946"> https://localautosforsale.com/local-autos/ct/85/kia/1fas-410/1994/8690"> https://www.onlyhomebuyers.com/for-sale-by-owner-homes/vt/24"> https://www.old.ts3bots.de/node/1021"> https://www.trustcirclenetworks.org/issues/2219"> https://enki.ua/applications/16927"> https://www.danduo168.com/en/artworks/693/pharmacy-online-3"> https://carros-usados.us/pharmacy-online-12"> http://ru.ph-ed-plus.nspu.ru/article/17946"> https://kmet.ru/reviews"> https://stage.cc.radiant.digital/node/3051"> http://03otvet.ru/voprosy/oftalmologiya/pharmacy-online"> https://www.globalrealtor.co.in/node/4223"> https://www.globalrealtor.co.in/node/4223"> https://www.nadietah.ru/grouppage/136697-babbleprofitable/468798-pharmacy-online"> https://www.onlyhomebuyers.com/for-sale-by-owner-homes/vt/24"> https://for-um.auc.org.ua/faq/30092025-1946"> https://www.e123.hk/zh-hant/e-center/group/topic/933295"> https://backend.dawahnigeria.com/audit/304770"> https://www.onlyhomebuyers.com/for-sale-by-owner-homes/vt/24"> https://dev.worldwar1luton.com/forum-topic/pharmacy-online-4"> https://www.heilpraktikerausbildung24.de/node/124357"> http://www.go4go.net/go/node/155365"> https://museusvalenciapre.grupotecopy.es/en/node/3710"> https://theanubianwar.com/node/6395"> http://www.le-cercle-des-sourires.fr/session/3331"> https://www.inserthere.me/sitereview/pharmacy-online-5"> https://eventandjudge.com/node/24448"> https://theanubianwar.com/node/6395"> https://hunam.mx/no-12524-traduccion-lenguas-originarias"> https://openreviewhub.org/review/review-8407"> http://xn--37-6kci4a9aahjr0a.xn--p1ai/pharmacy-online-ivanovo-12"> http://old-namur.jeunescathos.org/fr/content/pharmacy-online-2"> https://new.roger24.de/pharmacy-online-7"> https://backend.dawahnigeria.com/audit/304770"> https://for-um.auc.org.ua/faq/30092025-1946"> https://cadel.ru/forum/pharmacy-online-6"> http://pi5ny.com/node/4956"> Post link: https://community.nxp.com/t5/i-MX-Processors/Could-not-invoke-dnf-for-external-kernel-module-in-Yocto/m-p/1627964#M203740 Post author: @JohnKlug | Email Author Reported by: svyruh | Email Reporter The reported post has 2 replies.
查看全文
Question about IMCR configuration by RTD/MCAL and ICU notification Hello Team May I ask about  question about S32K3 RTD MCAL like below? I’m implementation about below function using MCAL based on Ip demo. I found the one point that “IMCR81” is needed to configure “0b0110” like below. EMIOS1_CH1 <-> TRGMUX  How to configure about it by RTD? or Does it need by manual code? Thank you.  RTD Source: Direct Customer Source: NXP Internal Re: Question about IMCR configuration by RTD/MCAL and ICU notification Hi @Luke_Chun , I don't think that RTD driver support this in configuration, because Port driver will support pads that can connect to the external. However, if you just want to change SSS of IMCR81, I think you can try this function in Port driver: Best regards, Nhi Re: Question about IMCR configuration by RTD/MCAL and ICU notification Hello @Nhi_Nguyen  I mean below information.  I did not use the pin with emios, I use only internal signal for TRGMUX and EMIOS.  May I ask about the checking one more time? Thank you.  Re: Question about IMCR configuration by RTD/MCAL and ICU notification Hi @Luke_Chun , IMCR81 is PTA11. To configure PTA11 to EMIOS1 channel 1, SSS have to configure to 11. If SSS is 110 as your expectation, it should be LPSPI1_PCS0. As you can see below: Best regards, Nhi Re: Question about IMCR configuration by RTD/MCAL and ICU notification Hi @Nhi_Nguyen  May I ask one question about the function? When the base is set to NULL_PTR, the pin settings have no effect. Is this correct?   Thank you.    Re: Question about IMCR configuration by RTD/MCAL and ICU notification Hi @Luke_Chun , Normally, you have to configure MSCR register that corresponding to IMCR register for input. For example: For example, setting PTA1 for EMIOS0 channel 9 is input, includes 2 steps:  register MSCR1 set input or output direction and register IMCR57 set SSS. If base = NULL_PTR in the function Siul2_Port_Ip_SetInputBuffer(), step to set input or output in MSCR is ignore.  Best regards, Nhi
查看全文
[RTD] FlexIO I2C、DMA最適化でチャネルトラブルなし こんにちは@DanNguyenDuy Mobis は、DMA 最適化を有効にしようとしたときに、以下のように FlexIO I2C のチャネル トラブルに遭遇しました。 DevAssert(Master != NULL_PTR) でスタックしていましたが、私のレビューではチャネル インデックスに問題はないようです。 0 : LPI2C 1 : LPI2C 2 : FlexIO_0_1 : FlexIO I2C #0 / DMA 最適化 / DMA タイマー 2 3 : FlexIO_4_5 : FlexIO I2C #1 / DMA 最適化 / DMA タイマー 6 したがって、FlexIO I2c チャネル = 1 (I2c チャネル = 3) は適切ですが、実際にはチャネルは表示されません。 以下はDMA最適化されたFlexIO I2CのMobisの設定です。 なぜマスターがNULL_PTRになるのでしょうか?デバッグ方法を教えてください。 DMA 最適化を有効にすると何か問題がありますか?Scatter Gatherは次のRTD_I2C_UM.pdfに割り当てられました。 DMA 最適化設定に問題があり、STOP/NACK が適切に生成されない場合、症状が発生するCANですか?FlexIO I2C DMA の最適化例を教えていただけますか? RTD Re: [RTD] FlexIO I2C no channel trouble under DMA optimize こんにちは@alexyang 返事が遅くなってごめんなさい。I2C プラグインに含まれている RTD_I2C_UM.pdf には、FlexIO DMA 最適化を構成する方法を説明するセクションがあります。 この機能を設定するには、このセクションに従ってください。 Re: [RTD] FlexIO I2C no channel trouble under DMA optimize こんにちは@cuongnguyenphu 添付は、FlexIO I2C DMA 最適化の検証です。 これはあなたが言及した I2C_UM に基づいており、役に立ちます。 ありがとう。 BR、 アレックス・ヤン
查看全文
S32K5 RTD 0.8.0 SPI 半双工模式不起作用 大家好 客户舍弗勒使用 S32K5 RTD 0.8.0 CD1/CD3 实现 SPI 半双工模式。我们还帮助他们完成项目版本,但发现SPI半双工似乎不起作用。 我们使用旧的 K3 RTD 示例来帮助我们调试 K5。K3 RTD 6.0 中的 K3 半双工 SPI 示例运行良好。我们发现在 K3 中完成 SPI 初始化后,CS 和 SOUT 引脚均为高电平。 数据可以在 K3 中成功传输。 但在 K5 中,CS、SOUT 引脚在 SPI 初始化后都是低电平,这是不可能的,也不会导致半双工故障。我们检查了端口配置和端口初始化是否正常,K5 中的 SPI 寄存器与 K3 相同。 请帮助检查当前 K5 RTD 驱动器中的半双工 SPI 是否完全正常工作? BR 理查德 优先级:高 RTD Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 嗨 @RichardLi 你 能试试今天(2025 年 12 月 8 日)发布的最新 RTD 版本 0.8.0 吗 由于 CD01 和 CD03 版本的开发团队没有更新 RTD_SPI_UM.pdf,因此我无法确认它是否支持半双工。 在最新版本中,我看到他们提供的示例支持半双工模式,而 UM 文档没有提及半双工模式的限制。 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@RichardLi 让我检查一下你的项目。 同时,您能否查看RTD提供的示例,他们在版本时确认该示例已通过验证。我们可以从软件或硬件方面缩小问题的范围 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@congnguyenphu 感谢您的支持!我查看了 RTD 示例,但没有找到半双工演示。所附项目根据 RTD 示例修改为半双工模式。 如果我能提供更多信息帮助我们解决问题,请告诉我。 BR 理查德 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@congnguyenphu 我试用了 RTD 0.8.0,问题依然存在。SOUT、CS 引脚始终为低电平。我已经上传了项目,您能否帮忙检查一下 RTD 是否支持这种 SPI 半双工模式? BR 理查德 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@congnguyenphu 你那边有什么新情况吗?谢谢! 此致, 理查德 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 经@RichardLi确认 此问题的根本原因是引脚被其他功能复用,因此无法进行 SPI 传输。 在更改为其他 SPI 通道后,SPI 正常工作。 此问题单可以关闭。
查看全文
[S32K311][MultiPartition]:在 S32K311 上设置多分区时 SPI 初始化失败 你好,团队、 李尔的问题如下 ------------------------------------------------------------------------------------- 我们正在单核 ECU (S32K311) 上实施多分区,在 SPI 驱动程序初始化过程中遇到了一个问题。 观察结果: SPI 驱动程序调用 OsIf_timer.c 中的 OsIf_GetPartitionID(),以获取当前分区 ID 并将其用作 SpiID。但是,该 ID 与 SpiCorePartitionUse 中的值不匹配,尽管两者都是为同一个 ECUC 分区配置的。由于这种不匹配,驱动程序会触发信号 DET 错误,无法初始化外围设备。 调试时发现的问题: 函数 OsIf_apxMultiPartitionPredefinedConfig 返回一个 SPI 驱动程序不期望的值。这似乎是造成不匹配的原因。 初步分析表明,该问题可能与 Vector DaVinci/Tresos 工具的配置生成有关。 影响 SPI 在多分区模式下无法完成初始化,导致通信功能受阻。 ------------------------------------------------------------------------------------- BR Stefano RTD Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 你好@StefanoGattazzo、 因为他们提到了OsIf_apxMultiPartitionPredefinedConfig,所以我认为他们使用的是 ASR OS。 那么,在这种情况下,函数 GetApplicationID() 返回的是什么值? 请将它们的配置发送给我,包括EcuC、Os、Spi、BaseNXP。 生成以下结构的输出 他们使用的是什么软件包? 顺祝商祺! Nhi Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 你好@StefanoGattazzo、 请帮助我读取 SPI_Init() 函数中的以下参数: - SpiId? - 他们向函数 Spi_Init() 传递了什么配置? 像这样: 顺祝商祺! Nhi Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 您好 Nhi_Nguyen, 请告诉我附件是否足够。 BR Stefano Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 您好 Nhi_Nguyen, 李尔回答道: Spi_Init(&Spi_Config_EcucPartition_C0_B); 这是我们在 Init 函数中传递的信息,SPI_ID 从分区 ID api 中读取,但没有正确链接到操作系统应用程序 ID。 BR Stefano Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 你好@StefanoGattazzo、 这是他们申请中的操作系统: 他们将Spi_Config_EcucPartition_C0_B传递给了Spi_Init(),因此 SPI_ID 必须是下面的值: 在这种情况下,u32AppId 必须为 1 才不会出现 Det 错误。但 OS_GetApplicationID() 函数属于 RTOS 而非 RTD,因此请标记 RTOS,以便有人能帮助获取该函数。 顺祝商祺! Nhi Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 您好 Nhi_Nguyen, 下面是李尔的答复: 在我们的案例中,SPI ID 和操作系统应用程序不匹配。我们认为,就 ASIL 而言,它应该返回 1,但它却返回 0,导致配置不匹配。请看下面的快照。 如果你愿意,我们可以开个短会,我可以向你详细介绍。 BR Stefano Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 你好@StefanoGattazzo、 我不知道 RTOS 是如何工作的,也不知道在 RTOS 中如何从函数 GetCurrentApplicationID() 返回值。但如果想保持 u32AppID = 0 为当前值,避免出现 Det 错误,则可以按下面的方法操作: 然后,生成的文件是 这意味着,如果 u32AppId = 0,SpiID = 0; u32AppId = 1,SpiID = 1; 在 SPI 中,生成的文件是 这意味着 Spi_Config_EcucPartition_C0_QM->u32SpiCorePartitionUse = 1; Spi_Config_EcucPartition_C0_B->u32SpiCorePartitionUse = 0; 在另一种情况下,他们想将 u32AppID 更改为其他值,那么@StefanoGattazzo请添加 RTOS 标记并移除 RTD 标记,以便 RTOS 的人员可以帮助您。 顺祝商祺! Nhi Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 你好@StefanoGattazzo、 抱歉,我对此一无所知。 顺祝商祺! Nhi Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 HI Nhi_Nguyen, 我能问谁? BR Stefano Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 你好@StefanoGattazzo、 请删除 RTD,我看到您添加了 RTOS 标签,我们团队会有人回答您的问题。 顺祝商祺! Nhi Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 您好 Nhi_Nguyen, 如果您认识某个人,我可以直接询问--现在情况紧急。 BR Stefano Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 你好,团队、 李尔正在写作: 不,我们使用的不是恩智浦操作系统,而是矢量操作系统。OSIF 参考来自基础元器件。 我们目前正在开发一个 POC,其中 SPI 驱动程序被分区,这样 LPSPI2 是专用的,用于质量管理应用程序,而其余的 LPSPI 模块则用于 ASIL B 应用程序。 根据 RTD 用户手册,这要求每个分区分别调用两次 Spi_Init()。因此,我们首先从 ASIL B Os Application 调用 Spi_Init()函数,然后再从 QM Os Application 调用 Spi_Init()函数,并为每个函数传递正确的配置指针。 我们看到,在 Spi_Init()函数中调用了 Spi_GetID(),然后又调用了 GetCurrentApplicationID()(如下截图所示) 下面是 Os 生成的枚举。ASIL B Os 应用程序调用 GetCurrentApplicationID() 时,返回 0。 QM Os 应用程序调用 GetCurrentApplicationID() 时,返回 1。 在 OsIf_GetPartitionID 中,Os 返回的值用于获取在数组 OsIf_apxMultiPartitionPredefinedConfig 中配置的分区编号。 OsIf_apxMultiPartitionPredefinedConfig 中的值如下 当 QM 应用程序调用 Spi_Init()时,Spi_GetID() 返回的值为 1(GetCurrentApplicationID() 返回 1,OsIf_apxMultiPartitionPredefinedConfig 的索引 1 也是 1)。 但生成的 SPI 配置不符合预期值,Det 会收到错误报告。 是什么影响了 MCAL 在 Spi_Config 和 OsIf_apxMultiPartitionPredefinedConfig 中生成的值? BR Stefano Re: [S32K311][MultiPartition] : SPI initialization fails in MultiPartition setup on S32K311 你好@StefanoGattazzo、 以下是我从您所附项目中获得的配置 Spi、Ecu、Os。 EcuC 用于定义分区 ID,例如在他们的配置中,QM 是 0 分区,C0_B 是 1 分区,System 是 2 分区。 然后,Os 选择从 EcuC 获取分区 ID 的分区。例如 SPI:C0_B 为分区 1,C0_M 为分区 0。 操作系统:结构 OsIf_apxMultiPartitionPredefinedConfig 也指 EcuC 中的分区 ID。例如,在他们的配置中: 应用程序 0 - 系统 - 分区 2; 应用 1 - C0_B - 分区 1; 应用 2 - C0_M - 分区 0; 因此,如果要将 C0_B 传递给 Spi_Init(),也就是将分区 1 传递给 Spi_Init(),那么 OsIf_apxMultiPartitionPredefinedConfig[x] = 1; 或者 x = 1; x = GetCurrentApplicationID(); 所以,有了他们在最新回复中展示的照片: 在 Spi 中,C0_B 是分区 1; C0_M 是分区 2; 这意味着,在 EcuC 中,索引 0 是系统分区;索引 1 是 C0_B 分区;索引 2 是 C0_M 分区。 总之,根据 Os、Spi、EcuC 的上述定义,他们可以调整分区配置以避免 Det 错误。 顺祝商祺! Nhi
查看全文
在 LCDIFv3 中支持 IMX8MP 命令模式 您好, IMX8mm/mn 中的 LCDIF 接口支持自刷新感知功能,适用于具有内部内存帧缓冲器的显示器。但用于 IMX8MP 的 LCDIFv3 似乎不是这样。我的目标是使用命令模式降低面板的刷新率,该面板是 Startek KD055FHOIN031,配有 CH13721C 显示控制器,其中包括一个内部帧缓冲器。 IMX8MP 的参考手册中描述了如何将 MIPI DSC 驱动程序配置为使用命令模式,但我找不到实现该模式的 Linux 驱动程序。 Re: IMX8MP Command mode support in LCDIFv3 你好 IMX8MP 中的 LCDIFv3 与 IMX8MM/MN 中提供的 self_refresh_aware 功能不同。使用模式工作降低带有 CH13721C 控制器(具有内部帧缓冲器)的 Startek KD055FHOIN031 显示器的刷新率的目标在技术上是可行的,但需要自定义实现。 虽然 IMX8MP 参考手册描述了如何为模式工作配置 MIPI DSC 驱动程序,但没有 Linux 驱动程序开箱即用地实现了此功能。您需要根据参考手册指南开发自定义实现。 对于带有内部帧缓冲区的面板,典型的方法是: 1.创建扩展现有 MIPI DSI 框架 的自定义面板驱动程序 2.实现特定于 CH13721C 控制器的模式工作操作 3.通过模式工作接口添加刷新率控制 此实现需要修改显示驱动程序,以利用 IMX8MP 参考手册中描述的模式工作功能并与显示控制器的内部帧缓冲区功能正确通信。 如果您需要具体的实施帮助,恩智浦专业服务可以为这项定制开发工作提供更详细的支持。 此致 Re: IMX8MP Command mode support in LCDIFv3 好的,但如何设置 LCDIFv3 通过 S-i80 接口推送像素数据?我在 imx8mp 的参考手册中找不到。
查看全文
安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 你好,恩智浦: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗, 可以幫忙看看log 是啥麼問題?感謝! 错误: ==== 许可证列表结束。==== ==== 32-bit license service installation log start: ==== Returned: 1 Console: C:\Users\ericclsung\AppData\Local\Temp\I1764729332\Windows>cd"C:\Users\ericclsung\AppData\Local\Temp\036160.tmp\cll\i86" C:\Users\ericclsung\AppData\Local\Temp\036160.tmp\cll\i86>cllSvrUtility.exe -installService LAXCompiler -installService LAXCompiler -installService(LAXCompiler) was successful 错误:系统找不到指定的路徑。 ==== 32 位许可证服务安装日志结束。==== XMLScriptWriter:没有跳过任何安装对象 8. final log file name=C:\NXP\S32DS.3.4\_S32Design Studio for S32 Platform 3.4_installation\Logs\S32_Design_Studio_for_S32_Platform_3.4_Install_12_03_2025_10_38_16.log Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 你好、 能否提供您的恩智浦 ID?我试过您的电子邮件地址,但系统中没有这个地址。 Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 您好 NXP ,能否检查一下您的系统中是否有这封电子邮件 ID:[email protected]? Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 你好、 对不起,[email protected]也不是活动或非活动账户 。 Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 你好,恩智浦 您能再次检查我的 NXP ID 吗?我已经完成了我的个人资料。 Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 嗨,埃里克、 我检查了两个电子邮件地址,但系统中仍然没有该账户。您有激活码吗? Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 您好,恩智浦, 您指的是 S32 Design Studio v.3.4 版激活码吗?还是其他激活码? Re: 安裝S32DS.3.4_b201217_win32.x86_64.exe 失敗 你好、 抱歉耽搁了。是的,S32DS v3.4 激活码。
查看全文
S32K388 using Trace32 debug Dear sir,  I want to use Trace32 to debug the S32K388. I followed the link below to install the Trace32 plug-in: https://community.nxp.com/t5/S32-Design-Studio-Knowledge-Base/HOWTO-Install-Lauterbach-TRACE32-debugger-plug-in-into-S32/ta-p/1112237 After that, I created new projects using the Trace32 debug configuration—both single-core and multi-core projects. However, when I try to debug with Trace32, I always get error messages. Also, when debugging multiple cores, I encounter an issue where the M7_1_0.elf and M7_2_0.elf cannot be programmed. Could you please help test this? Thanks. BR, Sean Wu Re: S32K388 using Trace32 debug Hello, I am not sure how it works dirrectly from S32DS as I was not able to get it working. But I never used S32DS to start Trace32 powerview, Simply start the powerview from T32 folder and then execute programming script from menu. Here you will find programming script. Just execute it in Powerview and program the device. I will check meantime if I can get it up and running trough S32DS. Best regards, Peter Re: S32K388 using Trace32 debug Hi petervlna, Could you please share the s32k38x.cmm to and the s32k38x.bin(maybe this name in your folder) to me?  I don't have this file. Thanks. BR, Sean Wu Re: S32K388 using Trace32 debug Hello, I have send them to you via private message. Best regards, Peter Re: S32K388 using Trace32 debug Dear Petevlna, Thanks for your help. BR, Sean Wu Re: S32K388 using Trace32 debug Dear petervlna, I use your s32k38x.cmm, and it works well. Thanks for your help. BR, Sean Wu
查看全文
mxc_isi.0とneoisp-input0間のリンクを有効にする方法 RAWカメラ(OS08A20)で撮影した画像をHDMI出力したい。UG10215 を読むと、RAW カメラからの画像は mxc_isi.0 を通過して NEO-ISP に入力され、そこで RGB/YUV に変換CANことがわかります。ただし、mxc_isi.0 と neoisp-input0 間のリンクはデフォルトで無効になっているため、ユーザーが手動で有効にする必要があります。 mxc_isi.0 と neoisp-input0 間のリンクを有効にする方法を教えてください。 Re: How to enable the link between mxc_isi.0 and neoisp-input0 こんにちは、 OS08A20 RAWカメラは、ISIインターフェース(mxc_isi.0)を介してi.MX8MPプロセッサに接続できます。しかし、UG10215 で指摘されているように、mxc_isi.0 と neoisp-input0 間のリンクはデフォルトで無効になっており、手動で有効にする必要があります。 このリンクを有効にするには、デバイス ツリー ソース (DTS) ファイルを変更して、これらのコンポーネント間の接続を適切に構成する必要があります。このプロセスには以下が含まれます。 1. Linux BSPソースコードからボードのDTSファイルを見つけます 2. ISIノードとNEO-ISPノード間の接続を追加または変更する 3. データフローに適したポート構成を確認する 参考までに、ISP 構成を示す Linux BSP の imx8mp-evk-basler.dts や imx8mp-evk-dual-basler.dts などのサンプル デバイス ツリー ファイルを調べることができます。 ISI(Image Sensing インターフェース)はRAWデータをキャプチャできますが、それを単独でRGB/YUVに変換することはできません。そのため、ISP には RAW データを処理して表示可能な形式に変換する機能があるため、NEO-ISP への接続が必要になります。 これらのデバイス ツリーの変更を行った後、デバイス ツリーを再コンパイルし、システムを更新して新しい接続を実装する必要があります。変更されたデバイス ツリーにより、データが mxc_isi.0 から neoisp-input0 に正しく流れるようになり、RAW カメラ データが HDMI に出力される前に ISP によって処理されるようになります。 よろしくお願いします。 Re: How to enable the link between mxc_isi.0 and neoisp-input0 @Bio_TICFSL 申し訳ありませんが、デバイスツリー名を間違えました。正しい名前はimx95-19x19-verdin-os08a20-isp-lt8912.dtbです Re: How to enable the link between mxc_isi.0 and neoisp-input0 @Bio_TICFSL アドバイスありがとうございます。私の環境は次のとおりです: ボード: i.MX95 Verdin 評価キット デバイスツリー: imx95-19x19-verdin-ox03c10-isp-lt8912.dtb ISI と NEO-ISP を接続するためにデバイス ツリーを変更してみましたが、問題は解決されませんでした。 私が行った変更は次のとおりです。 NEO-ISPを指すisi@4ad50000のポート@3にエンドポイントを追加しました ISIを指すisp@4ae00000のポート@0にエンドポイントを追加しました 変更は間違っていますか? よろしくお願いいたします Re: How to enable the link between mxc_isi.0 and neoisp-input0 NXPコミュニティに以下の内容を投稿したいと思います。デバイス ツリーの変更に間違いはありますか?
查看全文
CodeWarrior 8.3 - 支持 DSP56F807PY80E,正确的 .cfg文件和闪存编程器/CCS 问题 留言: 你好 我正在使用 CodeWarrior 8.3(56800E 架构),我需要使用 USB TAP 对 DSP56F807PY80E 进行编程。我有几个问题,希望得到官方的澄清。 创建新目标时,CPU 列表中未显示 DSP56F807。我只看到 DSP5685x 和 M56F8002。我想知道在 CodeWarrior 8.3 中是否有任何支持 DSP56F807 的代码包、更新或附加组件,或者它是否包含在较旧的代码包中。 闪存程序员需要此设备的配置文件,通常称为 56807_flash.cfg。恩智浦是否提供该处理器的官方 cfg 文件?如果是,在哪里可以下载?如果不是,请确认有效配置所需的 HFM 内存范围和参数是否正确? 关于 CCS,我按照 AN4338 中的程序(更换 ccs 文件夹并使用 libusb-win32 驱动程序)让 USB TAP 正常工作。这仍然是 CodeWarrior 8.3 的正确方法吗?Windows 7 或 Windows 10 有更新的 CCS 版本吗?libusb-win32 仍然是受支持的驱动程序吗? 有时 CodeWarrior 会成功擦除闪存,但无法完成编程。将 56800E 闪存编程器与 DSP56F807 一起使用时,是否存在已知的限制?是否有推荐的 JTAG 时钟设置或超时? 最后,CodeWarrior 8.x 中使用 DSP56F807 的最新文档是什么? 谢谢! Re: CodeWarrior 8.3 – Support for DSP56F807PY80E, correct .cfg file, and Flash Programmer/CCS issues 你好@Raffaele_AQS、 谢谢您的帖子。 创建新目标时,CPU 列表中未显示 DSP56F807。我只看到 DSP5685x 和 M56F8002。我想知道在 CodeWarrior 8.3 中是否有任何支持 DSP56F807 的代码包、更新或附加组件,或者它是否包含在较旧的代码包中。 ->> 我认为不需要任何更新,CW8.3下载后即原生支持 DSP56F807。就我而言,通过选择 “文件-> 新建”,然后选择除第一个选项 " DSP56800E Quick Start r2.5 Stateries " 之外的任何项目模板,你可以在可用设备选项中找到列出的 DSP56F807。 闪存程序员需要此设备的配置文件,通常称为 56807_flash.cfg。恩智浦是否提供该处理器的官方 cfg 文件?如果是,在哪里可以下载?如果不是,请确认有效配置所需的 HFM 内存范围和参数是否正确? ->> 我可以在这里找到它,附在后面。 关于 CCS,我按照 AN4338 中的程序(更换 ccs 文件夹并使用 libusb-win32 驱动程序)让 USB TAP 正常工作。这仍然是 CodeWarrior 8.3 的正确方法吗?Windows 7 或 Windows 10 有更新的 CCS 版本吗?libusb-win32 仍然是受支持的驱动程序吗? -> > 要在 win7/10 电脑中使用 CW 8.3,请参阅 Windows 7/10:在 DSC 版 CodeWarrior 上使用 USB TAP。 只需将适用于微控制器的 Eclipse IDE | 恩智浦半导体安装到计算机上,将 ccs 文件夹从 CodeWarrior v11 安装文件夹复制到 CodeWarrior v8.3 安装文件夹,替换原来的 ccs 文件夹。 有时 CodeWarrior 会成功擦除闪存,但无法完成编程。将 56800E 闪存编程器与 DSP56F807 一起使用时,是否存在已知的限制?是否有推荐的 JTAG 时钟设置或超时? ->> 闪存编程名为"56800E Flash programmer" ,但从工具名称可以看出,它只支持以 DSP56800E 为内核的 DSC 处理器,例如 MC56F83xx,DSP56F807 使用的是 DSP56800 内核,而不是 DSP56800E,因此我认为不能使用"56800E Flash programmer" 工具对 DSP56F807 进行编程。 您可以考虑使用 flash-over-jtag.exe 工具,它支持 S_record 文件下载。但是,这些工具必须在DOS操作系统和并行命令变流器设备(Wiggler)中运行,它不支持usbtap设备。 你可以使用 USBTAP 设备下载代码,只能使用 CodeWarrior 来下载适用于 DSP56800E ver8.3 工具的代码,但它不支持 S_Record 文件下载。 Flash-over-jtag 工具可在此处找到: [CodeWarrior Installation Directory]\ProcessorExpert\Tools\applications\flash_over_jtag 最后,CodeWarrior 8.x 中使用 DSP56F807 的最新文档是什么? -> > DSP56F807 是传统设备,不建议用于新设计。我们没有为其提供最新的文档,但我会尽我所能寻找任何可用的资源。 制作 Flash 程序 使用适用于 DSC 的 CodeWarrior 8.3 版对飞思卡尔 DSC 进行生产闪存编程 您还可以尝试使用串行引导加载程序更新固件。 56F8xx 串行引导加载程序 希望对你有所帮助。 如果您有更多问题,请告诉我。 祝你愉快 BR 西莱斯特 ---------------------------------------------------------------------------------------------------------------------- 注:如果本帖回答了您的问题,请点击"ACCEPT AS SOLUTION" 按钮。Thank you! ----------------------------------------------------------------------------------------------------------------------
查看全文
KW47— the value of DCDC capacitor (Cout) is different between SCH and datasheet. KW47— Datasheet suggest  the value of DCDC capacitor (Cout) is 22uf  and must not exceed the min(6uf)/max (30uf)value.But we found NXP‘s SCH like SPF-91101_C use 1μf instead. KW45‘s SCH use the same value 22uf with datasheet. So Which value should we use ? Re: KW47— the value of DCDC capacitor (Cout) is different between SCH and datasheet. Hello,  Please help us check the following  The best way to build a PCB first time right with KW47 (Automotive) or MCX W72 (IoT/Industrial) Any question , let us know Re: KW47— the value of DCDC capacitor (Cout) is different between SCH and datasheet. Hi, I don't understand what your mean. My question is about the output capacitor of the DCDC does not match between the schematic and the datasheet,not about how to build a pcb. Re: KW47— the value of DCDC capacitor (Cout) is different between SCH and datasheet. Hello @nicosuki , hope you are doing well. I apologize for the inconveniences, but as this device has not been officially launched, most of the information about this product is still under NDA. The information available is the one mentioned previously on: The best way to build a PCB first time right with KW47 (Automotive) or MCX W72 (IoT/Industrial) Could you please contact the person who helped you get the documentation in the first place? Best regards, Ana Sofia.
查看全文
实时时钟 PCF85043A 运行速度过快 +55ppm 你好、 我们发现,我们在几种产品中使用的 PCF85043A 实时时钟的 +55 ppm 运行速度过快。 对于老产品,我们在生产过程中会进行频率校准,因此偏移会被抵消。但在较新的产品中,我们放弃了校准,现在发现 RTC 总是运行得太快。 我们使用的晶体是 ECS-.327-7-34B-C-TR、指定为 7pF 负载。 因此,我们将 PCF85063 的负载上限寄存器设置为 7pF。 我们在现场应用以及实验室测量中使用三种不同精度的 TCXO 作为参考,观察了由此产生的时间偏移。 我们还检查了演示板 OM11059A,它给出了相同的结果! 将负载上限寄存器设置为 12.5pF 可在一定程度上提高精度,但仍然不够精确,而且不令人满意,因为这种现象肯定有更深层次的原因。 PCF85063 有 55ppm 的频率偏移,这是已知的问题吗? 如果是,恩智浦的 "建议解决方案 "是什么? 感谢您的提示。 Re: Real-time clock PCF85043A is running too fast by +55ppm 好的,谢谢你的发言。 不过,我们有几款 10'000 产品,它们显示出明显的 +55ppm 平均频率偏移。很少达到正确的频率,甚至出现负偏移。 (当然,我知道核实频率是我们自己的责任,是我们的错,我们直到现在才注意到)。 不过...... 根据 UM10301 用户手册中的图表(见附图),这意味着几乎所有实时时钟芯片的负载上限都在约 4.5pF 的最小范围内,但很少或几乎从未达到 7pF 或更高。 我想,在>数年的 30,000 件产品中,这显然不是由于某批晶圆电容过低造成的。 因此,这与我们从数据表中看到的结果大相径庭。 好吧,我们可以变通,没问题。我很高兴知道,我没有测量错,这实际上是一种非理想行为。 对于未来的设计:我想,额外的外部电容(具有更精确的值)可以更准确地确定频率。 Re: Real-time clock PCF85043A is running too fast by +55ppm 嗨,比特、 还是说,这实际上是芯片的一种非理想行为,可以通过偏移寄存器来解决? 最后一句是正确的。请参阅PCF85063A 数据表中的表 40。内部晶体电容具有容差。7pF 电容可能从 4.2pF 到 9.8pF 不等。因此,晶体频率也可能根据内部电容的变化而变化。 是的,应该用偏移寄存器来解决这个问题。 致以最崇高的敬意 约瑟夫 Re: Real-time clock PCF85043A is running too fast by +55ppm 你好,Jozef, 感谢您的答复。 我们已经知道偏移寄存器,我们用它来补偿偏移和晶体的温度曲线。 当然,这也算是解决了问题。然而,这只是一种变通办法,并不能从根本上解决问题。 问题是: 使用 +/-10ppm 晶体,为什么在室温下会产生 +55ppm 偏移? 在室温下,不需要对软件进行微调,只需要对硬件的负载能力进行微调。根据数据手册,负载上限由实时时钟芯片提供,无需外部负载上限。那么,为什么会有如此大的频率偏差(使用几种晶体、多个参考和包括演示板在内的几个 PCB)? 我错过了什么吗? 还是说,这实际上是芯片的一种非理想行为,可以通过偏移寄存器来解决? Re: Real-time clock PCF85043A is running too fast by +55ppm 嗨,比特、 PCF85063A 的精度可在偏移寄存器中进行微调。请参阅PCF85063A 数据手册中的第 7.2.3 节。 校准工作流程请参见图 11 和图 12。 致以最崇高的敬意 约瑟夫
查看全文
在 Android 11 操作系统上的自定义 imx8mp 中出现 GPU STATE DUMP 错误 您好, 我在自定义 i.MX8MP 板上构建并刷新了安卓 11 操作系统。启动 Android 11 后,我在串行控制台中遇到了与 GPU 驱动程序相关的问题。我按照恩智浦论坛上建议的解决方案进行了操作: https://community.nxp.com/t5/i-MX-Processors/Custom-IMX8MP-Board-GPU-STATE-DUMP-DMA-Appears-to-be-Stuck/td-p/1746834 由于我们使用的是 6GB DDR,我在imx8mp.dtsi文件中创建了一个新节点,为 GPU 分配 25% 内存。不过,这种修改在安卓操作系统中似乎没有任何效果。我还在BoardConfig.mk文件中找到了CMA变量,并将其增加到 RAM 的 25% ,但问题依然存在。 为了供你参考,我附上了我所做的修改和日志文件。 imx8mp.dtsi (注:我在 dtsi 文件中找不到 linux,cma 节点,因此手动添加了该节点) linux,cma { compatible ="shared-dma-pool" ; 可重复使用; size =<0 0x3c000000> ; alloc-ranges =<0 0x40000000 0 0xC0000000> ; linux,cma-default; }; Boardconfig.mk 文件 CMASIZE=800M 图形与显示 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: GPU STATE DUMP error occurs in custom imx8mp on Android 11 OS 你好 这似乎与 GPU 内存分配不足有关。您遇到的 GPU 错误通常是由于系统在内存压力下为 GPU 分配的内存不足造成的。对于配备 6GB DDR 的 i.MX8MP,建议至少将总内存的 25% 分配给 CMA(连续内存分配器)。 你在 imx8mp.dtsi 中创建节点以为 GPU 分配 25% 内存的方法已走上正轨,但对于安卓 11,你还需要确保这一变化正确反映在安卓版本配置中。 请尝试以下步骤解决问题: 1.在 BoardConfig.mk、使用以下命令验证 CMA 设置: ``` BOARD_KERNEL_CMDLINE += cma= 25%``` 2. 还要确保设备树叠加层已正确构建并包含在您的 Android 映像中。 3.特别是 Android,这些设置需要在启动期间正确传播到内核命令行。 4。使用以下命令检查系统的内存分配: ```cat /proc/meminfo c at /proc/cm dline ``` Android 11 的内存要求比以前的版本高得多,而且 GPU 操作特别占用内存。在 i.MX8MP 平台上,Android 11 通常要求至少分配 25% 的 CMA,以便在 GPU 内存分配失败的情况下正常运行。 如果做出这些更改后问题仍然存在,请考虑检查 GPU 工作负载,以优化关键操作期间的内存使用。 此致
查看全文
An Overview of the I²C Bus (Japanese blog) 0. Table of Contents table of contents What is I²C? 1.1 History and specifications 1.2 Controller/Target Physical/Electrical Characteristics 2.1 Number of signal lines: SDA, SCL 2.2 Open-drain output (wired-AND) 2.3 Clock Frequency 2.4 Connection Topology protocol 3.1 Required and optional features 3.2 Data Transfer Unit 3.3 Bus state: Start and end of transfer 3.4 Transaction Structure 3.5 Write and Read Transactions Reference materials 1. What is I²C? 1.1 History and specifications The I²C (I-squared-C) bus is a serial bus specification developed and released in 1982 by Philips (now NXP Semiconductors) of the Netherlands. I²C is an abbreviation of " Inter Integrated Circuit " which is written as "IIC" with the overlapping "I" squared. At the time this bus was developed, television and radio circuits were still being adjusted and set using variable resistors, variable capacitors and screws on the cores of coils. I²C began to be used as a bus to replace these components and to allow controllers to be built into devices and factory computers in order to control and automate each function. For this purpose, the original clock frequency was set to 100 kHz and large amounts of data transfer was not anticipated. When I joined Philips in the late '80s, the lab was equipped with CCTV (Computer Controlled TV) and other equipment to demonstrate this concept. The current I²C specification is managed by NXP Semiconductors , a company formerly formed by Philips' semiconductor division. This specification is published as the " I²C-bus specification and user manual " ( document number UM10204 ) , with the latest version being Rev.7. The Japanese version , Rev.5, has been published as the " I²C bus specification and user manual ." The differences between Rev.5 and Rev.7 are changes to Figures 41 and 42, an addition to Table 5, the change of the terms master/slave to controller/target, as in I3C, and the addition of "I3C Overview" in Chapter 9 (see Table 1: Revision History in Rev.1 for details). As these differences do not affect the main parts of the I²C specification, the Japanese version can be used as a reference. 1.2 Controller/Target I²C communication always takes place in a master-slave relationship. The terms used to refer to these roles are controller and target , respectively [Figure 1]. Figure 1: Controller and Target The specification allows multiple controllers to exist on one I²C bus. Older specifications used the terms "master/slave", but this has now been changed to "controller/target". 2. Physical/Electrical Characteristics 2.1 Number of signal lines: SDA, SCL I²C is a two-wire serial bus, one for the clock and one for the data . Since data is exchanged synchronously with the clock, it is classified as a "synchronous serial interface." Data communication can be done in both sending and receiving directions, but because it is done over a single data line, these cannot be done simultaneously and must be switched between. For this reason, it is a communication method called half-duplex , rather than full-duplex, which allows simultaneous sending and receiving. The clock and data signal lines are called SCL (serial clock line) and SDA (serial data line) , respectively. Data is transmitted or received one bit at a time in synchronization with the clock cycle. 2.2 Open-drain output (wired-AND) One of the distinctive features of I²C is that signals are generated using a method called "open drain." In many communications, a method called push-pull is used to output digital signals. Push-pull is a method in which a specified voltage is output (pushed) on the signal line when a HIGH signal is output, and a LOW signal is pulled to GND (pulled) [Figure 2-a]. Open drain is similar to "pull" in that it outputs LOW, but when it outputs HIGH it goes into a high impedance state. In this state, a pull-up resistor connected to the signal line ensures that the specified voltage is obtained [Figure 2-b]. Figure 2-a: Push-pull output Figure 2-b: Open-drain output So why is this output method used? This is because I²C allows multiple devices to output to the same signal line simultaneously. When multiple devices are in an output state, if even one device is outputting LOW, the signal will go LOW. This method of connecting a signal that is HIGH when all devices output HIGH and LOW otherwise is called " wired-AND " [Figure 3]. Figure 3: Wired and connected   I²C has optional features called " clock stretching " and " multi-controller ." These allow multiple devices connected to the same bus to output simultaneously, and manage their status using open-drain connections. The I²C HIGH voltage is not specifically defined in the specifications. The power supply voltage (VDD) to which the pull-up resistor is connected varies depending on the device. When communicating, a voltage that can be used commonly between connected devices must be used. In many cases, voltages such as 5V or 3.3V are used for VDD, but in SoC chips and other devices where voltages are becoming increasingly low, voltages of 1V or less are sometimes used. The signal voltage for I²C input is set to LOW at 0.3VDD or less , and HIGH at 0.7VDD or more , so when connecting I²C buses with different voltages, a " signal voltage converter ( VLT : voltage level translator)" must be used. To convert this signal voltage, you need to select a device that can be used with I²C, taking into account that it is a bidirectional open-drain signal. With I²C, you must also take into account the analog behavior of signals. This is the time it takes for the signal output to change due to the open drain. The fall time is fast when going from HIGH to LOW, but the rise time when going from LOW to HIGH can be slow depending on the state of the bus. Specifically, the rise time becomes slower as the number of connected devices increases or the length of the signal line becomes longer. This occurs because the capacitance of the signal line increases [Figure 4]. The allowable capacitance is capped by each mode, which dictates the maximum I²C clock speed. Figure 4: Capacitance and signal rise time   2.3 Clock Frequency I²C defines " modes " based on the maximum clock frequency that can be used [Table 1]. The most basic mode is called standard mode ( Sm ) and operates below 100kHz . Next there is the fast mode ( Fm ) with an upper limit of 400kHz. These Sm and Fm modes are supported by most controllers and targets . There is also Fast Mode Plus ( Fm+ ), which can operate at clock speeds of less than 1MHz and is used for applications with high data rates. Furthermore, there is a high-speed mode ( HS-mode or Hs ) with a maximum speed of 3.4MHz . This high-speed mode has a specified protocol for switching to communication at this speed, and a bridge is required to mix communication with other modes. There are not many devices equipped with controllers that support this mode. An ultrafast mode is also specified for special applications. This has a clock upper limit of 5MHz and limits communication direction to one direction from controller to target, making it incompatible with other modes. When "I²C" is used without mentioning the mode, it often refers to the most common standard mode or fast mode, and this blog will be based on these modes. mode Abbreviation Maximum Clock Frequency remarks Standard Mode Sm 100kHz The most popular mode Generally speaking, I²C refers to up to Fm compatible with 400kHz. Fast Mode Fm 400kHz First Mode Plus Fm+ 1MHz Specifications with expanded speed, current draw, and bus capacity Controllers with this capability are installed in many microcontrollers. High Speed Mode Hs 3.4MHz There aren't many adoption cases Compatible with Sm and Fm. Switch to Hs mode by protocol. A bridge is required when mixing Sm and Fm devices on the bus. Ultra Fast Mode UFm 5MHz Write-only acceleration mode Used with dedicated controllers and targets. Not compatible with other I²C modes. Table 1: Frequency and features of each mode   2.4 Connection Topology Any device connected to I²C is connected to two signal lines: SCL and SDA . The connection is called a " multi-drop " connection. Each device is simply connected by "hanging" from two wires [Figure 5]. The number of devices that can be connected is limited by the " bus capacity ." The longer the signal line and the more devices connected, the greater the bus capacity. Communication takes place between a "controller" and a "target". All communication is initiated by the controller. In I²C, each transfer is performed one-to-one between the controller and the target. It is possible to intentionally have multiple targets have the same address, but from the controller's perspective, only "communication to one address" is possible [Figure 6]. The controller specifies the device to communicate with by using a target address and indicates the direction of data transfer. The controller controls all transfers (starting and ending, specifying the communication target and transfer direction, and outputting the clock to SCL). It is also possible to have multiple controllers on one I²C bus. This is possible using an optional I²C function called " multi-controller ." In this configuration, after one controller finishes a transfer, another controller can communicate. A bus arbitration procedure has also been established in case multiple controllers start a transfer at the same time. In a multi-controller configuration, all connected controllers must support this arbitration. However, you will not see many systems with a multi-controller configuration. Many I²C controllers built into microcontrollers and other devices support multi-controller configurations, but most simple systems use a single controller. In this article, we will only consider the single controller case in order to explain the basics of I²C. Figure 5 : Multi-drop connection   Figure 6: Communication to a single target address 3. Protocol 3.1 Required and optional features The protocol determines how data is transferred. The I²C protocol has required and optional functions. The multi-controller mentioned in the previous section is an optional function. As mentioned there, we will not touch on optional functions here, but will only explain the required functions. The required and optional features of I²C are summarized in [Table 2]. Table 2: I²C Functions. Required/Optional (Excerpt from I²C Specification (Japanese version: rev5.0)) I²C communication generally has the following structure: Start of communication Data Transfer End of communication As an application of this, it is also possible to start the next communication without first ending the last communication ( repeat start ). The data transfer section can transfer data from 1 byte to multiple bytes. The first byte immediately after the start of a transfer is always transferred from the controller to the target, and specifies the target address and the direction of the subsequent data transfer (send or receive) . The I²C specification does not impose any particular restrictions on the number of bytes that can be transferred after the second byte [Figure 7]. When switching between sending and receiving data when communicating with the same target, or when communicating with a different target, start communication again and specify the target address and transfer direction again. Figure 7: Basic structure of I²C communication 3.2 Data Transfer Unit The basic unit of communication is 9 bits, with 8 bits of data followed by 1 bit. The data is 8 bits, MSB first. The last bit is an acknowledge bit , which is returned in the opposite direction to the data sent to confirm each communication. In I²C, transfers are always made in units of 9 bits [Figure 8]. Data is sent or received one bit per clock. Data changes in sync with the clock. SDA can only change state (from LOW to HIGH or from HIGH to LOW) when SCL is LOW, and remains LOW or HIGH while SCL is HIGH [Figure 9]. Figure 8: A 1-bit acknowledgement is always returned for every 8-bit data transfer   Figure 9: SDA signal changes while SCL is LOW 3.3 Bus state: Start and end of transfer The start and end of communication are notified by a start condition and a stop condition , respectively, which mark the end of the transfer. As mentioned earlier, "SDA changes are only allowed when SCL is LOW," but this start/stop condition is an exception. When SCL is HIGH, if SDA changes from HIGH to LOW, this is a start condition. Similarly, when SCL is HIGH, if it changes from LOW to HIGH, this is a stop condition [Figure 10]. Figure 10: Start and stop conditions The state in which a transfer is in progress after a start condition is called " busy ," and the state in which no transfer is in progress after a stop condition is called " free ." A start condition is initiated in this free state. The controller outputs the start/stop conditions and SCL. The 9-bit transfer following the start condition is used to specify the target address and transfer direction. The data is then transferred in one or more subsequent 9-bit transfers. In addition to the start condition and stop condition, a " repeated start condition " is defined to separate transfers. A start condition begins with the bus in a free state, but a stop condition must be passed before the bus can be put into a free state. If the controller is performing continuous transfers, it can omit issuing this stop condition. A repeated start condition starts the next transfer without going through a free state [Figure 11]. Figure 11: Repeated Start Condition   A repeated start condition occurs when a start condition is generated without a stop condition in the previous transfer. A repeated start condition is identical to a start condition in terms of functionality. In the following, the start condition will include a repeated start condition unless specifically stated as "repeated start condition." The Repeated Start condition is provided in a multi-controller environment so that one controller can perform multiple transfers in succession while retaining bus ownership. This is because once the bus becomes free, another controller may start a transfer at that timing. By keeping the bus busy without using a Stop condition, the controller can maintain bus ownership. From here on, we will refer to the unit from a (repeat) start condition to a stop condition, or from a (repeat) start condition to the next repeat start condition, as a " transaction " for convenience. 3.4 Transaction Structure A transaction (Figure 12) always begins with a start condition. The data sent from the controller after the start condition specifies the target address and transfer direction. Figure 12: Example of a basic I2C transfer and waveforms (write transaction example)   The target address is 7 bits of information used to specify the device to communicate with. Communication will occur with the device that matches this address (the I²C specification defines "10-bit addressing" as an option, but since 7-bit addressing is used in most cases, we will not mention this). Following the 7-bit address is a bit specifying the transfer direction ( R/W ). If this bit is "0", it is a write transfer from the controller to the target, and if it is "1", it is a read transfer from the target to the controller. The ninth bit after the seventh bit of the target address and one R/W bit is the acknowledge bit . This bit is a LOW signal returned from the target side. If the device specified by the target address output from the controller exists, the target device will output a LOW to SDA as an acknowledge bit. During this time, the controller outputs a HIGH, so if the target does not exist, SDA will remain HIGH. In other words, if the target exists, the acknowledge bit will be LOW, and if it does not exist, it will be HIGH. When this acknowledge bit is LOW, it is called ACK (acknowledge), and when it is HIGH, it is called NACK (not acknowledge). The target address and transfer direction are output, and if an ACK is returned, data transfer will proceed. If the target does not exist and a NACK is returned, the transaction ends here (the controller issues a stop condition or a repeated start condition). If the data transfer direction is write, the next 8 bits are transferred from the controller to the target, followed by a 1-bit acknowledge bit from the target to the controller. If it is a read transfer, the controller keeps SDA in a HIGH state and reads the 8 bits output from the target in synchronization with SCL. This read transfer also always has an acknowledge bit. The acknowledge bit attached to the data in a read transfer is output by the controller. If the read transfer continues, an ACK is returned, and if the transfer is to be aborted, a NACK is returned. ACK/NACK is important for I²C communication. This is because ACK allows communication to be performed while constantly checking the status of the other party. When a NACK occurs, the communication ends. The conditions under which a NACK occurs are as follows, quoted from the I²C specification: The device specified by the target address does not exist on the bus. The target device is currently performing some processing and is not in a state where it can communicate with the controller, so it cannot send or receive data. The target device does not understand the data or commands received during the transfer During a transfer, the target device cannot receive any more data bytes. In a read transfer, when the controller notifies the target device that the transfer is complete 3.5 Write and Read Transactions The data transfer direction is constant within a single transaction. Therefore, if you write something to a target device and then read from it, consecutive transactions will occur. For example, if you specify a register number for a target device and read from it, an example would be to perform a write transfer followed by a read transfer. In this type of transfer, some target devices require a repeated start condition to separate transactions, while others may not behave as expected with a repeated start condition. This depends on the specifications of the target device, so you must be careful. 4. Reference materials I2C Bus Specification and User Manual (Rev5.0 Japanese version) I2C Bus Specification and User Manual (Rev7.0 English version) NXP Community Blog: I²C Hardware Debugging NXP Community Blog: I3C: The Next Serial Bus NXP Community Blog: SPI Bus Overview Interface March 2024 issue (CQ Publishing) : Special feature "Serial communication from scratch [UART/I2C/SPI with Pico]" Transistor Technology Special No.161 "Measure, Measure, Measure Circuit & Technique Collection" Appendix: "Detailed Explanation of 2-wire Serial Interface I²C" - The above magazine article is an excerpt from this article. First appearance: Transistor Technology, October 2014 issue (CQ Publishing), "Basic Knowledge: Detailed Explanation of 2-Wire Serial Interface I²C," pp. 152-176 Interface Magazine, March 2024 issue (CQ Publishing), " Building I²C & SPI from Scratch ②...I²C Communication Standard," pp. 55-61 ← Updated and reorganized version of the above article. For this blog post, I have excerpted, added to, and revised the section explaining the communication specifications. Change history: 2025-02-03: First Edition 2025-02-04: "4. Added the blog post "I²C Hardware Debugging" to the "Reference Materials" section. March 5, 2025: Section 2.2 Open-Drain Output (Wired-and-Embed) corrected the reference figure number. 2025-11-30: Corrected a typographical error. 2026-04-03: Corrected the original entry. ========================= We are currently unable to respond to comments in the "Comment" section of this post. We apologize for the inconvenience, but when making inquiries, please refer to `` Technical Questions to NXP - How to Contact Us( Japanese Blog) ''. (If you are already an NXP distributor or have a relationship with NXP, you may ask the person in charge directly.) The I²C bus is used for communication between microcontrollers/processors and peripheral devices. Although this serial bus is so commonly used, I would like to take this opportunity to summarize its origins. communication standards Interface Japanese blog
查看全文
iMX95 CA 位交换 你好,恩智浦、 LPDDR5 是否允许 CA[6:0] 引脚的位交换? 除了 EVK 的映射之外,还有什么成功的位映射可以用于 iMX95 吗? 谢谢! 西蒙 Re: iMX95 CA bit swapping 你好@simonng、 由于 i.MX95 仍在减产阶段,我们没有硬件设计供应。但根据以前的产品经验, 不支持 CA[6:0] 引脚互换。 希望能对您有所帮助 祝您有美好的一天 顺祝商祺! Rita
查看全文