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

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

?? main.c

?? i.Mx31 bootloader(for WinCE6.0)
?? C
?? 第 1 頁 / 共 2 頁
字號:
        // Set launch address for NAND/SDHC OS image.  OS is copied into RAM for execution.
        PhysAddress = IMAGE_BOOT_NKIMAGE_RAM_PA_START;
        break;

    case BOOT_CFG_AUTODOWNLOAD_IPL_NAND:
        // Set launch address for NAND IPL image.  IPL is copied into RAM for execution.
        PhysAddress = IMAGE_BOOT_IPLIMAGE_RAM_START;
        break;

    default:
        // If a launch address wasn't specified - use the last known good address.
        //
        if (!dwLaunchAddr)
        {
            dwLaunchAddr = g_BootCFG.dwLaunchAddr;
        }
        else
        {
            if (g_BootCFG.dwLaunchAddr != dwLaunchAddr ||
                g_BootCFG.dwPhysStart  != dwImageStart ||
                g_BootCFG.dwPhysLen    != dwImageLength)
            {
                g_BootCFG.dwLaunchAddr = dwLaunchAddr;
                g_BootCFG.dwPhysStart  = dwImageStart;
                g_BootCFG.dwPhysLen    = dwImageLength;

                StoreBootCFG(&g_BootCFG);
            }
        }

        // Translate the image start address (virtual address) to a physical address.
        //
        PhysAddress = (UINT32) OALVAtoPA((VOID *)dwLaunchAddr);
        break;
    }
    
    KITLOutputDebugString("Download successful!  Jumping to image at 0x%x (physical 0x%x)...\r\n", dwLaunchAddr, PhysAddress);

    // Wait for PB connection...
    //
    if (g_DownloadImage)
    {
	GetLaunchInfo ();
    }

    // Jump to the image we just downloaded.
    //
    KITLOutputDebugString("\r\n\r\n\r\n");
    OEMWriteDebugLED(0, 0x00FF);
    Launch(PhysAddress);

    // Should never get here...
    //
    SpinForever();

}


