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

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

?? main.c

?? 三星3442處理器Demo板:Eboot源碼包
?? C
?? 第 1 頁 / 共 4 頁
字號:
            L"FMD_GetInfo call failed\r\n"
        ));
    }
	wNUM_BLOCKS = flashInfo.dwNumBlocks;
	RETAILMSG(1, (TEXT("wNUM_BLOCKS : %d(0x%x) \r\n"), wNUM_BLOCKS, wNUM_BLOCKS));

    // Try to retrieve TOC (and Boot config) from boot media
    //
    if ( !TOC_Read( ) ) 
    {
        // use default settings
        TOC_Init(DEFAULT_IMAGE_DESCRIPTOR, (IMAGE_TYPE_RAMIMAGE), 0, 0, 0);
    }

    // Display boot message - user can halt the autoboot by pressing any key on the serial terminal emulator.
    //
    BootDelay = g_pBootCfg->BootDelay;

    if (g_pBootCfg->ConfigFlags & BOOT_TYPE_DIRECT)
    {
        OALMSG(TRUE, (TEXT("Press [ENTER] to launch image stored on boot media, or [SPACE] to enter boot monitor.\r\n")));
        OALMSG(TRUE, (TEXT("\r\nInitiating image launch in %d seconds. "),BootDelay--));

    }
    else
    {
        OALMSG(TRUE, (TEXT("Press [ENTER] to download image stored on boot media, or [SPACE] to enter boot monitor.\r\n")));
        OALMSG(TRUE, (TEXT("\r\nInitiating image download in %d seconds. "),BootDelay--));
    }

    dwStartTime = OEMEthGetSecs();
    dwPrevTime  = dwStartTime;
    dwCurrTime  = dwStartTime;
    KeySelect   = 0;

    // Allow the user to break into the bootloader menu.
    //
    while((dwCurrTime - dwStartTime) < g_pBootCfg->BootDelay)
    {
        KeySelect = OEMReadDebugByte();
        if ((KeySelect == 0x20) || (KeySelect == 0x0d))
            break;
        dwCurrTime = OEMEthGetSecs();

        if (dwCurrTime > dwPrevTime)
        {
            int i, j;

            // 1 Second has elapsed - update the countdown timer.
            dwPrevTime = dwCurrTime;
            if (BootDelay < 9)
                i = 11;
            else if (BootDelay < 99)
                i = 12;
            else if (BootDelay < 999)
                i = 13;

            for(j = 0; j < i; j++)
                OEMWriteDebugByte((BYTE)0x08); // print back space
            EdbgOutputDebugString ( "%d seconds. ", BootDelay--);
        }
    }
	OALMSG(OAL_INFO, (TEXT("\r\n")));

    // Boot or enter bootloader menu.
    //
    switch(KeySelect)
    {
    case 0x20: // Boot menu.
        g_bDownloadImage = MainMenu(g_pBootCfg);
        break;
    case 0x00: // Fall through if no keys were pressed -or-
    case 0x0d: // the user cancelled the countdown.
    default:
        if (g_pBootCfg->ConfigFlags & BOOT_TYPE_DIRECT)
        {
			OALMSG(TRUE, (TEXT("\r\nLaunching image from boot media ... \r\n")));
            g_bDownloadImage = FALSE;
        }
        else
        {
			OALMSG(TRUE, (TEXT("\r\nStarting auto-download ... \r\n")));
            g_bDownloadImage = TRUE;
        }
        break;
    }

    if ( !g_bDownloadImage )
    {
        // User doesn't want to download image - load it from the boot media.
        // We could read an entire nk.bin or nk.nb0 into ram and jump.
        if ( !VALID_TOC(g_pTOC) ) {
			OALMSG(OAL_ERROR, (TEXT("OEMPlatformInit: ERROR_INVALID_TOC, can not autoboot.\r\n")));
            return FALSE;
        }
        switch (g_ImageType) {
        	case IMAGE_TYPE_STEPLDR:
				OALMSG(TRUE, (TEXT("Don't support launch STEPLDR.bin\r\n")));
                break;
        	
            case IMAGE_TYPE_LOADER:
				OALMSG(TRUE, (TEXT("Don't support launch EBOOT.bin\r\n")));
                break;

            case IMAGE_TYPE_RAMIMAGE:
				OALMSG(TRUE, (TEXT("OEMPlatformInit: IMAGE_TYPE_RAMIMAGE\r\n")));
                if ( !ReadOSImageFromBootMedia( ) ) 
                {
                    OALMSG(OAL_ERROR, (TEXT("OEMPlatformInit ERROR: Failed to load kernel region into RAM.\r\n")));
                    return FALSE;
                }
				break;

            default:
				OALMSG(OAL_ERROR, (TEXT("OEMPlatformInit ERROR: unknown image type: 0x%x \r\n"), g_ImageType));
                return FALSE;
        }
    }

    // Configure Ethernet controller.
    //
	if ( g_bDownloadImage && (g_bUSBDownload == FALSE) )
	{
		if (!InitEthDevice(g_pBootCfg))
    	{
        	OALMSG(OAL_ERROR, (TEXT("ERROR: OEMPlatformInit: Failed to initialize Ethernet controller.\r\n")));
        	goto CleanUp;
        }
	}

    bResult = TRUE;

