From: Alexander Aring <alex.aring@googlemail.com>
To: barebox@lists.infradead.org
Subject: [PATCH 1/8] nandtest: stat ecc per page not per eraseblock
Date: Mon, 22 Oct 2012 09:23:25 +0200 [thread overview]
Message-ID: <1350890612-10588-2-git-send-email-alex.aring@gmail.com> (raw)
In-Reply-To: <1350890612-10588-1-git-send-email-alex.aring@gmail.com>
Collect ecc statistics per page not per eraseblock.
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
---
commands/nandtest.c | 70 +++++++++++++++++++++++++++++------------------------
1 file changed, 39 insertions(+), 31 deletions(-)
diff --git a/commands/nandtest.c b/commands/nandtest.c
index d683b24..cdb837f 100644
--- a/commands/nandtest.c
+++ b/commands/nandtest.c
@@ -96,7 +96,8 @@ static ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset)
static int erase_and_write(off_t ofs, unsigned char *data, unsigned char *rbuf)
{
struct erase_info_user er;
- int i, ret;
+ unsigned int i;
+ int ret;
printf("\r0x%08x: erasing... ", (unsigned)(ofs + memregion.offset));
@@ -111,43 +112,50 @@ static int erase_and_write(off_t ofs, unsigned char *data, unsigned char *rbuf)
return ret;
}
- printf("\r0x%08x: writing...", (unsigned)(ofs + memregion.offset));
+ for (i = 0; i < meminfo.erasesize;
+ i += meminfo.writesize) {
+ printf("\r0x%08x: writing...", (unsigned)
+ (ofs + i + memregion.offset));
- /* Write data to given offset */
- pwrite(fd, data, meminfo.erasesize, ofs);
+ /* Write data to given offset */
+ pwrite(fd, data + i, meminfo.writesize, ofs + i);
- printf("\r0x%08x: reading...", (unsigned)(ofs + memregion.offset));
+ printf("\r0x%08x: reading...", (unsigned)
+ (ofs + i + memregion.offset));
- /* Read data from offset */
- pread(fd, rbuf, meminfo.erasesize, ofs);
+ /* Read data from offset */
+ pread(fd, rbuf + i, meminfo.writesize, ofs + i);
- ret = ioctl(fd, ECCGETSTATS, &newstats);
- if (ret < 0) {
- perror("ECCGETSTATS");
- return ret;
- }
+ ret = ioctl(fd, ECCGETSTATS, &newstats);
+ if (ret < 0) {
+ perror("ECCGETSTATS");
+ return ret;
+ }
- if (newstats.corrected > oldstats.corrected) {
- printf("\n %d bit(s) ECC corrected at 0x%08x\n",
- newstats.corrected - oldstats.corrected,
- (unsigned)(ofs + memregion.offset));
- if ((newstats.corrected-oldstats.corrected) >= MAX_ECC_BITS) {
- /* Increment ECC stats that are over MAX_ECC_BITS */
- ecc_stats_over++;
- } else {
- /* Increment ECC stat value */
- ecc_stats[(newstats.corrected-oldstats.corrected)-1]++;
+ if (newstats.corrected > oldstats.corrected) {
+ printf("\n %d bit(s) ECC corrected at page 0x%08x\n",
+ newstats.corrected - oldstats.corrected,
+ (unsigned)(ofs + memregion.offset + i));
+ if ((newstats.corrected-oldstats.corrected) >=
+ MAX_ECC_BITS) {
+ /* Increment ECC stats that
+ * are over MAX_ECC_BITS */
+ ecc_stats_over++;
+ } else {
+ /* Increment ECC stat value */
+ ecc_stats[(newstats.corrected-
+ oldstats.corrected)-1]++;
+ }
+ /* Set oldstats to newstats */
+ oldstats.corrected = newstats.corrected;
+ }
+ if (newstats.failed > oldstats.failed) {
+ printf("\nECC failed at page 0x%08x\n",
+ (unsigned)(ofs + memregion.offset + i));
+ oldstats.failed = newstats.failed;
+ ecc_failed_cnt++;
}
- /* Set oldstats to newstats */
- oldstats.corrected = newstats.corrected;
- }
- if (newstats.failed > oldstats.failed) {
- printf("\nECC failed at 0x%08x\n",
- (unsigned)(ofs + memregion.offset));
- oldstats.failed = newstats.failed;
- ecc_failed_cnt++;
}
-
printf("\r0x%08x: checking...", (unsigned)(ofs + memregion.offset));
/* Compared written data with read data.
--
1.7.12.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2012-10-22 7:21 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-22 7:23 [PATCH 0/8] improve nandtest command Alexander Aring
2012-10-22 7:23 ` Alexander Aring [this message]
2012-10-22 7:23 ` [PATCH 2/8] nandtest: add progressbar instead of offset print Alexander Aring
2012-10-22 7:23 ` [PATCH 3/8] nandtest: rename command argument p to i Alexander Aring
2012-10-22 7:23 ` [PATCH 4/8] nandtest: change flash length variable type Alexander Aring
2012-10-22 7:23 ` [PATCH 5/8] nandtest: use get_random_bytes instead of for loop Alexander Aring
2012-10-22 7:23 ` [PATCH 6/8] nandtest: clean up code Alexander Aring
2012-10-22 7:23 ` [PATCH 7/8] nandtest: use loff_t instead off_t Alexander Aring
2012-10-22 7:23 ` [PATCH 8/8] nandtest: add another constraints check Alexander Aring
2012-10-23 6:27 ` [PATCH 0/8] improve nandtest command Sascha Hauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1350890612-10588-2-git-send-email-alex.aring@gmail.com \
--to=alex.aring@googlemail.com \
--cc=barebox@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.