//------------------------------------------------------------------------------
//
//  Function:  OEMMultiBINNotify
//
//  Receives/processes download file manifest.
//
//  Parameters:
//      pInfo 
//          [in] Download manifiest provided by BLCOMMON framework.
//
//  Returns:
//             void
//------------------------------------------------------------------------------
void OEMMultiBINNotify(const PMultiBINInfo pInfo)
{
    CHAR szFileName[MAX_PATH];
    int i, key, fileExtPos;

    if (!pInfo) return;

    KITLOutputDebugString("INFO: OEMMultiBINNotify (dwNumRegions = %d, dwRegionStart = 0x%x).\r\n", 
        pInfo->dwNumRegions, pInfo->Region[0].dwRegionStart);
    
    // Only inspect manifest if this is a monolithic .nb0 or diskimage file
    if (pInfo->dwNumRegions != 1) 
        return;

    //  NBO and DIO files will have start address of zero
    if (pInfo->Region[0].dwRegionStart == 0)
    {

        // Convert the file name to lower case
        i = 0;
        fileExtPos = 0;
        while ((pInfo->Region[0].szFileName[i] != '\0') && (i < MAX_PATH))
        {
            szFileName[i] = (CHAR)tolower(pInfo->Region[0].szFileName[i]);
            // Keep track of file extension position
            if (szFileName[i] == '.')
            {
                fileExtPos = i;
            }
            i++;
        }
        
        // Check for NAND XLDR update
        if (strncmp(szFileName, XLDR_NB0_FILE, XLDR_NB0_FILE_LEN) == 0)
        {
			// Remap the start address to the NAND XLDR region
            pInfo->Region[0].dwRegionStart = (DWORD) OALPAtoCA(IMAGE_BOOT_XLDRIMAGE_NAND_PA_START);
            KITLOutputDebugString("INFO: XLDR NB0 remapped to 0x%x.\r\n", pInfo->Region[0].dwRegionStart);
        }

        // Check for EBOOT/SBOOT update
        else if  ( (strncmp(szFileName, EBOOT_NB0_FILE, EBOOT_NB0_FILE_LEN) == 0) ||
		   (strncmp(szFileName, SBOOT_NB0_FILE, SBOOT_NB0_FILE_LEN) == 0) )
        {
            // Remap the start address to the region specified by the user
            KITLOutputDebugString("Specify destination for EBOOT/SBOOT NB0 [1 = NOR, 2 = NAND]: ");
            do {
                key = OEMReadDebugByte();
            } while ((key != '1') && (key != '2'));
            KITLOutputDebugString("\r\n");
            switch (key)
            {
            case '1':
                pInfo->Region[0].dwRegionStart = (DWORD) OALPAtoCA(IMAGE_BOOT_BOOTIMAGE_NOR_PA_START);
                break;
                
            case '2':
                pInfo->Region[0].dwRegionStart = (DWORD) OALPAtoCA(IMAGE_BOOT_BOOTIMAGE_NAND_PA_START);
                break;

			default:
                return;
            }

            KITLOutputDebugString("\r\nINFO: EBOOT/SBOOT NB0 remapped to 0x%x.\r\n", pInfo->Region[0].dwRegionStart);
        }
        
        // If  file to be downloaded has an NB0 extension, assume it is an NK NB0 image
        else if (fileExtPos && (strncmp(&szFileName[fileExtPos], ".nb0", 4) == 0))
        {
            // Remap the start address to the region specified by the user
            KITLOutputDebugString("Specify destination for NK NB0 [0 = RAM, 1 = NOR, 2 = NAND,]: ");
            do {
                key = OEMReadDebugByte();
            } while ((key != '0') && (key != '1') && (key != '2'));
            KITLOutputDebugString("\r\n");
            switch (key)
            {
            case '0':
                pInfo->Region[0].dwRegionStart = (DWORD) OALPAtoCA(IMAGE_BOOT_NKIMAGE_RAM_PA_START);
                break;

            case '1':
                pInfo->Region[0].dwRegionStart = (DWORD) OALPAtoCA(IMAGE_BOOT_NKIMAGE_NOR_PA_START);
                break;
                
            case '2':
                pInfo->Region[0].dwRegionStart = (DWORD) OALPAtoCA(IMAGE_BOOT_NKIMAGE_NAND_PA_START);
                break;

			default:
                return;
            }

            KITLOutputDebugString("\r\nINFO: NK NB0 remapped to 0x%x.\r\n", pInfo->Region[0].dwRegionStart);
        }

        // Notify user of unsupported format
        else 
        {
            KITLOutputDebugString("\r\nWARNING: Unsupported binary format.  Image not remapped.\r\n");
        }
    }

    // If this is a Windows Mobile disk image BIN, then dwRegionStart will
    // be offset into NAND.
    else if (pInfo->Region[0].dwRegionStart < IMAGE_BOOT_RAMDEV_RAM_PA_START)
    {
        g_ImageType = IMAGE_TYPE_BINDIO;
        g_ImageMemory = IMAGE_MEMORY_NAND;
        KITLOutputDebugString("\r\nINFO: DIO image with starting address 0x%x.\r\n", pInfo->Region[0].dwRegionStart);
    }
    
    return;
}

//------------------------------------------------------------------------------
//
//  Function:  OEMReportError
//
//  Error reporting function provided by BLCOMMON framework.
//
//  Parameters:
//      dwReason 
//          [in] Reason for error
//
//      dwReserved 
//          [in] Reserved parameter
//
//  Returns:
//             void
//------------------------------------------------------------------------------
BOOL OEMReportError (DWORD dwReason, DWORD dwReserved)
{
    // Remove-W4: Warning C4100 workaround
    UNREFERENCED_PARAMETER(dwReserved);

    KITLOutputDebugString("INFO: OEMReportError Reason 0x%x\r\n", dwReason);

	return TRUE;	
}

