[U-Boot] 答复: ppc, flash init on mpc8247, Unknown FLASH on Bank 0

wind_embedded wind_embedded at sina.com
Wed Oct 13 10:03:09 CEST 2010


On Wednesday, October 13, 2010, wind_embedded <wind_embedded at sina.com> wrote:
> Hello:
>
>    Now I port u-boot into mpc8247, I need everyone's help, thanks!
>
>    my board configuration is following:
>    chip select  chip        size  address
>    CS0          AM29LV040B  512K  0xfff00000
>    CS1          S29GL256P   64M   0xff800000
>    CS2          SDRAM       256M  0x00000000
>
>    Before I use VxWorks, it works fine. When I port u-boot, my project
> based on IDS8247. I changed configuration in IDS8247.h and updated
> flash.c, after I compiled u-boot, I burned u-boot.bin into AM29LV040B.
> Console output(DEBUG is defined):

What version of U-Boot are you using? It looks like you are not using
the CFI driver which has supported the AM29LV040B for some time now.
Have a look at the eNET board from current mainline - it uses the same
flash without issue

>    CPU:   MPC8247 (HiP7 Rev 14, Mask 1.0 1K50M) at 400 MHz
>    Board: ADS 8247
>    I2C:   ready
>    DRAM:  128 MB
>    Top of RAM usable for U-Boot at: 08000000
>    Reserving 160k for U-Boot at: 07fd7000
>    Reserving 192k for malloc() at: 07fa7000
>    Reserving 76 Bytes for Board Info at: 07fa6fb4
>    Reserving 72 Bytes for Global Data at: 07fa6f6c
>    Stack Pointer at: 07fa6f48
>    New Stack Pointer is: 07fa6f48
>    Now running in RAM - U-Boot at: 07fd7000
>    FLASH: Manuf. ID @ 0xfff00000: 0x00000004
>    ## Unknown FLASH on Bank 0 - Size = 0x00000000 = 0 MB
>    flash_protect ON: from 0xFFF00000 to 0xFFF22FFF
>    flash_protect ON: from 0xFFF70000 to 0xFFF7FFFF
>    *** failed ***
>    ### ERROR ### Please RESET the board ###
>
>    I found the manufacture ID of flash is error , it should be 0x01, but
> it is 0x04, it is the first byte that u-boot.bin file was burned into
> AM29LV040. In my flash.c file, the code that I get manufacture ID as
> following:
>    ...
>    flash_cmd_autoselect (base);
>    mfrId= U8_READ (base);
>    flash_cmd_reset (base);
>    ...
>    The functions that above code called is as following:
>    #define U8_WRITE(reg, val)  (*((volatile uchar  *)(reg)) =
> ((uchar)((val)&0xFF)))
>    #define U8_READ(reg)       (*((volatile uchar  *)(reg)))
>    static void flash_cmd_reset (ulong base)
>    {
>    U8_WRITE (base + 0x0, 0xF0);
>    }
>    static void flash_cmd_unlock (ulong base)
>    {
>    U8_WRITE (base + 0x555, 0xAA);
>    U8_WRITE (base + 0x2AA, 0x55);
>    }
>    static void flash_cmd_autoselect (ulong base)
>    {
>    flash_cmd_unlock (base + 0x555);
>    U8_WRITE (base + 0x555, 0x90);
>    }
>
>    I want to get everyone's help, thank you very much!
>

Use the latest version of U-Boot and the CFI driver rather than this
custom driver you are currently using

Regards,

Graeme


Oh, I use u-boot-1.1.4 or u-boot-1.2.0, I have compared them with the latest version, there is little difference.
I port AM29lV0404B driver on VxWorks into u-boot, AM29lV0404B driver on VxWorks works fine!

Best regard



More information about the U-Boot mailing list