public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] flash: Add optional verify-after-write feature
@ 2013-04-04  7:12 Stefan Roese
  2013-04-04 12:46 ` Wolfgang Denk
  2013-04-04 13:53 ` [U-Boot] [PATCH v2] " Stefan Roese
  0 siblings, 2 replies; 5+ messages in thread
From: Stefan Roese @ 2013-04-04  7:12 UTC (permalink / raw)
  To: u-boot

Sometimes it might make sense to verify the written data to NOR flash.
This patch adds this feature. To enable this verify-after-write, you
need to define CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE in your board
config header.

Signed-off-by: Stefan Roese <sr@denx.de>
---
 common/flash.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/common/flash.c b/common/flash.c
index 8244ba2..3ae3c9a 100644
--- a/common/flash.c
+++ b/common/flash.c
@@ -149,6 +149,9 @@ flash_write (char *src, ulong addr, ulong cnt)
 	flash_info_t *info_first = addr2info (addr);
 	flash_info_t *info_last  = addr2info (end );
 	flash_info_t *info;
+	__maybe_unused char *src_orig = src;
+	__maybe_unused char *addr_orig = (char *)addr;
+	__maybe_unused ulong cnt_orig = cnt;
 
 	if (cnt == 0) {
 		return (ERR_OK);
@@ -185,6 +188,14 @@ flash_write (char *src, ulong addr, ulong cnt)
 		addr += len;
 		src  += len;
 	}
+
+#if defined(CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE)
+	if (memcmp(src_orig, addr_orig, cnt_orig)) {
+		printf("\nVerify-after-write failed!\n");
+		return ERR_PROG_ERROR;
+	}
+#endif /* CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE */
+
 	return (ERR_OK);
 #endif /* CONFIG_SPD823TS */
 }
-- 
1.8.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH] flash: Add optional verify-after-write feature
  2013-04-04  7:12 [U-Boot] [PATCH] flash: Add optional verify-after-write feature Stefan Roese
@ 2013-04-04 12:46 ` Wolfgang Denk
  2013-04-04 13:29   ` Stefan Roese
  2013-04-04 13:53 ` [U-Boot] [PATCH v2] " Stefan Roese
  1 sibling, 1 reply; 5+ messages in thread
From: Wolfgang Denk @ 2013-04-04 12:46 UTC (permalink / raw)
  To: u-boot

Dear Stefan Roese,

In message <1365059554-10662-1-git-send-email-sr@denx.de> you wrote:
> Sometimes it might make sense to verify the written data to NOR flash.
> This patch adds this feature. To enable this verify-after-write, you
> need to define CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE in your board
> config header.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>
> ---
>  common/flash.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)

This is a user selectable feature, thus the option should be
CONFIG_FLASH_VERIFY_AFTER_WRITE.  Thinking about it - obviously you
cannot verify _before_ the write, so all the "after write" is
redundant.  Better call it just "CONFIG_FLASH_VERIFY".  Please also
change the error message:

Instead

	printf("\nVerify-after-write failed!\n");

just:

	printf("\nVerify failed!\n");

Finally - you are introducing a new CONFIG_ option; this must be
documented in the README.

And it might make sense to add a comment that this option is totally
useless in almost all cases, and should only be enabled if you know
EXACTLY what you are doing - and that it does not really work even
then.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"One planet is all you get."

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH] flash: Add optional verify-after-write feature
  2013-04-04 12:46 ` Wolfgang Denk
@ 2013-04-04 13:29   ` Stefan Roese
  0 siblings, 0 replies; 5+ messages in thread
From: Stefan Roese @ 2013-04-04 13:29 UTC (permalink / raw)
  To: u-boot

Hi Wolfgang,

On 04.04.2013 14:46, Wolfgang Denk wrote:
> In message <1365059554-10662-1-git-send-email-sr@denx.de> you wrote:
>> Sometimes it might make sense to verify the written data to NOR flash.
>> This patch adds this feature. To enable this verify-after-write, you
>> need to define CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE in your board
>> config header.
>>
>> Signed-off-by: Stefan Roese <sr@denx.de>
>> ---
>>  common/flash.c | 11 +++++++++++
>>  1 file changed, 11 insertions(+)
> 
> This is a user selectable feature, thus the option should be
> CONFIG_FLASH_VERIFY_AFTER_WRITE.  Thinking about it - obviously you
> cannot verify _before_ the write, so all the "after write" is
> redundant.  Better call it just "CONFIG_FLASH_VERIFY".  Please also
> change the error message:
> 
> Instead
> 
> 	printf("\nVerify-after-write failed!\n");
> 
> just:
> 
> 	printf("\nVerify failed!\n");
> 
> Finally - you are introducing a new CONFIG_ option; this must be
> documented in the README.
> 
> And it might make sense to add a comment that this option is totally
> useless in almost all cases, and should only be enabled if you know
> EXACTLY what you are doing - and that it does not really work even
> then.

Thanks for your review. Everything you mentioned makes perfect sense.
I'll address those issues in v2 of the patch.

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v2] flash: Add optional verify-after-write feature
  2013-04-04  7:12 [U-Boot] [PATCH] flash: Add optional verify-after-write feature Stefan Roese
  2013-04-04 12:46 ` Wolfgang Denk
