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.

am335x gpmc FPGA通信问题

通信方式:异步,地址数据复用,虽然设定是使用24根线,但使用低16bit地址,8bit数据

问题:发现写的时候波形不对,地址和数据都不对

以下是我的config配置:

#define STNOR_GPMC_CONFIG1 0x00000200
#define STNOR_GPMC_CONFIG2 0x00070900
#define STNOR_GPMC_CONFIG3 0x00020201
#define STNOR_GPMC_CONFIG4 0x06010701
#define STNOR_GPMC_CONFIG5 0x0009070C
#define STNOR_GPMC_CONFIG6 0x08000000

在cs_request后,读出来的config7是0x00000f41

pin config:

{"gpmc_ad0.gpmc_ad0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad1.gpmc_ad1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad2.gpmc_ad2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad3.gpmc_ad3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad4.gpmc_ad4", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad5.gpmc_ad5", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad6.gpmc_ad6", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad8.gpmc_ad8", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad9.gpmc_ad9", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad10.gpmc_ad10", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad11.gpmc_ad11", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad12.gpmc_ad12", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad13.gpmc_ad13", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad14.gpmc_ad14", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad15.gpmc_ad15", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_a0.gpmc_a0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"gpmc_a1.gpmc_a1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"gpmc_a2.gpmc_a2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"gpmc_a3.gpmc_a3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"gpmc_a4.gpmc_a4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"gpmc_a5.gpmc_a5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"gpmc_a6.gpmc_a6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"gpmc_a7.gpmc_a7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"gpmc_a8.gpmc_a8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"gpmc_wait3.gpmc_wait3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_wpn.gpmc_wpn", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_csn3.gpmc_csn3", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
{"gpmc_advn_ale.gpmc_advn_ale", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
{"gpmc_oen_ren.gpmc_oen_ren", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
{"gpmc_wen.gpmc_wen", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},

在执行echo指令的时候波形抓出来:

好像上传不了图片

  • 有人在吗?可否指导下?

    • 我的电脑无法发新贴,只能在这里请教了!

      AM335X 是否可以将nand配置在CS0使用0x10000000地址256M宽度!然后配置访问FPGA的CS1~CS3配置在0x08000000这边的地址!

      //CS1
      HWREG(GPMC_CONFIG_REGS + 0xA8) = 0x00000000;
      HWREG(GPMC_CONFIG_REGS + 0x90) = 0x28001200;
      HWREG(GPMC_CONFIG_REGS + 0x94) = 0x000f1001;
      HWREG(GPMC_CONFIG_REGS + 0x98) = 0x22060411;
      HWREG(GPMC_CONFIG_REGS + 0x9C) = 0x0e097018;
      HWREG(GPMC_CONFIG_REGS + 0xA0) = 0x000d1010;
      HWREG(GPMC_CONFIG_REGS + 0xA4) = 0x09070000;
      HWREG(GPMC_CONFIG_REGS + 0xA8) = 0x00000F48;

      //CS2
      HWREG(GPMC_CONFIG_REGS + 0xD8) = 0x00000000;
      HWREG(GPMC_CONFIG_REGS + 0xC0) = 0x28001200;
      HWREG(GPMC_CONFIG_REGS + 0xC4) = 0x000f1001;
      HWREG(GPMC_CONFIG_REGS + 0xC8) = 0x22060411;
      HWREG(GPMC_CONFIG_REGS + 0xCC) = 0x0e097018;
      HWREG(GPMC_CONFIG_REGS + 0xD0) = 0x000d1010;
      HWREG(GPMC_CONFIG_REGS + 0xD4) = 0x09070000;
      HWREG(GPMC_CONFIG_REGS + 0xD8) = 0x00000F49;

      //CS3
      HWREG(GPMC_CONFIG_REGS + 0x108) = 0x00000000;
      HWREG(GPMC_CONFIG_REGS + 0xF0) = 0x28001200;
      HWREG(GPMC_CONFIG_REGS + 0xF4) = 0x000f1001;
      HWREG(GPMC_CONFIG_REGS + 0xF8) = 0x22060411;
      HWREG(GPMC_CONFIG_REGS + 0xFC) = 0x0e097018;
      HWREG(GPMC_CONFIG_REGS + 0x100) = 0x000d1010;
      HWREG(GPMC_CONFIG_REGS + 0x104) = 0x09070000;
      HWREG(GPMC_CONFIG_REGS + 0x108) = 0x00000F4a;

      我配置完这个后,访问0x08000000~0x0affffff中任意个地址都出现地址异常!直接就死掉!

      跟踪后都是跳到了

      LDR PC,Reset_Addr ; Reset
      LDR PC,Undefined_Addr ; Undefined instructions
      LDR PC,SWI_Addr ; Software interrupt (SWI/SVC)
      LDR PC,Prefetch_Addr ; Prefetch abort
      LDR PC,Abort_Addr ; Data abort
      LDR PC,Unused_Addr ; RESERVED
      LDR PC,IRQ_Addr ; IRQ
      LDR PC,FIQ_Addr ; FIQ

      中的LDR PC,Abort_Addr ; Data abort这里?

      请求解答::::是不能这样配置还是我什么地方有问题???????

    • {"gpmc_a0.gpmc_a0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
      {"gpmc_a1.gpmc_a1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
      {"gpmc_a2.gpmc_a2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
      {"gpmc_a3.gpmc_a3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
      {"gpmc_a4.gpmc_a4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
      {"gpmc_a5.gpmc_a5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
      {"gpmc_a6.gpmc_a6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
      {"gpmc_a7.gpmc_a7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
      {"gpmc_a8.gpmc_a8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},

    • 应该配置成OMAP_MUX_MODE4才是地址复用16~24吧!!

  • 读出来的config7是0x00000f41配置,你访问的是什么地址?访问0x01000000~地址吗?

  • govin huang 说:

    读出来的config7是0x00000f41配置,你访问的是什么地址?访问0x01000000~地址吗?

    是的。访问地址没错。

    刚才你说引脚复用问题,我可以试试。

  • 已经解决,mmu地址配错了

  • govin huang 说:

    已经解决,mmu地址配错了

    抱歉,不是很明白你的意思,mmu有关系吗?