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

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

?? eth.c

?? arm4 driver for freescale imx35
?? C
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
//------------------------------------------------------------------------------
//
//  File:  eth.c
//
//  This file implements bootloader functions related to ethernet download
//  
#include <eboot.h>

//------------------------------------------------------------------------------
//
//  Static: g_ethState
//
//  This structure contains local state variables.
//
static struct {
    EDBG_ADDR edbgAddress;
    OAL_KITL_ETH_DRIVER *pDriver;
    UINT8 buffer[OAL_KITL_BUFFER_SIZE];
} g_ethState;

//------------------------------------------------------------------------------
//
//  Function:  BLEthDownload
//
//  This function initialize ethernet adapter and call download function from
//  bootloader common library.
//
UINT32 BLEthDownload(BOOT_CFG *pConfig, OAL_KITL_DEVICE *pBootDevices)
{
    UINT32 rc = BL_ERROR;
    OAL_KITL_DEVICE *pDevice;
    UINT32 subnetMask, *pLeaseTime, leaseTime = 0;
    UINT16 mac[3];
    BOOL jumpToImage = FALSE;
    UINT8 deviceId[OAL_KITL_ID_SIZE];

    // Find boot/KITL device driver
    pDevice = OALKitlFindDevice(&pConfig->bootDevLoc, pBootDevices);        
    if (pDevice == NULL || pDevice->type != OAL_KITL_TYPE_ETH) {
        OALMSG(OAL_ERROR, (
            L"ERROR: Boot device doesn't exist or it is unsupported\r\n"
        ));
        goto cleanUp;
    }

    // Get device driver
    g_ethState.pDriver = (OAL_KITL_ETH_DRIVER*)pDevice->pDriver;

    // Call InitDmaBuffer if there is any
    if (g_ethState.pDriver->pfnInitDmaBuffer != NULL) 
	{
        if (!g_ethState.pDriver->pfnInitDmaBuffer((UINT32)g_ethState.buffer, sizeof(g_ethState.buffer))) 
		{
            OALMSG(OAL_ERROR, (L"ERROR: Boot device driver InitDmaBuffer call failed\r\n"));
            goto cleanUp;
        }
    }      

    // Call Init
    if (!g_ethState.pDriver->pfnInit(pConfig->bootDevLoc.PhysicalLoc, pConfig->bootDevLoc.LogicalLoc, mac)) 
	{
        OALMSG(OAL_ERROR, (L"ERROR: Boot device driver Init call failed\r\n"));
        goto cleanUp;
    }
	
    OALMSG(OAL_INFO, (L"INFO: Boot device uses MAC %s\r\n", OALKitlMACtoString(mac)));

    // Generate device name
    OALKitlCreateName(BSP_DEVICE_PREFIX, mac, deviceId);
    OALMSG(OAL_INFO, (L"INFO: *** Device Name %S ***\r\n", deviceId));

    // Initialize ethernet
    memset(&g_ethState.edbgAddress, 0, sizeof(g_ethState.edbgAddress));

    // Set lease time pointer to activate DHCP or update global structure
    if ((pConfig->kitlFlags & OAL_KITL_FLAGS_DHCP) != 0) 
	{
       pLeaseTime = &leaseTime;
    } 
	else 
	{
       pLeaseTime = NULL;
       g_ethState.edbgAddress.dwIP = pConfig->ipAddress;
    }

    memcpy(g_ethState.edbgAddress.wMAC, mac, sizeof(g_ethState.edbgAddress.wMAC));
    subnetMask = 0xFFFFFF;
       
    // Initialize TFTP transport
    // Note that first parameter must be pointer to global variable...
    if (!EbootInitEtherTransport(
       &g_ethState.edbgAddress, &subnetMask, &jumpToImage, pLeaseTime,
       EBOOT_VERSION_MAJOR, EBOOT_VERSION_MINOR, BSP_DEVICE_PREFIX, 
       deviceId, EDBG_CPU_TYPE_ARM|0x0F, 0)) 
    {
       OALMSG(OAL_ERROR, (L"ERROR: EbootInitEtherTransport call failed\r\n"));
       goto cleanUp;
    }

    // If DHCP was used update lease time and address
    if (pLeaseTime != NULL) 
    {
		pConfig->ipAddress = g_ethState.edbgAddress.dwIP;
    }

    // Depending on what we get from TFTP
    rc = jumpToImage ? BL_JUMP : BL_DOWNLOAD;

cleanUp:
    return rc;
}