@ 2013-04-04 13:53 ` Stefan Roese
  2013-04-22  9:08   ` Stefan Roese
  1 sibling, 1 reply; 5+ messages in thread
From: Stefan Roese @ 2013-04-04 13:53 UTC (permalink / raw)
  To: u-boot

Sometimes it might make sense to verify the written data to NOR flash.
This patch adds this feature. To enable this verify-after-write, you
need to define CONFIG_FLASH_VERIFY in your board config header.

Please note that this option is useless in nearly all cases,
since such flash programming errors usually are detected earlier
while unprotecting/erasing/programming. Please only enable
this option if you really know what you are doing.

Signed-off-by: Stefan Roese <sr@denx.de>
---
v2:
- Change CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE to CONFIG_FLASH_VERIFY
- Change error message
- Add documentation for this option to README

 README         |  9 +++++++++
 common/flash.c | 11 +++++++++++
 2 files changed, 20 insertions(+)

diff --git a/README b/README
index 5701016..1ce9a98 100644
--- a/README
+++ b/README
@@ -3190,6 +3190,15 @@ Configuration Settings:
 		digits and dots.  Recommended value: 45 (9..1) for 80
 		column displays, 15 (3..1) for 40 column displays.
 
+- CONFIG_FLASH_VERIFY
+		If defined, the content of the flash (destination) is compared
+		against the source after the write operation. An error message
+		will be printed when the contents are not identical.
+		Please note that this option is useless in nearly all cases,
+		since such flash programming errors usually are detected earlier
+		while unprotecting/erasing/programming. Please only enable
+		this option if you really know what you are doing.
+
 - CONFIG_SYS_RX_ETH_BUFFER:
 		Defines the number of Ethernet receive buffers. On some
 		Ethernet controllers it is recommended to set this value
diff --git a/common/flash.c b/common/flash.c
index 8244ba2..0c57a3f 100644
--- a/common/flash.c
+++ b/common/flash.c
@@ -149,6 +149,9 @@ flash_write (char *src, ulong addr, ulong cnt)
 	flash_info_t *info_first = addr2info (addr);
 	flash_info_t *info_last  = addr2info (end );
 	flash_info_t *info;
+	__maybe_unused char *src_orig = src;
+	__maybe_unused char *addr_orig = (char *)addr;
+	__maybe_unused ulong cnt_orig = cnt;
 
 	if (cnt == 0) {
 		return (ERR_OK);
@@ -185,6 +188,14 @@ flash_write (char *src, ulong addr, ulong cnt)
 		addr += len;
 		src  += len;
 	}
+
+#if defined(CONFIG_FLASH_VERIFY)
+	if (memcmp(src_orig, addr_orig, cnt_orig)) {
+		printf("\nVerify failed!\n");
+		return ERR_PROG_ERROR;
+	}
+#endif /* CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE */
+
 	return (ERR_OK);
 #endif /* CONFIG_SPD823TS */
 }
-- 
1.8.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v2] flash: Add optional verify-after-write feature
  2013-04-04 13:53 ` [U-Boot] [PATCH v2] " Stefan Roese
@ 2013-04-22  9:08   ` Stefan Roese
  0 siblings, 0 replies; 5+ messages in thread
From: Stefan Roese @ 2013-04-22  9:08 UTC (permalink / raw)
  To: u-boot

On 04.04.2013 15:53, Stefan Roese wrote:
> Sometimes it might make sense to verify the written data to NOR flash.
> This patch adds this feature. To enable this verify-after-write, you
> need to define CONFIG_FLASH_VERIFY in your board config header.
> 
> Please note that this option is useless in nearly all cases,
> since such flash programming errors usually are detected earlier
> while unprotecting/erasing/programming. Please only enable
> this option if you really know what you are doing.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>

Applied to u-boot-cfi-flash/master.

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-04-22  9:08 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-04  7:12 [U-Boot] [PATCH] flash: Add optional verify-after-write feature Stefan Roese
2013-04-04 12:46 ` Wolfgang Denk
2013-04-04 13:29   ` Stefan Roese
2013-04-04 13:53 ` [U-Boot] [PATCH v2] " Stefan Roese
2013-04-22  9:08   ` Stefan Roese

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox