Multi Source Translation Content

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Multi Source Translation Content

ディスカッション

ソート順:
问题:CONFIG_IMX_RPMSG_TTY 已构建为模块,但在刷写 Android 系统后显示为“未设置”。 您好,NXP团队: 我正在使用i.MX8M Mini LPDDR4 EVK开发Android 16 电路板支持包。,并尝试在 Cortex-A53 和 Cortex-M4 之间启用 RPMsg 通信。 配置 我在内核配置中启用了NXP RPMsg TTY驱动程序: CONFIG_IMX_RPMSG_TTY=m 我还将该模块添加到了SharedBoardConfig.mk 文件中: $(KERNEL_OUT)/drivers/rpmsg/imx_rpmsg_tty.ko 模块构建成功。 生成的内核配置确认该功能已启用: grep CONFIG_IMX_RPMSG_TTY out/target/product/evk_8mm/obj/KERNEL_OBJ/.config 输出: CONFIG_IMX_RPMSG_TTY=m 模块也已成功生成: out/target/product/evk_8mm/vendor_dlkm/lib/modules/imx_rpmsg_tty.ko 并代码包,软件包到 Android 镜像中。 运行时观察 刷写板后,运行中的内核配置不报告 RPMsg 模块配置。 adb shell zcat /proc/config.gz | grep RPMSG 输出: CONFIG_GKI_HIDDEN_RPMSG_CONFIGS=y # CONFIG_RPMSG_WWAN_CTRL is not set # CONFIG_RPMSG_TTY is not set # CONFIG_SND_SOC_FSL_RPMSG is not set CONFIG_RPMSG=y CONFIG_RPMSG_CHAR=y # CONFIG_RPMSG_CTRL is not set # CONFIG_RPMSG_NS is not set # CONFIG_RPMSG_QCOM_GLINK_RPM is not set # CONFIG_RPMSG_VIRTIO is not set 还, adb shell zcat /proc/config.gz | grep IMX_RPMSG 没有返回任何输出。 但是,相应的 RPMsg 模块已成功加载: lsmod | grep -i rpmsg 输出: snd_soc_imx_rpmsg snd_soc_rpmsg_ak4497 imx_audio_rpmsg snd_soc_fsl_rpmsg imx_pcm_rpmsg i2c_rpmsg_imx virtio_rpmsg_bus rpmsg_ns 这表明模块已正确完成版本构建并加载,但/proc/config.gz没有反映它们的配置。 问题 是否预期 /proc/config.gz 在 Android 16 电路板支持包。上只反映基本的 GKI 内核配置,而不反映供应商模块配置? 为什么CONFIG_IMX_RPMSG_TTY=m在/proc/config.gz中仍然看不到,即使imx_rpmsg_tty.ko已构建为版本并打包为代码包,软件包? 运行内核配置是否需要额外配置才能包含供应商模块选项? 这种行为是否与 Android GKI 和vendor_dlkm模块打包有关? 任何解释都将不胜感激。 Android i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: Issue: CONFIG_IMX_RPMSG_TTY is built as a module but appears as "not set" after flashi 你好@vp1 希望你一切都好。 请问您使用的是哪种设备树? 请尝试使用imx8mm-evk-rpmsg.dts文件。 顺祝商祺! 萨拉斯。 Re: Issue: CONFIG_IMX_RPMSG_TTY is built as a module but appears as "not set" after flashi 嗨@Manuel_Salas , 感谢您的反馈, 目前,我的 Android AOSP 构建正在使用设备树 imx8mm-evk.dts。我可以看到 imx8mm-evk-rpmsg.dts 也可用,并且构建成功。 请问如何配置 Android 构建,使其在启动时使用 imx8mm-evk-rpmsg.dts 而不是 imx8mm-evk.dts? Android BSP (电路板支持包)、U-Boot 或 imx-mkimage 中是否有任何特定配置来选择打包和加载哪个设备树? 感谢您的指导。 此致, 维卡斯·帕蒂尔
記事全体を表示
[S32G3]LLCECANのCan_SharedMemoryワード0で異常値が発生しました。 NXPのエキスパートの皆様、こんにちは。 私たちのプロジェクトにおけるLLCE CAN 機能に異常がありました。時折、送信は正常なのにECUから報告された特定のCANメッセージの受信に問題が起きました。デバッグの結果、CAN割り込みは通常通りトリガーできることが判明しましたが、u32Word0の読み取りはCan_SharedMemoryから0x18008から0x1800fに変わり、異常な値でした。計算されたu32MbMessageIdは0でした。これによりメッセージが失われました。 RxMbDescIdxには値があり、変化していました。また、word1は0になることもありましたが、これも変化していました。この状況は断続的に起こり、影響を受けたCANラインもランダムでした。 この状況の分析にご協力ください。デバッグ用のスクリーンショットを以下に添付します。次のデバッグ手順はどのように進めればよいでしょうか?あるいは、どのような解決策がありますか? LLCEのバージョンは1.0.10です。 。 LLCE_Abnormal.png Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、 canhe お問い合わせいただきありがとうございます。 もう少し詳しく教えていただけますか? 1. あなたはどのバージョンのRTDを使用していますか? 2. 自分でボードやソフトウェアを使っていますか? BR ジョーイ Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、 canhe   承知いたしました。ご質問の優先順位を上げさせていただきます! 1. 受け取ったCANフレームは外部デバイスから来たものか、それともCANoeデバイスからのものか教えていただけますか?受信はCANフレームですか、それともCANFDフレームですか? 2. 設定されたボーレートは何ですか?どのポートを使用していますか? 3.フレームは内部コアで処理されますか、それともCAN2CAN経由でルーティングされますか? BR ジョーイ Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. NXPのエキスパートの皆様、こんにちは。 情報同期:異常な状況では、Can_Llce_GetControllerModeを通じてコントローラーの状態を「スタート」と読み取り、Can_43_LLCE_SetControllerModeインターフェースを通じて「停止>開始」の切り替えを実行します。異常なCANは回復可能です。word0の値から判断すると、LLCEの内部DTEカーネルが共有メモリにデータを転送する際にエラーが発生したようです。 現在、異常発生確率は依然として約20 %-30%とかなり高い。当チームは関連する秘密保持契約書に署名済みです。この問題の処理を優先していただけますか? Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、ジョーイ お返事ありがとうございます。この問題は、デバッグコードを追加する前に発生していました。具体的な原因を確認するために、デバッグコードを追加しました。デバッグコードは、特定の状態を読み取るだけです。共有メモリの値が異常なようです。パッチが提供されました。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、 Can_Llce_ProcessRxMbに何らかの変更を加えたようですね。変更前に何か問題はありましたか?修正されたコードを教えてもらえますか? Joey_z_0-1785135823536.png BR ジョーイ Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、ジョーイ 1.バスの乗車率は40%から50%の間で、それほど高いとは言えない。 2. BCAN_RXFIFO_OVERRUNは異常な状況下で発生していますが、正常動作時にもこの通知を確認しています。 3. 現在、LLCEにはルーティング機能は有効になっていません。ホストにデータを転送するだけです。使用されるフレームのほとんどはCAN FDであり、少数のCANフレームも存在します。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、 canhe 情報提供ありがとうございます。 問題に直面したシナリオ 1.In、CANバスのバス負荷はどれくらいでしたか?バスの乗車人数は多すぎますか? 2.フレーム損失が発生した場合、通知にはエラーが表示されますか?エラーメッセージが表示された場合は、私にお知らせください。 Joey_z_0-1785211817403.png 3. エラーはいつ発生しますか?ルーティング処理中ですか、それともフレームがホストに送信されるときですか?使われているのはCANフレームですか、それともCAN FDフレームですか? BR ジョーイ Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、 canhe 1.バス負荷を軽減するテストを行い、問題のあるフレームの頻度が減少するかどうかを観察します。 2.また、画像に示されているパラメータの数値を増やしてみてください。 Joey_z_0-1785313583389.png BR ジョーイ Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、ジョーイ お返事ありがとうございます。負荷率を下げて、再度テストを実施します。2つ目の点として挙げられたMBサイズについてですが、20から300に増やしてみましたが、それでも異常が見られました。 さらに、LLCEには共有メモリの処理に関する内部ロジックがあるかどうかご存知ですか?「word0」フィールドに異常値が発生するのはどのような状況下でしょうか?例えば、「word1」の値が「word0」に書き込まれる場合。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、ジョーイ 1.受信したCANフレームは外部ECUから送信されました。現在、この異常はCANOE装置を用いたシミュレーションにより、試験台上で再現されている。実際には、どちらの状況でも異常事態が発生している。受信メッセージの大部分はCANFDフレームであり、少数はCANフレームです。 2. アービトレーションセグメントのボーレートは500k、データセグメントは2M、サンプリングレートは80%に設定されます。コントローラはBCAN1-BACN5を使用しています。 3. フレームは内部コアによって処理されます。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、 canhe 詳細な情報を提供していただきありがとうございます。 皆さんは受信フレーム操作にBCAN1-BACN5を使用していますか? 私はあなたと同じバージョンのLLCEと設定を使用して1つのポートで受信テストを行いましたが、あなたと同様のエラーは発生しませんでした。 Joey_z_0-1785405650366.png BR ジョーイ Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、ジョーイ 主にBCAN1〜BCAN3を使ってほとんどのアプリケーションメッセージフレームを受け取ります。BCAN4は現在、データの送受信に対応していません。BCAN5は内部バスにコネクテッドされ、少数のメッセージを送信します。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、ジョーイ 助けてくれてありがとう。この事件は完了しました。追跡番号は00997151です。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、 canhe 下記のリンクからケースを作成してください。 https://support.nxp.com この問題については、関連するCASE情報を記入してください。ソフトウェアチームやLLCEの専門家に内部チャネルを通じて連絡するお手伝いをいたします。 BR ジョーイ Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、 canhe 以前のテストによると。 CANバスロードを減らして単一のCANチャネルを使うことには問題が起きませんか? BR ジョーイ Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. こんにちは、ジョーイ 現地のサポートや中国のオンラインサポートのために、現地のFAE(フィールドアプリケーションエンジニア)に連絡するのが都合が良いかお伺いしてもよろしいでしょうか?これは問題をより迅速に解決するのに役立つと思います。
記事全体を表示
Flash 配置混乱 RT1176 八路 DDR 您好,恩智浦 我在配置Macronix Octal DDR模式的闪存时遇到了一些问题。 我正在基于 NXP FMU-6XRT 参考设计的定制板上使用 PX4 代码栈。我使用的是 MX25UM51245G 而不是 MX25UM51345G,但这两个部件之间的差异很小。 我尝试在 Macronix 八进制 DDR 模式下运行它,并启用 DQS 外部采样,采样频率至少为 100MHz。参考设计运行频率为 200MHz。启动内存配置即使在 166MHz 的频率下也能成功测试所需配置的内存。 我尝试的配置是以下默认配置。第一个程序“g_flash_config”可以成功启动、写入、读取等,但对于软件来说并不理想。"g_flash_fast_config" 失败。 我尝试在“fast_config”的DTR模式下将频率降低到166MHz、133MHz、50MHz和30MHz,但都没有效果。 我尝试使用从启动内存配置生成的 FCB,但由于结构布局存在一些差异,因此很难将其应用于 PX4 代码。 我也尝试过 csHoldTime、csSetupTime 和 dataValidTime 的不同组合,但都没有结果。 我尝试在低频 DTR 八进制中使用 DQS 内部模式,但也没有成功。 接下来我还可以尝试什么? #include /**************************************************************************** * Public Data ****************************************************************************/ locate_data(".boot_hdr.conf") const struct flexspi_nor_config_s g_flash_config = { .memConfig = { #if !defined(CONFIG_BOARD_BOOTLOADER_INVALID_FCB) .tag = FLEXSPI_CFG_BLK_TAG, #else .tag = 0xffffffffL, #endif .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 1, .csSetupTime = 1, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Generic, .waitTimeCfgCommands = 1, .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_1Pad, .serialClkFreq = kFlexSpiSerialClk_100MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 0}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read Dedicated 3Byte Address Read(0x03), 24bit address */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x03, RADDR_SDR, FLEXSPI_1PAD, 0x18), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(READ_SDR, FLEXSPI_1PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0),//0xb3048b20 }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; const struct flexspi_nor_config_s g_flash_fast_config = { .memConfig = { .tag = FLEXSPI_CFG_BLK_TAG, .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 3, .csSetupTime = 3, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Spi2Xpi, .waitTimeCfgCommands = 1, .deviceModeSeq = { .seqNum = 1, .seqId = 6, /* See Lookup table for more details */ .reserved = 0, }, .deviceModeArg = 2, /* Enable OPI DDR mode */ .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable) | (1u << kFlexSpiMiscOffset_DdrModeEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_8Pads, .serialClkFreq = kFlexSpiSerialClk_133MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 10}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read */// EEH+11H+32bit addr+20dummy cycles+ 4Bytes read data /* Macronix manual says 20 dummy cycles @ 200Mhz, FlexSPI peripheral Operand value needs to be 2N in DDR mode hence 0x28 */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0xEE, CMD_DDR, FLEXSPI_8PAD, 0x11), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x28),//0xb3288b20, [0 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), //0xa704, /* Read status */ [4 * 2 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x05, CMD_DDR, FLEXSPI_8PAD, 0xfa), [4 * 2 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x04), [4 * 2 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), /* Write enable SPI *///06h [4 * 3 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP_EXE, FLEXSPI_1PAD, 0x00),//0x00000406, /* Write enable OPI SPI *///06h [4 * 4 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x06, CMD_DDR, FLEXSPI_8PAD, 0xF9), /* Erase sector */ [4 * 5 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x21, CMD_DDR, FLEXSPI_8PAD, 0xDE), [4 * 5 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, STOP_EXE, FLEXSPI_1PAD, 0x00), /*Write Configuration Register 2 =01, Enable OPI DDR mode*/ //72H +32bit address + CR20x00000000 = 0x01 [4 * 6 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x72, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000472, [4 * 6 + 1] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000400, [4 * 6 + 2] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, WRITE_SDR, FLEXSPI_1PAD, 0x01),//0x20010400, /*Page program*/ [4 * 9 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x12, CMD_DDR, FLEXSPI_8PAD, 0xED),//0x87ed8712, [4 * 9 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, WRITE_DDR, FLEXSPI_8PAD, 0x04),//0xa3048b20, }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; Re: Flash configuration confusion RT1176 Octal DDR 你好@SimonHugr , 如果您计划使用 DDR 模式,请记住还必须考虑字节交换配置。本文提供了一些有用的信息,说明在使用 DDR 模式时,MX25UM51245GXDI00 的字节交换为何如此重要。 我强烈建议使用启动内存配置来生成 FCB,安全配置工具v26.6 提供了 MX25UM51245G 的模板,可以作为您配置的良好起点。另外,您可能也知道,这个工具可以帮助您测试配置。 此外,我建议查看这篇社区帖子,特别是从第 15 点开始的步骤。该部分更详细地解释了安全配置工具如何生成启动内存配置,并有助于阐明该工具生成的参数和输出。 最后,您可以使用 flexspi_nor_polling_transfer_cm7 示例来验证生成的 FCB,并在继续进行启动配置之前验证读取和写入操作是否正常工作。 BR 哈比卜 Re: Flash configuration confusion RT1176 Octal DDR 很遗憾,目前还没有结果。我仍然认为这与数据顺序互换有关,我可能漏掉了一些配置字节…… Re: Flash configuration confusion RT1176 Octal DDR 谢谢你,马斯米塞姆 事实上,我注意到例如数据应该互换一下。我将再次检查我的查找表。 Re: Flash configuration confusion RT1176 Octal DDR 参考此帖: https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Internal-Boot-from-Flash-memory-not-starting-on-imxRT1176-custom/mp/1830699 我应该通过编辑 misc 选项来交换数据顺序,根据 Zephyr RTOS 的说明(https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L340-L355 ) 数据交换字节已经插入,但我感觉好像漏掉了什么。 .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .isDataOrderSwapped = true .serialNorType = 2, .reserve2[0] = 0x7008200, Re: Flash configuration confusion RT1176 Octal DDR 嘿@SimonHugr , 我首先要确认的是 MX25UM51245G 和 MX25UM51345G 之间的实际区别。虽然零件编号非常相似,但它们并不是完全相同的设备。根据 Macronix 的数据手册,MX25UM51345G 明确支持 DOPI(双倍传输速率 OPI)字节模式数据序列,而 MX25UM51245G 属于不同的产品型号。这会影响 FlexSPI 控制器使用的命令格式、字节顺序和 LUT 配置。 您还可以对比一下我的配置,我的配置适用于 MX25UM513 和 MX25UW6345G: https://github.com/Masmiseim36/Coremark_iMXRT/blob/master/XiP/flexspi_flash_OSPI_Macronix.c 雷加尔斯 Re: Flash configuration confusion RT1176 Octal DDR 你好,哈比卜 对于我们的固件,我无法使用安全配置工具生成 FCB,而是需要在固件启动时加载 FCB,因此我需要创建 mem_config 和 flash_config 结构并自行配置。 我发现 Zephyr 项目在 flash_nor_config 中引用了一个 isDataOrderSwapped 字节。 https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L347-L348 Claude 提到 controllerMiscOption 的第 5 位有一个 padSettingOverride 位,第 7 位有一个 dataSwap 位,但我不太确定 LLM 是否严重地臆造了这些信息。 使用安全配置工具生成 FCB 并使用此工具将其转换为 C 结构体时 https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/i-MX-RT-FLEXSPI-booting-guide/ta-p/1669262 我没有设置第 5 位或第 7 位,所以我认为 LLM 有问题,但是 isDataSwapped 已设置,并且在 FCB 中通常被引用为 reserved0[0]。 我在安全配置工具中找不到 MX25UM51245G 的模板,只有 MX25U51245G(四闪存)、MX25UM51345G 和 MX25UMxxx45G 的模板。 但我尝试过的所有八进制DDR配置都无法启动。 有趣的是,尽管 BT_FUSE_SEL = 1 且引脚 BOOTMODE0/1 = 0,MCU 在某些配置后通常会自动进入 ISP 模式。这种情况并不稳定,我不确定是什么配置导致了这个问题。 MCU在读取闪存失败后是否会进入ISP模式? 谢谢 BR Re: Flash configuration confusion RT1176 Octal DDR 你好@SimonHugr , 很抱歉,MX25UM51245G 没有模板,只有 MX25U51245G 和 MX25UM51345G 可用。 根据您的描述,使用您当前的启动内存配置设置,与闪存设备的通信似乎工作正常。单击“转换为完整 FCB”后,该工具会将配置编程到闪存中,然后使用您指定的参数将其读取回来,如下所述: Habib_MS_0-1784753481563.png 如果所选设置中有任何一项不被闪存设备支持,该工具应报告类似于以下内容的错误: Habib_MS_1-1784753506390.png 为了进一步验证社区帖子中提到的使用 FCB 变流器生成的 LUT 是否正常工作,请您在从内部 RAM 运行应用程序时,使用 flexspi_nor_polling_transfer_cm7 SDK 示例进行测试。如果您对示例有任何疑问,请随时联系我。 此外,您能否提供一些关于您尝试启动的应用程序的更多详细信息? -这是 SDK 示例还是您自己的应用程序? 你使用的是哪个集成开发环境(IDE)? -您的应用程序是执行 XIP 还是非 XIP? -除了启动过程之外,您是否在任何其他阶段访问过闪存? 关于进入 ISP 模式,请确保您的定制板上的启动引脚符合MIMXRT1160/1170 硬件开发指南第 5 章“启动、复位和其他”中提到的建议?这样做是为了避免与启动引脚相关的任何硬件问题。 回答您的问题,如果没有有效的镜像文件,您可以进入ISP模式,如图10-1所示的RM“启动流程”: Habib_MS_2-1784754516601.png BR 哈比卜 Re: Flash configuration confusion RT1176 Octal DDR 你好,哈比卜。 我现在至少已经让八进制 SPI STR 模式在 200MHz 下工作了。问题出在一些未描述的神秘的“reserve2”字节上。我还选择在设备模式序列之上设置一个配置命令序列,并添加一个额外的字节。 设置字节交换并没有起到任何作用,但我对在 200MHz STR 八进制下能够达到的速度感到满意。 顺祝商祺!
記事全体を表示
S32K324 FlexIO SPIマスターエミュレーション(S32DS 3.5 / RTD 4.0.0) こんにちは、 S32K324上でFlexIOエミュレーションによるSPIマスターを構成し、外部のSPIスレーブデバイスと通信できるようにしています。当社独自の基板における配線経路の都合上、このデバイスを対象とする物理的な配線は、チップのデフォルトのFlexSPI0ピンに接続されています。したがって、エミュレートされたFlexio_Spiドライバースタックを使う必要があります。 これが私のセットアップです BUS_FLEXSPI0_UP_SBC_CS PTD8 fxio_d11 BUS_FLEXSPI0_UP_SBC_CLK PTD9 fxio_d0 BUS_FLEXSPI0_UP_SBC_MOSI PTD15 fxio_d10 BUS_FLEXSPI0_UP_SBC_MISO PTD22 fxio_d27 私の環境: IDE:S32 Design Studio for S32 プラットフォーム(バージョン:3.5、ビルドID:240726 Update 13) CPU:S32K324 SDK:リアルタイム・ドライバ(RTD)バージョン4.0.0(本番リリース) RTD 4.0.0専用のエンドツーエンド統合スタックを示す公式のNXPアプリケーションノートやガイドはありますか?ツール内のピン割り当て、シフターやタイマーのマッピング、ドライバの初期化まで、メインアプリケーションコード内のすべてを網羅したリファレンスが必要です。 Re: S32K324 FlexIO SPI Master Emulation (S32DS 3.5 / RTD 4.0.0 ) こんにちは、 @Kazarian さん、 私の知る限り、RTD 4.0.0およびこのピン割り当てを対象としたS32K324向けにFlexIOエミュレートされたSPIの完全なエンドツーエンド統合を説明した専用のアプリケーションノートはありません。 最も近い公式な参照は、S32K3 RTDパッケージに含まれる例プロジェクトです。Lpspi_Flexio_Ip_Transfer_S32K344と同様のRTDの例を確認してください。 この例は、FlexIOベースのSPI転送における意図されたRTD統合フローを示しており、FlexIO SPIドライバーの初期化やLPSPIとFlexIO SPIインスタンス間の関係も含まれます。   カスタムボードを作成する際に考慮すべき主なポイントは以下のとおりです(一般的なガイドラインとして)。 ピンの構成 PinsツールにリストされているピンをFlexIO信号として設定します。 PTD8 → FXIO_D11、チップセレクト PTD9 → FXIO_D0、クロック PTD15 → FXIO_D10、MOSI PTD22 → FXIO_D27、MISO MISOピンが入力バッファを有効にしていることを確認してください。 また、S32K324 IOMUX/pinoutのドキュメントで、これらのFlexIO機能があなたのパッケージに対応していることも確認してください。 FlexIO SPI構成 FlexIO SPI構成では、SPI信号を物理的なMCUピンだけでなく対応するFlexIOピン番号にマッピングします。 SCK = FXIO_D0 MOSI = FXIO_D10 CS = FXIO_D11 MISO = FXIO_D27 生成された構成に合わせて、必要なFlexIOタイマーとシフターを適切に割り当ててください。 よろしくお願いいたします。 パベル
記事全体を表示
IMX8M Plus GPU 动态随机存取存储器(DRAM) 竞争 我们在 IMX8M Plus 上运行 Yocto Linux。 我们注意到,在任何 GPU 活动期间,CPU 访问内存时都会出现巨大的延迟峰值(1-3 毫秒峰值)。这是一个大问题,因为我们使用 XDP 进行网络连接。 我们尝试调整 IMX8MP_ICM_A53、IMX8MP_ICM_GPU3D 和 IMX8MP_ICM_GPU2D,将它们设置为 7、2、2 以进行 QoS 控制。这使得延迟峰值出现的频率降低,但它们仍然存在。我们发现的唯一选择是完全不进行任何 GPU 活动或从设备树中删除 GPU,但这对于我们的使用场景来说是不可接受的。是否还有其他设置可以调整以缓解这种现象?GPU锁定动态随机存取存储器\(DRAM\)的时间不能超过50-100微秒。 图形与显示 Linux Re: IMX8M Plus GPU DRAM contention 嗨@richardlovgren , 感谢您联系恩智浦技术支持! 请问您使用的是哪个BSP版本? 这个问题在 EVK 上也会出现吗?还是只出现在你的定制硬件上? 能否也提供日志文件、设备树以及其他相关信息,以便我能够调查和诊断问题? 此外,请分享重现问题的具体步骤,以便我可以在我的环境中尝试重现该问题。 此致, 查维拉
記事全体を表示
[S32G3]LLCECAN 的 Can_SharedMemory 字 0 中出现了异常值。 各位NXP专家,大家好! 我们的项目中,S32G399A 的 LLCE 罐功能使用出现了异常。有时,ECU 报告的某个 CAN 消息接收出现问题,而变速箱运行正常。经过调试,发现 CAN 中断可以正常触发,但是从 Can_SharedMemory 读取的 u32Word0 从 0x18008 变为 0x1800f,这是一个异常值。计算出的 u32MbMessageId 为 0。这导致消息丢失。 RxMbDescIdx 有一个值并且正在变化,word1 有时为 0,但也在变化。这种情况偶有发生,受影响的 CAN 总线也是随机的。 请帮忙分析一下这个问题,调试截图如下。我应该如何进行下一步的调试?或者有哪些解决方案? LLCE 版本为:1.0.10 。 LLCE_Abnormal.png Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨, canhe 感谢您与我们联系。 您能提供更多信息吗? 1. 您使用的是哪个版本的RTD? 2.你们使用的是自己的电路板和自己的软件吗? BR 乔伊 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 各位NXP专家,大家好! 同步信息:在异常情况下,我们通过 Can_Llce_GetControllerMode 读取控制器状态为“启动”,然后通过 Can_43_LLCE_SetControllerMode 接口执行“停止->启动”转换。异常的CAN可以恢复。从 word0 的值来看,LLCE 的内部 DTE 内核在向共享内存传输数据时似乎出现了错误。 目前,异常概率仍然相当高,约为 20 %-30% 。我方团队已签署相关保密协议文件。请优先处理这个问题好吗? Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨, canhe   好的,我们会提高您问题的优先级! 1.请问您收到的 CAN 帧是来自外部设备还是来自 CANoe 设备本身?它接收到的是 CAN 帧还是 CANFD 帧? 2.设定的波特率是多少?你使用的是哪个端口? 3.帧是由内部核心处理还是通过 CAN2CAN 路由处理? BR 乔伊 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨,canhe 您似乎对 Can_Llce_ProcessRxMb 进行了一些修改。在修改之前,您是否遇到过任何问题?能否分享一下修改后的代码? Joey_z_0-1785135823536.png BR 乔伊 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨,乔伊 感谢你的回复。这个问题在我添加调试代码之前就出现了。我添加了调试代码以确认具体原因。调试代码只是读取某些状态。共享内存的值似乎异常。补丁已提供给您。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨, canhe 谢谢你提供的信息。 1.在您遇到问题的情况下,CAN总线的总线负载是多少?公交车载客量是否过高? 2.当发生丢帧时,通知是否会报告任何错误?如果您收到任何错误信息,请与我分享。 Joey_z_0-1785211817403.png 3.错误发生在路由过程中还是帧发送到主机时?使用的是 CAN 还是 CAN FD 机架? BR 乔伊 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨,乔伊 1.总线载荷率在 40% 到 50% 之间,这似乎不是很高。 2. BCAN_RXFIFO_OVERRUN 是在异常情况下发生的,但我在正常操作期间也观察到了此通知。 3. 目前,LLCE 尚未启用路由功能;它仅将数据转发到主机。大部分帧使用 CAN FD 格式,少量使用 CAN 格式帧。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨,乔伊 感谢你的回复。我将降低负载率并再次进行测试。关于您提到的第二点,即 MB 大小,我已经尝试将其从 20 增加到 300,但仍然出现异常。 此外,您是否了解 LLCE 在处理共享内存方面是否有任何内部逻辑?在什么情况下“word0”字段会出现异常值?例如,如果将“word1”的值写入“word0”。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨,乔伊 1.接收到的 CAN 帧源自外部 ECU。目前,已使用 CANOE 设备在测试台上进行模拟,重现了该异常情况。事实上,这两种情况下都出现了异常情况。接收到的消息大部分是 CANFD 帧,只有少量是 CAN 帧。 2. 仲裁段的波特率设置为 500k,数据段的波特率设置为 2M,采样率为 80%。控制器使用 BCAN1-BACN5。 3. 这些帧由内部核心进行处理。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨, canhe 1.测试降低总线负载,观察问题帧的频率是否降低。 2.另外,尝试增加图中所示参数的数值。 Joey_z_0-1785313583389.png BR 乔伊 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨, canhe 感谢您提供详细信息。 你们都使用 BCAN1-BACN5 执行接收帧操作吗? 我在接收测试中,使用与你相同版本的 LLCE 和相同的配置,在一个端口上进行测试,并没有遇到与你类似的错误。 Joey_z_0-1785405650366.png BR 乔伊 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨,乔伊 我们主要使用 BCAN1-BCAN3 来接收大部分应用程序消息帧。BCAN4目前不具备发送或接收数据的功能。BCAN5 连接到内部总线,并传输少量消息。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨, canhe 请尝试通过以下链接创建案例。 https://support.nxp.com 关于这个问题,请填写相关的案例信息,我会通过内部渠道帮您联系软件团队和 LLCE 专家。 BR 乔伊 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨,乔伊 请问您是否方便联系当地的现场应用工程师(FAE)以获得中国境内的现场支持或在线支持?我认为这有助于我们更快地解决问题。 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨, canhe 根据之前的测试结果。 降低 CAN 总线负载并使用单个 CAN 通道会给您带来任何问题吗? BR 乔伊 Re: [S32G3]An abnormal value has occurred in the Can_SharedMemory word0 of LLCECAN. 嗨,乔伊 感谢您的帮助。我已经结案了。追踪号码为:00997151。
記事全体を表示
CGM用MCX W23パワープロファイルツール このページは、連続血糖モニタリング(CGM)用Kinetis MCX W23パワープロファイルツールに特化しています。 これにより、CGMアプリケーションの消費電力を推定し、ソリューションのバッテリー寿命を評価するのに役立ちます。 このページには、以下の用途向けの専用電源プロファイルツールが掲載されます。 MCX W23製品を使ったCGMのフルアプリケーション christophe_menard_0-1786027418500.png AN14157 消費電力分析 AN14660 電源管理 id: ワイヤレス・コネクティビティ フォーラム [開始日: 2026年7月31日]
記事全体を表示
S32K344のハードウェアQSPIは、(連続クロック)構成をサポートしていますか? タイトルにあるように、下流のデバイスがこのクロックに基づいてデータを処理できるように、クロックを継続的に出力したいと考えています。 Re: S32K344的硬件QSPI,是否支持(连续时钟/ Continuous SCK)的配置? こんにちは@Zhangbohanさん 残念ながら、S32K3 SPIモジュールは連続的なSCKをサポートしていません。一つの選択肢は「連続転送」を使用することです。 「マスターモードでは、CONTは新しいフレームを開始するコマンドワードを受信するまで、フレームサイズの末尾でPCSをアサートした状態を維持します。」 もう一つの選択肢は、GPIOを使ってCSとして機能し、ソフトウェアで制御することです。 いずれの場合も、SPI SCKはSPI TXバッファにデータを送り込む際に生成される。標準ドライバー(MCALまたはRTD)を使う場合、SCKパルスはドライバーによってFIFOにデータをプッシュすることで制御されます。ユーザーはそれをコントロールできません。 私の知る限り、連続SCKモードをサポートしているのはS32K9-K7-K6デバイスのDSPIモジュールだけです。S32K39リファレンスマニュアルより: Julin_AragnM_1-1785269564354.png よろしくお願いします、 ジュリアン Re: S32K344的硬件QSPI,是否支持(连续时钟/ Continuous SCK)的配置? ご回答いただき、誠にありがとうございます。解決策を再検討した結果、別の質問が浮かびました。S32K344はQSPI経由でのDMA転送をサポートしていますか?レジスタレベルでは関連するレジスタを確認しましたが、QSPI_IPにはイネーブルやチャネル設定オプションがありません。MCALレイヤーで設定できるようです。そのため、QSPI+DMAがサポートされているのか、また関連するサンプルコードがあるのかが不明です。既存のサンプルコード「Mem_43_EXFLS」ではDMAは使用されていないようです。 Re: S32K344的硬件QSPI,是否支持(连续时钟/ Continuous SCK)的配置? こんにちは@Zhangbohanさん はい、QSPIインスタンスはDMAの使用をサポートしています。考慮事項については、S32K3XXリファレンスマニュアルの第78.5.4.1章を参照してください。 Julin_AragnM_1-1785887187504.png しかし、QSPI_IPとDMAを組み合わせた例は知りません。 よろしくお願いします、 ジュリアン
記事全体を表示
MCX W23 功率我的分析工具(适用于 CGM) 本页面专用的 Kinetis MCX W23 用于连续血糖监测 (CGM) 的功率我的工具。 它将帮助您估算 CGM 应用中的功耗,并评估解决方案的电池寿命。 本页面将包含专用的电源分析工具,用于: 使用MCX W23产品进行CGM全面应用 christophe_menard_0-1786027418500.png AN14157 功耗分析 AN14660 电源管理单元 id:无线连接论坛 [开始日期:2026年7月31日]
記事全体を表示
カーネル6.12におけるLS1046A 10GB SFP+の設定 こんにちは、 私はLS1046Aを搭載したカスタムボードを持っていて、はんだ付けされたSFP+ 10GBモジュールでfm1-mac9を使用しようとしています。 SERDES 1 の私の RCW は 0x1040 です。 hugoacata_0-1784298387879.png つまり、FM1からMAC9の10GBはRCWの視点から見て十分にカバーされています。SFPの電源やレーザーは正常なようですが、前のSFPと連携・連携できず、DTBの設定が間違っているのではないかと疑っています。 これがそのMACアドレスの現在の設定です。 xfi10g: ethernet@f0000 { ステータス = "正常"; pcsphy-handle = <&pcsphy6>; pcs-handle = <&pcsphy6>; pcs-handle-names = "xfi"; 物理接続タイプ = "10gbase-r"; 固定リンク { 速度 = <10000>; 全二重通信; }; }; mdio@f1000 { ステータス = "正常";   pcsphy6: イーサネット-phy@0{     compatible = "fsl,lynx-pcs";     reg = <0x0>;   }; }; sfp_mac9: sfp { 互換 = "SFF,SFP"; I2Cバス = <&i2C3>; status = "OK"; }; 参考までに、私はlinux-qoriqカーネル6.12を使っていますが、SFPは起動時にEEPROMを正しく読み込んでいます。 fm1-mac9でこのタイプの接続を実行する適切な例はありますか? Re: LS1046A 10GB SFP+ Configuration on kernel 6.12 LS1046ARDBごとに変更するのはどうでしょうか。fm1-mac10はSFP+で、ドライバーもSFP+をサポートしているので。 https://github.com/nxp-qoriq/linux/blob/lf-6.12.49-2.2.0/arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts#L156
記事全体を表示
S32K344的硬件QSPI,是否支持(连续时钟/ Continuous SCK)的配置? 如题,我希望连续输出时钟,便于我下游设备基于此时钟做数据处理。 Re: S32K344的硬件QSPI,是否支持(连续时钟/ Continuous SCK)的配置? 你好@Zhangbohan , 遗憾的是,S32K3 SPI 模块不支持连续 SCK。一种方法是使用“连续传输”: "在主模式下,CONT 信号会在帧大小结束时钳位 PCS 信号,直到收到开始新帧的命令字为止。" 另一种选择是使用 GPIO 作为 CS,并通过软件进行控制。 无论哪种方式,当数据被推送到SPI发送缓冲区时,都会生成SPI SCK信号。如果使用标准驱动器(MCAL 或 RTD),则 SCK 脉冲将由驱动器通过向 FIFO 推送数据来控制,用户无法控制。 据我所知,只有 S32K9-K7-K6 设备的 DSPI 模块支持连续 SCK 模式。摘自S32K39参考手册: Julin_AragnM_1-1785269564354.png 此致, 朱利安 Re: S32K344的硬件QSPI,是否支持(连续时钟/ Continuous SCK)的配置? 非常感谢您的回复,我重新评估了我的方案,再请教您一个问题,S32K344,QSPI是否支持DMA传输,我在寄存器层面看到了有相关寄存器;但是在QSPI_IP中,没有使能和通道配置选项;在MCAL层,似乎可以配置。这让我不太确定,是否有QSPI+DMA的支持,是否有相关例程?现有的例程“Mem_43_EXFLS”,我看到里面没有使用DMA。 Re: S32K344的硬件QSPI,是否支持(连续时钟/ Continuous SCK)的配置? 你好@Zhangbohan , 是的,QSPI实例支持DMA使用,您可以参考S32K3XX参考手册的78.5.4.1章节了解相关注意事项。 Julin_AragnM_1-1785887187504.png 但是,我目前还没有看到任何 QSPI_IP + DMA 的示例。 此致, 朱利安
記事全体を表示
iMX937的深度睡眠模式 我正在使用 iMX95lpddr5 evk,触发了深度睡眠模式,想知道 A55、M7 和 M33 中已暂停和未暂停核心的状态、时钟频率和功耗。 Re: Deep Sleep Mode of iMX937 在 i.MX95 LPDDR5 EVK 上,“深度睡眠”对应于 i.MX 95 Suspend / DSM 风格的低功耗模式。A55 处于挂起/断电状态;M33 未运行应用程序工作负载,通常显示为时钟门控/空闲状态;M7 的状态取决于您是否也将其挂起或将其保留为唤醒/实时核心。AN14449 中的功耗数据是SoC 轨/组的总功耗,而不是每个核心的功耗。 低功耗外壳 Cortex-A55 状态/频率 Cortex-M33 状态/频率 Cortex-M7 状态/频率 DDR状态 报告功率 DSM 系统中的系统 暂停;时钟检测不到 时钟门控;时钟无法检测 暂停;未提供时钟 保留 25.65 mW GROUP_SOC_FULL 总计 Linux 挂起 + CM7 WFI 暂停 / 0 时钟门控或空闲 / 0 WFI / 400 MHz 保留 178.48 毫瓦GROUP_SOC_FULL 总计 Linux 暂停 + CM7 CoreMark (TCM) 暂停 / 0 时钟门控或空闲 / 0 CoreMark / 400 MHz 保留 197.24 毫瓦GROUP_SOC_FULL 总计 Linux 挂起 + CM7 FlexCAN 事务 暂停 / 0 时钟门控或空闲 / 0 FlexCAN / 800 MHz 活跃,6400吨/秒 659.71 毫瓦GROUP_SOC_FULL 总计 Linux 挂起 + CM7 网络/以太网 暂停 / 0 时钟门控或空闲 / 0 NETC / 800 MHz 活跃,6400吨/秒 956.17 毫瓦GROUP_SOC_FULL 总计 Linux 挂起 + WoL A55 停运 M33 空闲/低功耗上下文 具备唤醒功能的配置;检索到的数据块中没有精确的核心表。 取决于 WoL 设置 342.72 毫瓦GROUP_SOC_FULL 总计 一些解读说明: i.MX 95 参考手册将Suspend描述为最大程度节省功耗的模式,其中不必要的时钟/电源被关闭,Cortex-A55 CPU 完全断电,可以断电的 PHY 被关闭,VDD_SOC 降低到挂起电压。 在DSM 系统中,AN14449 明确指出CA55=挂起,CM33=时钟门控,CM7=挂起,DDR=保持,并指出由于 CA55 和 CM33 不工作,因此无法检测到时钟。 对于 M7 保持活动的 Linux 挂起,未挂起的核心是 CM7 ;其时钟频率在 WFI/CoreMark 保持情况下为400 MHz ,在 FlexCAN/NETC 情况下为800 MHz ,而 A55 和 M33 在案例表中显示为0 MHz 。 已公布的功率数据并非针对每个 A55/M7/M33 核心单独列出的。AN14449 报告了诸如 GROUP_SOC_FULL 和 GROUP_DRAM 之类的轨/组测量结果;例如,DSM 报告 vdd_arm 为 0 mW,vdd_soc 为 3.85 mW,GROUP_SOC_FULL 总和为 25.65 mW,但这仍然是轨级功耗,而不是单个核心功耗。 结论:如果 M7 也处于挂起状态,则 DSM 功耗约为 25.65 mW;如果 M7 在 Linux 挂起期间保持运行,则 SoC 总功耗会从 400 MHz 时的约 178–197 mW 上升到 800 MHz 时的约 660–956 mW,具体取决于外围设备的工作负载。 Re: Deep Sleep Mode of iMX937 对于 I.Mx95,有几种电源模式,包括运行模式、低功耗运行模式、空闲模式、挂起模式和电池备份安全模块模式。有关详细的功耗数据,请参阅 IMX95AEC 数据表。对于 i.Mx937,该设备目前处于预生产阶段,目前只有产品说明书可供参考。 不太清楚测试数据的来源,以及你提到的深度睡眠模式是什么……
記事全体を表示
IMX8MP オンチップRAMメモリアクセス こんにちは、 OCRAMにアクセスしてデータを読み込み、メモリに取り込む方法を学びたいです。 Linux Cortex A-53でそれを実現するにはどうすればいいか、誰かアドバイスをいただけませんか? オンチップRAM - OCRAM (576 KB) 開始アドレス: 0x00900000 => ROM用に予約済み 開始アドレス: 0x00918000  =>OCRAMフリーエリア 終了アドレス: 0x0097FFFF https://www.nxp.com/webapp/Download?colCode=IMX8MPRM ご回答をお待ちしています。 IMX8MPLUS i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus Linux Yocto Project Re: IMX8MP On chip RAM memory access こんにちは、ロマン・ルースさん。 このアドバイスはあなたにとって効果がありますか? よろしくお願いいたします。 ステファノ・ジリ Re: IMX8MP On chip RAM memory access こんに ちは、@Roman_Loz、compatible = "shared-dma-pool"を含めるといいですよ;そして、それはうまくいくはずです。 ocram_dma: ocram_dma@970000 { no-map; compatible = "shared-dma-pool"; reg = <0 0x970000 0 0xC00>; // 3KB }; よろしくお願いいたします。 サムヒタ・カシャップ Re: IMX8MP On chip RAM memory access こんにちは、 ご提案いただいた方法でOCRAMを使おうとしているのですが、memcpyを実行しようとするとカーネルパニックが発生します。 私が何を間違っているのか、あるいは見落としているのか理解する手助けをしてもらえますか? dtsi: resmem: reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; ocram: ocram@900000 { no-map; reg = <0 0x900000 0 0x70000>; }; ocram_dma: ocram_dma@970000 { no-map; reg = <0 0x970000 0 0xC00>; // 3KB }; ... モジュール初期化: // Find the OCRAM DMA node by name np = of_find_node_by_name(NULL, "ocram_dma"); if (!np) { pr_err("Failed to find OCRAM DMA node in device tree\n"); return -ENODEV; } // Lookup the reserved memory region rmem = of_reserved_mem_lookup(np); if (!rmem) { pr_err("Failed to lookup reserved memory for OCRAM DMA\n"); return -ENODEV; } // Map the reserved memory region ocram_dma_base = ioremap(rmem->base, rmem->size); if (!ocram_dma_base) { pr_err("Failed to map OCRAM DMA memory\n"); return -ENOMEM; } コピー: memcpy(current_address, mv->A, MATRIX_STRUCT_SIZE);   Re: IMX8MP On chip RAM memory access こんにちは、 @Samhitha_Kashyap さん。 なお、NXPは他のドライバーが使用する448KBのOCRAM空間に対するノードの変更を推奨していません。 互換性のある=「shared-dma-pool」プロパティを用いて、0x970000後にメモリ領域をDMAサポートに利用できます。 ありがとうございます。よろしくお願いいたします。 サンケット・パレク Re: IMX8MP On chip RAM memory access こんにちは、 @Sanket_Parekh さん。 ご回答ありがとうございました。大変参考になりました! もしユーザーアプリケーションで使えない場合、448KBのOCRAM空間内でDMAをサポートするようにデバイスツリーを変更することは可能でしょうか? よろしくお願いいたします。 サムヒタ・カシャップ Re: IMX8MP On chip RAM memory access こんにちは、 @Samhitha_Kashyap さん。 お元気でお過ごしでしょうか。   OCRAMやLinuxカーネルで自分専用にどれだけのメモリが割り当てられているかは、socのdtsiファイル(予約済みメモリノード)を調べることで判断できます IMX8MPの場合は448KBです。   resmem: 予約メモリ { #address-cells = <2>; #size-cells = <2>; 範囲; ocram: ocram@900000 { 地図なし; reg = <0 0x900000 0 0x70000>; };   ..... .....   }   ここで0x70000(448K)バイトがLinux使用用に予約されています。そして、no-mapプロパティで指定されているユーザースペースに仮想的にマッピングすることはできません。 さらに0x7000バイトを経て、他のアプリケーションにも使えます。 ただし、OCRAMを使わないM7コアアプリケーションは必ず確認する必要があります。これは特定のアプリケーションのリンカースクリプトを調べることで判別できます。   ありがとうございます。よろしくお願いいたします。 サンケット・パレク   Re: IMX8MP On chip RAM memory access こんにちは、サンケットさん。 Linuxがどれだけのメモリを消費し、残りはユーザーアプリケーションに使えるか確認することは可能でしょうか? もし可能なら、どうやって同じことを検証し、残りのメモリをアプリケーション用に割り当てればいいのでしょうか。 よろしくお願いいたします。 サムヒタ・カシャップ Re: IMX8MP On chip RAM memory access こんにちは、 @Samhitha_Kashyap さん。 お元気でお過ごしでしょうか。 OCRAM Firstにアクセスするには、ATFが使用している地域にアクセスしようとしないように注意する必要があります。 U-Bootの場合、md/mwコマンドを使ってOCRAMに直接アクセスできます。 Linux自体がOCRAMを使用しているため、ユーザースペースでのOCRAM使用は推奨されません。 ありがとうございます。よろしくお願いいたします。 サンケット・パレク
記事全体を表示
iMX937のディープスリープモード iMX95lpddr5 evkを使用していますが、ディープスリープモードがトリガーされました。A55、M7、M33のサスペンドコアと非サスペンドコアの状態、クロック周波数、消費電力について知りたいです。 Re: Deep Sleep Mode of iMX937 i.MX95 LPDDR5 EVKでは、「ディープスリープ」は i.MX 95 Suspend/DSMスタイルの低消費電力ケースに割り当てられます。A55は吊り下げ/電源ゲート式です。M33はアプリケーションワークロードを実行中ではなく、通常はクロックゲート/アイドルとして表示されます。M7は、それもサスペンションするか、ウェイク/リアルタイムコアとして保持するかによります。AN14449のパワー数値はSoCレール/グループの合計であって、コアごとのパワーではありません。 低消費電力ケース Cortex-A55 状態/周波数 Cortex-M33の状態/周波数 Cortex-M7状態/周波数 DDR状態 報告された電力 DSMのシステム 一時停止; 時計が検出できません クロックゲーティング; クロックが検出されません 一時停止; 時計は提供されていません 保持 25.65 mW GROUP_SOC_FULL 合計 Linux サスペンド + CM7 WFI 一時停止 / 0 クロックゲーティングまたはアイドル / 0 WFI / 400 MHz 保持 178.48 mW GROUP_SOC_FULL 合計 Linux Suspend + CM7 CoreMark(TCM) 一時停止 / 0 クロックゲーティングまたはアイドル / 0 CoreMark / 400 MHz 保持 197.24 mW GROUP_SOC_FULL 合計 Linux Suspend + CM7 FlexCANトランザクション 一時停止 / 0 クロックゲーティングまたはアイドル / 0 FlexCAN / 800 MHz 稼働中、6400 MT/s 659.71 mW GROUP_SOC_FULL 合計 Linux Suspend + CM7 NETC / イーサネット 一時停止 / 0 クロックゲーティングまたはアイドル / 0 NETC / 800 MHz 稼働中、6400 MT/s 956.17 mW GROUP_SOC_FULL 合計 Linux サスペンド + WoL A55号線が停止 M33アイドル/低電力コンテキスト ウェイクアップ対応構成。取得したチャンクに正確なコアテーブルが含まれていません。 WoLの設定によります 342.72 mW GROUP_SOC_FULL 合計 解釈に関するいくつかの注釈: i.MX 95リファレンスマニュアルでは、不要なクロックや電源がオフで、Cortex-A55 CPUが完全に電源ゲートされ、電源を切れるPHYがオフになり、VDD_SOCがサスペンション電圧にまで下げられる最大省電力モードとしてサスペンデントモードと説明されています。 DSMのSystem AN14449では、使用例がCA55=サスペンデント、CM33=クロックゲーティング、CM7=サスペンデント、DDR=保持、そしてCA55とCM33が動作していないためクロックを検出できないことも明記されています。 M7をアクティブに保ったLinuxのサスペンドの場合、非サスペンドコアはCM7です。WFI/CoreMarkの保持ケースではクロックが400 MHz、FlexCAN/NETの場合は800 MHzで、A55およびM33はケーステーブルで0 MHzと表示されます。 公開されている電力データは、 A55/M7/M33コアごとに個別に示されているわけではありません。AN14449は、レールやグループ、GROUP_SOC_FULLやGROUP_DRAMなどの測定値を報告します。例えば、DSMはvdd_arm 0 mW、vdd_socを3.85 mWと報告し、合計25.65 mWのGROUP_SOC_FULL合計を含みますが、これはレールレベルの電力であり、個々のコア電力ではありません。 まとめ:M7も停止している場合、DSMは約25.65mWです。Linuxのサスペンド中にM7が稼働し続けると、ペリフェラルのワークロードに応じて、SoCの総消費電力は400MHzで約178〜197mWから800MHzで約660〜956mWに上昇します。 Re: Deep Sleep Mode of iMX937 I.Mx95には、RUNモード、低電力RUNモード、IDLEモード、SUSPENDモード、バッテリーバックアップ付きセキュアモジュールモードなど、いくつかの電源モードがあります。詳細な消費電力データについては、IMX95AECのデータシートを参照してください。i.Mx937については、現在試作段階であり、現時点では製品仕様書のみが入手可能です。 テストデータの出所や、あなたが言及しているディープスリープモードが何なのかよく分かりません…。
記事全体を表示
IMX8M Plus GPU DRAM競合 IMX8M PlusでYocto Linuxを運用しています 私たちが気づいたのは、GPUの作業中にCPUからのメモリアクセス時に1〜3msの急激なレイテンシスパイクが発生することです。これは非常に大きな問題です。なぜなら、私たちはネットワーク接続にXDPを使用しているからです。 QoS制御のために、IMX8MP_ICM_A53、IMX8MP_ICM_GPU3D、IMX8MP_ICM_GPU2Dを7、2、2に設定して調整を試みました。これによりレイテンシの急上昇は少なくなりましたが、それでも存在しています。唯一見つけた選択肢は、GPUの活動を一切行わないか、デバイスツリーからGPUを削除することでしたが、これは私たちの用途には受け入れられません。この挙動を緩和するために調整できる他の設定はありますか?GPUがDRAMをロックする時間はせいぜい50〜100μs以上は許されません グラフィックスとディスプレイ Linux Re: IMX8M Plus GPU DRAM contention こんにちは@richardlovgren。 NXPサポートにご連絡いただきありがとうございます! どのBSPバージョンを使っているのか教えていただけますか? この問題はEVKでも再現しますか?それとも、カスタムハードウェアでのみ発生しますか? ログファイルやデバイスツリー、その他関連情報も教えていただけますか?私側で問題を調査・診断できるように。 また、問題を再現するための正確な手順も教えてください。私のセットアップで再現できるよう。 よろしくお願いします、 チャビラ
記事全体を表示
フラッシュ構成の混乱 RT1176 オクタル DDR こんにちは、NXP Macronix Octal DDRモード用にフラッシュメモリを設定する際に、いくつか問題が発生しました。 NXP FMU-6XRTのリファレンスデザインをベースにしたカスタムボード上でPX4コードスタックを使っています。私はMX25UM51345Gの代わりにMX25UM51245Gを使用していますが、部品の違いはごくわずかです。 Macronix Octal DDRモードで、DQS外部サンプリングを少なくとも100MHzで実行しようとしています。リファレンスデザインでは200MHzで動作させています。ブートメモリ構成は、166MHzの場合でも、目的の構成でメモリを正常にテストします。 私が試した設定は、以下のデフォルト設定です。最初の「g_flash_config」は起動、書き込み、読み込みなどを成功させていますが、ソフトウェアには理想的ではありません。「g_flash_fast_config」が失敗します。 「fast_config」のDTRモードで、周波数を166MHz、133MHz、50MHz、30MHzに下げてみましたが、効果はありませんでした。 ブートメモリ構成から生成されたFCBを使用してみましたが、構造体のレイアウトにいくつかの違いがあり、PX4コードに適用するのが困難でした。 csHoldTime、csSetupTime、dataValidTimeのさまざまな組み合わせを試してみましたが、結果は得られませんでした。 低周波DTRオクタールでDQS内部を試してみましたが、うまくいきませんでした。 次に何を試せばいいでしょうか? #include /**************************************************************************** * Public Data ****************************************************************************/ locate_data(".boot_hdr.conf") const struct flexspi_nor_config_s g_flash_config = { .memConfig = { #if !defined(CONFIG_BOARD_BOOTLOADER_INVALID_FCB) .tag = FLEXSPI_CFG_BLK_TAG, #else .tag = 0xffffffffL, #endif .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 1, .csSetupTime = 1, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Generic, .waitTimeCfgCommands = 1, .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_1Pad, .serialClkFreq = kFlexSpiSerialClk_100MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 0}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read Dedicated 3Byte Address Read(0x03), 24bit address */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x03, RADDR_SDR, FLEXSPI_1PAD, 0x18), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(READ_SDR, FLEXSPI_1PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0),//0xb3048b20 }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; const struct flexspi_nor_config_s g_flash_fast_config = { .memConfig = { .tag = FLEXSPI_CFG_BLK_TAG, .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackInternally, .csHoldTime = 3, .csSetupTime = 3, .deviceModeCfgEnable = 1, .deviceModeType = kDeviceConfigCmdType_Spi2Xpi, .waitTimeCfgCommands = 1, .deviceModeSeq = { .seqNum = 1, .seqId = 6, /* See Lookup table for more details */ .reserved = 0, }, .deviceModeArg = 2, /* Enable OPI DDR mode */ .controllerMiscOption = (1u << kFlexSpiMiscOffset_SafeConfigFreqEnable) | (1u << kFlexSpiMiscOffset_DdrModeEnable), .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_8Pads, .serialClkFreq = kFlexSpiSerialClk_133MHz, .sflashA1Size = 64ul * 1024u * 1024u, .dataValidTime = { [0] = {.time_100ps = 10}, }, .busyOffset = 0u, .busyBitPolarity = 0u, .lookupTable = { /* Read */// EEH+11H+32bit addr+20dummy cycles+ 4Bytes read data /* Macronix manual says 20 dummy cycles @ 200Mhz, FlexSPI peripheral Operand value needs to be 2N in DDR mode hence 0x28 */ [0 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0xEE, CMD_DDR, FLEXSPI_8PAD, 0x11), //0x871187ee, [0 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x28),//0xb3288b20, [0 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), //0xa704, /* Read status */ [4 * 2 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x05, CMD_DDR, FLEXSPI_8PAD, 0xfa), [4 * 2 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, DUMMY_DDR, FLEXSPI_8PAD, 0x04), [4 * 2 + 2] = FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP_EXE, FLEXSPI_1PAD, 0x00), /* Write enable SPI *///06h [4 * 3 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP_EXE, FLEXSPI_1PAD, 0x00),//0x00000406, /* Write enable OPI SPI *///06h [4 * 4 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x06, CMD_DDR, FLEXSPI_8PAD, 0xF9), /* Erase sector */ [4 * 5 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x21, CMD_DDR, FLEXSPI_8PAD, 0xDE), [4 * 5 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, STOP_EXE, FLEXSPI_1PAD, 0x00), /*Write Configuration Register 2 =01, Enable OPI DDR mode*/ //72H +32bit address + CR20x00000000 = 0x01 [4 * 6 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x72, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000472, [4 * 6 + 1] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, CMD_SDR, FLEXSPI_1PAD, 0x00),//0x04000400, [4 * 6 + 2] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x00, WRITE_SDR, FLEXSPI_1PAD, 0x01),//0x20010400, /*Page program*/ [4 * 9 + 0] = FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0x12, CMD_DDR, FLEXSPI_8PAD, 0xED),//0x87ed8712, [4 * 9 + 1] = FLEXSPI_LUT_SEQ(RADDR_DDR, FLEXSPI_8PAD, 0x20, WRITE_DDR, FLEXSPI_8PAD, 0x04),//0xa3048b20, }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .serialNorType = 2, .reserve2[0] = 0x7008200, }; Re: Flash configuration confusion RT1176 Octal DDR こんにちは、 @SimonHugr さん。 DDRモードを使用する場合は、バイトスワッピングの設定も考慮する必要があることにご注意ください。この記事では、DDRモードを使用する際にMX25UM51245GXDI00のバイトスワッピングを考慮することがなぜ重要なのかについての役立つ情報を提供します。 FCBを生成するにはBoot Memory Configurationを使うことを強くお勧めします。 Secure Provisioning Tool v26.6はそのMX25UM51245Gのテンプレートを提供しており、構成の良い出発点として役立ちます。また、ご存知かもしれませんが、このツールを使用すると設定をテストできます。 さらに、このコミュニティ投稿、特に15番目の手順から始まる部分を参照することをお勧めします。そのセクションでは、セキュアプロビジョニングツールがブートメモリ構成を生成する方法についてより詳細な説明を提供しており、ツールによって生成されるパラメータと出力の理解に役立つ可能性があります。 最後に、flexspi_nor_polling_transfer_cm7例を使って生成されたFCBを検証し、読み書き操作が正しく動作しているか確認してから起動設定を進めることができます。 BR ハビブ Re: Flash configuration confusion RT1176 Octal DDR 残念ながらまだ結果は出ていません。やはり何らかのデータ順序の入れ替えが行われているか、どこかで設定バイトが不足しているのではないかと考えています。 Re: Flash configuration confusion RT1176 Octal DDR マスミセイムさん、ありがとうございます。 確かに、例えばデータを入れ替える必要があることに気づきました。もう一度LUTを確認してみます。 Re: Flash configuration confusion RT1176 Octal DDR このスレッドを参照して:https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Internal-Boot-from-Flash-memory-not-starting-on-imxRT1176-custom/m-p/1830699 Zephyr RTOSの指示に従って、ミスオプションを編集してデータの順序を入れ替えるべき https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L340-L355 データスワップバイトは挿入されるのですが、何か見落としているような気がします。 .pageSize = 256u, .sectorSize = 4u * 1024u, .blockSize = 64u * 1024u, .isUniformBlockSize = false, .ipcmdSerialClkFreq = 1, .isDataOrderSwapped = true .serialNorType = 2, .reserve2[0] = 0x7008200, Re: Flash configuration confusion RT1176 Octal DDR やあ、 @SimonHugr 、 まず最初に確認したいのは、MX25UM51245GとMX25UM51345Gの実際の違いです。部品番号は非常によく似ていますが、それらは同一の機器ではありません。Macronixのデータシートによると、MX25UM51345GはDOPI(Double Transfer Rate OPI)バイトモードのデータシーケンスを明示的にサポートしていますが、MX25UM51245Gは別の製品バリアントに属しています。これにより、FlexSPIコントローラで使用されるコマンドフォーマット、バイト順序、LUT構成に影響を与えることがあります。 私の設定も比較できます。MX25UM513とMX25UW6345G: https://github.com/Masmiseim36/Coremark_iMXRT/blob/master/XiP/flexspi_flash_OSPI_Macronix.c よろしく Re: Flash configuration confusion RT1176 Octal DDR こんにちは、ハビブ 私たちのファームウェアでは、セキュアプロビジョニングツールを使用してFCBを生成することができないため、代わりにFCBをファームウェアの起動時にロードする必要があります。そのため、mem_configおよびflash_config構造体を作成し、自分で設定する必要があります。 Zephyrプロジェクトがそのflash_nor_configでisDataOrderSwappedのバイトを参照していることを見つけました https://github.com/zephyrproject-rtos/hal_nxp/blob/3a36ee1f8b9fc2168fc0bf80377ace8298292993/mcux/mcux-sdk-ng/devices/RT/RT1170/MIMXRT1176/drivers/romapi/fsl_romapi.h#L347-L348 また、Claude は controllerMiscOption のビット 5 に padSettingOverride ビット、ビット 7 に dataSwap ビットを参照していますが、LLM がこの情報をかなり誇張しているかどうかはわかりません。 Secure Provisioningツールを使用してFCBを生成し、このツールを使用してC構造体に変換する場合 https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/i-MX-RT-FLEXSPI-booting-guide/ta-p/1669262 ビット5や7は設定されていないのでLLMが間違っていると思いますが、isDataSwappedは設定されていて、通常FCBでreserved0[0]として参照されています。 セキュアプロビジョニングツールでMX25UM51245Gのテンプレートは見つかりませんが、MX25U51245G(クアッドフラッシュ)、MX25UM51345G、MX25UMxxx45Gだけです。 しかし、私が試したどのオクタルDDR構成も起動できませんでした。 興味深いことに、BT_FUSE_SEL=1でピンBOOTMODE0/1=0であっても、特定の設定後に自動的にISPモードに入ることがよくあります。これは一貫して発生しているわけではなく、どの設定が原因なのか分かりません。 フラッシュの読み取りに失敗した後、MCUはISPモードに入るのでしょうか? よろしくお願い申し上げます。 BR Re: Flash configuration confusion RT1176 Octal DDR こんにちは、 @SimonHugr さん。 申し訳ございませんが、MX25UM51245Gのテンプレートはございません。MX25U51245GとMX25UM51345Gのみご利用いただけます。 ご説明いただいた内容から判断すると、現在のブートメモリ構成設定では、フラッシュデバイスとの通信は正常に機能しているようです。「完全なFCBに変換」をクリックすると、ツールは構成をフラッシュメモリに書き込み、その後、以下に説明するように、指定したパラメータを使用してそれを読み戻します。 Habib_MS_0-1784753481563.png 選択された設定のいずれかがフラッシュデバイスでサポートされていない場合、ツールは次のようなエラーを報告するはずです。 Habib_MS_1-1784753506390.png コミュニティ投稿でFCBコンバーターで生成されたLUTが正しく動作しているかさらに確認するために、flexspi_nor_polling_transfer_cm7 SDKの例で、内部RAMからアプリケーションを実行しながらテストしていただけますか?例について質問があれば教えてください。 さらに、起動しようとしているアプリケーションについてもう少し詳しく教えてもらえますか? -SDKの例ですか、それともご自身のアプリケーションですか? -どのIDEを使っていますか? -あなたのアプリケーションはXIPを実行していますか、それとも非XIPですか? -起動中以外でフラッシュにアクセスしていますか? ISPモードでの入りについてですが、カスタムボードのブートピンがハードウェア 開発MIMXRT1160ガイドの第5章「起動、リセット、その他」の推奨事項に従っているか確認していただけますか?これは、ブートピンに関するハードウェアの問題を回避するためです。 ご質問にお答えすると、有効なイメージが利用できない場合、ISPモードで入ることができます。図10-1のRMの「ブートフロー」に示されています。 Habib_MS_2-1784754516601.png BR ハビブ Re: Flash configuration confusion RT1176 Octal DDR こんにちは、ハビブさん。 少なくとも今は、8進数SPI STRモードを200MHzで動作させることができました。問題は、説明されていない「reserve2」バイトが何らかの魔法のような値で設定されていたことだった。また、デバイスモードシーケンスに加えて、追加のバイトを設定する構成コマンドシーケンスを設定することも選択しました。 バイトスワップを設定しても何も効果はありませんでしたが、200MHz STR Octalで達成できる速度には満足しています。 よろしくお願いいたします。
記事全体を表示
Android 14+ 性能问题(框架不稳) 你好: 我们使用的是基于 IMX8MP 的自定义板,在从 Android 11 升级到安卓 14 时注意到了一些性能问题。我们注意到,使用设备时,过渡和动画感觉很慢。 为了进行评估,我们在 IMX8MP EVK 板上进行了相同的测试。我们在查看设备的 gfxinfo 时发现,Janky 帧数、数字高输入延迟和 GPU 百分位数之间存在巨大差异。 安卓 11: Total frames rendered: 1372 Janky frames: 204 (14.87%) 50th percentile: 7ms 90th percentile: 34ms 95th percentile: 77ms 99th percentile: 200ms Number Missed Vsync: 91 Number High input latency: 274 Number Slow UI thread: 89 Number Slow bitmap uploads: 1 Number Slow issue draw commands: 61 Number Frame deadline missed: 145 50th gpu percentile: 2ms 90th gpu percentile: 3ms 95th gpu percentile: 3ms 99th gpu percentile: 4ms 安卓 14: Total frames rendered: 1136 Janky frames: 429 (37.76%) Janky frames (legacy): 600 (52.82%) 50th percentile: 29ms 90th percentile: 73ms 95th percentile: 113ms 99th percentile: 250ms Number Missed Vsync: 130 Number High input latency: 755 Number Slow UI thread: 254 Number Slow bitmap uploads: 3 Number Slow issue draw commands: 376 Number Frame deadline missed: 429 Number Frame deadline missed (legacy): 342 50th gpu percentile: 4ms 90th gpu percentile: 23ms 95th gpu percentile: 23ms 99th gpu percentile: 24ms 安卓 15: Total frames rendered: 1093 Janky frames: 318 (29.09%) Janky frames (legacy): 639 (58.46%) 50th percentile: 18ms 90th percentile: 97ms 95th percentile: 105ms 99th percentile: 109ms Number Missed Vsync: 221 Number High input latency: 1028 Number Slow UI thread: 145 Number Slow bitmap uploads: 0 Number Slow issue draw commands: 317 Number Frame deadline missed: 318 Number Frame deadline missed (legacy): 309 50th gpu percentile: 11ms 90th gpu percentile: 4950ms 95th gpu percentile: 4950ms 99th gpu percentile: 4950ms 这是否是一个已知问题,或者是否有解决这个问题的提示? Android Re: Android 14+ performance issues (Janky frames) 你好@JK-dev、 感谢您提供的数据,我们将在内部进行研究,并在有任何发现时给您回复。 Re: Android 14+ performance issues (Janky frames) 你好@JuanJorge_Mendoza, 我在 A16 和 A13 上进行了测试。 Android 16: Total frames rendered: 946 Janky frames: 414 (43.76%) Janky frames (legacy): 631 (66.70%) 50th percentile: 30ms 90th percentile: 113ms 95th percentile: 200ms 99th percentile: 350ms Number Missed Vsync: 180 Number High input latency: 764 Number Slow UI thread: 265 Number Slow bitmap uploads: 7 Number Slow issue draw commands: 384 Number Frame deadline missed: 414 Number Frame deadline missed (legacy): 366 50th gpu percentile: 11ms 90th gpu percentile: 4950ms 95th gpu percentile: 4950ms 99th gpu percentile: 4950ms 安卓 13: Total frames rendered: 1000 Janky frames: 284 (28.40%) Janky frames (legacy): 397 (39.70%) 50th percentile: 12ms 90th percentile: 69ms 95th percentile: 129ms 99th percentile: 250ms Number Missed Vsync: 122 Number High input latency: 446 Number Slow UI thread: 176 Number Slow bitmap uploads: 1 Number Slow issue draw commands: 242 Number Frame deadline missed: 284 Number Frame deadline missed (legacy): 248 50th gpu percentile: 3ms 90th gpu percentile: 23ms 95th gpu percentile: 24ms 99th gpu percentile: 4950ms Re: Android 14+ performance issues (Janky frames) 你好@JK-dev、 是的,请进行同样的测试并转发结果。 Juan Jorge Re: Android 14+ performance issues (Janky frames) 您好@JuanJorge_Mendoza, 感谢您的回复!作为对 Janky 帧的测试,我们刚刚启动系统并重启过一次,因此我们没有遇到任何由首次启动优化导致的问题,因此我们在 “设置” 应用程序中四处移动。然后,我们通过 gfxinfos 读出: adb shell dumpsys gfxinfo 如果你说这是一个有效的测试,我很乐意在 A12、A13 和 A16 上进行测试。 Re: Android 14+ performance issues (Janky frames) 你好@JK-dev、 不,这应该不是问题。 您能分享一下用于测试 Janky 框架的测试方法吗?另外,如果可能的话,能否请您在 A12 和 A13 上进行同样的测试?这将有助于我们追踪问题开始出现的位置。 Juan Jorge Re: Android 14+ performance issues (Janky frames) 你好@danielchen、 显示屏只支持一种分辨率,即 720p。我想这应该不是问题。 Re: Android 14+ performance issues (Janky frames) 你好@JK-dev 您使用的显示器分辨率是多少? 请检查降低它是否有助于减少 GPU/CPU 负载并提高整体性能。 Re: Android 14+ performance issues (Janky frames) @danielchen感谢您的回复。我之前看过这篇文章,但据我理解,这意味着如果我们使用用户版本而不是userdebug版本,问题应该消失;但是,情况并非如此。对我们来说,用户和 userdebug 镜像似乎是一样的;有没有其他方法可以关闭整个系统的可调试功能? Re: Android 14+ performance issues (Janky frames) 你好@JK-dev 是的,这是 i.mx8mp 在 Android 14+ 上的已知问题。 Android 14+ 为调试程序提供了更广泛的跟踪和内存追踪功能,这可能会使渲染速度比以前的版本慢 1.5-2 倍。 这会影响 UI 线程、GPU 调度和输入延迟。 有关快速解决方法和更多信息,请参阅以下链接。 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/Low-Performance-on-Android-14/ta-p/1991262 此致 丹尼尔 Re: Android 14+ performance issues (Janky frames) 你好@JK-dev、 很抱歉这么晚才回复,我们花了一些时间来优化 800 万像素的图形用户界面。 补丁"0001-MA-22638-Update-expected-present-time-to-optimize-re.patch" 用于优化 framework/native 中的刷新率。需要在 vendor/nxp-opensource/imx 中应用另外两个补丁程序   如果这能解决你的问题,请与我们联系 Re: Android 14+ performance issues (Janky frames) 您好@JuanJorge_Mendoza, 很抱歉回复晚了,我当时在度假。谢谢你的补丁!我们测试了您的补丁,可以看到在导航时略有改进。 但是,当需要更高的负载或更多的动画时,系统仍然非常滞后,而且大多数帧到达的时间都太晚了。举例来说,要重现这种情况,你可以进入设置 -> Apps -> All Apps -> Include System Apps,然后在列表中滚动。您会发现,超过 50% 的帧都是迟交的。 Re: Android 14+ performance issues (Janky frames) 当需要更高的负载或更多的动画时 > 是否比以前更糟? 是否有使用该补丁和不使用该补丁的具体性能比较数据? Re: Android 14+ performance issues (Janky frames) 嘿@joanxie, 没有,性能比以前稍好一些。 没有补丁 Total frames rendered: 1015 Janky frames: 376 (37.04%) Janky frames (legacy): 731 (72.02%) 50th percentile: 31ms 90th percentile: 150ms 95th percentile: 200ms 99th percentile: 400ms Number Missed Vsync: 262 Number High input latency: 1167 Number Slow UI thread: 368 Number Slow bitmap uploads: 1 Number Slow issue draw commands: 26 Number Frame deadline missed: 376 Number Frame deadline missed (legacy): 386 50th gpu percentile: 4ms 90th gpu percentile: 11ms 95th gpu percentile: 11ms 99th gpu percentile: 12ms 有了补丁 Total frames rendered: 2078 Janky frames: 594 (28.59%) Janky frames (legacy): 1050 (50.53%) 50th percentile: 21ms 90th percentile: 133ms 95th percentile: 200ms 99th percentile: 400ms Number Missed Vsync: 367 Number High input latency: 2045 Number Slow UI thread: 567 Number Slow bitmap uploads: 4 Number Slow issue draw commands: 68 Number Frame deadline missed: 594 Number Frame deadline missed (legacy): 580 50th gpu percentile: 4ms 90th gpu percentile: 11ms 95th gpu percentile: 11ms 99th gpu percentile: 12ms 正如您所看到的,补丁减少了 Janky 帧的数量,50% % 的情况有所改善,但仍然不够。 Re: Android 14+ performance issues (Janky frames) 您是通过用户界面进行操作的吗? 如果是,您有脚本或其他特定步骤吗?然后,我就可以转发给安卓团队,以便进一步验证和调试 Re: Android 14+ performance issues (Janky frames) 嘿@joanxie、 这与我们之前做的测试基本相同。对 Android 团队来说,怎样的测试才算足够? Re: Android 14+ performance issues (Janky frames) 他们希望您能给他们一个运行性能测试的脚本,并显示详细的性能下降数据,这样他们就能重现这种情况,因为他们在自己这边没有发现同样的问题 Re: Android 14+ performance issues (Janky frames) 这个问题现在已经有了解决方案: https://www.linkedin.com/posts/kalkov_embeddedandroid-nxp-aosp-share-7490309949391089664-ifxq/?utm_source=share&utm_medium=member_desktop&rcm=ACoAADU1d0wBcGPG6tNYlHxJaSFzHqMEI3XBUJY https://emteria.com/blog/nxp-imx8m-plus-android-scroll-fix
記事全体を表示
IMX8MP 片上 RAM 存储器访问 你好, 我想学习如何访问 OCRAM 来读取内存中的数据。 请问有人知道如何在Linux Cortex A-53上实现这个功能吗? 片上内存 - OCRAM(576 KB) 起始地址:0x00900000 -> 保留给 ROM 起始地址:0x00918000 -> OCRAM 空闲区 结束地址:0x0097FFFF https://www.nxp.com/webapp/Download?colCode=IMX8MPRM 谢谢! IMX8MPLUS i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus Linux Yocto Project Re: IMX8MP On chip RAM memory access 你好,Roman Luz, 这个方法对你有用吗? 问候, 斯特凡诺·吉利 Re: IMX8MP On chip RAM memory access 嗨@Roman_Loz ,你可以尝试添加 compatible = "shared-dma-pool"; 应该就可以了。 ocram_dma: ocram_dma@970000 { no-map; compatible = "shared-dma-pool"; reg = <0 0x970000 0 0xC00>; // 3KB }; 此致, 萨姆希塔·卡什亚普 Re: IMX8MP On chip RAM memory access 你好, 我尝试按照您建议的方式使用 OCRAM,但是当我尝试向其中进行 memcpy 操作时,出现了内核崩溃。 请问您能否帮我分析一下我哪里做错了或者漏掉了什么? dtsi: resmem: reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; ocram: ocram@900000 { no-map; reg = <0 0x900000 0 0x70000>; }; ocram_dma: ocram_dma@970000 { no-map; reg = <0 0x970000 0 0xC00>; // 3KB }; ... 模块初始化: // Find the OCRAM DMA node by name np = of_find_node_by_name(NULL, "ocram_dma"); if (!np) { pr_err("Failed to find OCRAM DMA node in device tree\n"); return -ENODEV; } // Lookup the reserved memory region rmem = of_reserved_mem_lookup(np); if (!rmem) { pr_err("Failed to lookup reserved memory for OCRAM DMA\n"); return -ENODEV; } // Map the reserved memory region ocram_dma_base = ioremap(rmem->base, rmem->size); if (!ocram_dma_base) { pr_err("Failed to map OCRAM DMA memory\n"); return -ENOMEM; } 复制: memcpy(current_address, mv->A, MATRIX_STRUCT_SIZE);   Re: IMX8MP On chip RAM memory access 你好@Samhitha_Kashyap , 请注意,NXP不建议对节点进行448 KB OCRAM空间的修改,因为其他驱动已使用该空间。 可以通过兼容的 =“共享 dma-pool” 属性,在0x970000后使用内存区域支持 DMA。 谢谢 & 此致敬礼 桑凯特·帕雷克 Re: IMX8MP On chip RAM memory access 你好@Sanket_Parekh , 谢谢你的回复,很有帮助! 如果我不能将 448 KB OCRAM 空间用于用户应用程序,我是否可以修改设备树以支持 DMA? 谢谢,此致敬礼! 萨姆希塔·卡什亚普 Re: IMX8MP On chip RAM memory access 你好@Samhitha_Kashyap , 希望你一切都好。   您可以通过查看SoC的dtsi文件(保留内存节点)来确定OCRAM中Linux内核为自身保留了多少内存。 以 imx8mp 为例,大小为 448 KB。   resmem:保留内存 { #address-cells = <2>; #size-cells = <2>; 范围; ocram: ocram@900000 { 无地图; reg = <0 0x900000 0 0x70000>; };   ..... .....   }   因此,这里保留了 0x70000 ( 448K) 字节供 Linux 使用。并且不能按照 no-map 属性指定的方式虚拟映射到用户空间。 在 0x7000 字节之后,您可以将其用于其他应用程序。 但您需要确保任何 M7 核心应用程序不使用 OCRAM。这可以通过查看特定应用程序的链接器脚本来确定。   谢谢 & 此致敬礼 桑凯特·帕雷克   Re: IMX8MP On chip RAM memory access 你好,Sanket, 能否查明 Linux 系统占用了多少内存,以及剩余的内存可供用户应用程序使用? 如果可行,我该如何验证这一点,并为我的应用程序分配剩余内存? 谢谢,此致敬礼! 萨姆希塔·卡什亚普 Re: IMX8MP On chip RAM memory access 你好@Samhitha_Kashyap 希望你一切都好。 要访问 OCRAM,首先需要确保您不会尝试访问 ATF 使用的区域。 对于 u-boot,可以使用 md/mw 命令直接访问 OCRAM。 不建议在用户空间中使用 OCRAM,因为 Linux 本身就使用了它。 谢谢 & 此致敬礼 桑凯特·帕雷克
記事全体を表示
DFARS Country-of-Origin / Qualifying-Country Compliance for S32K3 Series MCUs Hi all, I'm evaluating NXP S32K3 family MCUs for a program that requires DFARS-compliant sourcing, and I'm hoping someone here can help point me in the right direction or has dealt with this before. Specifically, I'm trying to confirm: Country of manufacture/assembly (wafer fab and package/test locations) for specific S32K3 part numbers — compliance is generally tied to whether the part is manufactured in a DFARS "qualifying country" per DFARS 252.225-7002 (Qualifying Country Sources as Subcontractors), so I need this at the part-number/package level rather than a general "NXP is compliant" statement. Whether NXP can issue a Certificate of Origin (COO) or formal DFARS compliance statement for specific parts. Whether there's a TAA compliance letter available as well, since that may also apply to our program. Parts of interest (open to alternatives that fit the same tier): S32K344 S32K358 S32K314 We're targeting MCUs with ≥512 kB flash, ≥128 kB RAM, so I'm mainly looking at the higher-memory S32K3 variants, but happy to hear if other S32K3 family members (or the broader S32K1/S32K2 lines) are better documented for compliance purposes. Questions for the community: Has anyone successfully obtained COO/DFARS documentation directly from NXP for S32K3 parts? If so, who did you work with (FAE, distributor, quality team)? Is this something NXP publishes at all, or is it always a case-by-case request per part/date code? Are there specific S32K3 part numbers or packages known to be sourced from DFARS-qualifying countries vs. others that aren't? Given S32K3 is heavily positioned for automotive/industrial safety applications, has anyone had experience getting compliance docs for defense-adjacent programs specifically? I understand this may not be something community engineers have direct access to, so if there's a better channel (regional FAE, distributor compliance desk, etc.) I should be routing this to instead, please point me there. Appreciate any guidance! Thanks! Re: DFARS Country-of-Origin / Qualifying-Country Compliance for S32K3 Series MCUs Hi @dbow12, We do not have this information publicly available. For COO inquiries, you may contact [email protected]. For any export control inquiries, contact [email protected]. However, I would recommend contacting your local distributor first, they should be able to assist you in this regard. Regards, Daniel 
記事全体を表示
RTD 5 LCU Instance Selection Issue in S32DS 3.5 & 3.6 Hello, I'm experiencing an issue with RTD 5 when configuring the LCU module. Specifically, when I select Instance -> 1 in LCU, it throws an error (please refer to the image below). There are no other changes made, and this configuration works fine in RTD 4. Additionally, after pressing "OK," it does not allow adding more than one LCU Output Physical — the "+" button in the peripherals section becomes unresponsive. I’ve verified this behavior in both S32 Design Studio v3.5 and v3.6, and the issue persists in both versions. Could you please look into this? Thank you. GaneshBhagwat_0-1747153496378.png Re: RTD 5 LCU Instance Selection Issue in S32DS 3.5 & 3.6 Info: I am using S32DS 3.6.10 with RTD 7.0.1 Re: RTD 5 LCU Instance Selection Issue in S32DS 3.5 & 3.6 Yeah, this is the same workaround I was using as well. I keep LCU_IP_HW_INST_0 in the configuration while setting everything up, even though it is not used, and then remove Instance 0 at the end. NXP did suggest updating/reinstalling the RTD, but that did not resolve this particular issue. The post was eventually closed, so I’m not sure if this was fixed in a later S32DS/RTD version. I saw the issue in both S32DS 3.5 and 3.6. Thanks for adding this to the community @Micha4566465 . It’s useful to have the workaround here so others can refer to it if they run into the same issue. Re: RTD 5 LCU Instance Selection Issue in S32DS 3.5 & 3.6 Hi,  I have this issue, too. The issue only appears, when using LCU Hardware Instance LCU_IP_HW_INST_1 as only instance in "LCU Logic Instance"-Item. If you keep the LCU_IP_HW_INST_0 beside the LCU_IP_HW_INST_1, although it will not be used, there is no problem. Re: RTD 5 LCU Instance Selection Issue in S32DS 3.5 & 3.6 this updated version works Re: RTD 5 LCU Instance Selection Issue in S32DS 3.5 & 3.6 Hello, here is what i see when configure Instance 1: petervlna_0-1747643560745.png petervlna_1-1747643582258.png petervlna_2-1747643595174.png I do not see any issue. Best regards, Peter Re: RTD 5 LCU Instance Selection Issue in S32DS 3.5 & 3.6 Thanks for the responses! I tried the suggestions you provided — things are working better now. I'm able to add the LCU instance, which is good progress. However, I  the issue only occurs when selecting hardware instance 1(as mentioned before). In the image you shared, it shows instance 0, which doesn't seem to have the same problem. Occasionally, an error still pops up when working with instance 1, but it's not a blocker since I can exit it without any functional impact. Could you please confirm if this is a known issue in RTD v5, or if it might be related to something else? Also, if there's a fix or recommended workaround, that would be helpful. GaneshBhagwat_0-1747411796726.png Re: RTD 5 LCU Instance Selection Issue in S32DS 3.5 & 3.6 Hello, I have just tried it in S32DS 3.5. with RTD 5.0.0. and I do not see such issue: petervlna_0-1747204418272.png The error seem to be tied to your installation. petervlna_1-1747204502521.png Since the issue is also present in S32DS 3.6 I suggest to reinstall the RTD pluggin and intall the latest update of RTD 5..0.0.HF1 petervlna_2-1747204648293.png But the fact is that I am using much older release and do not see the issues. It can also be linked to S32DS GUI. Maybe it is somehow corrupted or has restricted access to the configuration in LPC. Best regards, Peter
記事全体を表示