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

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

?? main.c

?? 三星2410的BOOTLOADER,WINDOESCE5.0版本
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
    //
    if (!(g_BootConfig.ConfigFlags & CONFIG_FLAGS_DHCP))
    {
        // Static IP address.
        pBSPArgs->kitl.ipAddress  = g_BootConfig.IPAddr;
        pBSPArgs->kitl.ipMask     = g_BootConfig.SubnetMask;
        pBSPArgs->kitl.flags     &= ~OAL_KITL_FLAGS_DHCP;
        pdwDHCPLeaseTime = NULL;
        OALMSG(TRUE, (TEXT("INFO: Using static IP address %s.\r\n"), inet_ntoa(pBSPArgs->kitl.ipAddress))); 
        OALMSG(TRUE, (TEXT("INFO: Using subnet mask %s.\r\n"),       inet_ntoa(pBSPArgs->kitl.ipMask))); 
    }
    else
    {
        pBSPArgs->kitl.ipAddress = 0;
        pBSPArgs->kitl.ipMask    = 0;
    }

    // Initialize the the TFTP transport.
    //
    g_DeviceAddr.dwIP = pBSPArgs->kitl.ipAddress;
    memcpy(g_DeviceAddr.wMAC, pBSPArgs->kitl.mac, (3 * sizeof(UINT16)));
    g_DeviceAddr.wPort = 0;

    if (!EbootInitEtherTransport(&g_DeviceAddr,
                                 &pBSPArgs->kitl.ipMask,
                                 &bGotJump,
                                 pdwDHCPLeaseTime,
                                 EBOOT_VERSION_MAJOR,
                                 EBOOT_VERSION_MINOR,
                                 BSP_DEVICE_PREFIX,
                                 pBSPArgs->deviceId,
                                 EDBG_CPU_ARM720,
                                 dwBootFlags))
    {
        OALMSG(OAL_ERROR, (TEXT("ERROR: OEMPreDownload: Failed to initialize Ethernet connection.\r\n")));
        return(BL_ERROR);
    }


    // If the user wanted a DHCP address, we presumably have it now - save it for the OS to use.
    //
    if (g_BootConfig.ConfigFlags & CONFIG_FLAGS_DHCP)
    {
        // DHCP address.
        pBSPArgs->kitl.ipAddress  = g_DeviceAddr.dwIP;
        pBSPArgs->kitl.flags     |= OAL_KITL_FLAGS_DHCP;
    }

    return(bGotJump ? BL_JUMP : BL_DOWNLOAD);
}


/*
    @func   BOOL | OEMReadData | Generically read download data (abstracts actual transport read call).
    @rdesc  TRUE = Success, FALSE = Failure.
    @comm    
    @xref   
*/
BOOL OEMReadData(DWORD dwData, PUCHAR pData)
{
    return(EbootEtherReadData(dwData, pData));
}


/*
    @func   void | OEMShowProgress | Displays download progress for the user.
    @rdesc  N/A.
    @comm    
    @xref   
*/
void OEMShowProgress(DWORD dwPacketNum)
{
}


/*
    @func   void | OEMLaunch | Executes the stored/downloaded image.
    @rdesc  N/A.
    @comm    
    @xref   
*/