CleanUp:

    OALMSG(OAL_FUNC, (TEXT("_OEMPlatformInit.\r\n")));
    return(bResult);
}


/*
    @func   DWORD | OEMPreDownload | Complete pre-download tasks - get IP address, initialize TFTP, etc.
    @rdesc  BL_DOWNLOAD = Platform Builder is asking us to download an image, BL_JUMP = Platform Builder is requesting we jump to an existing image, BL_ERROR = Failure.
    @comm    
    @xref   
*/
DWORD OEMPreDownload(void)
{
    BOOL  bGotJump = FALSE;
    DWORD dwDHCPLeaseTime = 0;
    PDWORD pdwDHCPLeaseTime = &dwDHCPLeaseTime;
    DWORD dwBootFlags = 0;

    OALMSG(OAL_FUNC, (TEXT("+OEMPreDownload.\r\n")));

    // Create device name based on Ethernet address (this is how Platform Builder identifies this device).
    //
    OALKitlCreateName(BSP_DEVICE_PREFIX, pBSPArgs->kitl.mac, pBSPArgs->deviceId);
    OALMSG(OAL_INFO, (L"INFO: *** Device Name '%hs' ***\r\n", pBSPArgs->deviceId));

    if ( g_bUSBDownload == FALSE )
    {
    	// If the user wants to use a static IP address, don't request an address 
    	// from a DHCP server.  This is done by passing in a NULL for the DHCP 
    	// lease time variable.  If user specified a static IP address, use it (don't use DHCP).
    	//
    	if (!(g_pBootCfg->ConfigFlags & CONFIG_FLAGS_DHCP))
    	{
        	// Static IP address.
        	pBSPArgs->kitl.ipAddress  = g_pBootCfg->EdbgAddr.dwIP;
        	pBSPArgs->kitl.ipMask     = g_pBootCfg->SubnetMask;
        	pBSPArgs->kitl.flags     &= ~OAL_KITL_FLAGS_DHCP;
        	pdwDHCPLeaseTime = NULL;
        	OALMSG(OAL_INFO, (TEXT("INFO: Using static IP address %s.\r\n"), inet_ntoa(pBSPArgs->kitl.ipAddress))); 
        	OALMSG(OAL_INFO, (TEXT("INFO: Using subnet mask %s.\r\n"),       inet_ntoa(pBSPArgs->kitl.ipMask))); 
    	}
    	else
    	{
        	pBSPArgs->kitl.ipAddress = 0;
        	pBSPArgs->kitl.ipMask    = 0;
    	}

    	if ( !g_bDownloadImage)
    	{
        	return(BL_JUMP);
    	}

    	// 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_pBootCfg->ConfigFlags & CONFIG_FLAGS_DHCP)
    	{
        	// DHCP address.
        	pBSPArgs->kitl.ipAddress  = g_DeviceAddr.dwIP;
        	pBSPArgs->kitl.flags     |= OAL_KITL_FLAGS_DHCP;
    	}
        
    	OALMSG(OAL_FUNC, (TEXT("_OEMPreDownload.\r\n")));
    }
    else
    {
        OALMSG(TRUE, (TEXT("Please send the Image through USB.\r\n")));
    }
	
    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)
{
	BOOL  ret;
	int  i;
	
    OALMSG(OAL_FUNC, (TEXT("+OEMReadData(0x%x, 0x%x).\r\n"), dwData, pData));

	if ( g_bUSBDownload == FALSE )
	{
		ret = EbootEtherReadData(dwData, pData);
	}
	else
	{
		ret = UbootReadData(dwData, pData);
	}
/*
	OALMSG(TRUE, (TEXT("\r\n")));
	for ( i = 0; i < dwData; i++ )
	{
		OALMSG(TRUE, (TEXT("<%x>"), *(pData+i)));
		if ( i % 16 == 15 )
			OALMSG(TRUE, (TEXT("\r\n")));
	}
	OALMSG(TRUE, (TEXT("\r\n")));
*/
	return(ret);
}


