#! /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 []" 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