void OEMLaunch( DWORD dwImageStart, DWORD dwImageLength, DWORD dwLaunchAddr, const ROMHDR *pRomHdr )
{
    DWORD dwPhysLaunchAddr;
    EDBG_OS_CONFIG_DATA *pCfgData;    
    EDBG_ADDR EshellHostAddr;
    EDBG_ADDR DeviceAddr;

    
    // If the user requested that a disk image (stored in RAM now) be written to the SmartMedia card, so it now.
    //
    if (g_BootConfig.ConfigFlags & CONFIG_FLAGS_SAVETOFLASH)
    {
        // Since this platform only supports RAM images, the image cache address is the same as the image RAM address.
        //
        if (!WriteDiskImageToSmartMedia(dwImageStart, dwImageLength, &g_BootConfig))
        {
            OALMSG(OAL_ERROR, (TEXT("ERROR: OEMLaunch: Failed to store image to Smart Media.\r\n")));
            goto CleanUp;
        }

        // Store the bootloader settings to flash.
        //
        // TODO: minimize flash writes.
        //
        if (!WriteBootConfig(&g_BootConfig))
        {
            OALMSG(OAL_ERROR, (TEXT("ERROR: OEMLaunch: Failed to store bootloader settings to flash.\r\n")));
            goto CleanUp;
        }

        OALMSG(TRUE, (TEXT("INFO: Disk image stored to Smart Media.  Please Reboot.  Halting...\r\n")));
        while(1)
        {
            // Wait...
        }
    }

    // Wait for Platform Builder to connect after the download and send us IP and port settings for service
    // connections - also sends us KITL flags.  This information is used later by the OS (KITL).
    //
    if (g_bWaitForConnect)
    {
        memset(&EshellHostAddr, 0, sizeof(EDBG_ADDR));

        DeviceAddr.dwIP  = pBSPArgs->kitl.ipAddress;
        memcpy(DeviceAddr.wMAC, pBSPArgs->kitl.mac, (3 * sizeof(UINT16)));
        DeviceAddr.wPort = 0;

        if (!(pCfgData = EbootWaitForHostConnect(&DeviceAddr, &EshellHostAddr)))
        {
            OALMSG(OAL_ERROR, (TEXT("ERROR: OEMLaunch: EbootWaitForHostConnect failed.\r\n")));
            goto CleanUp;
        }

        // If the user selected "passive" KITL (i.e., don't connect to the target at boot time), set the
        // flag in the args structure so the OS image can honor it when it boots.
        //
        if (pCfgData->KitlTransport & KTS_PASSIVE_MODE)
        {
            pBSPArgs->kitl.flags |= OAL_KITL_FLAGS_PASSIVE;
        }
    }

    // If a launch address was provided, we must have downloaded the image, save the address in case we
    // want to jump to this image next time.  If no launch address was provided, retrieve the last one.
    //
    if (dwLaunchAddr)
    {
        g_BootConfig.LaunchAddress = dwLaunchAddr;
    }
    else
    {
        dwLaunchAddr = g_BootConfig.LaunchAddress;
    }

    // Save bootloader settings in flash.
    //
    // TODO: minimize flash writes.
    //
    if (!WriteBootConfig(&g_BootConfig))
    {
        OALMSG(OAL_ERROR, (TEXT("ERROR: OEMLaunch: Failed to store bootloader settings in flash.\r\n")));
        goto CleanUp;
    }

    // Jump to downloaded image (use the physical address since we'll be turning the MMU off)...
    //
    dwPhysLaunchAddr = (DWORD)OALVAtoPA((void *)dwLaunchAddr);
    OALMSG(TRUE, (TEXT("INFO: OEMLaunch: Jumping to Physical Address 0x%Xh (Virtual Address 0x%Xh)...\r\n\r\n\r\n"), dwPhysLaunchAddr, dwLaunchAddr));

    // Jump...
    //
    Launch(dwPhysLaunchAddr);


CleanUp:

    OALMSG(TRUE, (TEXT("ERROR: OEMLaunch: Halting...\r\n")));
    SpinForever();
}


//------------------------------------------------------------------------------
//
//  Function Name:  OEMVerifyMemory( DWORD dwStartAddr, DWORD dwLength )
//  Description..:  This function verifies the passed address range lies
//                  within a valid region of memory. Additionally this function
//                  sets the g_ImageType if the image is a boot loader. 
//  Inputs.......:  DWORD           Memory start address
//                  DWORD           Memory length
//  Outputs......:  BOOL - true if verified, false otherwise
//
//------------------------------------------------------------------------------

