[U-Boot] BDI3000 - Unprotect flash sectors

Hello,
i'm not sure if this is the right place for this question...however, here it is:
i'm using a BDI3000 to program uboot to the flash (Spansion S29GL512P) on a MPC5200B base board. Erasing / Programming works fine as long as the flash sectors are not protected (via PPB bit). On a protected sector the erase command fails (what makes sense). I thought I can use the unlock command to unprotect the sectors, but this command seems not to work:
unlock 0xfff00000 1000
Unlocking flash at 0xfff00000 # Invalid parameter for flash programming
Any ideas what I'm doing wrong?
Flash configuration: [FLASH] CHIPTYPE MIRRORX16 CHIPSIZE 0x04000000 BUSWIDTH 16 WORKSPACE 0x00000000
Regards Georg Waibel

Hi Georg,
On 01/11/2013 08:41 AM, Waibel Georg wrote:
i'm not sure if this is the right place for this question...however, here it is:
i'm using a BDI3000 to program uboot to the flash (Spansion S29GL512P) on a MPC5200B base board. Erasing / Programming works fine as long as the flash sectors are not protected (via PPB bit). On a protected sector the erase command fails (what makes sense). I thought I can use the unlock command to unprotect the sectors, but this command seems not to work:
unlock 0xfff00000 1000
Unlocking flash at 0xfff00000 # Invalid parameter for flash programming
Any ideas what I'm doing wrong?
Flash configuration: [FLASH] CHIPTYPE MIRRORX16 CHIPSIZE 0x04000000 BUSWIDTH 16 WORKSPACE 0x00000000
Yes, the BDI doesn't support the unlocking of the Advanced Locking Bits (PPB) of these Spansion (and other manufacturers) type chips. You need to manually unlock the sectors in the telnet BDI session by writing the unlocking sequence to the sector(s). Or use U-Boot to do this (if possible).
Please note that some patches to better support this PPB locking have been applied to mainline just now. And I also have some patches to support this PPB (un)-locking in Linux a short while ago which are still pending:
http://lists.infradead.org/pipermail/linux-mtd/2012-December/045295.html
Hope this helps.
Thanks, Stefan

Hi,
using BDI telnet session to issue the unprotect command works fine. Here some hints that have to be considered: - use command mmh to do a 16 bit access on a 16 bit wide flash - on a 16 bit wide flash the LSB address line is usually not connected (A0 of flash is connected to A1 of the host on a little endian machine). Thus the addresses required to enter flash command mode (see flash data sheet) have to be adapted (shift left by 1, 0x555 becomes 0xAAA, 0x2AA becomes 0x554) Regards Georg
-----Ursprüngliche Nachricht----- Von: Stefan Roese [mailto:sr@denx.de] Gesendet: Freitag, 11. Januar 2013 10:31 An: Waibel Georg Cc: 'u-boot@lists.denx.de' Betreff: Re: [U-Boot] BDI3000 - Unprotect flash sectors
Hi Georg,
On 01/11/2013 08:41 AM, Waibel Georg wrote:
i'm not sure if this is the right place for this question...however, here it is:
i'm using a BDI3000 to program uboot to the flash (Spansion S29GL512P) on a MPC5200B base board. Erasing / Programming works fine as long as the flash sectors are not protected (via PPB bit). On a protected sector the erase command fails (what makes sense). I thought I can use the unlock command to unprotect the sectors, but this command seems not to work:
unlock 0xfff00000 1000
Unlocking flash at 0xfff00000 # Invalid parameter for flash programming
Any ideas what I'm doing wrong?
Flash configuration: [FLASH] CHIPTYPE MIRRORX16 CHIPSIZE 0x04000000 BUSWIDTH 16 WORKSPACE 0x00000000
Yes, the BDI doesn't support the unlocking of the Advanced Locking Bits (PPB) of these Spansion (and other manufacturers) type chips. You need to manually unlock the sectors in the telnet BDI session by writing the unlocking sequence to the sector(s). Or use U-Boot to do this (if possible).
Please note that some patches to better support this PPB locking have been applied to mainline just now. And I also have some patches to support this PPB (un)-locking in Linux a short while ago which are still pending:
http://lists.infradead.org/pipermail/linux-mtd/2012-December/045295.html
Hope this helps.
Thanks, Stefan

Dear Waibel Georg,
CCing Wolfgang, he's the expert on both IMO.
Hello,
i'm not sure if this is the right place for this question...however, here it is:
i'm using a BDI3000 to program uboot to the flash (Spansion S29GL512P) on a
MPC5200B base board. Erasing / Programming works fine as long as the flash sectors are not protected (via PPB bit). On a protected sector the erase command fails (what makes sense). I thought I can use the unlock command to unprotect the sectors, but this command seems not to work:
unlock 0xfff00000 1000
Unlocking flash at 0xfff00000 # Invalid parameter for flash programming
Any ideas what I'm doing wrong?
Flash configuration: [FLASH] CHIPTYPE MIRRORX16 CHIPSIZE 0x04000000 BUSWIDTH 16 WORKSPACE 0x00000000
Regards Georg Waibel
Best regards, Marek Vasut

On 01/11/2013 02:41 AM, Waibel Georg wrote:
Hello,
i'm not sure if this is the right place for this question...however, here it is:
i'm using a BDI3000 to program uboot to the flash (Spansion S29GL512P) on a MPC5200B base board. Erasing / Programming works fine as long as the flash sectors are not protected (via PPB bit). On a protected sector the erase command fails (what makes sense). I thought I can use the unlock command to unprotect the sectors, but this command seems not to work:
unlock 0xfff00000 1000
Hi Georg, do you get the same error if you create an ERASE list and have UNLOCK added as the mode for those sectors that need to be unlocked ? Issue then ERASE or UNLOCK without any parameter in the telnet session and see if that makes any difference. Also, make sure that address 0xfff00000 is the correct sector address.
Failing that, please try using the CFI interface of your flash. Check in your flash memory data sheet for all the CFI commands. Try to unlock a sector and then read back the status register to see what the reported error is. Use MD and MM commands to issue the CFI commands to your flash.
Hope this helps
-- sinan
Unlocking flash at 0xfff00000 # Invalid parameter for flash programming
Any ideas what I'm doing wrong?
Flash configuration: [FLASH] CHIPTYPE MIRRORX16 CHIPSIZE 0x04000000 BUSWIDTH 16 WORKSPACE 0x00000000
Regards Georg Waibel
participants (4)
-
Marek Vasut
-
Sinan Akman
-
Stefan Roese
-
Waibel Georg