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

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

?? main.c.bak.bak

?? 這個(gè)是嵌入式arm系列的一個(gè)bootloader程序。對需要編寫bootloader的很有參考價(jià)值
?? BAK
?? 第 1 頁 / 共 4 頁
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Portions Copyright (c) 2001 Intel Corporation

Module Name:  
    main.c
    
Abstract:  
    Ethernet boot loader main module. This file contains the C main
    for the boot loader.

	The Windows CE boot loader is the code that is executed on a Windows CE
	development system at power-on reset and loads the Windows CE
	operating system. 
    
Functions:




--*/

#include <windows.h>
#include <ethdbg.h> 
#include "halether.h" 
#include <nkintr.h> 
#include <pehdr.h>
#include <romldr.h>
#include "ethdown.h"
#if defined ( RTECH_FLAG )
#include "monitor.h"
#endif

#define BIN_FILE_TYPE	1
#define NB0_FILE_TYPE	2
#define BOOTLOADER		4
#define NKBIN			8
#define FLASHTARGET		16

#define _Vertification_ 0

#define BOOT_LOADER  // To avoid including debug ethernet support
#include "..\..\kernel\hal\debug.c"



extern BOOL SDdetect();
extern int  sddownload;


extern void Launch(unsigned int uAddr);
extern void Launch2(unsigned int uAddr);
extern msWait(unsigned msVal);

extern DWORD dwPhysStart;	// image physical starting address
extern DWORD dwPhysLen;	// image physical length
#if defined ( RTECH_FLAG)
#define EBOOT_IMAGE_START 0x80078000
#define FLASH_START		BOOT_FLASH_BASE_U_VIRTUAL   
DWORD	dwFlashCache;
extern DWORD dwEBOOT_OFFSET;
#endif
extern DWORD fileType;
extern DWORD v_PacketNum;

//
// Function pointers to the support library functions of the currently installed debug ethernet controller.
//
extern PFN_EDBG_INIT             pfnEDbgInit;
extern PFN_EDBG_ENABLE_INTS      pfnEDbgEnableInts;
extern PFN_EDBG_DISABLE_INTS     pfnEDbgDisableInts;
extern PFN_EDBG_GET_PENDING_INTS pfnEDbgGetPendingInts;
extern PFN_EDBG_GET_FRAME        pfnEDbgGetFrame;
extern PFN_EDBG_SEND_FRAME       pfnEDbgSendFrame;
extern PFN_EDBG_READ_EEPROM      pfnEDbgReadEEPROM;
extern PFN_EDBG_WRITE_EEPROM     pfnEDbgWriteEEPROM;
extern PFN_EDBG_SET_OPTIONS      pfnEDbgSetOptions;

#define pDriverGlobals ((PDRIVER_GLOBALS) DRIVER_GLOBALS_PHYSICAL_MEMORY_START)

// Constants that control operation of bootloader. All times in seconds
#define BOOTME_INTERVAL	   3    // Interval between BOOTMEs
#define MAX_BOOTME_CNT	   25
// Well known DHCP ports for use with UDP
#define DHCP_SERVER_PORT 0x4300
#define DHCP_CLIENT_PORT 0x4400

// Name of platform and base for device name in Eshell
#define PLATFORM_STRING  "XSC1BD"

// CPU Id for Eshell
//#define EDBG_CPUID EDBG_CPU_XSC1
#define EDBG_CPUID EDBG_CPU_TYPE_ARM

#define EBOOT_VERSION_MAJOR  1
#define EBOOT_VERSION_MINOR  0
const unsigned char EBOOT_VERSION_EXT[] = {" v2.00-hjg"};

const unsigned char NKSignon[] = {
    "\nMicrosoft Windows CE Ethernet Bootloader built "
        __DATE__ " " __TIME__ "\n"
	"Copyright (c) 2001 Microsoft Corporation\n"
	"Portions copyright (c) 2001 Intel Corporation\n"};

ROMHDR RomHdr;							// ROM Table of Contents 

