[U-Boot-Users] Strange behavior in UPM

Alemao xcarandiru at gmail.com
Tue Jul 29 23:09:58 CEST 2008


Other thing i notice in the following code:

---
        /* Send the command for reading device ID */
        this->cmdfunc(mtd, NAND_CMD_READID, 0x00, -1);

        /* Read manufacturer and device IDs */
        nand_maf_id = this->read_byte(mtd);
        nand_dev_id = this->read_byte(mtd);
---


It do this in UPM:


MAMR: 0xE0005070         pat_offset: 0x00000008 (write_command)
MAR:  0xE0005068         cmd: 0x90 (read electronic signature)

MAMR: 0xE0005070         pat_offset: 0x00000010 (write_address)
MAR:  0xE0005068         cmd: 0x00 (1st cycle)


But the read_byte() function doesnt change my #R pin (LGPL2)

>From nand's datasheet, they said we need to perform two bus read operations,
so this shouldnt be throught UPM? Something like this:


        run_pattern(0x00000000, 0x00);      // not sure about second arg
        nand_maf_id = this->read_byte(mtd);

        run_pattern(0x00000000, 0x00);
        nand_dev_id = this->read_byte(mtd);



I based my comments in this:


#define NAND_CMD_READ0		0x00
#define NAND_CMD_READID		0x90


UPM Routine        Pattern offset        Transaction
-----------------       -----------------        ---------------

Read single        0x0                           read_data
Read burst         0x8                           write_command
                          0x10                         write_address
Write single        0x18                         write_data
    -                     0x20–0x3F               for others if needed



On Tue, Jul 29, 2008 at 10:22 AM, Alemao <xcarandiru at gmail.com> wrote:
> Im using MPC8360E and NAND512W32BN6E, and they are connected like in
> mpc8360e-rdk (same pins).
>
> About the waveform, i did the tests considering "reading the electronic
> signature" from the nand flash. I put the code below in a loop
> (nand_base.c):
>
> ---
>        /* Select the device */
>        this->select_chip(mtd, 0);
>
>        /* Send the command for reading device ID */
>        this->cmdfunc(mtd, NAND_CMD_READID, 0x00, -1);
>
>        /* Read manufacturer and device IDs */
>        nand_maf_id = this->read_byte(mtd);
>        nand_dev_id = this->read_byte(mtd);
> ---
>
> From nand datasheet, figure 28, when CL goes from LOW to HIGH, #W goes
> from HIGH to LOW, and in I/O the value for reading the electronic
> signature is passed.
>
> But here with my board, CL is already in HIGH and then goes LOW.
>
> As im using u-boot-1.1.4, i tried import the code from u-boot-1.3.3 and
> u-boot-1.3.4-rc1. Both i got the same result.
>
> So, as my board is _based_ in mpc8360e-rdk, i was wondering if
> other configuration can affect the UPM.
>
> Looking at the this->cmdfunc(...) (fun_cmdfunc at fsl_upm.c) it has some
> calls to fsl_upm_start_pattern, fsl_upm_run_pattern... and this
> functions activates the UPM. So it seems to be simple:
>
>        command(READID)
>
>        upm_start_pattern()
>        upm_run_pattern(READID)
>        upm_end_pattern()
>
>        read_byte()
>
> Im really curious to know what is causing the CL inversion.
>
> Right now im trying to understand the UPM array. But its not so simple.
>
> I have my doubts if my problem is the UPM array, since its working on
> mpc8360e-rdk and the same array is in App Note from Freescale.
>
> Cheers,
>
> --
> Alemao
>
>
> On Fri, Jul 25, 2008 at 2:33 PM, Anton Vorontsov
> <avorontsov at ru.mvista.com> wrote:
>> On Fri, Jul 25, 2008 at 01:50:41PM -0300, Alemao wrote:
>>> Hi all,
>>>
>>> I have a board based on the MPC8360E-RDK, and im trying to
>>> make NAND at local bus works with UPM. I put the scope to
>>> see what was going wrong and I got this:
>>>
>>>
>>>                      ___
>>> - the waveform in LGPL1/3 (nand CLE/ALE) should be  ___|     |___
>>>                   ___    ___
>>>   but was        |__|
>>
>> The ascii art attempt failed. ;-)
>>
>> [...]
>>> One detail, im using u-boot-1.1.4 and i got the codes for UPM and NAND
>>> from u-boot-1.3.4-rc1.
>>
>> Since the boards are pretty the same, I guess you can just compile
>> the u-boot-1.3.3 (please try release instead of -rc, to be sure),
>> and see if NAND will work. Maybe it will need really small code
>> modifications for your board though.
>>
>> Otherwise it is hard to say where is problem is (maybe the problem in
>> the 1.1.4 nand core code, not in UPM setup?).
>>
>> Also, you didn't mention what kind of chip the board is using.
>>
>> Thanks,
>>
>> --
>> Anton Vorontsov
>> email: cbouatmailru at gmail.com
>> irc://irc.freenode.net/bd2
>>
>




More information about the U-Boot mailing list