//------------------------------------------------------------------------------
//
//  Function:  BLEthConfig
//
//  This function receives connect message from host and it updates arguments
//  based on it. Most part of connect message isn't used by KITL anymore, but
//  we want set passive KITL mode when no-KITL is select on PB.
//
VOID BLEthConfig(BSP_ARGS *pArgs)
{
    EDBG_OS_CONFIG_DATA *pConfig;

    // Get host connect info
    pConfig = EbootWaitForHostConnect(&g_ethState.edbgAddress, NULL);

    pArgs->kitl.flags &= ~OAL_KITL_FLAGS_PASSIVE;
    if ((pConfig->KitlTransport & KTS_PASSIVE_MODE) != 0) {
        pArgs->kitl.flags |= OAL_KITL_FLAGS_PASSIVE;
    }        
}

//------------------------------------------------------------------------------
//
//  Function:  OEMEthGetFrame
//
//  Check to see if a frame has been received, and if so copy to buffer.
//  An optimization  which may be performed in the Ethernet driver is to 
//  filter out all received broadcast packets except for ARPs.
//
BOOL OEMEthGetFrame(BYTE *pData, UINT16 *pLength)
{
    return g_ethState.pDriver->pfnGetFrame(pData, pLength) > 0;
}


//------------------------------------------------------------------------------
//
//  Function:  OEMEthSendFrame
//
//  Send Ethernet frame.  
//
BOOL OEMEthSendFrame(BYTE *pData, DWORD length)
{
    return g_ethState.pDriver->pfnSendFrame(pData, length) == 0;
}


//------------------------------------------------------------------------------

