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.

[参考译文] Linux/AM3352:8位 NAND 引导中 GPMC_AD[15:8]的行为

Guru**** 2562120 points
Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/613602/linux-am3352-gpmc_ad-15-8-behavior-in-8-bit-nand-boot

器件型号:AM3352

工具/软件:Linux

我们在 GMPC0中有一个 AM3352和一个 NAND SLC 8位、我们可以从该位引导。

Sysboot 为0100000000010011、适用于 NAND、NANDI2C、MMC0、UART0。 从 NAND 引导时、当从引导加载程序访问 NAND 时、GPMC AD8至15具有3.4kHz 的数据。 SYSBOOT 8位为低电平、因此选择了8位 NAND 闪存。 系统引导时没有问题、但在引导加载程序运行时、他有这种奇怪的行为。 一旦 Linux 内核加载到 RAM 并开始引导、这些行就会保留正常操作、不再是 GPMC 的一部分。

如果使用 Sysboot 0100000000010111 for MMC0、SPI0、UART0、USB0从 microSD 启动、使用相同的引导加载程序、我们将访问 NAND 闪存、并且仅使用行 GPMC0-7、因此我们假设引导加载程序的引导加载程序配置正确。

NAND 引脚的配置为:

   {offset (GPMC_ad0)、(MODE (0)| PULLUP_EN | RXACTIVE)}、   // NAND AD0 *
   {offset (GPMC_ad1)、(MODE (0)| PULLUP_EN | RXACTIVE)}、   // NAND AD1 *
   {offset (GPMC_ad2)、(MODE (0)| PULLUP_EN | RXACTIVE)}、   // NAND AD2 *
   {offset (GPMC_ad3)、(MODE (0)| PULLUP_EN | RXACTIVE)}、   // NAND AD3 *
   {offset (GPMC_AD4)、(MODE (0)| PULLUP_EN | RXACTIVE)}、   // NAND AD4 *
   {offset (GPMC_ad5)、(MODE (0)| PULLUP_EN | RXACTIVE)}、   // NAND AD5 *
   {offset (GPMC_ad6)、(MODE (0)| PULLUP_EN | RXACTIVE)}、   // NAND AD6 *
   {offset (GPMC_AD7)、(MODE (0)| PULLUP_EN | RXACTIVE)}、   // NAND AD7 *
   {offset (GPMC_wait0)、(MODE (0)| RXACTIVE | PULLUP_EN)}、// NAND 等待*
   {offset (GPMC_WPN)、(MODE (7)| PULLUP_EN | RXACTIVE)}、   // NAND_WPN *
   {offset (GPMC_csn0)、(mode (0)| PULLUUDEN)}、   // NAND_CS0 *
   {offset (GPMC_advn_ale)、(MODE (0)| PULLUUDEN)}、/* NAND_ADV_ALE *
   {offset (GPMC_oen_ren)、(mode (0)| PULLUUDEN)}、   // NAND_OE *
   {offset (GPMC_Wen)、(mode (0)| PULLUUDEN)}、   /* NAND_WEN *
   {offset (GPMC_BE0n_cle)、(MODE (0)| PULLUUDEN)}、   // NAND_BE_CLE *

然后我们检查 GPMC_CONFIG1_0寄存器(地址0x50000060)是否具有正确的值0x800 (DEVICETYPE:NAND、deviceSize:8位)

总之、从 MicroSD 引导的引导加载程序正常工作、但从 NAND 引导显示了这种奇怪的行为(使用 AD8至 AD15)

从这个问题开始、系统运行正常。 为什么微控制器使用 GPMC-AD8转 GPMC-AD15?我们如何避免这种情况?

BR

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

    对于 NAND 引导、ROM 代码始终将 GPMC 数据接口配置为16位模式。 您应该在 MLO 中将它们引脚多路复用为它们所需的功能。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    感谢你的帮助。
    我已经在 mux.c 中配置了引脚、现在工作正常。

    此致
    天使