summaryrefslogtreecommitdiff
path: root/scripts/poky-nokia800-flashutil
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