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

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

?? simulator.c

?? 三星 ARM920T S3C2440A 400MHz bsp包
?? C
字號:
//
// 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.
//
/* ++

    Bootloader test app to debug as an app

-- */
#include <windows.h>
#include <pcireg.h>
#include <ethdbg.h>
#include <drv_glob.h>
#include <nkintr.h>
#include <pehdr.h>
#include <romldr.h>
#include <blcommon.h>
#include <bootpart.h>

#include "s2440.h"
#include "loader.h"
#include "warning.h"

extern void main (void);

DWORD OEMAddressTable[1];

WCHAR wcImageName[256] = _T("\\Release\\nk.bin");
//WCHAR wcImageName[256] = _T("\\Release\\eboot.bin");

HANDLE  hFile = INVALID_HANDLE_VALUE;
//PUINT16 g_pwReadBuf = NULL;
PUCHAR  g_pucReadBuf = NULL;
PUCHAR  g_pucReadBufBase = NULL;
DWORD   g_dwFileSize = 0;
DWORD   g_dwBytesRead = 0;
BOOL    g_bMode;

const DWORD c_SegmentSize =  0xFFFF; // 64 kb
//const DWORD c_SegmentSize =  0xFFFF*2; // 128 kb

// Use for 64-bit math
ULARGE_INTEGER g_FilePointer = {
	0, // low
	0  // high
};

void CleanExit(DWORD dwExitCode);

void
ExeMain(
    void
    )
{
    DWORD dwFileSize=0, dwBytesRead=0, dwErr=0;

    // we are testing bootloader code, so...
    g_bMode = SetKMode(TRUE);

    /* ++

    Open & read image into local buffer.

    To set this up you need to either
        a) use the \Release facility in CE.NET
        b) s ppshcopy ppsh:nk.bin \

    You can also use ActiveSync, network, etc. to get your image onto the device's
    filesystem. The caveat of dragging large images to the deivce is lack of SDRAM.
    Use method a) if possible.

    -- */
    if (!wcImageName[0])
        return;

    RETAILMSG(1, (TEXT("\r\n\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n")));
    RETAILMSG(1, (TEXT("Microsoft Windows CE Catfish Eboot Simulator \n")));

    RETAILMSG(1, (TEXT("Opening image: '%s' \n"), wcImageName));

    hFile = CreateFile(wcImageName,
                   GENERIC_READ,
                   0, // exclusive access
                   NULL,
                   OPEN_EXISTING,
                   0, 0);

    if (hFile == INVALID_HANDLE_VALUE ) {
        RETAILMSG(1, (TEXT("CreateFile ERROR:%d on file:%s\n"), GetLastError(), wcImageName));
        goto _Error;
    }

    dwFileSize = GetFileSize(hFile, NULL);
    if (!dwFileSize || dwFileSize == 0xFFFFFFFF) {
        RETAILMSG(1, (TEXT("GetFileSize(%u) ERROR: %dn"), dwFileSize, GetLastError()));
        goto _Error;
    }
    RETAILMSG(1, (TEXT("Image size: %u \n"), dwFileSize));
    g_dwFileSize = dwFileSize;

    // we read a page at time to handle large files
    g_pucReadBufBase = (PUCHAR)LocalAlloc(LPTR, c_SegmentSize);
    if ( !g_pucReadBufBase ) {
        RETAILMSG(1, (TEXT("LocalAlloc ERROR:%d for %d bytes\n"), GetLastError(), c_SegmentSize));
        goto _Error;
    }
    g_pucReadBuf = g_pucReadBufBase;

#if 0
    // pre-fetch the first segment, #0
    b = ReadFile(hFile, g_pucReadBufBase, c_SegmentSize, &dwBytesRead, NULL);
    if ( !b || !dwBytesRead) {
        RETAILMSG(1, (TEXT("ReadFile ERROR:%d on file:%s, %u bytes read\n"), GetLastError(), wcImageName, dwBytesRead));
        goto _Error;
    }
    if ( dwBytesRead < min(dwFileSize, c_SegmentSize) ) {
        RETAILMSG(1, (TEXT("ReadFile ERROR:%u bytes read, expected: %u\n"), dwBytesRead, min(dwFileSize, c_SegmentSize)));
        goto _Error;
    }
#endif

    __try {
        main();
    } __except(EXCEPTION_EXECUTE_HANDLER) {
        RETAILMSG(1, (TEXT("*** EBoot Simulator: EXCEPTION: 0x%x ***\n"), GetExceptionCode()));
    }

_Error:
    // working case should never get here
    CleanExit(1);
}