VOID OALKitlCreateName(CHAR *pPrefix, UINT16 mac[3], CHAR *pBuffer)
{
    UINT32 code, count, d;
    INT32  j;
    OMAP5912_DEVICE_ID_REGS *pDevIdRegs = OALPAtoUA(OMAP5912_DEVICE_ID_REGS_PA);

    OALMSG(OAL_KITL&&OAL_FUNC, (
        L"+OALKitlCreateName('%hs', 0x%04x, 0x%08x)\r\n", pPrefix, mac, pBuffer
    ));

    // Copy prefix    
    count = 0;
    while (count < OAL_KITL_ID_SIZE - 1 && pPrefix[count] != '\0') {
        pBuffer[count] = pPrefix[count];
        count++;
    }

    // Create unique part of name from SoC ID
    code  = INREG32(&pDevIdRegs->DIE_ID_LSB);
    code ^= INREG32(&pDevIdRegs->DIE_ID_MSB);

    // Convert it to hexa number    
    for (j = 28; j >= 0 && count < OAL_KITL_ID_SIZE - 1; j -= 4) {
        d = (code >> j) & 0xF;
        pBuffer[count++] = d < 10 ? '0' + d : 'A' + d - 10;
    }
    pBuffer[count] = '\0';

    OALMSG(OAL_KITL&&OAL_FUNC, (
        L"-OALKitlCreateName(pBuffer = '%hs')\r\n", pBuffer
    ));
}
//------------------------------------------------------------------------------

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜视频在线观看| 欧美日韩你懂的| 天堂成人国产精品一区| 国产精品成人免费| 精品sm捆绑视频| 欧美视频你懂的| 北岛玲一区二区三区四区| 久久99精品国产.久久久久久 | 26uuu亚洲综合色欧美| 91福利区一区二区三区| 国产激情一区二区三区| 奇米在线7777在线精品| 亚洲一区二区三区四区中文字幕| 国产欧美一区二区精品久导航 | 成人黄动漫网站免费app| 秋霞午夜鲁丝一区二区老狼| 亚洲人成网站色在线观看| 久久精品日产第一区二区三区高清版| 欧美猛男gaygay网站| 一本在线高清不卡dvd| 成人综合在线网站| 国产黄人亚洲片| 激情欧美日韩一区二区| 欧美a级理论片| 日韩激情一二三区| 日韩二区三区在线观看| 五月综合激情网| 亚洲国产美女搞黄色| 亚洲综合精品自拍| 亚洲一级电影视频| 亚洲国产中文字幕在线视频综合| 一区二区三区在线观看国产 | av亚洲精华国产精华| 国产成人av影院| 国产91清纯白嫩初高中在线观看 | 2021国产精品久久精品| 精品欧美乱码久久久久久| 日韩精品中文字幕在线不卡尤物| 制服丝袜亚洲色图| 日韩一卡二卡三卡| 精品少妇一区二区三区日产乱码 | 国产精品亚洲一区二区三区在线| 国产一区二区三区免费播放 | 欧美午夜精品久久久| 在线观看欧美黄色| 欧美日韩国产美女| 欧美一区二区视频网站| 91精品国产综合久久婷婷香蕉 | 国产传媒久久文化传媒| 久久影院午夜论| 精品国产免费一区二区三区四区| 精品国产免费视频| 国产精品污网站| 一区二区三区四区在线播放 | 成人av在线观| 日本韩国一区二区| 欧美伦理影视网| 欧美刺激脚交jootjob| 久久久99免费| 综合久久一区二区三区| 天堂成人国产精品一区| 韩国av一区二区三区| 99久久精品国产导航| 欧美伊人精品成人久久综合97| 91精品国产手机| 久久精品水蜜桃av综合天堂| 中文字幕中文字幕一区| 石原莉奈一区二区三区在线观看| 国产在线不卡一卡二卡三卡四卡| 国产不卡在线一区| 欧美艳星brazzers| 精品999在线播放| 亚洲激情自拍视频| 久久99精品久久久久久国产越南 | 欧美午夜影院一区| 26uuu色噜噜精品一区二区| 亚洲人成亚洲人成在线观看图片 | 日本一区二区三区四区在线视频 | 蜜臀久久99精品久久久久宅男| 国产精品中文有码| 欧美午夜精品久久久久久孕妇 | 亚洲乱码中文字幕综合| 日本精品一区二区三区高清| 日韩美女视频在线| 《视频一区视频二区| 免费看黄色91| 91美女在线视频| 久久影院电视剧免费观看| 一区二区三区不卡在线观看| 国产资源精品在线观看| 欧美日韩在线亚洲一区蜜芽| 国产日韩欧美激情| 日韩电影在线观看网站| 94-欧美-setu| 久久综合给合久久狠狠狠97色69| 亚洲一区二区四区蜜桃| 粉嫩av一区二区三区| 日韩一区二区麻豆国产| 一区二区三区电影在线播| 国产乱码精品一区二区三区av | 丁香婷婷综合网| 欧美一区二区免费观在线| 亚洲欧美日韩国产另类专区| 国产精品一区在线| 日韩一区二区精品| 丝袜美腿亚洲综合| 欧洲一区二区三区在线| 国产精品久久久久久久久免费桃花 | 国产精品一品二品| 日韩午夜激情视频| 亚洲成人免费av| 日本高清视频一区二区| 中文字幕精品在线不卡| 国内精品伊人久久久久影院对白| 欧美日本一区二区三区| 亚洲精品乱码久久久久久| 99re亚洲国产精品| 国产精品人成在线观看免费| 久久精品国产99国产精品| 91精品国产免费| 日韩和欧美一区二区三区| 欧美在线观看视频在线| 一区二区三区中文字幕| av电影天堂一区二区在线观看| 久久精品国产成人一区二区三区 | 中文字幕在线观看不卡视频| 成人黄色片在线观看| 国产日韩欧美制服另类| 高清在线观看日韩| 欧美国产一区二区| 波多野结衣中文字幕一区| 欧美国产1区2区| 成人免费看的视频| 亚洲欧洲日产国码二区| 91在线丨porny丨国产| 亚洲欧美日韩在线| 欧美专区亚洲专区| 亚洲成人免费视频| 7878成人国产在线观看| 奇米影视一区二区三区小说| 91精品国产入口在线| 精品一区二区三区在线播放视频| 日韩精品一区二区在线| 黄页视频在线91| 国产色综合久久| 成人黄色综合网站| 一区二区三区在线看| 欧美久久久久久久久久| 国内精品久久久久影院一蜜桃| 2020国产精品| 91在线播放网址| 午夜精品久久久久久久久| 欧美成人国产一区二区| 高清国产午夜精品久久久久久| 国产精品护士白丝一区av| 色婷婷av一区二区三区大白胸| 亚洲综合色自拍一区| 欧美一级黄色录像| 国产乱对白刺激视频不卡 | 老鸭窝一区二区久久精品| 久久久精品免费免费| 一本一道久久a久久精品| 亚洲五码中文字幕| 欧美不卡一区二区三区四区| 国产99精品国产| 亚洲国产另类精品专区| 欧美变态tickle挠乳网站| www.在线欧美| 免费在线成人网| 国产精品护士白丝一区av| 欧美日韩免费视频| 国产一区视频在线看| 一区二区三区免费在线观看| 日韩午夜激情免费电影| 99re在线精品| 极品尤物av久久免费看| 亚洲人成精品久久久久| 婷婷夜色潮精品综合在线| 国产午夜久久久久| 欧美精品丝袜久久久中文字幕| 国产99久久久久| 五月天亚洲婷婷| 国产欧美日韩在线| 6080亚洲精品一区二区| 成人午夜激情影院| 蜜臀精品久久久久久蜜臀| 亚洲欧洲中文日韩久久av乱码| 精品久久久三级丝袜| 在线观看国产日韩| 成人精品国产免费网站| 麻豆视频一区二区| 一区二区免费看| 国产精品理论在线观看| 精品日韩一区二区三区| 精品视频全国免费看| www.在线欧美| 国产精品一区二区果冻传媒| 日本不卡视频在线| 亚洲国产一区在线观看| 自拍偷拍欧美激情|