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.

OMAP3530 and NAND Flash

Expert 1070 points
Other Parts Discussed in Thread: OMAP3530

Hello,

I am bringing up a custom 3530 board from scratch and have Micron MT29F2G16 (128MB NAND) flash

at CS0.  When exectuting the "nand_chip" call from the x-loader, it is returning zero for the manufactuer ID

and zero for the device type.  I would like to use CCS to read flash (I believe at 0x20000000).  When I

try from the ARM size I get ------ for the memory display, and on the DSP side I get all zeros.  Is there

a GEL or something I need to run to get flash working?  I know in NAND you read a page at a time, so

maybe it is something like that.  BTW, the EVM board from Mistral does the same thing.

Can someone  suggest a way of debugging my flash?

  • I tried this out on my Mistral EVM and I certainly see non 0 values at 0x20000000 by using view memory through the ARM. I am running with the standard omap3530_cortexA.gel file and a BH USB560m, however the GEL file does not expose this address for you through the memory mapping so you have to disable memory mapping through Option -> Memory Map... -> uncheck Enable Memory Mapping.

    Also keep in mind that the NAND flash is not really accessable through the CCS view memory function, as it has a multiplexed address and data bus that CCS is not aware of, so all you can see is what you would just get if you read from the NAND like it was an asynchronous memory. To really do much debugging in a NAND device it would have to be done through code that you load to the processor and execute that can perform the proper operations to read and write the NAND.

  • To access NAND on CS0 you use the GPMC_NAND_COMMAND_0, GPMC_NAND_ADDRESS_0, and GPMC_NAND_DATA_0 registers. You send NAND commands to the COMMAND register and use the DATA register to read/write the NAND.  From u-boot on Beagle, I did a READID command and show the results below:

    OMAP3 beagleboard.org # mw.w 0x6e00007c 0x90
    OMAP3 beagleboard.org # mw.w 0x6e000080 0
    OMAP3 beagleboard.org # md.w 0x6e000084 1
    6e000084: 002c    ,.
    OMAP3 beagleboard.org #
    6e000086: 00ba    ..
    OMAP3 beagleboard.org #
    6e000088: 0000    ..
    OMAP3 beagleboard.org #
    6e00008a: 0000    ..
    OMAP3 beagleboard.org #

    You can see that the Manuf. ID is 0x2C and the part number is 0xBA.

    Steve K.

  • If I write code to access the device, which address do I point to?  The 0x20000000 base or the 0x6e000000 base

    that has been referenced?

  • ler said:

    If I write code to access the device, which address do I point to?  The 0x20000000 base or the 0x6e000000 base

    that has been referenced?

     

    nand is an IO device -> what ever base address you program in GPMC has nothing to do with the NAND device itself. you need to use the GPMC_ADDRESS, COMMAND and DATA registers to talk to the device.

  • Hi,

    We are doing a design based on OMAP3530 processor. In this we are connecting the GPMC bus of processor to Nand flash, ethernet controller chip using memory bus and FPGA.  Can anyone please let me know whether i need to add the buffers immediate to the processor to avoid loading? 

    please let me know your comments.

    Murugan.M