r4347 - developers/werner
werner at sita.openmoko.org
werner at sita.openmoko.org
Fri Apr 11 16:55:25 CEST 2008
Author: werner
Date: 2008-04-11 16:55:21 +0200 (Fri, 11 Apr 2008)
New Revision: 4347
Added:
developers/werner/bb_slack.pl
Log:
Quick and dirty script to calculate how many "slack" blocks we'd need per
NAND partition for a certain probability that these blocks will indeed be
sufficient to accommodate the bad blocks that may fall into this area.
Assumes that bad blocks are evenly distributed and don't come in clumps.
Added: developers/werner/bb_slack.pl
===================================================================
--- developers/werner/bb_slack.pl 2008-04-11 14:35:12 UTC (rev 4346)
+++ developers/werner/bb_slack.pl 2008-04-11 14:55:21 UTC (rev 4347)
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+
+#
+# usage: bb_slack.pl [#good_blocks [max_#slack]]
+#
+
+#
+# n = minimum number of good blocks needed
+# b = probability that block is bad
+# s = slack
+# p = probability that slack is sufficient
+#
+# s ( n+s )
+# p = sum ( ) * b^i*(1-b)^(n+s-i)
+# i = 0 ( i )
+#
+# Note: this assumes that bad blocks are evenly distributed and don't come in
+# clumps.
+#
+
+$n = 2; # u-boot partition (256kB)
+$b = 40/2048; # Samsung K5D2G13ACM-D075
+
+sub binom
+{
+ local ($n, $k) = @_;
+ local ($b, $i);
+
+ $b = 1;
+ for ($i = $n-$k+1; $i <= $n; $i++) {
+ $b *= $i;
+ }
+ for ($i = 2; $i <= $k; $i++) {
+ $b /= $i;
+ }
+ return $b;
+}
+
+
+sub exp
+{
+ local ($b, $e) = @_;
+
+ return exp(log($b)*$e);
+}
+
+
+sub p_good
+{
+ local ($s) = @_;
+ local ($p, $i);
+
+ $p = 0;
+ for ($i = 0; $i <= $s; $i++) {
+ $p += &binom($n+$s, $i)*&exp($b, $i)*&exp(1-$b, $n+$s-$i);
+ }
+ return $p;
+}
+
+$n = $ARGV[0] if @ARGV;
+$t = 20;
+$t = $ARGV[1] if defined $ARGV[1];
+
+for ($s = 0; $s <= $t; $s++) {
+ print "$n+$s: 10^", log(1-&p_good($s))/log(10), "\n";
+}
+
+# Some results:
+# <10^-6 <10^-9
+# u-boot 256kB 2 3 5
+# u-boot_env 256kB 2 3 5
+# kernel 8MB 64 10 13
+# splash 640kB 5 4 6
+# factory 256kB 2 3 5
+# rootfs ~246MB 1973 (don't care)
+#
+# total slack 23 34
Property changes on: developers/werner/bb_slack.pl
___________________________________________________________________
Name: svn:executable
+ *
More information about the commitlog
mailing list