//-----------------------------------------------------------------------------
//
//  Function:  OEMVerifyMemory
//
//  This function verifies that the address provided is in valid memory,
//  and sets globals to describe the image region being updated.
//
//  Parameters:
//      dwStartAddr 
//          [in] Address to be verified. 
//
//      dwLength 
//          [in] Length of the address, in bytes.
//
//  Returns:
//      TRUE indicates success. FALSE indicates failure.
//
//-----------------------------------------------------------------------------
BOOL OEMVerifyMemory(DWORD dwStartAddr, DWORD dwLength)
{
    BOOL  rc = TRUE;
    DWORD dwPhysVerifyStart; 
    DWORD dwPhysVerifyEnd;

    // First check for DIO image flagged by OEMMultiBINNotify
    if (g_ImageType == IMAGE_TYPE_BINDIO)
    {
        KITLOutputDebugString("INFO: Downloading DIO NAND image.\r\n");
        return (TRUE);
    }

    dwPhysVerifyStart = (DWORD) OALVAtoPA((void *)dwStartAddr); 
    dwPhysVerifyEnd   = dwPhysVerifyStart + dwLength - 1;

    KITLOutputDebugString("INFO: OEMVerifyMemory (CA = 0x%x, PA = 0x%x, length = 0x%x)\r\n", 
        dwStartAddr, dwPhysVerifyStart, dwLength);

    if ((dwPhysVerifyStart >= IMAGE_BOOT_XLDRIMAGE_NAND_PA_START) && (dwPhysVerifyEnd <= IMAGE_BOOT_XLDRIMAGE_NAND_PA_END))
    {
        KITLOutputDebugString("INFO: Downloading XLDR NAND image.\r\n");
        g_ImageType = IMAGE_TYPE_XLDR;
        g_ImageMemory = IMAGE_MEMORY_NAND;
    }
    else if ((dwPhysVerifyStart >= IMAGE_BOOT_BOOTIMAGE_NAND_PA_START) && (dwPhysVerifyEnd <= IMAGE_BOOT_BOOTIMAGE_NAND_PA_END))
    {
        KITLOutputDebugString("INFO: Downloading EBOOT/SBOOT NAND image.\r\n");
        g_ImageType = IMAGE_TYPE_BOOT;
        g_ImageMemory = IMAGE_MEMORY_NAND;
    }
    else if ((dwPhysVerifyStart >= IMAGE_BOOT_IPLIMAGE_NAND_PA_START) && (dwPhysVerifyEnd <= IMAGE_BOOT_IPLIMAGE_NAND_PA_END))
    {
        KITLOutputDebugString("INFO: Downloading IPL NAND image.\r\n");
        g_ImageType = IMAGE_TYPE_IPL;
        g_ImageMemory = IMAGE_MEMORY_NAND;
    }
    // DIO and NK share this start address
    else if ((dwPhysVerifyStart >= IMAGE_BOOT_NKIMAGE_NAND_PA_START) && (dwPhysVerifyEnd <= IMAGE_BOOT_NKIMAGE_NAND_PA_END))
    {
        KITLOutputDebugString("INFO: Downloading NK NAND image.\r\n");
        g_ImageType = IMAGE_TYPE_NK;
        g_ImageMemory = IMAGE_MEMORY_NAND;
    }
    else if ((dwPhysVerifyStart >= IMAGE_BOOT_BOOTIMAGE_NOR_PA_START) && (dwPhysVerifyEnd <= IMAGE_BOOT_BOOTIMAGE_NOR_PA_END))
    {
        KITLOutputDebugString("INFO: Downloading EBOOT/SBOOT NOR image.\r\n");
        g_ImageType = IMAGE_TYPE_BOOT;
        g_ImageMemory = IMAGE_MEMORY_NOR;
    }
    else if ((dwPhysVerifyStart >= IMAGE_BOOT_NKIMAGE_NOR_PA_START) && (dwPhysVerifyEnd <= IMAGE_BOOT_NKIMAGE_NOR_PA_END))
    {
        KITLOutputDebugString("INFO: Downloading NK NOR image.\r\n");
        g_ImageType = IMAGE_TYPE_NK;
        g_ImageMemory = IMAGE_MEMORY_NOR;
    }
    else if ((dwPhysVerifyStart >= IMAGE_BOOT_NORDEV_NOR_PA_START) && (dwPhysVerifyEnd <= IMAGE_BOOT_NORDEV_NOR_PA_END))
    {
        KITLOutputDebugString("INFO: Downloading NK NOR image.\r\n");
        KITLOutputDebugString("WARNING:  NK image will overwrite EBOOT reserved space \r\n");
        g_ImageType = IMAGE_TYPE_NK;
        g_ImageMemory = IMAGE_MEMORY_NOR;
    }
    else if ((dwPhysVerifyStart >= IMAGE_BOOT_RAMDEV_RAM_PA_START) && (dwPhysVerifyEnd <= IMAGE_BOOT_RAMDEV_RAM_PA_END))
    {
        KITLOutputDebugString("INFO: Downloading NK RAM image.\r\n");
        g_ImageType = IMAGE_TYPE_NK;
        g_ImageMemory = IMAGE_MEMORY_RAM;
    }
    else
    {
        KITLOutputDebugString("ERROR: Invalid address range.\r\n");
        rc = FALSE;
    }

    return(rc);

}