BOOL OEMVerifyMemory( DWORD dwStartAddr, DWORD dwLength )
{
    BOOL    rc;                 // return code
    DWORD   Addr1;              // starting address
    DWORD   Addr2;              // ending   address

    // Convert address to a cached address.
    //
    dwStartAddr &= ~CACHED_TO_UNCACHED_OFFSET;

    // Setup address range for comparison
    //
    Addr1 = dwStartAddr;
    Addr2 = Addr1 + (dwLength - 1);

    EdbgOutputDebugString( "****** OEMVerifyMemory Checking Range [ 0x%x ==> 0x%x ]\r\n", Addr1, Addr2 );

    // Validate the bootloader range to set the g_ImageType. The bootloader address
    // range is a subset of the whole flash range. This is required as the original
    // function set the image type based on this. Therefore this check is done before
    // the whole FLASH range is checked.

    if( (Addr1 >= FLASH_EBOOT_START) && (Addr2 <= FLASH_EBOOT_END) )
    {
        EdbgOutputDebugString("****** bootloader address ****** \r\n\r\n");

        // Set the image type 

        g_ImageType = IMAGE_LOADER;
        rc = TRUE;
    }
    else if( (Addr1 >= FLASH_START) && (Addr1 <= FLASH_END) )
    {
        EdbgOutputDebugString("****** FLASH address ****** \r\n\r\n");

        rc = TRUE;
    }
    else if( (Addr1 >= RAM_START) && (Addr2 <= RAM_END ) )
    {
        EdbgOutputDebugString("****** RAM address ****** \r\n\r\n");

        rc = TRUE;
    }
    else
    {
        EdbgOutputDebugString("****** OEMVerifyMemory FAILED - Invalid Memory Area ****** \r\n\r\n");

        rc = FALSE;
    }

    // Indicate status

    return( rc );
}

/////////////////////// START - Stubbed functions - START //////////////////////////////
/*
    @func   void | SC_WriteDebugLED | Write to debug LED.
    @rdesc  N/A.
    @comm    
    @xref   
*/

void SC_WriteDebugLED(USHORT wIndex, ULONG dwPattern)
{
    // Stub - needed by NE2000 EDBG driver...
    //
}


ULONG HalSetBusDataByOffset(IN BUS_DATA_TYPE BusDataType,
                            IN ULONG BusNumber,
                            IN ULONG SlotNumber,
                            IN PVOID Buffer,
                            IN ULONG Offset,
                            IN ULONG Length)
{
    return(0);
}


ULONG
HalGetBusDataByOffset(IN BUS_DATA_TYPE BusDataType,
                      IN ULONG BusNumber,
                      IN ULONG SlotNumber,
                      IN PVOID Buffer,
                      IN ULONG Offset,
                      IN ULONG Length)
{
    return(0);
}


BOOLEAN HalTranslateBusAddress(IN INTERFACE_TYPE  InterfaceType,
                               IN ULONG BusNumber,
                               IN PHYSICAL_ADDRESS BusAddress,
                               IN OUT PULONG AddressSpace,
                               OUT PPHYSICAL_ADDRESS TranslatedAddress)
{

    // All accesses on this platform are memory accesses...
    //
    if (AddressSpace)
        *AddressSpace = 0;
 
    // 1:1 mapping...
    //
    if (TranslatedAddress)
    {
        *TranslatedAddress = BusAddress;
        return(TRUE);
    }

    return(FALSE);
}


PVOID MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress,
                   IN ULONG NumberOfBytes,
                   IN BOOLEAN CacheEnable)
{
    DWORD dwAddr = PhysicalAddress.LowPart;

    if (CacheEnable)
        dwAddr &= ~CACHED_TO_UNCACHED_OFFSET; 
    else
        dwAddr |= CACHED_TO_UNCACHED_OFFSET; 

    return((PVOID)dwAddr);
}


VOID MmUnmapIoSpace(IN PVOID BaseAddress,
                    IN ULONG NumberOfBytes)
{
}

VOID WINAPI SetLastError(DWORD dwErrCode)
{
}
/////////////////////// END - Stubbed functions - END //////////////////////////////


