blob: 0d6dcaa976712402db06ba7992bd5de2d4a4bb1e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#! /bin/sh
# Copyright (C) 2008 OpenedHand Ltd.
# Contact: andrew@openedhand.com
#
# Erase the partition given in $3 (default: rootfs) and flash the contents
# of image given in $1 into the image $2.
if [ ! -r "$1" ]; then
echo "Usage: $0 <image> <destimage> [<partition>]"
exit -1
fi
if [ ! -e "$2" ]; then
echo "foo"
# Making an empty/erased flash image. Need a correct echo behavior.
dd if=/dev/zero of=$2 bs=268435456 count=0 seek=1
bash -c 'echo -en \\0377\\0377\\0377\\0377\\0377\\0377\\0377\\0377 > .8b'
cat .8b .8b > .16b # OOB is 16 bytes
cat .16b .16b .16b .16b .16b .16b .16b .16b > .8sec
cat .8sec .8sec .8sec .8sec .8sec .8sec .8sec .8sec > .64sec
cat .64sec .64sec .64sec .64sec .64sec .64sec .64sec .64sec > .512sec
cat .512sec .512sec .512sec .512sec > .2ksec
cat .2ksec .2ksec .2ksec .2ksec .2ksec .2ksec .2ksec .2ksec > .16k
cat .16k .16k .16k .16k .16k .16k .16k .16k > .128k
# N800 NAND is 512k sectors big
cat .128k .128k .128k .128k >> $2
rm -rf .8b .16b .8sec .64sec .512sec .2ksec .16k .128k
fi
if [ "$3" != "" ]; then
case "$3" in
config)
partition=/dev/mtd1
page=64
;;
initfs)
partition=/dev/mtd3
page=1280
;;
rootfs)
partition=/dev/mtd4
page=2304
;;
*)
echo "Unknown partition $2"
exit -1
esac
else
partition=/dev/mtd4
page=2304
fi
dd if=$1 of=$2 conv=notrunc bs=2048 seek=$page
|