亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.c

?? WinCE5.0BSP for Renesas SH7770
?? C
?? 第 1 頁 / 共 3 頁
字號:
//
//  Copyright(C) Renesas Technology Corp. 2005. All rights reserved.
//
//  Ethernet Boot Loader for ITS-DS7
//
//  FILE      : main.c
//  CREATED   : 2005.08.01
//  MODIFIED  : 2005.11.14
//  AUTHOR    : Renesas Technology Corp.
//  HARDWARE  : RENESAS ITS-DS7
//  HISTORY   : 
//              2005.08.01
//              - Created release code.
//                (based on EBOOT for ASPEN for WCE5.0)
//              2005.11.14
//              - Changed debugserial routine of oal to debug serial common routines.
//              - Modified if start from flash, set KitlTransport is KTS_PASSIVE_MODE.

//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//------------------------------------------------------------------------------
//
//  Module: main.c
//
//  Bootloader main entry point.
//
//------------------------------------------------------------------------------

// Include Files 

#include <windows.h>
#include "boot.h"
#include <ethdbg.h>
#include <nkintr.h>
#include <pehdr.h>
#include <romldr.h>
#include <oemfw.h>
#include "shx.h"
#include "sh7770.h"
#include "platform.h"
#include "drv_glob.h"
#include "loader.h"
#include <blcommon.h>
#include "rev.h"
 
// External Functions
extern UINT32 BLFlashDownload(LPDWORD pdwImageStart, LPDWORD pdwImageLength, LPDWORD pdwLaunchAddr);
extern UINT16 IsFlash( DWORD dwPhysStart, DWORD dwPhysLen );

// External Variables 
extern ROMHDR *const volatile pTOC;
extern DWORD gdwSavedPhysStart; // keep actual start address while SDRAM image is written to flash
extern DWORD gdwSaveLaunchAddr;

// Global Variables 
BOOL gbStoreSDRAMImageToFlash = FALSE;
BOOL gbJumpToFlash = FALSE;
BOOL gbGotIP = FALSE;

// Defines 
#define pDriverGlobals ((PDRIVER_GLOBALS) DRIVER_GLOBALS_PHYSICAL_MEMORY_START)

#define BACKSPACE       (8)
#define IPADDR_MAX      (15)            // strlen ("xxx.xxx.xxx.xxx") = 15

// Types
 
// Local Variables 

// Can be used to turn on debug zones in eboot.lib and smc9000.lib functions

DWORD EdbgDebugZone;
// Multi-XIP
#define FLASH_BIN_START 0  // FLASH Offset.
MultiBINInfo g_BINRegionInfo;
DWORD g_dwMinImageStart;
 
// Local Functions 
void JumpToOS( DWORD dwLaunchAddr );

// Function pointers for transports (pre-download, read-data, and launch)

VOID    SpinForever         ( VOID );
DWORD   (* pfnPreDownload)  ( VOID );
BOOL    (* pfnReadData)     ( DWORD cbData, LPBYTE pbData);
void    (* pfnLaunch)       ( DWORD dwImageStart, 
                              DWORD dwImageLength, 
                              DWORD dwLaunchAddr, 
                              const ROMHDR *pRomHdr);
BOOL    ReadEEPROMData      ( DWORD *pdwIP, DWORD *pdwSubnetMask);
BOOL    UpdateEEPROMData    ( DWORD dwIP, DWORD dwSubnetMask);
void    InitDebugSerial();

// Private Functions

static  BOOL    OEMVerifyMemory ( DWORD dwStartAddr, DWORD dwLength );
static void OEMMultiBINNotify(const PMultiBINInfo pInfo);
static BOOL OEMCheckSignature(DWORD dwImageStart, DWORD dwROMOffset, DWORD dwLaunchAddr, BOOL bDownloaded);
static  void    DisplayLED      ( CHAR *data );
static  void    DisplayNumLED   ( DWORD data );
static  BOOL    ReadIPLine      ( char *pbuf, DWORD dwTimeout );