/*
    @func   void | OEMDownloadFileNotify | Receives/processes download file manifest.
    @rdesc  None.
    @comm    
    @xref   
*/
void OEMDownloadFileNotify(PDownloadManifest pInfo)
{
    DWORD dwCount;
    DWORD dwNumNB0Files = 0;

    if (!pInfo) return;

    EdbgOutputDebugString("\r\nDownload file information:\r\n");
    EdbgOutputDebugString("-------------------------------------------------------------------------------\r\n");

    for (dwCount = 0 ; dwCount < pInfo->dwNumRegions ; dwCount++)
    {

        EdbgOutputDebugString("[%d]: Address=0x%x  Length=0x%x  Name=%s\r\n", dwCount, 
                                                                              pInfo->Region[dwCount].dwRegionStart, 
                                                                              pInfo->Region[dwCount].dwRegionLength, 
                                                                              pInfo->Region[dwCount].szFileName);

        // .nb0 files will have a start address of 0 because Platform Builder
        // won't know where to place them.  We'll support only one .nb0 file
        // download (this is an Image Update disk image).  If we need to
        // support more than one .nb0 file download in the future, we'll need
        // to differentiate them by filename.
        //
        if (pInfo->Region[dwCount].dwRegionStart == 0)
        {
            // We only support one raw binary file (disk image).
            if (dwNumNB0Files++)
            {
                EdbgOutputDebugString("ERROR: This bootloader doesn't support downloading a second .nb0 binary image.\r\n");
                SpinForever();
            }

            // The disk image .nb0 file should be placed immediately after the
            // bootloader image in flash.
            pInfo->Region[dwCount].dwRegionStart = 0x80001000;

            EdbgOutputDebugString("INFO: Changed start address for %s to 0x%x.\r\n", pInfo->Region[dwCount].szFileName, 
                                                                                     pInfo->Region[dwCount].dwRegionStart);

        }
    }

    EdbgOutputDebugString("\r\n");

    return;
}


