brdbootldr/ubootldr/inc/bootldr.h
author Tom Cosgrove <tom.cosgrove@nokia.com>
Fri, 28 May 2010 16:29:07 +0100
changeset 30 8aab599e3476
parent 0 a41df078684a
permissions -rw-r--r--
Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h) Have multiple extension sections in the bld.inf, one for each version of the compiler. The RVCT version building the tools will build the runtime libraries for its version, but make sure we extract all the other versions from zip archives. Also add the archive for RVCT4.

// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the License "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:
// bootldr\inc\bootldr.h
// 
//

#ifndef FILE_ID
#error File ID not specified
#endif

#include "bootloader_variantconfig.h"

#define BOOTLDR_VERSION_MAJOR 1
#define BOOTLDR_VERSION_MINOR 11

#ifndef PLATFORM_BUILD
#define PLATFORM_BUILD 0
#endif

#include <e32std.h>
#include <e32svr.h>
#include <e32cons.h>
#include <f32file.h>
#include <d32comm.h>

GLREF_C void BootFault(TUint aId, TInt aLine, char aFileName[]);
#define BOOT_FAULT()	BootFault(FILE_ID,__LINE__, __FILE__ )
#define TEST(c)		((void)((c)||(BOOT_FAULT(),0)))
#define CHECK(c)	((void)(((c)==0)||(RDebug::Print(_L("Error %d at line %d\n"),(c),__LINE__),BOOT_FAULT(),0)))

//#define _DEBUG_CORELDR_  1

#ifdef _DEBUG_CORELDR_        
    #define DEBUG_PRINT(m) PrintToScreen m;	\
                           RDebug::Print m;
#else
    #define DEBUG_PRINT(m)
#endif    

#define TROM_LOADER_HEADER_SIZE 0x100

GLREF_D TInt LoadDrive;
GLREF_D TInt LoadFile;
GLREF_D TInt LoadSize;
GLREF_D TInt ImageSize;
GLREF_D TInt ImageReadProgress;
GLREF_D TBool ImageHeaderPresent;
GLREF_D TBool ImageZip;
GLREF_D TBool LoadToFlash;
GLREF_D TBool FlashBootLoader;
GLREF_D TBuf<256> FileName;
GLREF_D TUint32 RamBootPhys;
GLREF_D TUint32 * ActualDestinationAddress;
GLREF_D TInt SerialDownloadPort;
GLREF_D TBps SerialBaud;
GLREF_D RFile bootFile;
GLREF_D TInt FileSize;
GLREF_D TBool ImageDeflated;
GLREF_D TBool RomLoaderHeaderExists;
GLREF_D TBusLocalDrive LocDrv;
GLREF_D TBool LocDrvChg;
GLREF_D TInt64 LocDrvPos;

enum TLoadDevice
	{
	ELoadDrive,
	ELoadSerial,
	ELoadUSBMS,
	EBootUSBMS,
	EBootEMMC
	};

GLREF_D TLoadDevice LoadDevice;

typedef TInt (*TInputFunc)(TUint8* aDest, TInt& aLength);
GLREF_D TInputFunc InputFunction;

typedef void (*TCloseInputFunc)();
GLREF_D TCloseInputFunc CloseInputFunction;

inline TInt ReadInputData(TUint8* aDest, TInt& aLength)
	{ return (*InputFunction)(aDest,aLength); }
inline void CloseInput()
	{ (*CloseInputFunction)(); }


GLREF_C TInt LoadDriver(const TDesC& aName, TBool aPdd);

// Graphical screen methods
GLREF_C void PrintToScreen(TRefByValue<const TDesC> aFmt,...);
GLREF_C void InitDisplay();
GLREF_C void ClearScreen();
GLREF_C void PutChar(TUint aChar);
GLREF_C void PutString(const TDesC& aBuf);
GLREF_C void InitProgressBar(TInt aId, TUint aLimit, const TDesC& aTitle);
GLREF_C void UpdateProgressBar(TInt aId, TUint aProgress);

// Menu
GLREF_C void StartMenu();
GLREF_C void EnableMenu();
GLREF_C void DisableMenu();

// Fundamental download methods
GLREF_C void DoDownload();
GLREF_C TInt DoZipDownload(RFile &aBootFile);
GLREF_C TInt DoDeflateDownload();
GLREF_C void Restart(TInt aCode);

// Media download
GLREF_C TBool SearchDrives();
GLREF_C TInt ReadFromFile(TUint8* aDest, TInt& aLength);
GLREF_C void CloseFile();
GLREF_C TInt GetInnerCompression(TBool &aImageDeflated, TBool &aRomLoaderHeaderExists);

// Local Drive Raw Access
GLREF_C TBool SearchDrivesRaw();
GLREF_C TInt ReadFromLocalDrive(TUint8* aDest, TInt& aLength);
GLREF_C void CloseLocalDrive();

// Serial download
GLREF_C TInt InitSerialDownload(TInt aPort);

// NOR FLASH methods
GLREF_C TInt InitFlashWrite();
GLREF_C void NotifyDataAvailable(TInt aTotalAmount);
GLREF_C void NotifyDownloadComplete();

// USB Mass Storage download
GLREF_C void TryUSBMS();
GLREF_C TBool StartUSBMS();

// Variant supplied methods
GLREF_C void VariantInit();
GLREF_C void ReadConfig();
GLREF_C void WriteConfig();

inline TLinAddr DestinationAddress()
	{ return (TLinAddr)ActualDestinationAddress; }