Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
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”后,该工具会将配置编程到闪存中,然后使用您指定的参数将其读取回来,如下所述: 如果所选设置中有任何一项不被闪存设备支持,该工具应报告类似于以下内容的错误: 为了进一步验证社区帖子中提到的使用 FCB 变流器生成的 LUT 是否正常工作,请您在从内部 RAM 运行应用程序时,使用 flexspi_nor_polling_transfer_cm7 SDK 示例进行测试。如果您对示例有任何疑问,请随时联系我。 此外,您能否提供一些关于您尝试启动的应用程序的更多详细信息? -这是 SDK 示例还是您自己的应用程序? 你使用的是哪个集成开发环境(IDE)? -您的应用程序是执行 XIP 还是非 XIP? -除了启动过程之外,您是否在任何其他阶段访问过闪存? 关于进入 ISP 模式,请确保您的定制板上的启动引脚符合MIMXRT1160/1170 硬件开发指南第 5 章“启动、复位和其他”中提到的建议?这样做是为了避免与启动引脚相关的任何硬件问题。 回答您的问题,如果没有有效的镜像文件,您可以进入ISP模式,如图10-1所示的RM“启动流程”: BR 哈比卜
查看全文
RT1010/RT1011 FLEXIO EDMA 我使用 iMX RT1011 Nano 套件 不错的板 我尝试从移位器 0 设置 8 位并行的 EDMA Flexio。 定时器 0 设置为 30MHz,EDMA 发送 512 字节(每个请求 1 字节) 代码: FLEXIO_DEV->SHIFTCTL[TX_SHIFTER] = FLEXIO_SHIFTCTL_TIMSEL(WR_TIMER) | FLEXIO_SHIFTCTL_TIMPOL(0U) | FLEXIO_SHIFTCTL_PINCFG(3U) /* 输出 */ | FLEXIO_SHIFTCTL_PINSEL(DATA_PIN_START) | FLEXIO_SHIFTCTL_PINPOL(0U) | FLEXIO_SHIFTCTL_SMOD(2U); /* 传输 */ /* 定时器0:写保护选通,每字节一个脉冲 * TIMCMP 低字节 = (flexio_clk / (2*wr_clk)) - 1 * TIMCMP[15:8] = (beats*2)-1 = 1,表示每次移位加载一个字节 */ timDiv = (flexioClk_Hz / (2U * wrClock_Hz)); 如果 (timDiv != 0U) { timDiv -= 1U; } timDiv &= 0xFFU; FLEXIO_DEV->TIMCMP[WR_TIMER] = (1U << 8U) | FLEXIO_DEV->TIMCMP[WR_TIMER] = (1U << 8U) |蒂姆迪夫; FLEXIO_DEV->TIMCFG[WR_TIMER] = FLEXIO_TIMCFG_TIMOUT(1U) | FLEXIO_TIMCFG_TIMDEC(0U) | FLEXIO_TIMCFG_TIMRST(0U) | FLEXIO_TIMCFG_TIMDIS(2U) /* 禁用比较 */ | FLEXIO_TIMCFG_TIMENA(2U) /* 高触发时启用 */ | FLEXIO_TIMCFG_TSTOP(0U) | FLEXIO_TIMCFG_TSTART(0U); FLEXIO_DEV->TIMCTL[WR_TIMER] = FLEXIO_TIMCTL_TRGSEL((4U * TX_SHIFTER) + 1U) /* Shifter0 标志 */ | FLEXIO_TIMCTL_TRGPOL(1U) /* 低电平有效 */ | FLEXIO_TIMCTL_TRGSRC(1U) /* 内部 */ | FLEXIO_TIMCTL_PINCFG(3U) /* 输出 */ | FLEXIO_TIMCTL_PINSEL(WR_PIN) | FLEXIO_TIMCTL_PINPOL(1U) /* WR 低电平有效 */ | FLEXIO_TIMCTL_TIMOD(1U); /* 双 8 位波特率/位 */ /* 启用来自 Shifter0 的 DMA 请求 */ FLEXIO_DEV->SHIFTSDEN |= (1U << TX_SHIFTER); /* 启用 FlexIO */ FLEXIO_DEV->CTRL |= FLEXIO_CTRL_FLEXEN_MASK; 我在逻辑分析仪上看到了信号。 看起来和我预期的一样,但我在某些 512 包中发现数据缺失。 我的意思是,比如先发送 200 字节,然后停止,之后再发送所有 512 个字节。 扎希 Re: RT1010/RT1011 FLEXIO EDMA 你好@TZAHI , 非常感谢您对我们产品的关注以及对我们社区的使用。 最有可能的检查方向是:在 30 MHz WR 时钟下,eDMA 能否足够快地持续填充 FlexIO SHIFTBUF。 在当前每次请求传输一个字节的配置下,DMA 请求速率可能会非常高。这对于 eDMA、总线仲裁和 FlexIO SHIFTBUF 重新填充时间来说可能非常紧张。 一个可能的症状是变速箱换挡器运转不畅。请在传输失败后立即检查 SHIFTERR,然后再重新初始化或清除 FlexIO: 如果可能的话,请尝试提高 CPU/总线时钟频率,或者将 WR 时钟频率降低到 30 MHz 以下,例如降低到 20 MHz 或 10 MHz。如果传输在较低的 WR 时钟频率下变得稳定,则强烈表明该问题与 DMA/FlexIO 的重新填充时序有关。 希望对你有帮助 顺祝商祺! 5月
查看全文
LPC54113 Power API 「power」関数のAPIの使い方を知りたいです。SDKを通じて、この関数は特定の関数に直接使えることがわかりました。しかし、iap APIとは異なり、エントリーポイントや使用方法に関する説明は提供されていません。 LPC541XX Re: LPC54113 Power API こんにちは、 @jcxzさん はい、おっしゃる通りです。 POWER APIのより詳細な説明を含む他のSDKを参照することもできます。 BR アリス Re: LPC54113 Power API 54シリーズの他のチップのSDKsをダウンロードすることで、私はPOWER_TypeとPOWER_BASEを見つけることができました。ありがとうございます。 Re: LPC54113 Power API 私のLPC54S018はNXPのウェブサイトからSDKをダウンロードしました。PowerAPI、ClockAPIなどの機能が含まれています。 例えば、POWER_SetVoltageForFreq(...) など。 また、API関数を呼び出すためのエントリーポイントとプロトタイプについても説明しています。 LPC54113についても同様だと思います。
查看全文
LX2160A:接收器上未使用的 SerDes 通道的下拉值 你好, 芯片: LX2160A 应用笔记 AN5407 规定,如果未使用 SerDes 通道,则应将其下拉: 如果某些 SerDes 通道未连接,请将其接收器引脚拉低至 GND。 请问下拉菜单的值是多少?或者我应该将接收器引脚直接连接到 GND? 谢谢。 Re: LX2160A: Pull down value on receiver for SerDes lanes not used 你好, AN5407 中的“将接收器引脚拉低至 GND”的说法故意含糊不清——NXP 的澄清是,直接将 0 Ω 连接到 GND 是正确且首选的方法。 SerDes 掉电 即使 RX 引脚连接到 GND,如果 SerDes 模块仍然通电,AN5407 还建议通过固件掉电未使用的通道:在 PBI 阶段配置通用控制 0 寄存器以掉电未使用的 SerDes 通道。如果整个 SerDes 模块已经掉电,则无需单独掉电各个通道。 此致
查看全文
如何使用 S32 设计工作室 MCP 集成 如何使用S32 Design Studio MCP集成?是否有相关资料和文档? Re: How to use S32 Design Studio MCP Integration 你好, 遗憾的是,相关文档和使用示例仍在开发中。我希望它能尽快对外发布,但不知道具体日期。
查看全文
フラッシュ構成の混乱 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に変換」をクリックすると、ツールは構成をフラッシュメモリに書き込み、その後、以下に説明するように、指定したパラメータを使用してそれを読み戻します。 選択された設定のいずれかがフラッシュデバイスでサポートされていない場合、ツールは次のようなエラーを報告するはずです。 コミュニティ投稿でFCBコンバーターで生成されたLUTが正しく動作しているかさらに確認するために、flexspi_nor_polling_transfer_cm7 SDKの例で、内部RAMからアプリケーションを実行しながらテストしていただけますか?例について質問があれば教えてください。 さらに、起動しようとしているアプリケーションについてもう少し詳しく教えてもらえますか? -SDKの例ですか、それともご自身のアプリケーションですか? -どのIDEを使っていますか? -あなたのアプリケーションはXIPを実行していますか、それとも非XIPですか? -起動中以外でフラッシュにアクセスしていますか? ISPモードでの入りについてですが、カスタムボードのブートピンがハードウェア 開発MIMXRT1160ガイドの第5章「起動、リセット、その他」の推奨事項に従っているか確認していただけますか?これは、ブートピンに関するハードウェアの問題を回避するためです。 ご質問にお答えすると、有効なイメージが利用できない場合、ISPモードで入ることができます。図10-1のRMの「ブートフロー」に示されています。 BR ハビブ
查看全文
ELEはホストがアクセスできない非揮発性ストレージに鍵を保持できますか? こんにちは、 EdgeLock セキュア・エンクレーブ(ELE)での永続キー保存についてお尋ねしたいです。 私の理解によると、ELEが暗号操作に使用する鍵は、キーストレージサービスを使って永続的に保存できます。私が理解している典型的な流れは以下のとおりです。 1. 対象キーのキーブロブを作成し、ホストにエクスポートします。 2. エクスポートしたキーブロブをフラッシュメモリなどの不揮発性メモリに保存します。 3. 暗号化操作に鍵が必要な場合は、キーブロブをインポートし、ELE を介して鍵を使用します。 この方法では、キーブロブはELEによって生成されるため、ホストは実際のキー素材を読み取ることができません。しかし、Flashではキーブロブ自体がホストに保存されているため、ホストはキーブロブを削除したり上書きしたりできるようです。 私の質問は次のとおりです。 ELEからはアクセス可能だがホストからはアクセスできない不揮発性ストレージ領域に鍵(またはそのキーブロブ)を保存する方法はありますか?これにより、鍵マテリアルやキーブロブがホストに一切公開されることなく、ELEが暗号化操作を実行できるようになります。 言い換えれば、ELEが永続的なキーストレージを完全にセキュアな領域内で所有および管理し、ホストがキーやキーブロブを直接扱うことがないようにすることは可能でしょうか? ご指導をよろしくお願いいたします。 Re: Can ELE Retain Keys in Host-Inaccessible Non-Volatile Storage? こんにちは、 @t_hosomi さん。お元気でお過ごしでしょうか。 NVMフローにおける鍵の生成と保存に関するあなたの理解は正しいです。 しかし、ELEには不揮発性メモリがないため(SRMのセクション10.3.1に記載されているとおり)、サポートされている唯一の方法は、エクスポートされたキーブロブをホストのNVMに保存することです。 この情報がお役に立てば幸いです。 Re: Can ELE Retain Keys in Host-Inaccessible Non-Volatile Storage? こんにちは、RomanVRさん。 ご回答ありがとうございます。 ELE自体は不揮発性ストレージを提供しないため、永続的なキーデータはホストの不揮発性メモリに保存する必要があることを理解しています。 この点を明確にしていただきありがとうございます。
查看全文
Clarification on eMIOS DMA Request Mapping Hello Team, I am currently using eMIOS1_CH13 for the LiPS sensor in DMA mode. The configuration uses DMA Channel 0 and DMAMUX0. While reviewing the S32K3xx DMAMUX mapping Excel, I observed that for eMIOS1, only DMA requests 0, 1, 9, and 10 are listed under DMAMUX0. However, my application is configured to use eMIOS1_CH13. Could you please clarify the following: Which DMA request source should be used for eMIOS1_CH13? Does eMIOS1_CH13 support DMA triggering, or is DMA support limited to the eMIOS channels corresponding to DMA requests 0, 1, 9, and 10? Thank you for your support. Best regards, Jyothsna Sagili Re: Clarification on eMIOS DMA Request Mapping Hi, according to the S32K3 DMAMUX mapping, eMIOS provides DMA request sources only for channels 0, 1, 9, 10, 16, 17, 18, and 19. These are the only eMIOS channels that can generate DMA requests. Since eMIOS1_CH13 is not one of these channels, it does not have a dedicated DMA request source in DMAMUX and cannot directly trigger eDMA transfers. If DMA triggering is required, please use one of the eMIOS channels associated with the available DMA request sources (0, 1, 9, 10, 16, 17, 18, or 19). BR, Petr
查看全文
关于 eMIOS DMA 请求映射的说明 各位同事好, 我目前在 DMA 模式下使用 eMIOS1_CH13 连接 LiPS 传感器。该配置使用 DMA 通道 0 和 DMAMUX0。 在查看 S32K3xx DMAMUX 映射 Excel 时,我发现对于 eMIOS1,DMAMUX0 下只列出了 DMA 请求 0、1、9 和 10。但是,我的应用程序配置为使用 eMIOS1_CH13。 请您澄清以下问题: eMIOS1_CH13 应该使用哪个 DMA 请求源? eMIOS1_CH13 是否支持 DMA 触发,还是 DMA 支持仅限于与 DMA 请求 0、1、9 和 10 对应的 eMIOS 通道? 感谢您的支持。 顺祝商祺! 乔斯纳·萨吉利 Re: Clarification on eMIOS DMA Request Mapping 您好, 根据 S32K3 DMAMUX 映射,eMIOS 仅为通道 0、1、9、10、16、17、18 和 19 提供 DMA 请求源。只有这些 eMIOS 通道才能生成 DMA 请求。 由于 eMIOS1_CH13 不是这些通道之一,因此它在 DMAMUX 中没有专用的 DMA 请求源,不能直接触发 eDMA 传输。如果需要 DMA 触发,请使用与可用 DMA 请求源(0、1、9、10、16、17、18 或 19)关联的 eMIOS 通道之一。 BR,彼得
查看全文
eMIOS DMA要求マッピングに関する説明 こんにちは、チームの皆さん、 現在、LiPSセンサのDMAモードではeMIOS1_CH13を使っています。この構成はDMAチャネル0とDMAMUX0を使用します。 S32K3xx DMAMUXマッピングExcelをレビューしていると、eMIOS1ではDMA要求0、1、9、10のみが記載されていることに気づきましたDMAMUX0。しかし、私のアプリケーションはeMIOS1_CH13を使うように設定されています。 以下の点を明確にしていただけますか? どのDMA要求ソースを使うべきかeMIOS1_CH13? eMIOS1_CH13 DMAトリガーをサポートしていますか?それともDMAはDMAリクエスト0、1、9、10に対応するeMIOSチャネルに限定されているのでしょうか? ご支援ありがとうございます。 よろしくお願いいたします。 ジョツナ・サギリ Re: Clarification on eMIOS DMA Request Mapping こんにちは、 S32K3 DMAMUXマッピングによると、eMIOSはチャネル0、1、9、10、16、17、18、19に対してのみDMAリクエストソースを提供します。これらはDMA要求を生成できる唯一のeMIOSチャネルです。 eMIOS1_CH13はこれらのチャネルの一つではないため、DMAMUX内に専用のDMA要求ソースがなく、eDMA転送を直接トリガーすることはできません。DMAトリガーが必要な場合は、利用可能なDMAリクエストソースに関連するeMIOSチャネルのいずれか(0、1、9、10、16、17、18、または19)を使用してください。 BR、ペトル
查看全文
LPC54113 Power API I would like to know how to use the API of the "power" function. Through the SDK, I found that this function can be directly use on certain functions. However, unlike the iap API, there is no provided entry point or instructions on how to use it. LPC541XX  Re: LPC54113 Power API Hi @jcxz  Yes, you are correct. You can refer to other SDKs that contain more detailed description for the POWER APIs. BR Alice Re: LPC54113 Power API By downloading the SDKs of other chips in the 54 series, I was able to find POWER_Type and POWER_BASE.Thank you. Re: LPC54113 Power API For my LPC54S018, I downloaded the SDK from the NXP website. It includes functions of PowerAPI, ClockAPI, and so on. For example: POWER_SetVoltageForFreq(...), etc. It also describes the entry points and prototypes for calling the API functions. I think it's similar for the LPC54113.
查看全文
RT1010/RT1011 FLEXIO EDMA i work with iMX RT1011 Nano Kit nice board i try to setup edma flexio for 8bit parallel from shifter 0 timer 0 set to 30mhz edma sent 512bytes (one per request ) code: FLEXIO_DEV->SHIFTCTL[TX_SHIFTER] = FLEXIO_SHIFTCTL_TIMSEL(WR_TIMER) | FLEXIO_SHIFTCTL_TIMPOL(0U) | FLEXIO_SHIFTCTL_PINCFG(3U) /* output */ | FLEXIO_SHIFTCTL_PINSEL(DATA_PIN_START) | FLEXIO_SHIFTCTL_PINPOL(0U) | FLEXIO_SHIFTCTL_SMOD(2U); /* transmit */ /* Timer0: WR strobe, one pulse per byte * TIMCMP low byte = (flexio_clk / (2*wr_clk)) - 1 * TIMCMP[15:8] = (beats*2)-1 = 1 for one byte per shifter load */ timDiv = (flexioClk_Hz / (2U * wrClock_Hz)); if (timDiv != 0U) { timDiv -= 1U; } timDiv &= 0xFFU; FLEXIO_DEV->TIMCMP[WR_TIMER] = (1U << 8U) | timDiv; FLEXIO_DEV->TIMCFG[WR_TIMER] = FLEXIO_TIMCFG_TIMOUT(1U) | FLEXIO_TIMCFG_TIMDEC(0U) | FLEXIO_TIMCFG_TIMRST(0U) | FLEXIO_TIMCFG_TIMDIS(2U) /* disable on compare */ | FLEXIO_TIMCFG_TIMENA(2U) /* enable on trigger high */ | FLEXIO_TIMCFG_TSTOP(0U) | FLEXIO_TIMCFG_TSTART(0U); FLEXIO_DEV->TIMCTL[WR_TIMER] = FLEXIO_TIMCTL_TRGSEL((4U * TX_SHIFTER) + 1U) /* Shifter0 flag */ | FLEXIO_TIMCTL_TRGPOL(1U) /* active low */ | FLEXIO_TIMCTL_TRGSRC(1U) /* internal */ | FLEXIO_TIMCTL_PINCFG(3U) /* output */ | FLEXIO_TIMCTL_PINSEL(WR_PIN) | FLEXIO_TIMCTL_PINPOL(1U) /* WR active low */ | FLEXIO_TIMCTL_TIMOD(1U); /* dual 8-bit baud/bit */ /* Enable DMA request from Shifter0 */ FLEXIO_DEV->SHIFTSDEN |= (1U << TX_SHIFTER); /* Enable FlexIO */ FLEXIO_DEV->CTRL |= FLEXIO_CTRL_FLEXEN_MASK; i saw the signal on the logic analyzer look like what i am except  but i get missing data in some 512 pack i mean send for example 200bytes and stop after that send ok all the 512 tzahi Re: RT1010/RT1011 FLEXIO EDMA Hi @TZAHI , Thank you so much for your interest in our products and for using our community. The most likely direction to check is whether the eDMA can continuously refill the FlexIO SHIFTBUF fast enough at the 30 MHz WR clock. With the current one-byte-per-request style configuration, the DMA request rate may be very high. This can be tight for eDMA, bus arbitration, and the FlexIO SHIFTBUF refill timing. A likely symptom is TX shifter underrun. Please first check SHIFTERR immediately after the failed transfer, before reinitializing or clearing FlexIO: Please also try increasing the CPU/bus clock if possible, or reducing the WR clock below 30 MHz, for example to 20 MHz or 10 MHz. If the transfer becomes stable at a lower WR clock, it would strongly indicate that the issue is related to DMA/FlexIO refill timing. Wish it helps you Best Regards May
查看全文
Can ELE Retain Keys in Host-Inaccessible Non-Volatile Storage? Hi, I would like to ask about persistent key storage for use with the EdgeLock Secure Enclave (ELE). Based on my understanding of the KW47 Security Reference Manual, keys used by ELE for cryptographic operations can be stored persistently using the Key Storage Services. My understanding of the typical flow is as follows: 1. Create a Key Blob for the target key and export it to the host. 2. Store the exported Key Blob in non-volatile memory such as Flash. 3. When the key is needed for a cryptographic operation, import the Key Blob and use the key through ELE. In this approach, the Key Blob is generated by ELE, so the host cannot read the actual key material. However, since the Key Blob itself is stored by the host in Flash, it appears that the host could still delete or overwrite the Key Blob. My question is: Is there a way to store a key (or its Key Blob) in a non-volatile storage area that is accessible by ELE but not accessible by the host, allowing cryptographic operations to be performed by ELE without the key material or Key Blob ever being exposed to the host at any point? In other words, is it possible for ELE to own and manage persistent key storage entirely within a secure region, such that the host never handles the key or Key Blob directly? Thank you in advance for your guidance. Re: Can ELE Retain Keys in Host-Inaccessible Non-Volatile Storage? Hi @t_hosomi, hope you are doing well. Your understanding of the key generation and storage in NVM flow is correct. However, since the ELE does not have a non-volatile memory (as stated in section 10.3.1 of the SRM), the only supported path is to store the exported key blob in host's NVM. Please let me know if this information is helpful. Re: Can ELE Retain Keys in Host-Inaccessible Non-Volatile Storage? Hi RomanVR, Thank you for your response. I understand that ELE itself does not provide non-volatile storage and that persistent key data must therefore be stored in the host's non-volatile memory. Thank you for clarifying this point.
查看全文
TJA1120A RGMII Mode- Delay Config This is the Device-Tree for TJA1120A - cpsw_port1, cpsw3g_phy0 &cpsw_port1 { status = "okay"; phy-mode = "rgmii-txid"; phy-handle = <&cpsw3g_phy0>; }; &cpsw_port2 { status = "okay"; phy-mode = "rgmii"; phy-handle = <&cpsw3g_phy1>; }; &cpsw3g_mdio { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_mdio1_pins_default>; cpsw3g_phy0: ethernet-phy@0 { compatible = "ethernet-phy-id001b.b031"; reg = <4>; }; cpsw3g_phy1: ethernet-phy@1 { compatible = "ethernet-phy-id0022.1620"; reg = <0>; txc-skew-ps = <900>; rxc-skew-ps = <900>; rxd0-skew-ps = <420>; rxd1-skew-ps = <420>; rxd2-skew-ps = <420>; rxd3-skew-ps = <420>; txd0-skew-ps = <420>; txd1-skew-ps = <420>; txd2-skew-ps = <420>; txd3-skew-ps = <420>; rxdv-skew-ps = <420>; txen-skew-ps = <420>; }; }; Here we give "rgmii-txid" as phy-mode for TJA1120A. But when I read register RGMII_TXC_DELAY_CONFIG, it reads 0x0014 which means no delay(15th bit), and RGMII_RXC_DELAY_CONFIG reads 0x8014 with means delay is set(15th bit).  Also if i change phy-mode to "rgmii-rxid" in DT, RGMII_RXC_DELAY_CONFIG reads 0x0014, and RGMII_TXC_DELAY_CONFIG reads 0x8014. I just tried setting "rgmii" in DT and then setting these registers using phytool, it had reflected perfectly and started pinging then RGMII_RXC_DELAY_CONFIG 15th bit set to HIGH and RGMII_TXC_DELAY_CONFIG 15th bit set to LOW. I wish to understand why this reversal happen at DT configuration of phy-mode. For our AM62A7 based ECU, internal delay on RX_Clock is needed by PCB, so it set "rgmii-txid". Its working perfectly fine. Also I would like to know the use of Pin Strapping for this PHY-Mode, if DTS takes care of it. Re: TJA1120A RGMII Mode- Delay Config Hi, Based on the TJA1120A documentation, the RGMII delay configuration can be a bit confusing because the register names and the delay described inside the register do not directly match. Please refer to the RGMII_RXC_DELAY_CONFIG/RGMII_TXC_DELAY_CONFIG registers bit description within device DS: 0xAFCC RGMII_RXC_DELAY_CONFIG: bit 15 = enables internal TXC delay 0xAFCD RGMII_TXC_DELAY_CONFIG: bit 15 = enables internal RXC delay   So, when checking the configuration, the important point is the actual register bit description and the final register read-back value after initialization. Also note that pin strapping only defines the default configuration after reset. The software driver can overwrite this later via MDIO, so the effective configuration should be verified by reading back the registers after the system has booted. Please also make sure that the same RGMII clock delay is not enabled on both MAC and PHY side unless this is intended by the board timing design. BR, Petr
查看全文
TJA1120A RGMII 模式 - 延迟配置 这是 TJA1120A 的设备树 - cpsw_port1,cpsw3g_phy0 &cpsw_port1 { status = "okay"; phy-mode = "rgmii-txid"; phy-handle = <&cpsw3g_phy0>; }; &cpsw_port2 { status = "okay"; phy-mode = "rgmii"; phy-handle = <&cpsw3g_phy1>; }; &cpsw3g_mdio { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_mdio1_pins_default>; cpsw3g_phy0: ethernet-phy@0 { compatible = "ethernet-phy-id001b.b031"; reg = <4>; }; cpsw3g_phy1: ethernet-phy@1 { compatible = "ethernet-phy-id0022.1620"; reg = <0>; txc-skew-ps = <900>; rxc-skew-ps = <900>; rxd0-skew-ps = <420>; rxd1-skew-ps = <420>; rxd2-skew-ps = <420>; rxd3-skew-ps = <420>; txd0-skew-ps = <420>; txd1-skew-ps = <420>; txd2-skew-ps = <420>; txd3-skew-ps = <420>; rxdv-skew-ps = <420>; txen-skew-ps = <420>; }; }; 这里我们将“rgmii-txid”指定为 TJA1120A 的 phy-mode。 但是当我读取寄存器RGMII_TXC_DELAY_CONFIG 时,读取到的是 0x0014,这意味着没有延迟(第 15 位),而RGMII_RXC_DELAY_CONFIG读取到的是 0x8014,这意味着延迟已设置(第 15 位)。 另外,如果我在 DT 中将 phy-mode 更改为“rgmii-rxid”,则RGMII_RXC_DELAY_CONFIG读取 0x0014, RGMII_TXC_DELAY_CONFIG读取 0x8014。 我刚刚尝试在 DT 中设置“rgmii”,然后使用 phytool 设置这些寄存器,它完美地反映了并开始 ping,然后将RGMII_RXC_DELAY_CONFIG第 15 位设置为高电平,将RGMII_TXC_DELAY_CONFIG第 15 位设置为低电平。 我想了解为什么在 phy-mode 的 DT 配置下会发生这种反转。 对于我们基于 AM62A7 的 ECU,PCB 需要对 RX_Clock 进行内部延迟,因此设置了“rgmii-txid”。目前运行正常。 另外,我还想知道这种 PHY 模式下引脚连接是否可用,以及 DTS 是否负责处理。 Re: TJA1120A RGMII Mode- Delay Config 您好, 根据 TJA1120A 文档,RGMII 延迟配置可能会让人有些困惑,因为寄存器名称和寄存器内部描述的延迟并不直接匹配。 请参阅设备 DS 中的 RGMII_RXC_DELAY_CONFIG/RGMII_TXC_DELAY_CONFIG 寄存器位描述: 0xAFCC RGMII_RXC_DELAY_CONFIG:位 15 = 启用内部 TXC 延迟 0xAFCD RGMII_TXC_DELAY_CONFIG:位 15 = 启用内部 RXC 延迟   因此,在检查配置时,重点是实际的寄存器位描述和初始化后最终的寄存器读取值。 另请注意,引脚绑定仅定义 RESET 后的默认配置。软件驱动程序稍后可以通过 MDIO 覆盖此设置,因此应在系统启动后通过读取寄存器来验证有效配置。 另外,请确保 MAC 端和 PHY 端没有同时启用相同的 RGMII 时钟延迟,除非这是电路板时序设计所要求的。 BR,彼得
查看全文
S32 Design Studio MCP統合の使い方 S32 Design Studio MCP連携の使い方、関連する資料やドキュメントはありますか? Re: How to use S32 Design Studio MCP Integration こんにちは、 残念ながら、ドキュメントや使用例はまだ開発中です。外部利用向けに近いうちにリリースされることを期待していますが、正確な日付は分かりません。
查看全文
EB Tresos激活码失败 我尝试使用 EBtresos for AUTOSAR,但是激活失败了。 激活码: 7416-E905-5CC2-F20A ERROR: flxActAppActivationSend (50040,41147,10248) 指定的数量超过最大允许数量 (0)。 连接 FlexNet Operations Server 失败。 所以我需要另一个激活码才能使用 EBtresos。 谢谢! Re: EB tresos activation code failed 感谢您的耐心等待。 内部团队已更新网页上的激活码。 请点击下方链接查找最新激活码: S32K3 标准软件-> 汽车软件 - EB tresos Studio / AUTOSAR 配置工具 -> EB tresos Studio 29.0.0 Re: EB tresos activation code failed HI 给您带来的不便,我们深表歉意! 我已经将此问题报告给了内部团队,一旦收到他们的回复,我会立即通知您。   此致敬礼, Robin Re: EB tresos activation code failed 您好,NXP 网站上更新的激活码仍然是:7416-E905-5CC2-F20A。我今天尝试激活它,但仍然失败了。 ERROR: flxActAppActivationSend (50040,41147,10248) 指定的数量超过最大允许数量 (0)。 连接 FlexNet Operations Server 失败。 Re: EB tresos activation code failed 请查看我之前的回复;激活码已更新。 请告诉我哪个版本的 EBTresos 页面激活码尚未被修改,以便我向内部团队报告并进行更新。
查看全文
EB tresos activation code failed i'm trying to use EBtresos for AUTOSAR, but i failed to activated. activation Code : 7416-E905-5CC2-F20A ERROR: flxActAppActivationSend (50040,41147,10248) The quantity specified exceeds maximum quantity allowed (0). Connection to FlexNet Operations Server failed. so i need the the other activate code to use the EBtresos. thank you. Re: EB tresos activation code failed Thank you for your patience. The internal team has updated the activation code on the webpage. Please click the link below to find the latest activation code: S32K3 Standard Software -> Automotive SW - EB tresos Studio / AUTOSAR Configuration Tool -> EB tresos Studio 29.0.0  Re: EB tresos activation code failed Hi Sorry for the inconvenience we bring you! I have already reported this issue to the internal team, and I will let you know as soon as I receive their reply.   Best Regards, Robin Re: EB tresos activation code failed Hello, the activation code updated on the NXP website is still this: 7416-E905-5CC2-F20A. I tried to activate it today, but it still failed ERROR: flxActAppActivationSend (50040,41147,10248) The quantity specified exceeds maximum quantity allowed (0). Connection to FlexNet Operations Server failed. Re: EB tresos activation code failed Please see my previous reply; the activation code has been updated. Please tell me which version of EBTresos page has not yet had its activation code modified so I can report it to the internal team for an update.
查看全文
LX2160A:SerDesレーンを使わないレシーバのプルダウンバリュー こんにちは、 チップ: LX2160A アプリケーションノートAN5407には、SerDesレーンを使用しない場合にプルダウンを指定しています: もし一部のSerDesレーンがノーコネクトなら、その受信ピンをGNDに引き下げてください。 プルダウンの価値を教えていただけますか?それともレシーバのピンを直接GNDに接続すべきでしょうか? ありがとうございます。 Re: LX2160A: Pull down value on receiver for SerDes lanes not used こんにちは、 AN5407の「 受信機ピンをGNDに引き下げる」 という言語は、方法について意図的に曖昧にしています。NXPの明確化は、GNDへの直接の0 Ω接続が正しく推奨されるアプローチであるということです。 SerDesの電源オフ RXピンがGNDに接続されている場合でも、SerDesブロックに電源が供給されたままの場合は、AN5407ではファームウェアを介して未使用のレーンを電源オフにすることを推奨しています。PBIフェーズ中にGeneral Control 0レジスタを設定して、未使用のSerDesレーンを電源オフにします。SerDesブロック全体が既に電源オフになっている場合は、個々のレーンの電源オフは不要です。 よろしくお願いします。
查看全文
RT1010/RT1011 フレキシオEDMA 私はiMX RT1011 Nano Kitを使用しています 素敵なボード シフター0から8ビット並列処理用にEDMA Flexioをセットアップしようとしています タイマー0を30MHzに設定。EDMAにより512バイト(リクエストごとに1バイト)を送信。 コード: FLEXIO_DEV->SHIFTCTL[TX_SHIFTER] = FLEXIO_SHIFTCTL_TIMESEL(WR_TIMER) | FLEXIO_SHIFTCTL_TIMPOL(0U) | FLEXIO_SHIFTCTL_PINCFG(3U) /* 出力 */ | FLEXIO_SHIFTCTL_PINSEL(DATA_PIN_START) | FLEXIO_SHIFTCTL_PINPOL(0U) | FLEXIO_SHIFTCTL_SMOD(2U); /* 送信 */ /* タイマー0: WRストローブ、1バイトあたり1パルス * TIMCMP下位バイト = (flexio_clk / (2*wr_clk)) - 1 * TIMCMP[15:8] = (beats*2)-1 = 1 (シフタロードごとに1バイト) */ timDiv = (flexioClk_Hz / (2U * wrClock_Hz)); if (timDiv != 0U) { timDiv -= 1U; } timDiv &= 0xFFU; FLEXIO_DEV->TIMCMP[WR_TIMER] = (1U << 8U) | timDiv; FLEXIO_DEV->TIMCFG[WR_TIMER] = FLEXIO_TIMCFG_TIMOUT(1U) | FLEXIO_TIMCFG_TIMDEC(0U) | FLEXIO_TIMCFG_TIMRST(0U) | FLEXIO_TIMCFG_TIMDIS(2U) /* 比較時に無効化 */ | FLEXIO_TIMCFG_TIMENA(2U) /* トリガーがハイのときに有効化 */ | FLEXIO_TIMCFG_TSTOP(0U) | FLEXIO_TIMCFG_TSTART(0U); FLEXIO_DEV->TIMCTL[WR_TIMER] = FLEXIO_TIMCTL_TRGSEL((4U * TX_SHIFTER) + 1U) /* シフター0フラグ */ | FLEXIO_TIMCTL_TRGPOL(1U) /* アクティブロー */ | FLEXIO_TIMCTL_TRGSRC(1U) /* 内部 */ | FLEXIO_TIMCTL_PINCFG(3U) /* 出力 */ | FLEXIO_TIMCTL_PINSEL(WR_PIN) | FLEXIO_TIMCTL_PINPOL(1U) /* WR アクティブロー */ | FLEXIO_TIMCTL_TIMOD(1U); /* デュアル 8 ビット ボー/ビット */ /* Shifter0からのDMAリクエストを有効にする */ FLEXIO_DEV->SHIFTSDEN |= (1U << TX_SHIFTER); /* FlexIOを有効にする */ FLEXIO_DEV->CTRL |= FLEXIO_CTRL_FLEXEN_MASK; ロジックアナライザで信号を確認しました 見た目は私と似ているが、512パックの一部でデータが欠落している。 つまり、例えば200バイト送信して、その後送信を停止し、512バイトすべて送信するということです。 ツァヒ Re: RT1010/RT1011 FLEXIO EDMA こんにちは、 @TZAHI さん。 私たちの製品にご関心を寄せ、コミュニティをご利用いただき、本当にありがとうございます。 最も可能性の高い確認方向は、eDMAが30 MHz WRクロックでFlexIO SHIFTBUFを十分に速く連続的に補充できるかどうかです。 現在のリクエストあたり1バイトの構成では、DMA要求レートは非常に高くなる可能性があります。これはeDMA、バス仲裁、FlexIOのSHIFTBUFリフィルタイミングには厳しい場合があります。 考えられる症状としては、TXシフトレバーのアンダーランが挙げられます。転送が失敗した場合は、FlexIOを再初期化またはクリアする前に、まずSHIFTERRをすぐに確認してください。 可能であれば、CPU/バスクロックを上げるか、WRクロックを30MHz未満(例えば20MHzまたは10MHz)に下げてみてください。より低いWRクロックで転送が安定する場合、問題はDMA/FlexIOのリフィルタイミングに関連している可能性が高い。 お役に立てれば幸いです。 よろしくお願いいたします。 5月
查看全文