/*
    @func   BOOL | OEMDebugInit | Initializes the serial port for debug output message.
    @rdesc  TRUE == Success and FALSE == Failure.
    @comm    
    @xref   
*/
BOOL OEMDebugInit(void)
{

    // Set up function callbacks used by blcommon.
    //
    g_pOEMVerifyMemory   = OEMVerifyMemory;      // Verify RAM.
    g_pOEMMultiBINNotify = OEMDownloadFileNotify;

    // Call serial initialization routine (shared with the OAL).
    //
    OEMInitDebugSerial();

    return(TRUE);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区免费乱视频| 一区二区三区免费| 欧美成人a视频| 欧美日韩国产乱码电影| 欧美在线观看18| 色婷婷av一区二区三区大白胸| 成人精品免费视频| 国产在线国偷精品产拍免费yy| 日本少妇一区二区| 人人狠狠综合久久亚洲| 免费观看一级欧美片| 免费看日韩a级影片| 久久精品国产一区二区| 精品一区二区免费在线观看| 久久精品理论片| 九一九一国产精品| 国产麻豆精品视频| 粉嫩一区二区三区在线看| 豆国产96在线|亚洲| av成人免费在线观看| 91丝袜美腿高跟国产极品老师| 93久久精品日日躁夜夜躁欧美| av成人动漫在线观看| 91免费看`日韩一区二区| 色噜噜狠狠成人网p站| 欧美色老头old∨ideo| 欧美老年两性高潮| 亚洲精品一线二线三线无人区| 久久久亚洲精品石原莉奈 | 中文字幕一区二区三区不卡在线 | 日本不卡高清视频| 九九国产精品视频| 懂色av中文一区二区三区| 91美女在线观看| 欧美日韩高清一区二区| 日韩欧美区一区二| 国产精品国产自产拍高清av王其| 一区二区三区四区亚洲| 日韩电影在线观看一区| 国产精品88av| 色综合久久久久| 91精品欧美久久久久久动漫 | 精品美女在线观看| 国产精品嫩草久久久久| 亚洲最新视频在线观看| 男人的天堂久久精品| 国产乱子轮精品视频| 国产成人亚洲综合a∨猫咪| 热久久一区二区| av一本久道久久综合久久鬼色| 丝袜亚洲另类欧美| 奇米影视一区二区三区小说| 激情文学综合丁香| 色综合久久66| 欧美精品九九99久久| 欧美国产精品劲爆| 一区二区久久久| 韩日欧美一区二区三区| 99久久婷婷国产综合精品| 日韩一级大片在线观看| 国产欧美一区二区三区网站| 亚洲一二三专区| 国产一区二区三区四| 一本色道久久加勒比精品| 日韩一卡二卡三卡国产欧美| 精品福利视频一区二区三区| 一区二区三区欧美日| 蜜桃视频免费观看一区| 91福利区一区二区三区| 欧美va亚洲va香蕉在线| 午夜在线成人av| 国产一区91精品张津瑜| 欧美日韩你懂得| 日本一区二区视频在线| 麻豆成人久久精品二区三区红| 成人黄动漫网站免费app| 精品国产三级a在线观看| 亚洲色图视频网| 国产精品18久久久久久久久久久久 | 亚洲精品久久7777| 激情五月婷婷综合| 在线成人av影院| 国产精品福利av| 国产盗摄一区二区| 日韩欧美专区在线| 一区二区三区蜜桃| 成人v精品蜜桃久久一区| 2021国产精品久久精品| 亚洲制服欧美中文字幕中文字幕| 蜜桃久久久久久久| 欧美精品1区2区3区| 日韩一区在线看| 国产99久久久国产精品| 欧美二区三区91| 精品一区二区在线视频| 色网综合在线观看| 亚洲欧洲三级电影| 国产精品综合久久| 精品毛片乱码1区2区3区| 亚洲第一精品在线| 91国偷自产一区二区开放时间 | 久久九九全国免费| 日产欧产美韩系列久久99| 色一区在线观看| 中文一区二区完整视频在线观看| 免费在线看一区| 91精品婷婷国产综合久久性色| 亚洲精品国产一区二区精华液| 99久久伊人精品| 国产欧美一区二区三区网站| 国产99精品国产| 久久婷婷一区二区三区| 国产一区二区不卡| 日韩精品一区二区三区在线播放| 日本欧美一区二区三区| 欧美精三区欧美精三区| 日韩在线a电影| 欧美视频一区二区三区| 午夜精品免费在线观看| 欧美网站一区二区| 亚洲天堂久久久久久久| 成人黄色软件下载| 久久这里只精品最新地址| 国产精品综合在线视频| 精品日韩在线观看| 开心九九激情九九欧美日韩精美视频电影 | 亚洲国产成人高清精品| 欧美色男人天堂| 另类小说视频一区二区| 日韩一区二区电影| 国产成人精品免费在线| 国产精品嫩草影院av蜜臀| 色噜噜夜夜夜综合网| 亚洲精品视频观看| 91麻豆精品国产91久久久 | 欧美人体做爰大胆视频| 日韩精品电影在线观看| 久久综合国产精品| 国产99久久久国产精品免费看 | 国产精品狼人久久影院观看方式| 色偷偷久久人人79超碰人人澡| 亚洲欧美精品午睡沙发| 欧美精品tushy高清| 麻豆高清免费国产一区| 国产精品久久三区| 欧美亚洲综合在线| 国产综合久久久久久鬼色 | 亚洲在线视频网站| 日韩欧美综合在线| 丰满亚洲少妇av| 五月天丁香久久| 精品久久人人做人人爰| 99精品1区2区| 亚洲成人三级小说| 国产三级一区二区三区| 91视频国产资源| 久久9热精品视频| 中文字幕免费不卡| 欧美一级艳片视频免费观看| 久久99热这里只有精品| 国产精品国产三级国产普通话蜜臀| 色婷婷综合久久久中文字幕| 亚洲小说春色综合另类电影| 日韩欧美成人一区二区| 岛国一区二区三区| 日韩av在线发布| 国产日本欧美一区二区| 欧美高清精品3d| 丁香婷婷综合色啪| 美洲天堂一区二卡三卡四卡视频 | 男女男精品网站| 国产精品污网站| 日韩欧美国产系列| av电影在线观看一区| 日本女优在线视频一区二区| 国产精品日韩成人| 精品成人在线观看| 在线观看日韩高清av| 成人午夜av在线| 日韩av在线发布| 亚洲高清视频在线| 欧美激情综合网| 欧美本精品男人aⅴ天堂| 国产精品一区二区久激情瑜伽| 亚洲国产综合91精品麻豆 | 亚洲在线免费播放| 久久精品亚洲精品国产欧美 | 国产乱妇无码大片在线观看| 天堂影院一区二区| 亚洲精品日产精品乱码不卡| 久久色.com| 精品国产乱码久久久久久老虎| 欧美伊人精品成人久久综合97 | 国产成人综合在线| 日产精品久久久久久久性色| 久久精品亚洲乱码伦伦中文 | 欧美成人精品二区三区99精品| 在线观看免费亚洲| 94-欧美-setu| 国产91精品入口|