This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM2632-Q1:nand memory can't reset successfully

Guru**** 2535750 points
Other Parts Discussed in Thread: AM2634, AM2632

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1554931/am2632-q1-the-nand-memory-can-t-reset-successfully

器件型号:AM2632-Q1
Thread 中讨论的其他器件:AM2634AM2632

工具/软件:

背景:
我们计划将 MT29F4G08ADAFAH4 nand 与 GPMC 配合使用。 该程序基于 SDK_am263x_10_02_00_13。
存在 GPMC_V0 驱动程序模块、文件名称为 GPMC_Nandlife_v0.c。文件路径为 source/drivers/gpt/v0/
现在我们陷入了 GPMC_writeNandCommand () 的函数中,该函数由 flash_nand_gpmcResetMemory () 在 flash_nand_gp.c 中调用

问题
在函数 GPMC_writeNandCommand() 中、GPMC_waitPinInteruptStatusReadyWaitTimeout() 在调用 GPMC_NandCommandWrite (handle、cmdParams->cmdCycle1) 后始终返回–1;
我认为我们无法成功重置存储器。


您可以查看图片以了解更多信息。
命令寄存器:0x4840007C 和地址寄存器:0x48400080
cmdParams->cmdCycle1 为 0xFF

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wei Yao:

    首先、所提供的项目未经我们最终测试、因为我们没有之前沟通过的具有 NAND 闪存的电路板。 我们提供了从 AM243x SDK 到 AM263x 的初始端口、以便在您的端开始测试和优化该端口

    您是否还可以确认是否 有解决方法来修复 AD6 和 AD7 线路交换的原理图错误? 如果不 修复读取/写入、则读取/写入将不会成功。

    谢谢。此致、

    Sahana

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     AD6 和 AD7 线的更多信息。 我已经在 ti_pinmux_config.c 中交换了这两个引脚偏移、并在这两个条件下进行了测试。 不管用。

    另一方面、我们只测试了 RESET (0xFF) 命令。 因此、 这两条数据线是否交换无关紧要。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wei Yao:

    另一方面、我们只测试了 reset (0xFF) 命令。 因此、 这两条数据线是否交换无关紧要。

    我明白。 我建议有一个解决方案来实现其余命令的无缝运行。  

    当设置 RESET 命令时、您是否看到控制信号(CS、ADV#/ALE、BE0#/CLE、WE#和 GPMC 输出时钟)切换?

    如果没有、我们需要将 ti_drivers_config.c 文件中的以下时序参数更改为这些值并进行检查:

    .csOnTime = 0U、
    .csdOffTime = 6U、
    .csWrOffTime = 6U、
    .advOnTime = 0U、
    .advRdOffTime = 4U、
    .advWrOffTime = 4U、
    .advAadMuxOnTime = 0U、
    .advAadMuxRdOffTime = 0U、
    .advAadMuxWrOffTime = 0U、
    .weOnTtime = 0U、
    .weOffTime = 3U、
    .oeOnTime = 1U、
    .oeOffTime = 4U、
    .oeAadMuxOnTime = 0U、
    .oeAadMuxOffTime = 0U、
    .pageBurstAccess = 0U、
    .rdAccessTime = 4U、
    .wrAcessTime = 6U、
    .rdCycleTime = 6U、
    .wrCycleTime = 6U、
    .wrDataOnMuxBusTime = 0U、
    .cycle2CycleDelay = 0U、
    .busTurnAroundTime = 0U、
    .cycleDelaySameChipSel = CSL_GPMC_CONFIG6_CYCLE2CYCLESAMECSEN_NOC2CDELAY、
    .cycleDelayDiffChipSel = CSL_GPMC_CONFIG6_CYCLE2CYCLEDIFFCSEN_NOC2CDELAY、

    您还可以使用 CCS 寄存器视图提供所有 GPMC 寄存器的转储(右键点击并导出到文本文件):

      

    此致、

    Sahana

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1 很遗憾、我们无法打开 GPMC 和 MMC 寄存器、而其他寄存器可以打开。 我不知道原因。 您可以看到下图。 此外、右键点击后没有选择。

    2 我想我们可以从“Memory"视“视图中获取寄存器值。 您也可以看到下图。 地址 0x48400048 处的值为 0x0,000,0211。 该错误似乎是由不受支持的地址导致的。  

    3 关于 CS Base Address:在 am243x 演示中、基址为 0x5,000,0000。 即 FSS 存储器区域。 但 am263x 中没有相同的区域。 我们的工程中的地址是 0x6,800,0000。

    4 关于输入时钟频率:频率现在是 0x1,000,0000。 对吗? 从哪里可以获得正确的值。 因为 在 am243x 演示中、该值为 1,333,3333。 但当我们在 am263x 项目中设定 1,333,3333 时、它是有效的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    另一个问题、现在我不知道如何 在设置 RESET 命令时检查控制信号(CS、ADV#/ALE、BE0#/CLE、WE#和 GPMC 输出时钟)切换?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sahana。 RESET 命令返回值正常。 现在我测试 Flash_nandGpmcReadId () 函数。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不幸的是、我们无法打开 GPMC 和 MMC 寄存器、而其他寄存器可以打开。 我不知道原因。 您可以看到下图。 此外、右键单击后没有选择。

    您需要在 CCS 中检查软件更新才能看到此内容。 点击 Help -> Check for updates 并执行更新。 然后、您将能够查看寄存器。  我将能够借助这些寄存器确认时序值。

    关于 CS Base Address:在 am243x 演示中、基址是 0x5,000,0000。 即 FSS 存储器区域。 但 am263x 中没有相同的区域。 我们的项目地址是 0x6,800,0000。

    0x68000000 是 AM263x 的正确基地址。

    对于 AM263x、频率为 100MHz。

    ]另一个问题是、现在我不知道如何 在设置 RESET 命令时检查控制信号(CS、ADV#/ALE、BE0#/CLE、WE#和 GPMC 输出时钟)切换?

    我是为了探测电路板上的这些信号以在示波器上查看。

    此致、

    Sahana

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您需要在 CCS 中检查软件更新才能看到此内容。 点击 Help -> Check for updates 并执行更新。 然后、您将能够查看寄存器。  我将能够借助这些寄存器确认时序值。

    此外、请确保在目标配置 ccxml 文件中使用“AM263x",“,而、而不是 AM2634/AM2632 或任何其他:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    由于交换了 AD6/AD7 行、因此需要将读取 ID 命令 (0x90) 作为外壳发送为 0x50。 您是否完成了此更改?

    建议对此进行硬件修复、否则为了解释数据和命令而交换这些数据线、软件开发将变得复杂。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、发送 0x50 而不是 0x90 后、问题已得到解决。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sahana、现在我可以成功写入和读取 nand 刷写。  并且 读取内容与写入 内容保持一致。

    但如何在内存中看到写入的内容? 我在调试会话中检查了地址 0x6,820,0000 (base+offset)、值为 0xFF。

    您可以看到下图。 左侧是 写入 RAM 中的内容。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wei Yao:

    您是否使用 API“GPMC_NandReadData"来“来执行读取? 此外、确保 未使用 DMA 来执行读取、因为尚未在工程中配置 DMA。

    下面是工程中的当前配置、因此 一次只能读取起始地址为 0x68000000 的 16MB。 您还可以将芯片选择大小修改为 128MB 以映射到整个可用的 GPMC 数据大小 (0x68000000 - 0x6FFFFFFF)  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Sahana、现在 GPMC 和 nand 工作正常。 我想知道我们是否可以在 AM263x 中添加 DMA 函数。