void CleanExit(DWORD dwExitCode)
{
    if (dwExitCode) {
        RETAILMSG(1, (_T("*** EBoot CleanExit ERROR: %u ***\n"), dwExitCode ));
    }

    if (hFile != INVALID_HANDLE_VALUE)
        CloseHandle(hFile);

    if (g_pucReadBufBase)
        LocalFree(g_pucReadBufBase);

    SetKMode(g_bMode);

    RETAILMSG(1, (_T("*** EBoot Simulator Complete on '%s', Result: %s ***\n"),
        wcImageName, dwExitCode ? _T("FAILED") : _T("PASSED")));

    RETAILMSG(1, (_T("--------------------------------------------------------\n")));

    exit(dwExitCode);
}


void Launch(unsigned int dwLaunchAddr)
{
    RETAILMSG(1, (_T("*** EBoot Simulator: Launch: 0x%X ***\n"), dwLaunchAddr));

    CleanExit(ERROR_SUCCESS);
}


//
// Functions to simulate Ethernet download
//
static BYTE volatile *pbEthernetBase=(BYTE *)SMC_ETHERNET_IO_BASE_U_VIRTUAL;

#define READ_PORT_USHORT(port)         (*(volatile PUSHORT const)(port))
#define WRITE_PORT_USHORT(port, value) (*(volatile PUSHORT const)(port) = value)

static __inline USHORT ReadWord( USHORT wOffset )
{
	return READ_PORT_USHORT((PUSHORT)(pbEthernetBase + (wOffset)));
};

static __inline VOID WriteWord( USHORT wOffset, USHORT Value )
{
    WRITE_PORT_USHORT((PUSHORT)(pbEthernetBase + (wOffset)),(USHORT)(Value));
};

BOOL SMCInit(BYTE *pbBaseAddress, DWORD dwMultiplier, USHORT MacAddr[3] )
{
    // just get the MAC addr

    #define BANKSEL_REG     14
    #define BANK1           0x3301
    #define MACADDR_REG0	4
    #define MACADDR_REG1	6
    #define MACADDR_REG2	8

    WriteWord( BANKSEL_REG, BANK1 );

	MacAddr[0] = ReadWord( MACADDR_REG0 );
    MacAddr[1] = ReadWord( MACADDR_REG1 );
    MacAddr[2] = ReadWord( MACADDR_REG2 );

    return TRUE;
}

UINT16 SMCSendFrame( BYTE *pbData, DWORD dwLength )
{
    RETAILMSG(1, (_T("vSMCSendFrame\n")));
    return 0; // success
}


//
// SMCGetFrame: simulated SMC.LIB function.
// Gets frames from the NIC by reading from our buffer.
// returns number of bytes read.
//
UINT16 SMCGetFrame( BYTE *pbData, UINT16 *pwLength )
{
    static DWORD dwSegment = 0;
    DWORD dwBytesRead=0;
    DWORD dwRemain = 0;
    PUCHAR pucData;
    WORD wBufLen;
    BOOL b;

    if ( !g_pucReadBufBase )
        return 0;

    if (!pbData || !pwLength || !*pwLength) {
        RETAILMSG(1, (_T("!!! SMCGetFrame ERROR: no user buffer !!!\n")));
        DebugBreak();
        return 0;
    }

    pucData = pbData;
    wBufLen = *pwLength;

    RETAILMSG(1, (_T("SMCGetFrame: Length:%u\n"), wBufLen));

    __try {

        while ( (g_dwBytesRead <= g_dwFileSize) && wBufLen && pbData)
        {
            // fetch next file segment?
            if ( (g_dwBytesRead % c_SegmentSize) == 0)
            {
                dwRemain = g_dwFileSize - g_dwBytesRead;

                RETAILMSG(1, (TEXT("Read: %u bytes so far, %u bytes remain. Fetching file segment %u \n"),
                    g_dwBytesRead, dwRemain, dwSegment++));

                // fetch it
                b = ReadFile(hFile, g_pucReadBufBase, c_SegmentSize, &dwBytesRead, NULL);
                if ( !b ) {
                    RETAILMSG(1, (TEXT("ReadFile ERROR:%d on image:'%s', %u bytes read\n"),
                        GetLastError(), wcImageName, dwBytesRead));
                    DebugBreak();
                    return 0; // terminate download
                }

                RETAILMSG(1, (TEXT("ReadFile: returned %u bytes, expected: %u\n"),
                    dwBytesRead, min(dwRemain, c_SegmentSize)));

                if ( dwBytesRead < min(dwRemain, c_SegmentSize) ) {
                    RETAILMSG(1, (TEXT("ReadFile WARNING: %u bytes read, expected: %u\n"),
                        dwBytesRead, min(dwRemain, c_SegmentSize)));
                    DebugBreak();
                }

                // reset worker pointer
                g_pucReadBuf = g_pucReadBufBase;
            }

            // read from our local file buffer
            *pucData++ = *g_pucReadBuf++;

            // bump counters
            wBufLen--;
            g_dwBytesRead++;
        }

    } __except(EXCEPTION_EXECUTE_HANDLER) {
        RETAILMSG(1, (TEXT("*** EBoot Simulator: SMCGetFrame EXCEPTION: 0x%x ***\n"),
            GetExceptionCode()));
    }

    return (g_dwBytesRead <= g_dwFileSize ? 1 : 0);
}


