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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? main.c

?? WinCE5.0BSP for Renesas SH7770
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
//
//  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 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品传媒入口麻豆| 中文字幕亚洲一区二区va在线| 国产成人免费视频精品含羞草妖精| 国产精品无圣光一区二区| 欧美日韩国产高清一区二区三区| 韩国理伦片一区二区三区在线播放| 综合网在线视频| 欧美一级片在线| 色综合一区二区| 国产精品一二二区| 五月激情六月综合| 亚洲人成在线观看一区二区| 精品少妇一区二区三区免费观看| 91蝌蚪porny九色| 亚洲色图.com| 8x福利精品第一导航| 国产高清成人在线| 香蕉加勒比综合久久| 国产精品女人毛片| 日韩午夜激情视频| 色老汉av一区二区三区| 韩国av一区二区三区在线观看| 一区二区三区国产豹纹内裤在线| 精品国产乱码久久久久久闺蜜 | 蜜芽一区二区三区| 国产精品国产自产拍高清av | 91麻豆精品国产无毒不卡在线观看| 国产成人亚洲综合色影视| 性欧美大战久久久久久久久| 国产精品女主播av| 久久综合久久综合久久| 欧美日韩国产一级二级| 成人黄色一级视频| 国产一区不卡在线| 美日韩一级片在线观看| 亚洲综合小说图片| 自拍偷拍国产精品| 久久久久久久免费视频了| 8v天堂国产在线一区二区| 色吊一区二区三区| fc2成人免费人成在线观看播放| 美女一区二区三区| 午夜欧美一区二区三区在线播放| 亚洲日本一区二区三区| 欧美国产日韩a欧美在线观看| 欧美一区二区精品在线| 欧美日韩国产一区二区三区地区| 97精品电影院| 国产suv精品一区二区6| 久久66热偷产精品| 奇米精品一区二区三区在线观看| 亚洲一二三四在线| 一区二区三区四区不卡在线| 中文字幕精品三区| 国产丝袜在线精品| 久久久久久一二三区| 欧美v亚洲v综合ⅴ国产v| 欧美久久婷婷综合色| 欧美性猛片aaaaaaa做受| 色婷婷精品久久二区二区蜜臀av| 不卡av电影在线播放| 不卡的av电影在线观看| 99久久精品国产导航| 99久久夜色精品国产网站| 美国三级日本三级久久99| 亚洲高清视频的网址| 一区二区三区在线视频播放| 国产精品久久精品日日| 国产精品全国免费观看高清| 中文字幕永久在线不卡| 亚洲欧洲av在线| 亚洲欧美激情小说另类| 亚洲天堂中文字幕| 一区二区三区在线视频免费观看| 亚洲激情综合网| 亚洲国产日韩在线一区模特 | 视频一区二区中文字幕| 日韩成人av影视| 亚洲aaa精品| 麻豆国产精品官网| 久久se精品一区二区| 国产一区二区三区黄视频 | 94色蜜桃网一区二区三区| 97se狠狠狠综合亚洲狠狠| 精品视频1区2区3区| 欧美美女网站色| 精品精品国产高清a毛片牛牛 | 亚洲成人午夜影院| 丝袜诱惑制服诱惑色一区在线观看| 免费观看91视频大全| 国产一区视频导航| 一本色道综合亚洲| 日韩一区二区影院| 欧美激情综合网| 一区二区免费看| 老司机精品视频导航| 不卡高清视频专区| 欧美精品在线一区二区三区| 久久影院午夜片一区| 亚洲激情自拍偷拍| 经典三级视频一区| av一二三不卡影片| 91精品国产综合久久小美女| 久久先锋影音av| 亚洲欧洲韩国日本视频| 亚洲18女电影在线观看| 久久99国产精品久久| 成人h动漫精品一区二| 欧美三级三级三级| 久久伊人蜜桃av一区二区| 中文字幕在线不卡一区二区三区| 亚洲欧美另类久久久精品2019| 天堂资源在线中文精品| 久久国产精品72免费观看| 国产精品538一区二区在线| 91在线视频官网| 91精品国产福利| 国产精品视频第一区| 五月激情综合网| 色偷偷88欧美精品久久久| 久久伊人蜜桃av一区二区| 亚洲午夜激情网站| 成人涩涩免费视频| 日韩欧美国产一区在线观看| 亚洲精品成人悠悠色影视| 国产一区不卡视频| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲黄色免费电影| 国产精品18久久久久久久久| 欧美日韩国产一级二级| 亚洲男同1069视频| 国产精品一级黄| 日韩欧美一二三| 亚洲高清在线视频| 97久久精品人人做人人爽50路| 精品欧美久久久| 三级久久三级久久久| 色又黄又爽网站www久久| 国产视频一区二区三区在线观看| 日日欢夜夜爽一区| 在线亚洲人成电影网站色www| 国产亚洲欧美在线| 久久av老司机精品网站导航| 欧美日韩一区二区在线视频| 中文字幕在线一区二区三区| 国产麻豆成人精品| 精品免费国产二区三区| 日本sm残虐另类| 欧美精品一二三四| 亚洲一区二区欧美激情| 欧洲在线/亚洲| 亚洲夂夂婷婷色拍ww47| 99精品欧美一区二区蜜桃免费 | 国产成a人无v码亚洲福利| 精品国产乱子伦一区| 久久国产剧场电影| 欧美成va人片在线观看| 老司机免费视频一区二区三区| 欧美一区二区三区不卡| 七七婷婷婷婷精品国产| 555www色欧美视频| 日韩制服丝袜av| 欧美一级欧美三级在线观看| 免费在线看成人av| 欧美日韩中文字幕一区| 天天影视涩香欲综合网| 欧美一区二区三区公司| 亚洲成在人线在线播放| 51精品秘密在线观看| 久久99精品国产.久久久久久| 精品欧美一区二区久久| 国产福利91精品| 国产精品污网站| 91免费在线看| 有坂深雪av一区二区精品| 欧美综合天天夜夜久久| 午夜久久福利影院| 日韩免费在线观看| 国产成人av一区| 国产精品色哟哟网站| 在线精品视频免费播放| 午夜电影久久久| 精品国产91亚洲一区二区三区婷婷| 久久国产精品72免费观看| 中文av一区特黄| 欧美日韩中文另类| 免费欧美日韩国产三级电影| www日韩大片| 成人高清视频在线| 亚洲国产精品久久一线不卡| 日韩欧美高清在线| 成人av片在线观看| 亚洲成人免费电影| 久久久久综合网| 欧美最猛性xxxxx直播| 蜜臀av一区二区在线免费观看| 中文字幕成人av| 欧美日韩二区三区| 国产麻豆成人精品| 亚洲国产美女搞黄色|