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.

GPMC: Cannot access memory on local bus higher than 4K Bytes



Hello,

I have a 32K block of NVRAM hanging on the GPMC at CS1.  When I tried to access this memory space, I can only go up to 4K Bytes.  Address GPMC_A11 to GPMC_A14 stay at 0 and never go high.  For experiment, I reconfigured the GPMC_A11-GPMC_A14 as GPIO and set them high. I was able to see the memory above 4K after I set these lines high, so I know that these lines are not stuck low.  The TI816X spec stated that the minimum range for GPMC CS is 16M Bytes, so I should have ample of room for my 32K Bytes memory.

The mux pins at AC2, H2, H6, H5 are configured for GPMC_A11-GPMC_A14 respectively.  It seems the chip thinks that I only have 4K Bytes of memory.  What could be causing this problem?

Thanks,

Tri

  • I am just ading more details on this setup:

    - Boot mode used: SD boot mode.

    - GPMC_A[0:15] are configured under linux kernel in board_ti81xx.c file for all GPMC[0:15].

    - NOR boot mode has limitation of 4KiBytes, however considering we are not using NOR boot mode, it is not clear if this limitation applies.

    - Found there is pinmux in lowlevel_init.S file under uboot as well. Does this need to be changed as well? My understanding is likely yes.

    - Considering the customer is able to configure GPMC_A11- GPMC_a14 as GPIO and get it to work, it looks like there is some register configuration that is not correct for GPMC_A11 - GPMC_A14 to work correctly.

    - Under board_ti81xx.c in u-boot there is a comment saying gpio-20 should be low to access higher addresses on NOR. We will need more details on this.

    - Any registers we should be looking into? Tri, can you dump all your GPMC registers settings when GPMC_A11 - GPMC_A14 are stuck and post this?

    Prateek

  • Sorry, I made a mistake with my original post.  I can see up to 2K memory, not 4K.  Address line from GPMC_A11 and up does not  toggle.  Here's my GPMC register dump for chip select cs1 based on GPMC Registers table in sprugx8.pdf  section 9.4.3

    index 0  value 60

    index 10  value 19

    index 14  value 1

    index 18  value 0

    index 1c  value 200

    index 40  value 1ff0

    index 44  value 0

    index 48  value 0

    index 50  value 12

    index 54  value 101

    index 60  value 200

    index 64  value b0b01

    index 68  value 22000010

    index 6c  value a006a10

    index 70  value c0c0c

    index 74  value 8f070000

    index 78  value f41

    index 7c  value bbaabbaa

    index 80  value bbaabbaa

    index 84  value bbaabbaa

    index 1e0  value 4000

    index 1e4  value 0

    index 1ec  value 0

    index 1f0  value 0

    index 1f4  value 1030

    index 1f8  value 0

    index 1fc  value fffff000

    index 200  value 0

    index 240  value 0

    index 244  value 0

    index 248  value 0

    index 24c  value 0

    index 300  value 0

    index 304  value 0

    index 308  value 0

    index 2d0  value 0

  • Hi Tri,

    Our team has suggested in order to locate whether it is hardware issue, can we try reading/writing NVRAM using non-Linux based CCS project. We have test code to access NOR flash under "DM816x/C6A816x/AM389x EVM Software Resources" section on link below

    http://support.spectrumdigital.com/boards/evm816x/revg/

    Can you try modifying the test project "evm816x\tests\io_card\norflash" to access NVRAM and check if this works? I am analyzing the registers above in the meantime and will get back to you with my findings.

    Prateek

     

  • The problem was solved by setting pull up for all GPMC address lines.

  • That was a little premature.   Now the GPMC address lines 11-14 stuck high and won't go low.  It seems the CPU is not driving these lines.  The range of GPMC CS is 16M granularity.  My device only has 4K.   Not sure if there's a wrong setting in a register somewhere or the chip doesn't work with 8 bit non-mux device.

  • Ok, this time it's fixed for sure.  We just need to clear the LIMITEDADDRESS bit in the GPMC_CONFIG register.  When this bit is set, GPMC is limited to 2K address space.  The spurgx8.pdf spec did not mentioned this.

  • Hello,

    I have encountered the same problem on a DM8148 GPMC interface.

    the LIMITEDADDRESS also resolved the problem.

    Thanks a lot Tri Pham.

    TI guys, please update the TRM.