static BYTE FrameBuffer[ETHER_MTU];

extern DWORD dwLaunchAddr;
extern DWORD VerifyCheckSum(void);

DWORD EdbgDebugZone;

extern DWORD dwOffset;

ROMHDR * volatile const pTOC = (ROMHDR *)-1;     // Gets replaced by RomLoader with real address

void KernelRelocate(ROMHDR *const pTOC);

extern UINT EdeviceInit(EDBG_ADDR *MyAddr);
extern int InitSpecifiedEthDevice(EDBG_ADDR *MyAddr, UINT EthDevice);

typedef volatile unsigned int *VPDWORD;
unsigned int ulRamBufStart;				// starting address of available RAM
unsigned int ulRamBufEnd;				// ending address of available RAM

extern void InitClock(void);

//
// Move all writeable data sections into RAM
//
// Relocate the kernel

void KernelRelocate(ROMHDR *const pTOC)
{
	ULONG loop;
	COPYentry *cptr;
//
    //volatile BLR_REGS *BLR = (BLR_REGS *)FPGA_REGS_BASE_U_VIRTUAL;
#if _Vertification_
	//BLR->hex_led = 0x90908080;
	while ((OEMReadDebugByte() == OEM_DEBUG_READ_NODATA));
#endif
	if (pTOC == (ROMHDR *const) 0xffffffff) {
		while (1) ; // spin forever!
	}
	
#if _Vertification_	
	//BLR->hex_led = 0x80808080;
	while ((OEMReadDebugByte() == OEM_DEBUG_READ_NODATA));
	//BLR->hex_led = pTOC->ulCopyEntries;
	while ((OEMReadDebugByte() == OEM_DEBUG_READ_NODATA));
	//BLR->hex_led = pTOC->ulCopyOffset; 
	while ((OEMReadDebugByte() == OEM_DEBUG_READ_NODATA));
#endif

	// This is where the data sections become valid... don't read globals until after this
	for (loop = 0; loop < pTOC->ulCopyEntries; loop++) {
		cptr = (COPYentry *)(pTOC->ulCopyOffset + loop*sizeof(COPYentry));
		//
#if _Vertification_
		//BLR->hex_led = cptr->ulDest;
		while ((OEMReadDebugByte() == OEM_DEBUG_READ_NODATA));
		//BLR->hex_led = cptr->ulSource;
		while ((OEMReadDebugByte() == OEM_DEBUG_READ_NODATA));
		//BLR->hex_led = cptr->ulCopyLen;
		while ((OEMReadDebugByte() == OEM_DEBUG_READ_NODATA));
#endif		
		//
		if (cptr->ulCopyLen)
			memcpy((LPVOID)cptr->ulDest,(LPVOID)cptr->ulSource,cptr->ulCopyLen);
		if (cptr->ulCopyLen != cptr->ulDestLen)
			memset((LPVOID)(cptr->ulDest+cptr->ulCopyLen),0,cptr->ulDestLen-cptr->ulCopyLen);
	}

}


#define IPSTATE_NONE    0
#define IPSTATE_GOTIP   1
#define IPSTATE_ARP     2
#define IPSTATE_ARPED   3
#define IPSTATE_RETRY   4

#define MAX_DHCP_RETRY  3

#define NONE -1
#if defined ( ORGEBOOT_FLAG )
#define RAM_IMAGE_START 0x8008D000
#else
#define RAM_IMAGE_START 0x800C0000
#endif

#define FLASH_CFG_START (BOOT_FLASH_BASE_U_VIRTUAL+0x00040000)

#define EbootCFGMagicNumber 0x11232000

#define DEVICE_PCMCIA 0
#define DEVICE_CF	  1
#define DEVICE_SMSC   2

typedef struct
{
	DWORD autoDownloadImage;
	DWORD IP;
	DWORD subnetMask;
	DWORD numBootMe;
	DWORD delay;
	DWORD DHCPEnable;
	DWORD bootDeviceOrder;
	DWORD dwLaunchAddr;
	DWORD ConfigMagicNumber;
} EBOOTCFG;