/*
    @func   void | OEMShowProgress | Displays download progress for the user.
    @rdesc  N/A.
    @comm    
    @xref   
*/
void OEMShowProgress(DWORD dwPacketNum)
{
    OALMSG(OAL_FUNC, (TEXT("+OEMShowProgress.\r\n")));
}


/*
    @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_ADDR EshellHostAddr;
    EDBG_OS_CONFIG_DATA *pCfgData;    

    OALMSG(OAL_FUNC, (TEXT("+OEMLaunch.\r\n")));

    // If the user requested that a disk image (stored in RAM now) be written to the SmartMedia card, so it now.
    //
    if (g_bDownloadImage && (g_pBootCfg->ConfigFlags & TARGET_TYPE_NAND))
    {
        // Since this platform only supports RAM images, the image cache address is the same as the image RAM address.
        //

        switch (g_ImageType) 
        {
        	case IMAGE_TYPE_STEPLDR:
		        if (!WriteRawImageToBootMedia(dwImageStart, dwImageLength, dwLaunchAddr))
		        {
            		OALMSG(OAL_ERROR, (TEXT("ERROR: OEMLaunch: Failed to store image to Smart Media.\r\n")));
            		goto CleanUp;
        		}
		        OALMSG(TRUE, (TEXT("INFO: Step loader image stored to Smart Media.  Please Reboot.  Halting...\r\n")));
	        	while(1)
	        	{
            		// Wait...
	        	}
        		break;
        	
            case IMAGE_TYPE_LOADER:
				g_pTOC->id[0].dwLoadAddress = dwImageStart;
				g_pTOC->id[0].dwTtlSectors = FILE_TO_SECTOR_SIZE(dwImageLength);
		        if (!WriteRawImageToBootMedia(dwImageStart, dwImageLength, dwLaunchAddr))
		        {
            		OALMSG(OAL_ERROR, (TEXT("ERROR: OEMLaunch: Failed to store image to Smart Media.\r\n")));
            		goto CleanUp;
        		}
				if (dwLaunchAddr && (g_pTOC->id[0].dwJumpAddress != dwLaunchAddr))
				{
					g_pTOC->id[0].dwJumpAddress = dwLaunchAddr;
					if ( !TOC_Write() ) {
	            		EdbgOutputDebugString("*** OEMLaunch ERROR: TOC_Write failed! Next boot may not load from disk *** \r\n");
					}
	        		TOC_Print();
				}
		        OALMSG(TRUE, (TEXT("INFO: Eboot image stored to Smart Media.  Please Reboot.  Halting...\r\n")));
		        while(1)
		        {
            		// Wait...
        		}        		
        		        		
                break;

            case IMAGE_TYPE_RAMIMAGE:
				g_pTOC->id[g_dwTocEntry].dwLoadAddress = dwImageStart;
				g_pTOC->id[g_dwTocEntry].dwTtlSectors = FILE_TO_SECTOR_SIZE(dwImageLength);
		        if (!WriteOSImageToBootMedia(dwImageStart, dwImageLength, dwLaunchAddr))
		        {
            		OALMSG(OAL_ERROR, (TEXT("ERROR: OEMLaunch: Failed to store image to Smart Media.\r\n")));
            		goto CleanUp;
        		}

				if (dwLaunchAddr && (g_pTOC->id[g_dwTocEntry].dwJumpAddress != dwLaunchAddr))
				{
					g_pTOC->id[g_dwTocEntry].dwJumpAddress = dwLaunchAddr;
					if ( !TOC_Write() ) {
	            		EdbgOutputDebugString("*** OEMLaunch ERROR: TOC_Write failed! Next boot may not load from disk *** \r\n");
					}
	        		TOC_Print();
				}
				else
				{
					dwLaunchAddr= g_pTOC->id[g_dwTocEntry].dwJumpAddress;
					EdbgOutputDebugString("INFO: using TOC[%d] dwJumpAddress: 0x%x\r\n", g_dwTocEntry, dwLaunchAddr);
				}
        		        		
                break;
        }
    }
    else if(g_bDownloadImage)
    {
        switch (g_ImageType) 
        {
        	case IMAGE_TYPE_STEPLDR:
		        OALMSG(TRUE, (TEXT("Stepldr image can't launch from ram.\r\n")));
		        OALMSG(TRUE, (TEXT("You should program it into flash.\r\n")));
		        SpinForever();
				break;
            case IMAGE_TYPE_LOADER:
		        OALMSG(TRUE, (TEXT("Eboot image can't launch from ram.\r\n")));
		        OALMSG(TRUE, (TEXT("You should program it into flash.\r\n")));
		        SpinForever();
		        break;
            default:
            	break;
    	}
    }

    OALMSG(1, (TEXT("waitforconnect\r\n")));
    // 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_bDownloadImage & g_bWaitForConnect)
   // if(0) // modify by xm.hu
    {

	pBSPArgs->kitl.flags  |= OAL_KITL_FLAGS_PASSIVE;
		
        #if 0
        memset(&EshellHostAddr, 0, sizeof(EDBG_ADDR));

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

        if (!(pCfgData = EbootWaitForHostConnect(&g_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;
        }
	#endif
	
	}
	else
	{
		pBSPArgs->kitl.flags = 0;
	}
    
    // If a launch address was provided, we must have downloaded the image, save the address in case we

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美大片一区二区三区| 国产精品福利一区二区| 日韩国产成人精品| 欧美精品xxxxbbbb| 日韩av一区二| 精品少妇一区二区三区在线视频| 男人的j进女人的j一区| 日韩欧美国产三级电影视频| 国产在线精品一区二区不卡了| 精品美女被调教视频大全网站| 久久99久久99小草精品免视看| 久久中文娱乐网| 99视频热这里只有精品免费| 亚洲男人的天堂av| 欧美日韩黄色一区二区| 老司机免费视频一区二区三区| 久久久久久久久久久99999| 成人在线视频首页| 亚洲影视资源网| 欧美一区二区三区视频免费播放| 国产麻豆一精品一av一免费| 成人欧美一区二区三区白人| 欧美日韩情趣电影| 精品写真视频在线观看| 1区2区3区欧美| 欧美一级一区二区| av高清不卡在线| 六月婷婷色综合| 国产精品久久久久久亚洲伦| 欧美午夜免费电影| 国产精品一区二区在线播放| 亚洲黄一区二区三区| 欧美一级日韩一级| 不卡一区中文字幕| 蜜芽一区二区三区| 亚洲欧美在线aaa| 日韩免费一区二区| 在线视频你懂得一区| 精品一区中文字幕| 亚洲一级不卡视频| 国产精品久久久久久亚洲毛片| 欧美一区二区在线免费观看| 不卡的av在线播放| 男人的天堂亚洲一区| 一区二区三区精品在线| 久久久久国产精品厨房| 欧美巨大另类极品videosbest| 成人午夜电影小说| 久久精品国产亚洲aⅴ| 一区二区三区四区不卡在线| 久久精品亚洲麻豆av一区二区| 欧美日韩国产一区二区三区地区| 国产精品白丝jk白祙喷水网站| 天堂av在线一区| 亚洲精品成人在线| 国产精品女主播av| 国产亚洲综合性久久久影院| 欧美电影在哪看比较好| 一本久久精品一区二区| 国产成人午夜片在线观看高清观看| 欧美a级一区二区| 午夜伊人狠狠久久| 一区二区三区在线视频观看| 国产精品妹子av| 国产亚洲精品bt天堂精选| 欧美一区午夜视频在线观看 | 国产福利一区二区三区视频| 免费久久精品视频| 五月天丁香久久| 天堂资源在线中文精品| 亚洲与欧洲av电影| 亚洲最新在线观看| 亚洲激情图片小说视频| 亚洲乱码日产精品bd| 综合自拍亚洲综合图不卡区| 国产精品视频你懂的| 中文av一区二区| 国产精品久久久久桃色tv| 欧美高清在线一区| 中文字幕亚洲电影| 亚洲色图丝袜美腿| 一区二区三区欧美亚洲| 一区二区在线观看免费视频播放| 亚洲人成在线播放网站岛国| 亚洲品质自拍视频| 亚洲精品视频在线看| 亚洲综合男人的天堂| 一区二区三区精品| 亚洲6080在线| 精品一区二区久久久| 国产精品一级黄| 成人动漫精品一区二区| 色综合久久天天| 欧美色手机在线观看| 666欧美在线视频| 精品国产乱码久久久久久浪潮 | 欧美日韩国产综合久久 | 久久久蜜桃精品| 中文字幕不卡在线| 一区二区三区免费看视频| 天堂成人国产精品一区| 国产一区二区在线观看免费 | 色婷婷综合视频在线观看| 欧美性生活一区| 日韩欧美一二区| 国产精品免费网站在线观看| 亚洲精品少妇30p| 蜜臀av一级做a爰片久久| 国产乱人伦偷精品视频不卡 | 国产成人免费视频精品含羞草妖精| 成人开心网精品视频| 欧美人体做爰大胆视频| 久久久久国产精品免费免费搜索 | 亚洲地区一二三色| 狠狠色狠狠色合久久伊人| av午夜精品一区二区三区| 在线91免费看| 国产精品另类一区| 亚洲va在线va天堂| 国产二区国产一区在线观看| 91福利视频久久久久| 精品成人在线观看| 亚洲美女在线一区| 国产一区二区三区日韩| 欧美性受xxxx黑人xyx性爽| 2021国产精品久久精品 | 亚洲一区在线观看视频| 麻豆91在线播放免费| 色诱视频网站一区| 亚洲成人动漫av| 国产成人日日夜夜| 在线91免费看| 一区二区三区四区视频精品免费 | 日韩亚洲欧美一区| 一区二区在线观看视频在线观看| 国模娜娜一区二区三区| 欧美人牲a欧美精品| 亚洲你懂的在线视频| 激情偷乱视频一区二区三区| 欧美在线不卡一区| 国产精品电影一区二区三区| 黄一区二区三区| 日韩欧美激情四射| 亚洲国产乱码最新视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 日韩欧美激情四射| 亚洲成人激情综合网| 色综合一个色综合亚洲| 国产日产亚洲精品系列| 久久疯狂做爰流白浆xx| 欧美日韩一区二区欧美激情| 亚洲久本草在线中文字幕| 成人a级免费电影| 国产午夜精品美女毛片视频| 麻豆国产欧美一区二区三区| 欧美日韩国产综合久久| 亚洲一级不卡视频| 欧美在线制服丝袜| 一二三四区精品视频| 色视频一区二区| 一区二区三区中文字幕电影| 91同城在线观看| 亚洲欧美日韩久久| 色天天综合色天天久久| 亚洲人成伊人成综合网小说| 91一区二区在线| 亚洲精品综合在线| 在线观看日韩高清av| 亚洲国产成人高清精品| 色欧美乱欧美15图片| 亚洲午夜激情网站| 欧美日韩一区精品| 日日夜夜一区二区| 欧美一区二区精品在线| 久久99最新地址| 久久久久国产精品厨房| 成人中文字幕电影| 自拍偷拍亚洲综合| 91成人国产精品| 偷窥少妇高潮呻吟av久久免费| 91精品国产综合久久婷婷香蕉| 奇米影视一区二区三区小说| 精品国精品国产| 国产成人综合在线观看| 国产精品不卡在线| 欧美性生活久久| 久国产精品韩国三级视频| 久久久亚洲精品一区二区三区 | 成人免费视频一区| 亚洲欧美另类在线| 欧美艳星brazzers| 看国产成人h片视频| 国产日韩欧美精品在线| 91丨porny丨在线| 亚洲福利国产精品| 亚洲精品一区二区三区在线观看| 福利电影一区二区三区| 一区二区三区成人| 欧美mv日韩mv| 91丨porny丨在线|