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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? blcommon.c

?? 三星 ARM920T S3C2440A 400MHz bsp包
?? C
?? 第 1 頁 / 共 2 頁
字號:
//
// 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.
//
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

Module Name:
    blcommon.c

Abstract:
    Bootloader common main module. This file contains the C BootloaderMain
    function for the boot loader.    NOTE: The firmware "entry" point (the real
    entry point is _EntryPoint in init assembler file.

    The Windows CE boot loader is the code that is executed on a Windows CE
    development system at power-on reset and loads the Windows CE
    operating system. The boot loader also provides code that monitors
    the behavior of a Windows CE platform between the time the boot loader
    starts running and the time the full operating system debugger is
    available. Windows CE OEMs are supplied with sample boot loader code
    that runs on a particular development platform and CPU.

Functions:


Notes:

--*/
#include <windows.h>
#include <halether.h>
#include <blcommon.h>

#ifdef SIMULATOR
extern void CleanExit(DWORD dwExitCode);
#define SPIN_FOREVER        CleanExit(42)
#else
#define SPIN_FOREVER        while (1)
#endif

ROMHDR * volatile const pTOC = (ROMHDR *)-1;     // Gets replaced by RomLoader with real address
static ROMHDR romhdr;
static MultiBINInfo g_MultiBINInfo;

static BOOL KernelRelocate (ROMHDR *const pTOC);
static BOOL DownloadImage (LPDWORD pdwImageStart, LPDWORD pdwImageLength, LPDWORD pdwLaunchAddr);
static BOOL IsKernelRegion(DWORD dwRegionStart, DWORD dwRegionLength);

#define CURRENT_VERSION_MAJOR       1
#define CURRENT_VERSION_MINOR       0

const unsigned char NKSignon[] = {
    "\nMicrosoft Windows CE Ethernet Bootloader Common Library Version %d.%d Built "
        __DATE__ " " __TIME__ "\r\n"
    "Copyright (c) 2000-2001  Microsoft Corporation\r\n"
};

DWORD g_dwROMOffset;

PFN_OEMVERIFYMEMORY    g_pOEMVerifyMemory;
PFN_OEMREPORTERROR     g_pOEMReportError;
PFN_OEMCHECKSIGNATURE  g_pOEMCheckSignature;
PFN_OEMMULTIBINNOTIFY    g_pOEMMultiBINNotify;


static void HALT (DWORD dwReason)
{
    if (g_pOEMReportError) {
        g_pOEMReportError (dwReason, 0);
    }
    SPIN_FOREVER;
}


void BootloaderMain (void)
{
    ROMHDR *pRomHdr = NULL;  // pTOC for NK image. MUST COPY IT OR CLEANBOOT may erase it
    DWORD dwAction, dwpToc;
    DWORD dwImageStart = 0, dwImageLength = 0, dwLaunchAddr = 0;
    BOOL bDownloaded = FALSE;
#ifndef SIMULATOR
    // relocate globals to RAM
    if (!KernelRelocate (pTOC)) {
        // spin forever
        HALT (BLERR_KERNELRELOCATE);
    }
#endif
    // (1) Init debug support. We can use OEMWriteDebugString afterward.
    if (!OEMDebugInit ()) {
        // spin forever
        HALT (BLERR_DBGINIT);
    }

    // output banner
    EdbgOutputDebugString (NKSignon, CURRENT_VERSION_MAJOR, CURRENT_VERSION_MINOR);

    // (3) initialize platform (clock, drivers, transports, etc)
    if (!OEMPlatformInit ()) {
        // spin forever
        HALT (BLERR_PLATINIT);
    }

    // system ready, preparing for download
    EdbgOutputDebugString ("System ready!\r\nPreparing for download...\r\n");

    // (4) call OEM specific pre-download function
    switch (dwAction = OEMPreDownload ()) {
    case BL_DOWNLOAD:
        // (5) download image
        if (!DownloadImage (&dwImageStart, &dwImageLength, &dwLaunchAddr)) {
            // error already reported in DownloadImage
            SPIN_FOREVER;
        }
        bDownloaded = TRUE;

		if (dwImageStart) {
			// Check for pTOC signature ("CECE") here, after image in place
			if (*(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET) == ROM_SIGNATURE) {
				EdbgOutputDebugString("Found pTOC signature.\n");
			} else {
				EdbgOutputDebugString ("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n");
				EdbgOutputDebugString ("! ERROR: Did not find pTOC signature.  ABORTING. !\r\n");
				EdbgOutputDebugString ("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n");

				// If no signature, we're going to fail anyway, so loop forever
				HALT (BLERR_SIGNATURE);
			}

			dwpToc = *(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET + sizeof(ULONG));
			// need to map the content again since the pointer is going to be in a fixup address
			dwpToc = (DWORD) OEMMapMemAddr (dwImageStart, dwpToc);
			// NOTE: MUST COPY or a CLEAN_BOOT flag will erase it
			memcpy (pRomHdr = &romhdr, (LPVOID) dwpToc, sizeof(ROMHDR));

			EdbgOutputDebugString ("ROMHDR at Address %Xh\r\n", dwImageStart + ROM_SIGNATURE_OFFSET + sizeof (DWORD)); // right after signature
			EdbgOutputDebugString ("RomHdr.ulRAMStart=%Xh RomHdr.physfirst=%Xh.\r\n", romhdr.ulRAMStart, romhdr.physfirst);
		}

        // fall through
    case BL_JUMP:
        // Before jumping to the image, optionally check the image signature.
        if (g_pOEMCheckSignature && dwImageStart)
        {
            if (!g_pOEMCheckSignature(dwImageStart, g_dwROMOffset, dwLaunchAddr, bDownloaded))
                HALT(BLERR_WHQL_SIGNATURE);
        }
        // (5) final call to launch the image. never returned
        OEMLaunch (dwImageStart, dwImageLength, dwLaunchAddr, pRomHdr);
        // should never return
        // fall through
    default:
        // ERROR! spin forever
        HALT (BLERR_INVALIDCMD);
    }
}


//
// KernelRelocate: move global variables to RAM
//
static BOOL KernelRelocate (ROMHDR *const pTOC)
{
    ULONG loop;
    COPYentry *cptr;
    if (pTOC == (ROMHDR *const) -1) {
        return FALSE; // spin forever!
    }
    // This is where the data sections become valid... don't read globals until after this
    for (loop = 0; loop < pTOC->ulCopyEntries; loop++) {
        cptr = (COPYentry *)(pTOC->ulCopyOffset + loop*sizeof(COPYentry));
        if (cptr->ulCopyLen)
            memcpy((LPVOID)cptr->ulDest,(LPVOID)cptr->ulSource,cptr->ulCopyLen);
        if (cptr->ulCopyLen != cptr->ulDestLen)
            memset((LPVOID)(cptr->ulDest+cptr->ulCopyLen),0,cptr->ulDestLen-cptr->ulCopyLen);
    }
    return TRUE;
}

static BOOL VerifyChecksum (DWORD cbRecord, LPBYTE pbRecord, DWORD dwChksum)
{
    // Check the CRC
    DWORD dwCRC = 0;
    DWORD i;
    for (i = 0; i < cbRecord; i++)
        dwCRC += *pbRecord ++;

    if (dwCRC != dwChksum)
        EdbgOutputDebugString ("ERROR: Checksum failure (expected=0x%x  computed=0x%x)\r\n", dwChksum, dwCRC);

    return dwCRC == dwChksum;
}

#define BL_HDRSIG_SIZE		7
static BOOL DownloadImage (LPDWORD pdwImageStart, LPDWORD pdwImageLength, LPDWORD pdwLaunchAddr)
{
    BYTE hdr[BL_HDRSIG_SIZE];
    DWORD dwRecLen, dwRecChk, dwRecAddr;
    BOOL fIsFlash;
    LPBYTE lpDest;
    int nPkgNum = 0;
	BYTE nNumRegions = 1;
	DWORD dwImageStart, dwImageLength;

	*pdwImageStart = *pdwImageLength = *pdwLaunchAddr = 0;

	do
	{
		// read the 7 byte "magic number"
		if (!OEMReadData (BL_HDRSIG_SIZE, hdr)) {
			EdbgOutputDebugString ("\r\nUnable to read image signature.\r\n");
			HALT (BLERR_MAGIC);
			return FALSE;
		}

		// check for multi-bin information packet.
		if (!memcmp (hdr, "X000FF\x0A", BL_HDRSIG_SIZE)) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91天堂素人约啪| 国产精品你懂的在线| 国产色产综合色产在线视频| 亚洲精品久久久蜜桃| 久久99国内精品| 精品视频一区二区不卡| 国产精品人成在线观看免费| 视频在线在亚洲| 色呦呦日韩精品| 国产欧美精品国产国产专区| 蜜臀av性久久久久蜜臀aⅴ| 色94色欧美sute亚洲13| 国产精品免费人成网站| 久久精品999| 欧美一区欧美二区| 首页亚洲欧美制服丝腿| 色偷偷88欧美精品久久久| 国产精品另类一区| 国产精品69毛片高清亚洲| 日韩一区二区三区四区五区六区| 亚洲综合在线五月| 91丨porny丨最新| 国产精品对白交换视频 | 久久久久久97三级| 蜜臀精品一区二区三区在线观看| 欧美日韩的一区二区| 亚洲精品国产品国语在线app| 成年人国产精品| 精品不卡在线视频| 韩国av一区二区三区在线观看| 日韩午夜精品视频| 久久超碰97人人做人人爱| 精品久久久久久亚洲综合网 | 欧美一级午夜免费电影| 午夜精品久久久久久久久| 欧美精品一级二级| 日本成人中文字幕在线视频| 欧美一区二区三区公司| 欧美bbbbb| 久久天堂av综合合色蜜桃网| 激情欧美一区二区| 中文文精品字幕一区二区| 成人av中文字幕| 亚洲同性gay激情无套| 在线观看av不卡| 天天操天天综合网| xvideos.蜜桃一区二区| 国产suv精品一区二区6| 国产精品国产自产拍在线| 色综合婷婷久久| 午夜av区久久| 精品电影一区二区三区| 国产精品1024| 亚洲精品国产一区二区精华液| 欧洲在线/亚洲| 久久66热re国产| 亚洲欧美一区二区三区久本道91| 在线观看一区日韩| 久久精品国产久精国产| 中文字幕av资源一区| 在线观看av一区二区| 麻豆视频观看网址久久| 亚洲欧美综合色| 欧美二区三区91| 成人av网在线| 美腿丝袜一区二区三区| 中文av一区特黄| 欧美一区二区三区四区五区 | 国产精品欧美一区二区三区| 色综合一个色综合| 精品一区二区精品| 一区二区三区四区在线| 日韩视频免费观看高清完整版在线观看| 国产老肥熟一区二区三区| 亚洲精品国产成人久久av盗摄| 欧美一级国产精品| 一本一道波多野结衣一区二区| 久久99精品视频| 亚洲一区二区在线视频| 国产亚洲成年网址在线观看| 在线欧美日韩国产| 懂色av一区二区夜夜嗨| 蜜臀av性久久久久蜜臀av麻豆| 亚洲日本va午夜在线电影| 日韩午夜在线影院| 欧美日韩国产在线观看| av一本久道久久综合久久鬼色| 精品中文av资源站在线观看| 午夜精品视频一区| 亚洲精品视频在线观看网站| 欧美国产成人精品| 日韩精品专区在线影院重磅| 欧美日韩激情在线| 在线精品国精品国产尤物884a| 国产91丝袜在线观看| 精品写真视频在线观看 | 日韩欧美在线影院| 欧美性xxxxx极品少妇| 91亚洲精品一区二区乱码| 国产福利91精品一区| 国产在线播放一区| 美女在线视频一区| 日韩精彩视频在线观看| 亚洲午夜激情网页| 一区二区不卡在线视频 午夜欧美不卡在 | 国产盗摄女厕一区二区三区| 久久精品国产999大香线蕉| 日韩高清在线不卡| 天堂一区二区在线免费观看| 亚洲成人777| 性做久久久久久| 亚洲国产精品久久一线不卡| 亚洲一二三四区| 亚洲一二三专区| 日韩精品每日更新| 开心九九激情九九欧美日韩精美视频电影 | 日本欧美一区二区| 美女视频黄久久| 美女精品一区二区| 久久www免费人成看片高清| 免费精品视频在线| 久久电影网电视剧免费观看| 美腿丝袜在线亚洲一区 | 日韩成人精品视频| 美女视频一区二区三区| 久久激情综合网| 国产1区2区3区精品美女| 成人动漫av在线| 91极品美女在线| 欧美日韩国产免费一区二区| 欧美一三区三区四区免费在线看 | 欧美一a一片一级一片| 欧美日韩一级视频| 日韩视频免费观看高清完整版在线观看| 欧美一区二区在线观看| 久久精品一区二区三区四区| 国产精品视频免费| 亚洲一区二区三区精品在线| 视频一区在线视频| 国产成人一区在线| 在线免费一区三区| 日韩免费成人网| 中文字幕日韩av资源站| 亚洲综合区在线| 国内精品久久久久影院色| 成人av动漫在线| 91精品国产综合久久精品app| 2023国产精品| 亚洲成人黄色影院| 国产成人精品综合在线观看| 欧美中文字幕亚洲一区二区va在线 | 国产亚洲福利社区一区| 亚洲综合小说图片| 国内精品伊人久久久久av一坑| 波多野结衣中文一区| 欧美日韩精品欧美日韩精品一综合 | 日韩一卡二卡三卡国产欧美| 久久先锋资源网| 午夜视频一区在线观看| 国产成人av自拍| 欧美一区二区三区成人| 日韩理论电影院| 国产麻豆精品一区二区| 在线观看91视频| 国产精品网站在线观看| 奇米亚洲午夜久久精品| 99热这里都是精品| 精品国产乱码久久久久久免费| 亚洲特级片在线| 国产乱码精品一品二品| 欧美三级三级三级爽爽爽| 国产精品超碰97尤物18| 激情六月婷婷久久| 6080午夜不卡| 亚洲与欧洲av电影| 91在线国内视频| 久久奇米777| 蜜桃一区二区三区在线观看| 欧美在线播放高清精品| 亚洲欧洲另类国产综合| 国产精品一区二区在线观看网站| 欧美精品 日韩| 亚洲国产日韩av| 91成人在线观看喷潮| 综合欧美一区二区三区| 成人免费观看av| 久久精品综合网| 国产精品一区三区| 久久午夜电影网| 国产美女精品在线| 久久这里都是精品| 久久精品噜噜噜成人av农村| 在线播放日韩导航| 亚洲成av人在线观看| 欧美伊人精品成人久久综合97 | 青青国产91久久久久久| 欧美日韩不卡一区| 日韩不卡一二三区| 欧美一卡2卡3卡4卡| 免费高清在线一区|