[U-Boot] Using Micron (Numonyx) m28w640hcb with u-boot
Vipin Kumar
vipin.kumar at st.com
Mon Nov 14 05:17:17 CET 2011
On 11/12/2011 5:31 PM, Gudjon I. Gudjonsson wrote:
> Hi list
Hi Gudjon,
> I have replaced the at49bv642d nor flash memory on my Atmel ngw100 board
> with the pin compatible m28w640hcb flash memory from Micron (formerly
> Numonyx).
>
> I can program the U-boot to the flash without problems using a JTAG. I can
> also program the full buildroot Linux system using JTAG and verify the bytes
> using the md.b command in U-boot. Therefore I assume there is nothing wrong
> with my hardware. However, I can neither make U-boot nor Linux write to the
> flash and Linux doesn't boot from the flash.
> I did start the Linux system from an NFS root and could detect the memory
> as a read only device in Linux but the /dev/mtdblockX devices did not appear.
> I have spent a lot of time on the problem without success and I am
> wondering how to proceed. Hopefully someone spots the problem directly.
I have had a similar problem with spear3xx board. Basically, this flash
is write protected in hardware by default. It has to be specifically
made writable. Please define a flag CONFIG_SYS_FLASH_PROTECTION in your
config file.
> The spear3xx series boards include the m28w640hct device. I could buy such
> a board to test but is anyone using that board with U-boot? If so can you
> please confirm that U-boot can write to the flash?
I am the maintainer of this baord in u-boot and it works with version
u-boot-2010.03
> Another idea is to replace the at64bv642 chip with some other NOR-flash,
> has anyone done that with success?
>
> The u-boot debug output can be found below. There are some (null)
> addresses that don't appear when using the working at49bv642d flash
>
Please try it and let me know if it helps
Regards
Vipin
> Thanks a lot for any help
> Gudjon
>
>
> /******************************
> U-boot startup
> *******************************/
> U-Boot 2010.06 (Nov 12 2011 - 11:48:36)
>
> U-Boot code: (null) -> 00011ae0 data: 00018e38 -> 0004e7b8
> VMR table @ 0x11fca684
> DMA: Using memory from 0x11f6d000 to 0x11f71000
> flash detect cfi
> fwc addr (null) cmd f0 f0 8bit x 8 bit
> fwc addr (null) cmd ff ff 8bit x 8 bit
> fwc addr 00000055 cmd 98 98 8bit x 8 bit
> is= cmd 51(Q) addr 00000010 is= ff 51
> fwc addr 00000555 cmd 98 98 8bit x 8 bit
> is= cmd 51(Q) addr 00000010 is= ff 51
> fwc addr (null) cmd f0 f0f0 16bit x 8 bit
> fwc addr (null) cmd ff ffff 16bit x 8 bit
> fwc addr 000000aa cmd 98 9898 16bit x 8 bit
> is= cmd 51(Q) addr 00000020 is= 0051 5151
> fwc addr 00000aaa cmd 98 9898 16bit x 8 bit
> is= cmd 51(Q) addr 00000020 is= 0051 5151
> fwc addr (null) cmd f0 00f0 16bit x 16 bit
> fwc addr (null) cmd ff 00ff 16bit x 16 bit
> fwc addr 000000aa cmd 98 0098 16bit x 16 bit
> is= cmd 51(Q) addr 00000020 is= 0051 0051
> is= cmd 52(R) addr 00000022 is= 0052 0052
> is= cmd 59(Y) addr 00000024 is= 0059 0059
> device interface is 1
> found port 2 chip 2 port 16 bits chip 16 bits
> 00 : 51 52 59 03 00 35 00 00 00 00 00 27 36 b4 c6 04 QRY..5.....'6...
> 10 : 04 0a 00 05 05 03 00 17 01 00 03 00 02 07 00 20 ...............
> 20 : 00 7e 00 00 01 50 52 49 31 30 e6 00 00 11 fb 4e .~...PRI10.....N
> fwc addr (null) cmd ff 00ff 16bit x 16 bit
> fwc addr (null) cmd 90 0090 16bit x 16 bit
> fwc addr (null) cmd ff 00ff 16bit x 16 bit
> fwc addr 000000aa cmd 98 0098 16bit x 16 bit
> manufacturer is 3
> manufacturer id is 0x20
> device id is 0x49
> device id2 is 0x0
> cfi version is 0x3130
> size_ratio 1 port 16 bits chip 16 bits
> found 2 erase regions
> erase region 0: 0x00200007
> erase_region_count = 8 erase_region_size = 8192
> erase region 1: 0x0100007e
> erase_region_count = 127 erase_region_size = 65536
> fwc addr (null) cmd ff 00ff 16bit x 16 bit
> flash_protect ON: from 0x00000000 to 0x0001AC37
> protect on 0
> protect on 1
> protect on 2
> protect on 3
> protect on 4
> protect on 5
> protect on 6
> protect on 7
> protect on 8
> flash_protect ON: from 0x007F0000 to 0x007FFFFF
> protect on 134
> Flash: 8 MiB at address 0x00000000
> DRAM Configuration:
> Bank #0: 10000000 32 MiB
> *** Warning - bad CRC, using default environment
>
> In: serial
> Out: serial
> Err: serial
> Net: macb0, macb1
> Press SPACE to abort autoboot in 1 seconds
> ### JFFS2 loading 'uImage' to 0x10400000
> Scanning JFFS2 FS: done.
>
> find_inode failed for name=uImage
>
> load: Failed to find inode
>
> ### JFFS2 LOAD ERROR<0> for uImage!
> Wrong Image Format for bootm command
> ERROR: can't get kernel image!
>
> /******************************
> Flash info
> *******************************/
>
> U-Boot> fli
>
>
> Bank # 1: CFI conformant FLASH (16 x 16) Size: 8 MB in 135 Sectors
> Intel Standard command set, Manufacturer ID: 0x20, Device ID: 0x49
> Erase timeout: 8192 ms, write timeout: 1 ms
> Buffer write timeout: 1 ms, buffer size: 8 bytes
>
> Sector Start Addresses:
> 00000000 RO 00002000 RO 00004000 RO 00006000 RO 00008000
> RO
> 0000A000 RO 0000C000 RO 0000E000 RO 00010000 RO 00020000
> RO
> 00030000 RO 00040000 RO 00050000 RO 00060000 RO 00070000
> RO
> 00080000 RO 00090000 RO 000A0000 RO 000B0000 RO 000C0000
> RO
> 000D0000 RO 000E0000 RO 000F0000 RO 00100000 RO 00110000
> RO
> 00120000 RO 00130000 RO 00140000 RO 00150000 RO 00160000
> RO
> 00170000 RO 00180000 RO 00190000 RO 001A0000 RO 001B0000
> RO
> 001C0000 RO 001D0000 RO 001E0000 RO 001F0000 RO 00200000
> RO
> 00210000 RO 00220000 RO 00230000 RO 00240000 RO 00250000
> RO
> 00260000 RO 00270000 RO 00280000 RO 00290000 RO 002A0000
> RO
> 002B0000 RO 002C0000 RO 002D0000 RO 002E0000 RO 002F0000
> RO
> 00300000 RO 00310000 RO 00320000 RO 00330000 RO 00340000
> RO
> 00350000 RO 00360000 RO 00370000 RO 00380000 RO 00390000
> RO
> 003A0000 RO 003B0000 RO 003C0000 RO 003D0000 RO 003E0000
> RO
> 003F0000 RO 00400000 RO 00410000 RO 00420000 RO 00430000
> RO
> 00440000 RO 00450000 RO 00460000 RO 00470000 RO 00480000
> RO
> 00490000 RO 004A0000 RO 004B0000 RO 004C0000 RO 004D0000
> RO
> 004E0000 RO 004F0000 RO 00500000 RO 00510000 RO 00520000
> RO
> 00530000 RO 00540000 RO 00550000 RO 00560000 RO 00570000
> RO
> 00580000 RO 00590000 RO 005A0000 RO 005B0000 RO 005C0000
> RO
> 005D0000 RO 005E0000 RO 005F0000 RO 00600000 RO 00610000
> RO
> 00620000 RO 00630000 RO 00640000 RO 00650000 RO 00660000
> RO
> 00670000 RO 00680000 RO 00690000 RO 006A0000 RO 006B0000
> RO
> 006C0000 RO 006D0000 RO 006E0000 RO 006F0000 RO 00700000
> RO
> 00710000 RO 00720000 RO 00730000 RO 00740000 RO 00750000
> RO
> 00760000 RO 00770000 RO 00780000 RO 00790000 RO 007A0000
> RO
> 007B0000 RO 007C0000 RO 007D0000 RO 007E0000 RO 007F0000
> RO
>
>
> /******************************
> Unprotecting memory
> *******************************/
>
> U-Boot> protect off 0x20000 0x7effff
>
> /******************************
> Flash info
> *******************************/
> U-Boot> fli
>
>
> Bank # 1: CFI conformant FLASH (16 x 16) Size: 8 MB in 135 Sectors
> Intel Standard command set, Manufacturer ID: 0x20, Device ID: 0x49
> Erase timeout: 8192 ms, write timeout: 1 ms
> Buffer write timeout: 1 ms, buffer size: 8 bytes
>
> Sector Start Addresses:
> 00000000 RO 00002000 RO 00004000 RO 00006000 RO 00008000
> RO
> 0000A000 RO 0000C000 RO 0000E000 RO 00010000 RO 00020000
> 00030000 00040000 00050000 00060000 00070000
> 00080000 00090000 000A0000 000B0000 000C0000
> 000D0000 000E0000 000F0000 00100000 00110000
> 00120000 00130000 00140000 00150000 00160000
> 00170000 00180000 00190000 001A0000 001B0000
> 001C0000 001D0000 001E0000 001F0000 00200000
> 00210000 00220000 00230000 00240000 00250000
> 00260000 00270000 00280000 00290000 002A0000
> 002B0000 002C0000 002D0000 002E0000 002F0000
>
> 00300000 00310000 00320000 00330000 00340000
> 00350000 00360000 00370000 00380000 00390000
> 003A0000 003B0000 003C0000 003D0000 003E0000
> 003F0000 00400000 00410000 00420000 00430000
> 00440000 00450000 00460000 00470000 00480000
> 00490000 004A0000 004B0000 004C0000 004D0000
> 004E0000 004F0000 00500000 00510000 00520000
> 00530000 00540000 00550000 00560000 00570000
>
> 00580000 00590000 005A0000 005B0000 005C0000
> 005D0000 005E0000 005F0000 00600000 00610000
> 00620000 00630000 00640000 00650000 00660000
> 00670000 00680000 00690000 006A0000 006B0000
> 006C0000 006D0000 006E0000 006F0000 00700000
> 00710000 00720000 00730000 00740000 00750000
> 00760000 00770000 00780000 00790000 007A0000
> 007B0000 007C0000 007D0000 007E0000 007F0000
> RO
>
> Un-Protected 125 sectors
>
> /******************************
> Erasing memory
> *******************************/
>
> U-Boot> erase 0x20000 0x7effff
>
>
> fwc addr 00020000 cmd 50 0050 16bit x 16 bit
> fwc addr 00020000 cmd 20 0020 16bit x 16 bit
> fwc addr 00020000 cmd d0 00d0 16bit x 16 bit
> flash_is_busy: 0
> ........
> fwc addr 007d0000 cmd ff 00ff 16bit x 16 bit
> .fwc addr 007e0000 cmd 50 0050 16bit x 16 bit
> fwc addr 007e0000 cmd 20 0020 16bit x 16 bit
> fwc addr 007e0000 cmd d0 00d0 16bit x 16 bit
> flash_is_busy: 0
> fwc addr 007e0000 cmd ff 00ff 16bit x 16 bit
> . done
> Erased 125 sectors
>
> /******************************
> Display memory at 0x20000
> *******************************/
>
> U-Boot> md.b 0x20000
>
> 00020000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
> 00020010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
> 00020020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
> 00020030: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
>
> /******************************
> I want to try to copy some bytes to the memory with the cp.b command.
> This works with the at49bc642d flash.
> Look at the memory at 0x90000000 in ram before copying it to flash at 0x20000
> *******************************/
> U-Boot> md.b 0x90000000
>
> 90000000: 00 00 00 00 33 cc 63 4c 77 cc 13 48 23 ec 37 dc ....3.cLw..H#.7.
> 90000010: 13 ce 33 cc 33 cc b3 cc 37 cc 73 ce 31 cc 33 cc ..3.3...7.s.1.3.
>
> /******************************
> Copy from RAM memory at 0x90000000 to Flash memory, this works on a
> normal ngw100 with at49bv642d
> *******************************/
> U-Boot> cp.b 0x90000000 0x20000 0x10
>
> Copy to Flash... fwc addr (null) cmd 50 0050 16bit x 16 bit
> fwc addr (null) cmd 40 0040 16bit x 16 bit
> flash_is_busy: 0
> fwc addr 00020000 cmd ff 00ff 16bit x 16 bit
> fwc addr (null) cmd 50 0050 16bit x 16 bit
> fwc addr (null) cmd 40 0040 16bit x 16 bit
> ......
> flash_is_busy: 0
> fwc addr 00020000 cmd ff 00ff 16bit x 16 bit
> fwc addr (null) cmd 50 0050 16bit x 16 bit
> fwc addr (null) cmd 40 0040 16bit x 16 bit
> flash_is_busy: 0
> fwc addr 00020000 cmd ff 00ff 16bit x 16 bit
> done
>
> /******************************
> Display memory at 0x20000, nothing has been written.
> *******************************/
> U-Boot> md.b 0x20000
>
> 00020000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
> 00020010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
> U-Boot>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
> .
>
More information about the U-Boot
mailing list