static void DUMPREG_PMSR();
static void DUMPREG_GPIO();
static void DUMPREG_FRQCR();
static void DUMPREG_FRQCR();
static void DUMPREG_BUSBRIDGE();
static void DUMPREG_BUSBRIDGE_BSC();

//------------------------------------------------------------------------------
//  Function:  main
//
//  Main bootloader entry point. This function does not return.
//

void main( void )
{
    // Common boot loader (blcommon) main routine.
    //
    BootloaderMain();

    // Should never get here.
    //
    SpinForever();
}

//------------------------------------------------------------------------------
//  Function:  OEMPlatformInit
//
//  Platform initialization. If DIP switch S1-4 is set jump to programmed 
//  image.
//

BOOL OEMPlatformInit (void)
{
    DWORD       dwDIPs;
    SYSTEMTIME  st;
	SYSTEMTIME defst = {2000,1,0,1,0,0,0,0};	// RTC default

    EdbgOutputDebugString( "+OEMPlatformInit\r\n" );

	// check DIP switch SW2 bit 8 to select boot mode

    dwDIPs = READ_REGISTER_USHORT(SF_DIPSWMR) & 0x00FF;

#if (ITS_DS7_SETTING == ITS_DS7_COREFUNCTION)
#if (ENABLE_HSSI == 1) && (ENABLE_HAC == 0)
		EdbgOutputDebugString("ITS_DS7_SETTING : COREFUNCTION(HSSI)\r\n");
#elif (ENABLE_HAC == 1)
		EdbgOutputDebugString("ITS_DS7_SETTING : COREFUNCTION(HAC)\r\n");
#else
		EdbgOutputDebugString("ITS_DS7_SETTING : COREFUNCTION\r\n");
#endif
#else
		EdbgOutputDebugString("ITS_DS7_SETTING : COREONLY\r\n");
#endif

	if (dwDIPs & 0x00000080) {
		// SW2-8 : ON
#if (ITS_DS7_SETTING == ITS_DS7_COREFUNCTION)
    		EdbgOutputDebugString("Boot mode illegal !!\r\n");
    		EdbgOutputDebugString("H/W setting is COREONLY (SW2-8:ON)\r\n");
    		EdbgOutputDebugString("Please Power Off!!\r\n");
			PrintLED("FAIL    ");
			SpinForever();
#endif
	}
	else {
		// SW2-8 : OFF
#if (ITS_DS7_SETTING == ITS_DS7_COREONLY)
    		EdbgOutputDebugString("Boot mode illegal !! \r\n");
    		EdbgOutputDebugString("H/W setting is COREFUNCTION (SW2-8:OFF)\r\n");
    		EdbgOutputDebugString("Please Power Off!!\r\n");
			PrintLED("FAIL    ");
			SpinForever();
#endif
	}

    DisplayLED("EBOOT GO");
    EdbgOutputDebugString("Microsoft Windows CE Ethernet Bootloader %d.%d for Renesas ITS-DS7 (%s)\n",
                          EBOOT_VERSION_MAJOR,EBOOT_VERSION_MINOR, __DATE__);

    EdbgOutputDebugString("Stack=%Xh & DipSwith =0x%x \r\n",&dwDIPs,dwDIPs);

    // Initialize driver globals area, so kernel knows we are present
    memset((LPVOID)&pDriverGlobals->eth,0,DBG_ETH_GLOBALS_SIZE);
	pDriverGlobals->eth.EbootMagicNum = EBOOT_MAGIC_NUM;

	DUMPREG_PMSR();
//	DUMPREG_GPIO();
//	DUMPREG_FRQCR();
//	DUMPREG_BUSBRIDGE();
//	DUMPREG_BUSBRIDGE_BSC();

    // At this time, the CPU has been initialized

    if( !PowerOnSelfTest() )
    {
        EdbgOutputDebugString( "ERROR: OEMPlatformInit: Power On Self test failed\r\n" );
        SpinForever();
    }

	// TMU1 setup for OEMEthGetSecs
	WRITE_REGISTER_UCHAR(TMU_TSTR0, READ_REGISTER_UCHAR(TMU_TSTR0) & ~TMU_TSTR0_STR1);		// make sure timer1 is stopped
	WRITE_REGISTER_USHORT(TMU_TCR1, TMU_TCR_TPSC_D4);										// interrupt disable, divide by 4
	WRITE_REGISTER_ULONG(TMU_TCOR1, 0xffffffff);										// set timer constant register
	WRITE_REGISTER_ULONG(TMU_TCNT1, 0xffffffff);										// initialize the counter
	WRITE_REGISTER_UCHAR(TMU_TSTR0, READ_REGISTER_UCHAR(TMU_TSTR0) | TMU_TSTR0_STR1);		// startup timer1

    // Check real time clock, initialize if necessary (used for polling in net routines)
	OEMGetRealTime(&st);
	if ((st.wYear < 2000) ||
		(st.wYear > 2099) ||
		(st.wMonth < 1) ||
		(st.wMonth > 12) ||
		(st.wDay < 1) ||
		(st.wDay > 31) ||
		(st.wHour < 0) ||
		(st.wHour > 23) ||
		(st.wMinute < 0) ||
		(st.wMinute > 59) ||
		(st.wSecond < 0) ||
		(st.wSecond > 59)) {

        EdbgOutputDebugString("Invalid time returned from OEMGetRealTime: Year: %u, Month: %u, Day: %u, Hour: %u, Minute: %u, second: %u\n",
                           st.wYear, st.wMonth,st.wDay, st.wHour, st.wMinute,st.wSecond);
        EdbgOutputDebugString("Resetting real time clock to default date\n");
		OEMSetRealTime(&defst);
    }
	else if ((st.wYear == defst.wYear) &&
			(st.wMonth == defst.wMonth) &&
			(st.wDay == defst.wDay) &&
			(st.wHour == defst.wHour) &&
			(st.wMinute == defst.wMinute) &&
			(st.wSecond == defst.wSecond)){
        EdbgOutputDebugString("Initialize real time clock\n");
		OEMSetRealTime(&st);
	}

	// check DIP switch SW2 bit0 - 3 to select boot mode
    dwDIPs = READ_REGISTER_USHORT(SF_DIPSWMR) & 0x00FF;

    EdbgOutputDebugString("Read DIP switch SW2 : 0x%X\r\n",dwDIPs);

    // Normal Mode SW-2-1,2,3 OFF, OFF, OFF

    // If DIP switch SW2-1 is ON, jump straight to the programmed image.
	if (dwDIPs & 0x00000001) {	// ON
		gbJumpToFlash = TRUE;
	}
	else {
		gbJumpToFlash = FALSE;
	}
    // If DIP switch SW2-2 is ON, use already IP address.
	if (dwDIPs & 0x00000002) {	// ON
		gbGotIP = TRUE;
	}
	else {
		gbGotIP = FALSE;
	}
    // Currently this loader uses SW2-3 as flash write/restore mode selection.
    if (dwDIPs & 0x00000004) {	// ON
        // write/restore SDRAM image to/from flash memory
        EdbgOutputDebugString("Switch SW2-3 is ON, SDRAM image uses flash memory.\r\n");
        gbStoreSDRAMImageToFlash = 1;
    }
    else {
        // normal operation
        EdbgOutputDebugString("Switch SW2-3 is OFF, FLASH image uses flash memory.\r\n");
        gbStoreSDRAMImageToFlash = 0;
    }

    EdbgOutputDebugString("gbJumpToFlash %d gbGotIP %d gbStoreSDRAMImageToFlash %d \r\n", gbJumpToFlash, gbGotIP, gbStoreSDRAMImageToFlash );

    // Initialize the download transport according to DIP switch

	if( !gbJumpToFlash ) {
		if( EthInit () )
		{
			// use Ether transport

			pfnPreDownload = EthPreDownload;
			pfnLaunch      = EthLaunch;
			pfnReadData    = EbootEtherReadData;
		}
		else
		{
			// no transport available, spin forever
			SpinForever();
		}
	}

    EdbgOutputDebugString ("-OEMPlatformInit(rc=1)\r\n");
    return TRUE;
}