//
// EbootEtherReadData: simluated EBOOT.LIB function.
// Handles large buffer requests for SMCGetFrame.
// Note SMCGetFrame only handles UINT16 lengths.
//
BOOL EbootEtherReadData (DWORD cbData, LPBYTE pbData)
{
    UINT16 wLength;

    while (cbData) {

        wLength = (cbData > 0xFFFF) ? 0xFFFF : (UINT16)cbData;

        if ( !SMCGetFrame(pbData, &wLength) )
            return FALSE;

        cbData -= wLength;
        pbData += wLength;

    }
    return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品专区在线影院重磅| 亚洲国产精品一区二区www在线| 国产精品久久久久影院亚瑟| 亚州成人在线电影| 国产福利一区二区三区| 欧美老肥妇做.爰bbww| 国产精品久久久久久久浪潮网站| 日韩精品1区2区3区| 91官网在线免费观看| 国产精品视频一二| 国内精品久久久久影院薰衣草| 欧美亚洲国产一区二区三区| 国产精品网站在线| 国产黄人亚洲片| 精品国产91乱码一区二区三区 | 亚洲第一电影网| 99麻豆久久久国产精品免费| 久久久国产精华| 国内外成人在线| 日韩亚洲欧美成人一区| 日韩综合小视频| 欧美日韩中文一区| 亚洲午夜激情网站| 91精品办公室少妇高潮对白| 亚洲婷婷在线视频| av欧美精品.com| 国产精品久久久久久久久快鸭 | 欧美激情中文不卡| 国产精品2024| 精品国产凹凸成av人导航| 男男gaygay亚洲| 日韩欧美一区二区免费| 精品一区二区在线看| 日韩久久久精品| 狠狠色狠狠色合久久伊人| 精品久久人人做人人爽| 久久97超碰国产精品超碰| 欧美精品一区二区三区蜜桃视频 | 日韩三级视频在线观看| 视频一区欧美精品| 欧美一二三区在线| 国产精品一区二区在线观看网站| 欧美国产一区二区在线观看| aa级大片欧美| 亚洲在线一区二区三区| 欧美女孩性生活视频| 久久国产精品99久久久久久老狼 | 国产自产高清不卡| 欧美激情一区二区三区蜜桃视频| 成人av综合一区| 一区二区三区 在线观看视频| 日本韩国精品在线| 日韩1区2区3区| 久久夜色精品国产噜噜av| 国产91丝袜在线18| 樱花草国产18久久久久| 欧美二区三区91| 国产一区二区三区日韩| 综合婷婷亚洲小说| 欧美一区二区三区在| 粉嫩一区二区三区在线看| 亚洲靠逼com| 日韩视频免费观看高清完整版在线观看 | 日韩精品欧美成人高清一区二区| www精品美女久久久tv| 99re8在线精品视频免费播放| 亚洲午夜久久久久久久久久久| 精品国产123| 日本国产一区二区| 国产寡妇亲子伦一区二区| 亚洲午夜在线电影| 国产亚洲一二三区| 欧美日韩国产高清一区二区三区| 国内精品伊人久久久久av影院| 亚洲猫色日本管| 26uuu精品一区二区| 欧洲国内综合视频| 成人黄色免费短视频| 日韩av中文字幕一区二区三区| 欧美国产日韩a欧美在线观看| 91精品国产麻豆| 欧美性一二三区| 国产一区91精品张津瑜| 婷婷久久综合九色综合绿巨人| 国产精品人成在线观看免费| 精品日韩一区二区三区免费视频| 在线观看亚洲精品| 国产成人精品一区二区三区网站观看| 亚洲电影一级片| 亚洲视频综合在线| 国产欧美日韩中文久久| 日韩欧美第一区| 欧美精品v国产精品v日韩精品| 91美女福利视频| 成人免费视频视频在线观看免费 | 91丨九色丨蝌蚪富婆spa| 久久66热偷产精品| 视频一区在线播放| 亚洲成在人线免费| 亚洲日本中文字幕区| 欧美国产欧美综合| 久久精品亚洲一区二区三区浴池| 欧美草草影院在线视频| 欧美一区二区三区不卡| 91麻豆精品国产无毒不卡在线观看| 色成人在线视频| 91久久香蕉国产日韩欧美9色| 国产成人精品综合在线观看| 国产一区二区精品久久99| 精品一区二区免费看| 麻豆国产一区二区| 久久精品免费观看| 美女一区二区视频| 久久超碰97中文字幕| 久久电影网电视剧免费观看| 国产在线视频不卡二| 国产精品正在播放| 成人禁用看黄a在线| 波多野结衣亚洲| 97国产精品videossex| 在线视频国内自拍亚洲视频| 欧美羞羞免费网站| 69久久99精品久久久久婷婷| 欧美一区二区三区视频| 久久综合999| 国产精品乱码一区二三区小蝌蚪| 国产精品黄色在线观看| 亚洲欧洲精品一区二区精品久久久| 日本一区二区成人| 亚洲免费在线观看| 丝袜美腿亚洲色图| 国产一区二区三区在线观看免费| 国产精品1区2区3区| 成人视屏免费看| 欧美色综合久久| 欧美va亚洲va| 国产精品国产三级国产a| 亚洲一区成人在线| 久久不见久久见免费视频1| 国产成人免费高清| 欧美探花视频资源| 欧美成人r级一区二区三区| 中文字幕乱码一区二区免费| 亚洲精品国产一区二区精华液| 午夜国产精品一区| 国产精品一区2区| 99久久精品一区| 欧美精品乱人伦久久久久久| 久久久综合九色合综国产精品| 亚洲免费在线播放| 理论片日本一区| 97se亚洲国产综合在线| 欧美一级日韩一级| 综合欧美亚洲日本| 韩国精品主播一区二区在线观看| 色哟哟国产精品| 久久综合给合久久狠狠狠97色69| 亚洲精品久久嫩草网站秘色| 国产一区二区三区蝌蚪| 欧美伊人久久大香线蕉综合69| 精品久久久久久无| 亚洲一二三四久久| 国产成人av一区二区三区在线观看| 欧美日韩黄色一区二区| 国产精品高潮呻吟久久| 极品美女销魂一区二区三区| 欧美性生活一区| 国产精品国产a级| 国产美女久久久久| 7777精品伊人久久久大香线蕉| 国产精品福利一区| 国产在线视频精品一区| 91麻豆精品国产91久久久使用方法 | 精品国产成人在线影院| 亚洲成人777| 91在线精品秘密一区二区| 精品精品国产高清a毛片牛牛| 亚洲精品乱码久久久久久| 成人免费黄色大片| 久久亚区不卡日本| 免费高清视频精品| 欧美肥胖老妇做爰| 亚洲国产aⅴ成人精品无吗| 成人av午夜电影| 久久久91精品国产一区二区精品| 日韩国产欧美三级| 欧美日韩在线播放三区四区| 亚洲视频在线一区| 99精品欧美一区二区三区小说 | 成人网在线播放| 久久久蜜桃精品| 久久爱www久久做| 日韩限制级电影在线观看| 日韩专区中文字幕一区二区| 欧美日韩亚洲综合一区二区三区| 伊人性伊人情综合网| 日本黄色一区二区| 亚洲综合色婷婷| 欧美系列亚洲系列| 视频一区中文字幕|