blob: f1ffa5ae6f43b1f58c0d6acd8c0fc35600671698 (
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
54
55
56
57
58
59
60
61
62
63
64
|
#! /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
uboot_offset=0
config_offset=64
kernel_offset=256
initfs_offset=1280
rootfs_offset=2304 # chinook
# This value should be selected for Diablo based firmwares
# It also require patching qemu to get proper size of flash partitions
# (by default qemu has Chinook split).
#rootfs_offset=3328 # diablo
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=$config_offset
;;
initfs)
partition=/dev/mtd3
page=$initfs_offset
;;
rootfs)
partition=/dev/mtd4
page=$rootfs_offset
;;
*)
echo "Unknown partition $2"
exit -1
esac
else
partition=/dev/mtd4
page=$rootfs_offset
fi
dd if=$1 of=$2 conv=notrunc bs=2048 seek=$page
|