int StoreEBootCFG(EBOOTCFG *EBootCFG);
int LoadEBootCFG(EBOOTCFG *EBootCFG);
void ResetFactoryDefaultCFG(EBOOTCFG *EBootCFG);
void SetIP(EBOOTCFG *pEbootCFG);
void SetMask(EBOOTCFG *pEbootCFG);
void SetBootMe(EBOOTCFG *pEbootCFG);
void SetDelay(EBOOTCFG *pEbootCFG);

#if defined ( PLAT_LUBBOCK )
void SetSMSCMACAddress();
void CvtMAC(USHORT MacAddr[3], char *pszDottedD );
extern void SMCSetMACAddress(USHORT MacAddr[3]);
extern void SMCGetMACAddress(USHORT MacAddr[3]);
#endif
extern void LCD_Initialize (void);		// add hjg
BOOL CFGChanged=FALSE;
extern void ClearPromiscuousIP( void );
BOOL bLinkEstablished = FALSE;
#if defined ( RTECH_FLAG ) 
BOOL bEbootExternalDown = FALSE;
DWORD fWriteToFlash;
#endif




void main(void)
{
	EDBG_ADDR MyAddr;
	DWORD dwSubnetMask;
	DWORD dwStartTime;
	DWORD dwCurrTime;
	DWORD dwPrevTime;
	DWORD selection;
	DWORD delay;
	BOOL  fGotJumpimg = FALSE, fGotIP = FALSE;
    DWORD dwIPState = IPSTATE_NONE;
    EDBG_ADDR EshellHostAddr = {0,0,0};
    EDBG_OS_CONFIG_DATA *pCfgData;    
	DWORD dwNextBootme=0; // Time of next bootme
	UCHAR BootmeCnt=0;	  // # of bootmes sent so far
    int DHCPRetry=0;
    DWORD DHCPLeaseTime;
    DWORD EdbgFlags = 0;
	UINT ethernet_device;
	LPDWORD	lpdwToc;	  // toc pointer
	int i,j;
	
	volatile GPIO_REGS   *v_pGPIOReg;
	volatile PWM_REGS	 *v_pPWM0Reg = NULL;//houjg add
	volatile PWM_REGS	 *v_pPWM1Reg = NULL;//houjg add
	volatile CLKMAN_REGS *v_pCLKReg = NULL;//houjg add
	volatile SA2lcdregs	 *v_pLcdRegs = NULL;// houjg add
	
#if defined ( RTECH_FLAG ) 	
	DWORD dwFlashStart;
	UINT16 MonitorFlag = 0;
#endif
    SYSTEMTIME st;
	SYSTEMTIME defst = {1998,1,0,1,12,0,0,0};
	
	EBOOTCFG EbootCFG;
	EBOOTCFG *pEbootCFG;

	// This table describes the boot order for a given configuration
	int bootOrder[] = {DEVICE_SMSC,DEVICE_PCMCIA,DEVICE_CF, //pEbootCFG->bootDeviceOrder = 0
					  DEVICE_SMSC,DEVICE_CF,DEVICE_PCMCIA,  //pEbootCFG->bootDeviceOrder = 1
					  DEVICE_PCMCIA,DEVICE_CF,DEVICE_SMSC,  //pEbootCFG->bootDeviceOrder = 2
					  DEVICE_PCMCIA,DEVICE_SMSC,DEVICE_CF,  //pEbootCFG->bootDeviceOrder = 3
					  DEVICE_CF,DEVICE_SMSC,DEVICE_PCMCIA,  //pEbootCFG->bootDeviceOrder = 4
					  DEVICE_CF,DEVICE_PCMCIA,DEVICE_SMSC}; //pEbootCFG->bootDeviceOrder = 5

#if defined ( PLAT_LUBBOCK )
	//int x,y,z;
   // volatile BLR_REGS *BLR = (BLR_REGS *)FPGA_REGS_BASE_U_VIRTUAL; //add by houjg ,wait for fpga registers
#endif

    /* Copy kernel data to RAM & zero out BSS */
	KernelRelocate(pTOC);

	OEMInitDebugSerial(); //why no for xsacle 's init program
	
		
	{
		volatile PMEMC pMemCtrlRegs = (volatile PMEMC)MEMC_BASE_U_VIRTUAL;
		EdbgOutputDebugString("MSC0=0x%x, MSC1=0x%x, MSC2=0x%x\r\n",
								pMemCtrlRegs->msc0,
								pMemCtrlRegs->msc1,
								pMemCtrlRegs->msc2);
		EdbgOutputDebugString("0x%x\r\n", *(volatile UINT16 *)(0xBF900300+14));
	}
	
	
#if defined ( PLAT_LUBBOCK )
	//BLR->hex_led = 0x80808080;
#endif
	
	//EdbgOutputDebugString(NKSignon);
	EdbgOutputDebugString("Test...\r\n");

	EdbgOutputDebugString("Boot Loader, Version %s\r\n", EBOOT_VERSION_EXT);
	
#ifndef SABINAL
	// Temporarily clear RAM here.  fwxsc1.s will soon be modified to do this.
	EdbgOutputDebugString("Clearing RAM ... \r\n");
	memset((LPVOID)RAM_IMAGE_START, 0x0, 0x3eb5000);
	EdbgOutputDebugString("Complete!\r\n");
#endif

	v_pGPIOReg = (volatile GPIO_REGS *)GPIO_BASE_U_VIRTUAL;
	v_pPWM1Reg = (volatile PPWM1_REGS)PWM1_BASE_U_VIRTUAL;
	v_pPWM0Reg = (volatile PPWM0_REGS)PWM0_BASE_U_VIRTUAL;
	v_pCLKReg = (volatile PCLKMAN_REGS)CLK_BASE_U_VIRTUAL;
	v_pGPIOReg->GPCR_x |= GPIO_4;
	v_pGPIOReg->GPDR_x |= GPIO_4;			// set output mode
	v_pGPIOReg->GPCR_x |= GPIO_5;
	v_pGPIOReg->GPDR_x |= GPIO_5;			// set output mode
	
for( i=0;i<20;i++)     //add by houjg flash led 20 times
{
	v_pGPIOReg->GPCR_x |= GPIO_4;
	v_pGPIOReg->GPSR_x |= GPIO_5;
	msWait(50);
	v_pGPIOReg->GPSR_x |= GPIO_4;
	v_pGPIOReg->GPCR_x |= GPIO_5;
	msWait(50);
}
	
//	v_pGPIOReg->GPSR_x |= GPIO_21;	
//	v_pGPIOReg->GPDR_x |= GPIO_21;	

#if defined ( PLAT_LUBBOCK )
	//BLR->hex_led = 0;
#endif

	// init RomHdr
	memset((LPVOID)&RomHdr,-1,sizeof(ROMHDR));
    // Initialize driver globals area, so kernel knows we are present
    memset((LPVOID)&pDriverGlobals->eth,0,DBG_ETH_GLOBALS_SIZE);
    
   	EdbgOutputDebugString("DriverGlobal address = 0x%X\r\n", pDriverGlobals);

	pDriverGlobals->eth.EbootMagicNum = EBOOT_MAGIC_NUM;
	pDriverGlobals->eth.EbootDevice = BOOT_DEVICE_NONE;

    InitClock();
   //add by houjg
     EdbgOutputDebugString("LCD_Initialize... \r\n");
   	 LCD_Initialize();
     	 EdbgOutputDebugString ( "PWM1 CLOCK and LCD BACK On \r\n");
     	v_pCLKReg->cken |= 0x00000002;	// PWM1 clock enabled // LCD BACK ON  
     	v_pPWM1Reg->pwcr = 	0x00;//64;	
	v_pPWM1Reg->pwdr = 	0x9f;//20;		
	v_pPWM1Reg->pwpr = 	0xff;//40;
  	
    OEMGetRealTime(&st);

#ifndef SABINAL
    //
    //  Do not perform menu services for Sabinal
    //


	pEbootCFG = &EbootCFG;
	LoadEBootCFG(pEbootCFG);

	MyAddr.dwIP = pEbootCFG->IP;
	dwSubnetMask = pEbootCFG->subnetMask;
	delay = pEbootCFG->delay;

	delay = 10;
	
	EdbgOutputDebugString ( "Press On/Off button before reset to enter Boot Loader's Selection Menu,\r\n");
	EdbgOutputDebugString ( "and please keep On/Off Button pressed at least 10 seconds...\r\n");
	EdbgOutputDebugString ( "\r\nPress [ENTER] to download now or [SPACE] to cancel.\r\n");
	EdbgOutputDebugString ( "Else, Boot Loader will launch OS image whinch exists in Flash.\r\n");
	
	
	
	dwStartTime = OEMEthGetSecs();
	dwPrevTime = dwStartTime;
	dwCurrTime = dwStartTime;
	//selection = 'L';

		while((dwCurrTime - dwStartTime) <delay)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品费精品国产一区二区| 91捆绑美女网站| 亚洲青青青在线视频| 欧美一区二区三区视频在线| 99久久99久久精品免费观看 | 亚洲综合在线观看视频| 久久综合精品国产一区二区三区| 欧美天堂一区二区三区| 不卡一卡二卡三乱码免费网站| 日韩中文字幕区一区有砖一区| 国产精品的网站| 亚洲精品在线三区| 在线成人高清不卡| 在线观看av不卡| av一区二区三区在线| 国产成人精品一区二| 美女网站一区二区| 日韩精品亚洲一区| 亚洲一区二区欧美| 亚洲精品网站在线观看| 国产精品福利一区二区| 欧美国产一区视频在线观看| 亚洲精品一区二区三区在线观看| 3d动漫精品啪啪一区二区竹菊| 在线免费观看日本一区| 色嗨嗨av一区二区三区| 91性感美女视频| 91在线国内视频| 99热在这里有精品免费| 成人午夜免费电影| 成人午夜在线视频| 成人免费视频视频在线观看免费| 国产一区二区网址| 国产久卡久卡久卡久卡视频精品| 久久99国产精品麻豆| 久久99精品久久久久久久久久久久 | 9i看片成人免费高清| 成人av集中营| 成人aaaa免费全部观看| 99精品欧美一区二区三区小说| av在线不卡观看免费观看| 99re热这里只有精品视频| 93久久精品日日躁夜夜躁欧美| proumb性欧美在线观看| 91女厕偷拍女厕偷拍高清| 色猫猫国产区一区二在线视频| 欧美性感一类影片在线播放| 欧美色精品在线视频| 69堂亚洲精品首页| 欧美mv日韩mv国产网站app| 久久综合狠狠综合久久综合88| 国产午夜久久久久| 亚洲色图欧美激情| 亚洲一区精品在线| 日韩二区三区在线观看| 久久99在线观看| 国产馆精品极品| 91丨九色porny丨蝌蚪| 欧美性欧美巨大黑白大战| 欧美肥妇bbw| 久久精品日产第一区二区三区高清版 | 亚洲超碰精品一区二区| 奇米影视在线99精品| 国产真实乱对白精彩久久| 成人美女在线观看| 欧美色综合影院| 精品蜜桃在线看| 亚洲品质自拍视频| 天堂蜜桃一区二区三区| 国产乱码精品一区二区三区忘忧草| 成人免费va视频| 国产午夜亚洲精品不卡| 一区二区三区四区精品在线视频| 日韩精品1区2区3区| 国产又粗又猛又爽又黄91精品| 北条麻妃一区二区三区| 欧美精品123区| 国产欧美精品在线观看| 亚洲国产wwwccc36天堂| 国产麻豆精品在线观看| 欧洲精品在线观看| 久久九九久精品国产免费直播| 亚洲精品一二三| 国产一区二区三区在线观看免费 | 久久99精品国产麻豆不卡| 91网站黄www| 日韩精品中文字幕在线不卡尤物| 综合欧美亚洲日本| 精品一区二区三区的国产在线播放| 99国产麻豆精品| 精品美女被调教视频大全网站| 亚洲精品亚洲人成人网| 国产精品1区2区3区在线观看| 欧美日韩国产高清一区二区 | 精品福利一二区| 一区二区成人在线| 国产99一区视频免费| 在线综合亚洲欧美在线视频| 亚洲女同ⅹxx女同tv| 国产福利一区二区| 日韩亚洲欧美中文三级| 亚洲国产精品久久不卡毛片| 国产xxx精品视频大全| 欧美成人女星排名| 日韩中文字幕91| 在线观看日韩一区| 亚洲人成人一区二区在线观看 | 国产九色精品成人porny| 欧美老女人第四色| 亚洲欧美日韩在线| 国产成人精品三级麻豆| 欧美一级在线观看| 香港成人在线视频| 欧美少妇一区二区| 亚洲黄色小视频| 91丨九色丨尤物| 亚洲欧洲日韩一区二区三区| 国产精品一卡二| 亚洲精品一线二线三线| 老司机免费视频一区二区三区| 欧美欧美欧美欧美| 亚洲亚洲精品在线观看| 91视频一区二区三区| 中文字幕在线不卡一区| 成人国产免费视频| 国产欧美日韩卡一| 国产精品77777| 欧美国产乱子伦| 成人免费视频caoporn| 国产精品久久夜| heyzo一本久久综合| 亚洲天堂av一区| 一本一道波多野结衣一区二区| 国产精品久久国产精麻豆99网站 | 欧美一区二区日韩| 麻豆精品精品国产自在97香蕉 | 一区二区三区中文免费| 色诱视频网站一区| 亚洲国产日韩综合久久精品| 欧美在线免费观看亚洲| 亚洲sss视频在线视频| 69堂亚洲精品首页| 精品在线一区二区三区| 久久综合久久综合亚洲| 精品少妇一区二区三区视频免付费 | 亚洲最新在线观看| 欧美日韩国产在线播放网站| 午夜亚洲福利老司机| 欧美一区二区免费观在线| 麻豆国产精品官网| 国产欧美va欧美不卡在线| k8久久久一区二区三区| 亚洲一区二区三区四区在线免费观看 | 国产精品国产自产拍在线| 91蜜桃网址入口| 亚洲国产va精品久久久不卡综合 | 国产日产精品一区| 91在线无精精品入口| 亚洲一区二区三区国产| 精品美女在线播放| 99久久99久久精品免费看蜜桃| 午夜精品影院在线观看| 精品国产三级电影在线观看| 成人美女在线观看| 午夜视频在线观看一区二区| 久久综合999| 在线精品视频免费播放| 久久精品99久久久| 中文字幕在线一区| 欧美丰满一区二区免费视频 | 色婷婷狠狠综合| 麻豆精品久久久| 亚洲欧洲一区二区在线播放| 欧美电影影音先锋| 成人app下载| 青青草国产成人99久久| 国产精品国产三级国产专播品爱网 | 欧美高清性hdvideosex| 国产精品自产自拍| 一区二区三区在线不卡| 久久女同精品一区二区| 91视频国产观看| 激情综合一区二区三区| 一区二区高清视频在线观看| 2021国产精品久久精品| 欧美亚洲禁片免费| 国产精品888| 日韩av一级片| 亚洲自拍偷拍九九九| 91麻豆精品国产自产在线观看一区| 国产成人午夜精品影院观看视频| 一区二区免费视频| 中文在线免费一区三区高中清不卡| 欧美精品在线观看播放| 97精品久久久久中文字幕| 国产在线一区二区综合免费视频| 亚洲自拍偷拍麻豆| 国产精品欧美精品| 久久这里只有精品首页| 91麻豆精品国产91久久久资源速度|