//------------------------------------------------------------------------------
//  Function:  OEMPreDownload
//
//  Callback before image download. Function pointer set based on download
//  transport type.

DWORD OEMPreDownload (void)
{
    // Execute the transport callout function
	if(!pfnPreDownload) return(BL_JUMP);

    return( pfnPreDownload() );
}

//------------------------------------------------------------------------------
//  Function:  OEMLaunch
//
//  Callback to perform OS jump. Function pointer set based on download
//  transport type.

void OEMLaunch( DWORD dwImageStart, 
                DWORD dwImageLength, 
                DWORD dwLaunchAddr, 
                const ROMHDR *pRomHdr )
{
	ROMHDR RomHdr;							// ROM Table of Contents 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品精华液一区二区三区 | 午夜精品久久久久久不卡8050| 色综合亚洲欧洲| 亚洲永久免费视频| 欧美福利视频一区| 国产在线不卡一区| 国产精品黄色在线观看| 色视频一区二区| 欧美aⅴ一区二区三区视频| 久久五月婷婷丁香社区| 成人高清伦理免费影院在线观看| 亚洲人成网站精品片在线观看| 欧美影院一区二区| 久久爱另类一区二区小说| 中文字幕av免费专区久久| 91久久精品日日躁夜夜躁欧美| 亚洲成在线观看| 久久免费国产精品| 色综合亚洲欧洲| 蜜桃视频一区二区三区| 国产精品久久久久婷婷二区次| 欧美午夜精品久久久久久超碰| 久久精品国产免费| 中文字幕亚洲成人| 91精品国产欧美日韩| 国产不卡在线视频| 亚洲成人免费看| 久久久久99精品一区| 日本高清免费不卡视频| 欧美aa在线视频| 中文字幕人成不卡一区| 欧美一区二区三级| 成人免费av在线| 天天爽夜夜爽夜夜爽精品视频| 久久蜜桃香蕉精品一区二区三区| 色综合久久99| 久久精品国内一区二区三区| 成人免费在线视频观看| 日韩亚洲欧美成人一区| 成人avav在线| 蜜桃传媒麻豆第一区在线观看| 国产精品久久三区| 91精品国产综合久久久久| 波多野结衣中文字幕一区 | 亚洲一区二区在线观看视频| 欧美成人欧美edvon| 色诱亚洲精品久久久久久| 精品一区二区三区视频在线观看| 亚洲免费观看高清完整版在线观看| 欧美va亚洲va| 欧美丝袜第三区| 成人激情免费网站| 免费av网站大全久久| 一区二区三区在线观看动漫| 国产亚洲一区二区三区四区| 91精品国模一区二区三区| 99精品久久免费看蜜臀剧情介绍| 蜜臀99久久精品久久久久久软件| 亚洲男人天堂av网| 亚洲国产电影在线观看| 777亚洲妇女| 欧美在线视频你懂得| 成人精品鲁一区一区二区| 精品在线免费观看| 午夜视频一区在线观看| 综合欧美亚洲日本| 久久影音资源网| 777精品伊人久久久久大香线蕉| 99久久精品一区| 国产福利精品一区| 精品一区二区三区久久久| 亚洲午夜久久久久久久久久久| 国产精品美女久久久久久久久久久 | 久久久久久久久久久久久女国产乱 | 成人av电影在线| 精品无码三级在线观看视频| 亚洲国产视频在线| 国产精品久久久一本精品| 久久青草欧美一区二区三区| 欧美一区二区三区电影| 欧美日韩一区二区三区免费看| av午夜精品一区二区三区| 国产乱码精品1区2区3区| 看电视剧不卡顿的网站| 日本在线观看不卡视频| 污片在线观看一区二区| 一片黄亚洲嫩模| 中文字幕亚洲在| 国产精品久久久久影院| 日本一区二区视频在线观看| www国产成人免费观看视频 深夜成人网| 欧美日韩aaaaaa| 欧洲色大大久久| 在线观看日韩av先锋影音电影院| 99精品视频一区| 91香蕉视频在线| 91在线观看一区二区| 波多野结衣亚洲一区| 成人免费av在线| 不卡av免费在线观看| 成人美女在线视频| 成人福利电影精品一区二区在线观看 | 成人app在线| 成人sese在线| av一二三不卡影片| 99国产精品一区| 91色乱码一区二区三区| 91同城在线观看| 91麻豆免费看片| 色妹子一区二区| 在线一区二区观看| 欧美丝袜自拍制服另类| 欧美美女黄视频| 日韩区在线观看| 欧美v亚洲v综合ⅴ国产v| 精品久久一二三区| 久久午夜羞羞影院免费观看| 久久九九久精品国产免费直播| 国产亚洲精品福利| 国产精品免费aⅴ片在线观看| 中文字幕在线不卡一区二区三区| 一区二区中文字幕在线| 亚洲欧美一区二区三区国产精品| 久久女同互慰一区二区三区| 欧美性videosxxxxx| 欧美日韩午夜在线视频| 欧美一区二区三区思思人| 欧美tickling网站挠脚心| 久久蜜桃一区二区| 国产精品久久久爽爽爽麻豆色哟哟| 综合色天天鬼久久鬼色| 亚洲亚洲精品在线观看| 美女视频黄免费的久久 | 亚洲欧洲另类国产综合| 亚洲裸体xxx| 五月激情六月综合| 国产在线一区观看| 成人福利视频在线| 欧美午夜影院一区| 欧美一区二区三区男人的天堂 | 日韩精品一区二区三区在线播放 | 欧美精品一区二区精品网| 国产欧美精品区一区二区三区 | 中文字幕电影一区| 亚洲精品高清视频在线观看| 亚洲国产综合91精品麻豆| 麻豆专区一区二区三区四区五区| 国产成人午夜精品影院观看视频| 91丨国产丨九色丨pron| 欧美巨大另类极品videosbest| 亚洲精品一区二区在线观看| 亚洲特级片在线| 日本在线不卡一区| 成人精品国产福利| 在线不卡一区二区| 欧美韩日一区二区三区四区| 亚洲第一综合色| 国产成人综合在线观看| 欧美性猛片xxxx免费看久爱| 日韩精品中文字幕一区二区三区 | 亚洲午夜精品在线| 国内精品国产三级国产a久久| 97久久超碰精品国产| 日韩欧美国产综合一区| ...中文天堂在线一区| 日韩经典中文字幕一区| 成人国产精品免费观看动漫| 制服丝袜中文字幕一区| 国产精品麻豆视频| 日韩av电影免费观看高清完整版 | 在线综合亚洲欧美在线视频| 亚洲国产精品成人综合色在线婷婷| 亚洲国产乱码最新视频 | 国产精品久久看| 免费人成在线不卡| 97久久人人超碰| 精品三级av在线| 一区二区三区日韩精品视频| 国产精品1区2区3区在线观看| 欧美性色aⅴ视频一区日韩精品| 国产亚洲短视频| 日本不卡的三区四区五区| 91一区二区在线| 久久五月婷婷丁香社区| 水蜜桃久久夜色精品一区的特点| 成人一二三区视频| 日韩三级免费观看| 亚洲国产日韩综合久久精品| 成人黄页毛片网站| 精品欧美黑人一区二区三区| 亚洲午夜久久久| 91色综合久久久久婷婷| 久久久三级国产网站| 奇米影视一区二区三区小说| 91福利小视频| 国产精品久久久久久久午夜片 | 波多野结衣欧美| 7777精品伊人久久久大香线蕉经典版下载 | 国产一区二区三区观看| 3d成人动漫网站|