navienginebsp/tools/testreference/lauterbach/flashimage.cmm
author Ryan Harkin <ryan.harkin@nokia.com>
Tue, 28 Sep 2010 18:00:05 +0100
changeset 0 5de814552237
permissions -rw-r--r--
Initial contribution supporting NaviEngine 1 This package_definition.xml will build support for three memory models - Single (sne1_tb) - Multiple (ne1_tb) - Flexible (fne1_tb)

//
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:  
//
//////////////////////////////////////////////////////////////////////////////
//
// Generic NOR Flash writing script.
//
// Change History:
//
// 01/01/2008 1.0 : Initial version
// 12/02/2009 1.1 : Updated to initialise board and load globals before doing
//                  anything else
//
//////////////////////////////////////////////////////////////////////////////

&scriptversion=1.1

print "======================================================================="
print "Generic NOR flashing script version &scriptversion"

; Declare the global variables used by the system and read the current config into them
do globals.cmm

; Make sure that flashing is supported on the target platform
if os.file("&PlatformsDir\&Platform\flash.cmm")
	(
	local &result

	; Make sure the user really does want to overwrite out their NOR flash!
	if "&FlashWriteProtect"!="OFF"
	(
		dialog.yesno "Are you *sure* you want to erase NOR flash and write this image: &FlashImage?"
		entry &result
	)
	else
	(
		&result=(0==0)
	)

	if &result
		(
		; Attach to the board and reset its hardware completely
		do init.cmm

		; Make sure a filename has been specified
		if "&FlashImage"==""
			(
			print "Select ROM image to flash"

			dialog.file "*.bin;*.img"
			entry &FlashImage

			if "&FlashImage"==""
				(
				print "*** Aborted (no ROM image filename specified) ***"
				enddo
				)
			)

		print "&Platform hardware configured for flashing"

		; Load first few bytes of the image into ram and see whether it has an EPOC header on the front
		data.load.binary "&FlashImage" &RamAddr++0x200
		&firstWord=(data.long(sd:&RamAddr))
		&skipHeader="false"

		if ((&firstWord)==0x434F5045)
			(
			print "File &FlashImage has EPOC header (will skip it)"
			&skipHeader="true"
			)
		else
			(
			print "No EPOC header present on file &FlashImage"
			)

		; Now do the platform specific operations
		do &PlatformsDir\&Platform\flash.cmm "&FlashImage" &FlashAddr &skipHeader
		)
	)
else
	(
	dialog.ok "NOR flashing not supported for platform &Platform"
	)

enddo