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

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

?? main.c

?? MagicARM2410的BSP包,增加了AD,CAN,PCCARD驅(qū)動,串口驅(qū)動3個
?? C
?? 第 1 頁 / 共 3 頁
字號:
    //
    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);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91香蕉视频黄| 成人高清免费在线播放| 亚洲一区二区三区自拍| 国产欧美日韩中文久久| 欧美一级日韩不卡播放免费| 欧美一区二区三区免费视频| 国产精品久久一卡二卡| 久久久国产午夜精品| 国产亚洲精品7777| 国产精品国产精品国产专区不片| 国产精品你懂的在线| 中文字幕一区二区三区在线播放 | 人人爽香蕉精品| 久久伊人中文字幕| wwwwww.欧美系列| 亚洲免费视频成人| 麻豆精品一区二区三区| 国产精品18久久久久| 欧美自拍偷拍午夜视频| 久久尤物电影视频在线观看| 一区二区高清免费观看影视大全| 激情综合一区二区三区| 欧洲色大大久久| ●精品国产综合乱码久久久久| 日本在线不卡视频| 欧洲一区二区av| 亚洲三级小视频| 成人精品视频一区二区三区 | 人禽交欧美网站| 丁香六月综合激情| 狠狠色伊人亚洲综合成人| 亚洲激情欧美激情| 麻豆精品国产91久久久久久| 国产美女精品一区二区三区| 欧美吻胸吃奶大尺度电影| 精品国产乱码久久久久久1区2区| 视频在线在亚洲| 日本韩国一区二区三区视频| 国产视频一区在线观看| 激情综合色综合久久综合| 欧美日本精品一区二区三区| 亚洲小少妇裸体bbw| 日本韩国一区二区三区视频| 国产精品久久久久久久第一福利| 国产精品1区2区3区在线观看| 精品理论电影在线| 日韩av成人高清| 欧美不卡一二三| 成人午夜免费视频| 综合久久综合久久| 色88888久久久久久影院野外 | 成人免费在线播放视频| 欧美日韩中文国产| 久久精品国产成人一区二区三区 | 欧美激情综合五月色丁香小说| 国产乱码精品一区二区三区av | 亚洲国产视频一区二区| 欧美视频在线不卡| 性欧美大战久久久久久久久| 欧美亚一区二区| 久久精品99国产精品日本| 国产精品你懂的| 色欧美日韩亚洲| 爽好久久久欧美精品| 欧美tk—视频vk| 国模少妇一区二区三区| 久久亚洲一区二区三区明星换脸| 韩国v欧美v日本v亚洲v| 一区二区免费看| 精品国一区二区三区| 成a人片国产精品| 夜夜精品浪潮av一区二区三区| 欧美日韩国产在线播放网站| 国产福利不卡视频| 亚洲mv大片欧洲mv大片精品| 26uuu精品一区二区| 欧美在线视频全部完| 免费成人美女在线观看| 夜色激情一区二区| 国产精品对白交换视频 | 欧美高清在线一区| 日韩亚洲欧美在线| 91国产丝袜在线播放| 99久久综合精品| 成人性视频免费网站| 国产精品中文欧美| 国产精品一区不卡| 激情综合网av| 国产成人午夜视频| 国内欧美视频一区二区| 久久精品国产精品亚洲综合| 蜜臀av性久久久久蜜臀aⅴ| 石原莉奈一区二区三区在线观看| 亚洲欧美另类小说视频| 中文幕一区二区三区久久蜜桃| 日韩欧美在线影院| 欧美大片在线观看一区二区| 日韩午夜在线播放| 亚洲精品在线三区| 国产欧美日韩久久| 国产日韩综合av| 亚洲欧美国产三级| 亚洲一区二区欧美日韩| 亚洲国产色一区| 久久av老司机精品网站导航| 免费在线看一区| 96av麻豆蜜桃一区二区| 欧美日韩免费电影| 欧美一区中文字幕| 国产欧美久久久精品影院| 亚洲欧美一区二区久久| 一区二区三区中文字幕精品精品 | 韩国成人福利片在线播放| 一道本成人在线| 日韩一级黄色片| 亚洲欧洲99久久| 国产一区二区网址| 91国产福利在线| 欧美韩国一区二区| 欧美aaa在线| 欧美这里有精品| 亚洲欧美日韩一区二区| 高清国产一区二区| 精品粉嫩aⅴ一区二区三区四区| 亚洲欧美日韩国产中文在线| 国产一区二区成人久久免费影院 | 久久理论电影网| 蜜臀久久久99精品久久久久久| 日本丶国产丶欧美色综合| 国产午夜精品一区二区三区四区| 香蕉久久夜色精品国产使用方法| 从欧美一区二区三区| 久久婷婷国产综合国色天香| 蜜桃av一区二区| 欧美日韩一本到| 亚洲高清免费观看| 在线观看精品一区| 午夜国产不卡在线观看视频| 色94色欧美sute亚洲线路一久| 国产精品网曝门| 成人av电影免费在线播放| 26uuu欧美日本| 91日韩在线专区| 亚洲美女淫视频| 欧美亚日韩国产aⅴ精品中极品| 亚洲激情一二三区| 91精品国产综合久久蜜臀| 日韩av一级电影| 26uuu欧美| 成人av在线资源网| 亚洲一区二区三区美女| 7777精品伊人久久久大香线蕉经典版下载| 日韩一区在线免费观看| 欧美精品第1页| 成人av影院在线| 久久精品噜噜噜成人av农村| 亚洲精品一区二区三区福利| 99久久综合99久久综合网站| 亚洲成人一二三| 亚洲欧美国产毛片在线| 欧美一级在线观看| 国精产品一区一区三区mba桃花| 亚洲天堂中文字幕| 精品国产sm最大网站免费看| www.视频一区| 六月丁香综合在线视频| 一区二区三区影院| 久久蜜桃av一区精品变态类天堂| 欧美三级在线看| 成人黄色av电影| 经典三级在线一区| 日本v片在线高清不卡在线观看| 亚洲欧美视频在线观看视频| 精品成人一区二区三区四区| 欧美男男青年gay1069videost| 99免费精品在线观看| 国产99精品国产| 丰满岳乱妇一区二区三区| 国产美女在线观看一区| 青娱乐精品视频| 午夜精品在线看| 香蕉成人啪国产精品视频综合网| 亚洲欧洲三级电影| 国产精品短视频| 一区二区成人在线| 亚洲精品老司机| 亚洲va中文字幕| 午夜欧美一区二区三区在线播放| 洋洋成人永久网站入口| 亚洲午夜精品网| 激情综合色综合久久| 成人av电影观看| 欧美日本国产一区| 久久亚洲精品小早川怜子| 日本一区免费视频| 日韩在线播放一区二区| 美国精品在线观看| 成人妖精视频yjsp地址| 777午夜精品免费视频| 国产欧美日韩综合|