//------------------------------------------------------------------------------
//
//  Function:  StoreBootCFG
//
//  Stores bootloader configuration information (menu settings, etc.) in flash.
//
//  Parameters:
//      BootCfg 
//          [in] Points to bootloader configuration to be stored. 
//
//  Returns:
//      TRUE indicates success. FALSE indicates failure.
//
//-----------------------------------------------------------------------------
BOOL StoreBootCFG(BOOT_CFG *BootCfg)
{

    if (!FlashStoreBootCFG((BYTE*) BootCfg, sizeof(BOOT_CFG)))
    {
        KITLOutputDebugString("ERROR: StoreBootCFG: failed to write configuration.\r\n");
        return(FALSE);
    }

    return(TRUE);
}


//------------------------------------------------------------------------------
//
//  Function:  LoadBootCFG
//
//  Retrieves bootloader configuration information (menu settings, etc.) from 
//  flash.
//
//  Parameters:
//      BootCfg 
//          [out] Points to bootloader configuration that will be filled with
//          loaded data. 
//
//  Returns:
//      TRUE indicates success. FALSE indicates failure.
//
//-----------------------------------------------------------------------------
BOOL LoadBootCFG(BOOT_CFG *BootCfg)
{

    if (!FlashLoadBootCFG((BYTE*) BootCfg, sizeof(BOOT_CFG))) {
        KITLOutputDebugString("ERROR: LoadBootCFG: failed to load configuration.\r\n");
        return(FALSE);
    }

    // Is the CFG data valid?  Check for the magic number that was written the last time
    // the CFG block was updated.  If Eboot has never been run, there will be no configuration
    // information, so the magic number will likely not be found.  In this case, setup the 
    // factory defaults and store them into Flash.
    //
    if (BootCfg->ConfigMagicNumber != OEMGetMagicNumber())
    {
        KITLOutputDebugString("ERROR: LoadBootCFG: ConfigMagicNumber not correct. Expected = 0x%x ; Actual = 0x%x.\r\n", 
            OEMGetMagicNumber(), BootCfg->ConfigMagicNumber);
        ResetDefaultBootCFG(BootCfg);
    }

    g_DefaultRamAddress = (PUCHAR)g_BootCFG.dwLaunchAddr;

    return(TRUE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品成人一区二区三区| 色婷婷综合久久久久中文一区二区 | 成人一区在线观看| 日韩午夜三级在线| 视频一区国产视频| 欧美久久一区二区| 亚洲精品国产精品乱码不99| 色综合视频在线观看| 国产精品久久久久久久久图文区| 国产一区欧美日韩| 国产亚洲1区2区3区| 国产另类ts人妖一区二区| 久久久美女毛片| 国产盗摄一区二区| 国产精品无码永久免费888| 福利一区福利二区| 国产欧美精品国产国产专区| 成人sese在线| 日本精品视频一区二区| 亚洲欧洲日韩女同| a亚洲天堂av| 亚洲美女电影在线| 亚洲影视资源网| 欧美xingq一区二区| 欧美一区二区精品久久911| 91精品国产综合久久久久久久 | 国产精品1区2区3区在线观看| 欧美激情一区二区三区| 色呦呦国产精品| 99精品视频免费在线观看| 亚洲免费资源在线播放| 在线观看国产日韩| 日韩国产高清影视| 精品国产电影一区二区| 国产乱码精品一区二区三区五月婷| av电影一区二区| 日本成人在线一区| 欧美精品三级在线观看| 亚洲成av人综合在线观看| 91精品国产高清一区二区三区蜜臀| 久久精品国产网站| 最好看的中文字幕久久| 欧美日韩一二三| 亚洲欧美一区二区不卡| 色香蕉久久蜜桃| 日韩成人伦理电影在线观看| 久久蜜桃av一区二区天堂| 国产sm精品调教视频网站| 自拍偷拍亚洲激情| 91免费看片在线观看| va亚洲va日韩不卡在线观看| 欧美电影免费观看高清完整版在| 风流少妇一区二区| 亚洲精品免费播放| 亚洲精品一区二区三区在线观看| 97se亚洲国产综合自在线观| 一区二区三区四区在线免费观看| 日韩欧美在线综合网| 91香蕉视频mp4| 韩国毛片一区二区三区| 一区二区三区国产精华| 久久精品这里都是精品| 欧美理论片在线| 国产成人自拍在线| 日精品一区二区| 中文字幕一区二区日韩精品绯色| 制服丝袜一区二区三区| jlzzjlzz欧美大全| 亚洲一区二区四区蜜桃| 日韩欧美一区在线| 99在线热播精品免费| 美国三级日本三级久久99 | 色综合中文字幕国产| 午夜精品爽啪视频| 亚洲色图一区二区三区| 久久网站热最新地址| 欧美日韩免费视频| 日本精品视频一区二区| 成人网页在线观看| 日韩电影免费在线| 亚洲自拍偷拍综合| 国产精品久久久久aaaa| 久久这里只有精品首页| 91丨九色丨蝌蚪丨老版| 国产成人av电影| 紧缚奴在线一区二区三区| 亚洲激情图片小说视频| 国产精品剧情在线亚洲| 国产日韩欧美不卡在线| 国产亚洲欧美一级| 精品免费视频一区二区| 日韩欧美国产成人一区二区| 欧美精品777| 欧美精品1区2区3区| 在线播放91灌醉迷j高跟美女| 欧美日韩三级视频| 欧美日本在线观看| 欧美人牲a欧美精品| 欧美日韩国产电影| 欧美日本视频在线| 欧美一级二级三级蜜桃| 日韩午夜激情视频| 日韩欧美国产系列| 精品国产露脸精彩对白| 久久色在线观看| 国产午夜久久久久| 国产精品久久久久影院老司| 欧美精彩视频一区二区三区| 久久久久久久久久久久电影| 欧美大片一区二区三区| 日韩欧美在线一区二区三区| 欧美在线免费视屏| 欧美乱妇23p| 欧美mv日韩mv国产| 亚洲国产高清在线观看视频| 亚洲图片你懂的| 亚洲一区二区三区四区在线免费观看| 亚洲在线观看免费| 日本欧美一区二区| 国产一区二区免费视频| 99精品视频在线免费观看| 色综合av在线| 欧美军同video69gay| 欧美精品一区二区三区高清aⅴ| 国产亚洲精品久| 日韩亚洲欧美一区二区三区| 日韩美女视频在线| 欧美一卡二卡在线观看| 国产日韩欧美一区二区三区乱码 | 久久亚洲精品国产精品紫薇| 国产视频911| 椎名由奈av一区二区三区| 手机精品视频在线观看| 国产毛片一区二区| 欧美特级限制片免费在线观看| 欧美mv和日韩mv的网站| 亚洲精品福利视频网站| 久久99日本精品| 91福利精品第一导航| 日韩欧美国产wwwww| 欧美日本在线看| 18涩涩午夜精品.www| 美女视频一区二区| 欧美片在线播放| 国产精品女主播av| 国产精品影视在线| 欧美福利视频导航| 中文字幕日韩欧美一区二区三区| 免费成人av资源网| 91看片淫黄大片一级在线观看| 精品日产卡一卡二卡麻豆| 亚洲3atv精品一区二区三区| 国产宾馆实践打屁股91| 日韩欧美激情四射| 奇米色一区二区三区四区| 色哟哟在线观看一区二区三区| 在线精品视频小说1| 经典三级一区二区| 在线成人午夜影院| 视频一区中文字幕国产| 99国产精品久久久久| 中文字幕免费不卡| www.色精品| 久久综合九色综合97婷婷| 午夜精品一区二区三区三上悠亚| 91精品久久久久久蜜臀| 日本美女一区二区三区视频| 视频一区免费在线观看| 黑人精品欧美一区二区蜜桃| 国产黄色精品网站| 成人综合婷婷国产精品久久免费| av成人免费在线观看| 一本色道a无线码一区v| 欧美一区二区三级| 国产精品免费免费| 亚洲第一成年网| 国产一区二区福利视频| 麻豆久久久久久久| 高清日韩电视剧大全免费| 成人av网站免费| 国产在线不卡一卡二卡三卡四卡| 亚洲不卡av一区二区三区| 久久99国产精品久久99 | 成人动漫中文字幕| 欧美亚洲综合色| 久久亚洲综合色一区二区三区| 国产精品午夜在线观看| 亚洲小说春色综合另类电影| 亚洲制服丝袜av| 国产乱淫av一区二区三区| 欧美一区二区三区色| 夜夜嗨av一区二区三区中文字幕| 成人激情小说网站| 欧美经典一区二区三区| 国产一区二区看久久| 日韩一级片网站| 激情综合五月婷婷| 精品国产亚洲在线| 国产精一区二区三区| 精品99一区二区|