Hi Dirk, I enabled the flash protection to protect the UBoot from being overwritten, since this means that customers need to send back the device for reprogramming the UBoot (without a valid bootloader, our MPC5200 target can only be accesses by a programmer like the BDI2000 debugger). Thus for our application it makes sense to have the protection on. Having the CONFIG_ENV_UNPROTECTED option fits to our requirements pretty well. I was just wondering if this option is something that is commonly useful... Thanks and regards Georg
> -----Ursprüngliche Nachricht----- > Von: Eibach, Dirk [mailto:[email protected]] > Gesendet: Dienstag, 26. Februar 2013 15:07 > An: Waibel Georg; [email protected] > Cc: Stefan Roese > Betreff: RE: [U-Boot] Flash protection and fw_setenv tool > > Hi Georg, > > maybe removing CONFIG_SYS_FLASH_PROTECTION from your configuration > does already what you want to achieve. > > BTW Linux support should be available here: > http://patchwork.ozlabs.org/patch/213602/ > > Cheers > Dirk > > > -----Original Message----- > > From: [email protected] > > [mailto:[email protected]] On Behalf Of Waibel Georg > > Sent: Tuesday, February 26, 2013 1:46 PM > > To: [email protected] > > Subject: Re: [U-Boot] Flash protection and fw_setenv tool > > > > Hi again, > > > > the previous patch missed some places to apply the unprotect switch. > > Here's an improved version: > > > > Index: common/env_flash.c > > > ========================================================== > ========= > > --- common/env_flash.c (revision 4065) > > +++ common/env_flash.c (working copy) > > @@ -218,9 +218,12 @@ > > done: > > if (saved_data) > > free(saved_data); > > + > > +#ifndef CONFIG_ENV_UNPROTECTED > > /* try to re-protect */ > > flash_sect_protect(1, (ulong)flash_addr, end_addr); > > flash_sect_protect(1, (ulong)flash_addr_new, end_addr_new); > > +#endif > > > > return rc; > > } > > @@ -310,7 +313,9 @@ > > if (saved_data) > > free(saved_data); > > /* try to re-protect */ > > +#ifndef CONFIG_ENV_UNPROTECTED > > flash_sect_protect(1, (long)flash_addr, end_addr); > > +#endif > > return rc; > > } > > #endif /* CMD_SAVEENV */ > > @@ -340,7 +345,9 @@ > > flash_write(&flag, > > (ulong)&(flash_addr_new->flags), > > sizeof(flash_addr_new->flags)); > > +#ifndef CONFIG_ENV_UNPROTECTED > > flash_sect_protect(1, (ulong)flash_addr_new, > end_addr_new); > > +#endif > > } > > > > if (flash_addr->flags != ACTIVE_FLAG && @@ -352,7 +359,9 @@ > > flash_write(&flag, > > (ulong)&(flash_addr->flags), > > sizeof(flash_addr->flags)); > > +#ifndef CONFIG_ENV_UNPROTECTED > > flash_sect_protect(1, (ulong)flash_addr, end_addr); > > +#endif > > } > > > > if (gd->env_valid == 2) > > Index: drivers/mtd/cfi_flash.c > > > ========================================================== > ========= > > --- drivers/mtd/cfi_flash.c (revision 4065) > > +++ drivers/mtd/cfi_flash.c (working copy) > > @@ -2294,7 +2294,7 @@ > > #endif > > > > /* Environment protection ON by default */ -#ifdef > > CONFIG_ENV_IS_IN_FLASH > > +#if defined(CONFIG_ENV_IS_IN_FLASH) && > > !defined(CONFIG_ENV_UNPROTECTED) > > flash_protect(FLAG_PROTECT_SET, > > CONFIG_ENV_ADDR, > > CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE - 1, @@ - > 2302,7 > > +2302,7 @@ #endif > > > > /* Redundant environment protection ON by default */ -#ifdef > > CONFIG_ENV_ADDR_REDUND > > +#if defined(CONFIG_ENV_ADDR_REDUND) && > > !defined(CONFIG_ENV_UNPROTECTED) > > flash_protect(FLAG_PROTECT_SET, > > CONFIG_ENV_ADDR_REDUND, > > CONFIG_ENV_ADDR_REDUND + > > CONFIG_ENV_SECT_SIZE - 1, > > > > Regards > > Georg > > > > > > > > ---------------------------------------------------------------------- > > -------------------------- > Messe-Highlights 2013. Wir freuen uns auf Ihren Besuch. > > Broadcast Video Expo 2013 > London - 26.02. bis 28.02.2013 - Stand B22 > > CeBIT 2013 > In Hannover - 05.03. bis 09.03.2012 - Halle 11, Stand D31 > > ATC Global 2013 > Amsterdam - 12.03. bis 14.03.2012 - Halle 10, Stand D202 > ---------------------------------------------------------------------------------------------- > -- > Besuchen Sie unseren Blog auf > http://blog.gdsys.de > > oder folgen Sie uns auf: > twitter: http://twitter.com/#!/gdsys > facebook: http://www.facebook.com/pages/Guntermann-Drunck- > GmbH/318396891518396 > Google+ : https://plus.google.com/100228872787564309232/ > YouTube: http://www.youtube.com/user/GuntermannDrunck > ---------------------------------------------------------------------------------------------- > -- > Guntermann & Drunck GmbH Systementwicklung Dortmunder Str. 4a > D-57234 Wilnsdorf - Germany > Tel: +49 (0) 27 39 / 89 01 - 100 Fax: +49 (0) 27 39 / 89 01 - 120 > E-Mail: [email protected] - Web: www.gdsys.de > ---------------------------------------------------------------------------------------------- > -- > Geschäftsführer: > Udo Guntermann - Martin Drunck - Reiner Ruelmann HRB 2884, Amtsgericht > Siegen - WEEE-Reg.-Nr. DE30763240 USt.-Id.-Nr. DE 126575222 - Steuer-Nr. > 342 / 5835 / 1041 > ---------------------------------------------------------------------------------------------- > -- > DQS-zertifiziert nach ISO 9001:2008 > ---------------------------------------------------------------------------------------------- > -- > > -----Ursprüngliche Nachricht----- > > Von: [email protected] > > [mailto:[email protected]] Im Auftrag von Waibel Georg > > Gesendet: Dienstag, 26. Februar 2013 12:05 > > An: '[email protected]' > > Betreff: [U-Boot] Flash protection and fw_setenv tool > > > > Hi, > > > > I activated flash sector protection for our CFI NOR flash chip > > (CONFIG_SYS_FLASH_PROTECTION). Protection bits for U-Boot code > sectors > > and environment sector are set by default during U-Boot startup. Thus > > from Linux, I cannot write to this sectors, which is generally a > > correct behavior. BUT, with this, changing the environment from user > > space with the fw_setenv tool does not work anymore. > > And here's the question: How to deal with this issue correctly? Two > > approaches came in my mind: > > a) > > Unprotecting the flash sectors by the Linux kernel (in CFI driver). > > This seems not to be implemented yet, at least for AMD CFI command set > > (0x0002). > > However, when unprotecting flash sectors from Linux side, does a > > sector protection actually makes sense? > > b) > > Introduce a config option in U-Boot which allows to leave the > > environment unprotected. See patch below. I called this option > > CONFIG_ENV_UNPROTECTED When defined, U-Boot does not protect the > > environment. For compatibility with boards in which the environment > > sector is already protected, I left the unprotect part in the saveenv > > function untouched. > > > > Any comments about this issue? > > Thanks and regards > > Georg > > > > Index: common/env_flash.c > > > ========================================================== > ========= > > --- common/env_flash.c (revision 3966) > > +++ common/env_flash.c (working copy) > > @@ -218,9 +218,12 @@ > > done: > > if (saved_data) > > free(saved_data); > > + > > +#ifndef CONFIG_ENV_UNPROTECTED > > /* try to re-protect */ > > flash_sect_protect(1, (ulong)flash_addr, end_addr); > > flash_sect_protect(1, (ulong)flash_addr_new, end_addr_new); > > +#endif > > > > return rc; > > } > > Index: drivers/mtd/cfi_flash.c > > > ========================================================== > ========= > > --- drivers/mtd/cfi_flash.c (revision 3966) > > +++ drivers/mtd/cfi_flash.c (working copy) > > @@ -2294,7 +2294,7 @@ > > #endif > > > > /* Environment protection ON by default */ -#ifdef > > CONFIG_ENV_IS_IN_FLASH > > +#if defined(CONFIG_ENV_IS_IN_FLASH) && > > !defined(CONFIG_ENV_UNPROTECTED) > > flash_protect(FLAG_PROTECT_SET, > > CONFIG_ENV_ADDR, > > CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE - 1, > > > > > > _______________________________________________ > > U-Boot mailing list > > [email protected] > > http://lists.denx.de/mailman/listinfo/u-boot > > _______________________________________________ > > U-Boot mailing list > > [email protected] > > http://lists.denx.de/mailman/listinfo/u-boot > > > > > > > > _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

