From 606f38a2221648ca5c5fa292c9f71d2ddd59fa66 Mon Sep 17 00:00:00 2001 From: Artem Bityutskiy Date: Tue, 17 Mar 2009 10:14:54 +0200 Subject: ubi-utils: re-arrange directory layout Move new-utils to ubi-utils and old ones to ubi-utils/old-utils. Signed-off-by: Artem Bityutskiy --- ubi-utils/old-utils/scripts/inject_biterror.pl | 94 ++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 ubi-utils/old-utils/scripts/inject_biterror.pl (limited to 'ubi-utils/old-utils/scripts/inject_biterror.pl') diff --git a/ubi-utils/old-utils/scripts/inject_biterror.pl b/ubi-utils/old-utils/scripts/inject_biterror.pl new file mode 100644 index 0000000..b4a862a --- /dev/null +++ b/ubi-utils/old-utils/scripts/inject_biterror.pl @@ -0,0 +1,94 @@ +#!/usr/bin/perl -w +# +# 2007 Frank Haverkamp +# +# Program for bit-error injection. I am sure that perl experts do it +# in 1 line. Please let me know how it is done right ;-). +# + +use strict; +use warnings; +use Getopt::Long; +use Pod::Usage; + +my $i; +my $help; +my $result; +my $offset = 0; +my $bitmask = 0x01; +my $in = "input.mif"; +my $out = "output.mif"; + +$result = GetOptions ("offset=i" => \$offset, # numeric + "bitmask=o" => \$bitmask, # numeric + "input=s" => \$in, # string + "output=s" => \$out, # string + "help|?" => \$help) or pod2usage(2); + +pod2usage(1) if $help; + +my $buf; + +open(my $in_fh, "<", $in) + or die "Cannot open file $in: $!"; +binmode $in_fh; + +open(my $out_fh, ">", $out) or + die "Cannot open file $out: $!"; +binmode $out_fh; + +$i = 0; +while (sysread($in_fh, $buf, 1)) { + + $buf = pack('C', unpack('C', $buf) ^ $bitmask) if ($i == $offset); + syswrite($out_fh, $buf, 1) or + die "Cannot write to offset $offset: $!"; + $i++; +} + +close $in_fh; +close $out_fh; + +__END__ + +=head1 NAME + +inject_biterrors.pl + +=head1 SYNOPSIS + +inject_biterror.pl [options] + +=head1 OPTIONS + +=over 8 + +=item B<--help> + +Print a brief help message and exits. + +=item B<--offset>=I + +Byte-offset where bit-error should be injected. + +=item B<--bitmask>=I + +Bit-mask where to inject errors in the byte. + +=item B<--input>=I + +Input file. + +=item B<--output>=I + +Output file. + +=back + +=head1 DESCRIPTION + +B will read the given input file and inject +biterrors at the I specified. The location of the biterrors +are defined by the I parameter. + +=cut -- cgit v1.2.3