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

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

?? main.c.bak

?? 這個是嵌入式arm系列的一個bootloader程序。對需要編寫bootloader的很有參考價值
?? 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_pPWM0Reg->pwcr = 	0x00;//64;	
	v_pPWM0Reg->pwdr = 	0x9f;//20;		
	v_pPWM0Reg->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一区二区三区免费野_久草精品视频
亚洲综合一区二区三区| 国产精品久久久久久妇女6080| 黄网站免费久久| 亚洲男人都懂的| wwwwww.欧美系列| 欧美性videosxxxxx| 丰满少妇久久久久久久| 日韩在线播放一区二区| 亚洲欧美另类综合偷拍| 久久久精品免费观看| 91精品国产综合久久精品| 91玉足脚交白嫩脚丫在线播放| 国产资源精品在线观看| 天堂成人国产精品一区| 一区二区三区在线观看动漫| 久久婷婷成人综合色| 884aa四虎影成人精品一区| 91在线视频观看| 国产激情精品久久久第一区二区 | 一区二区三国产精华液| 久久综合九色欧美综合狠狠| 欧美精品黑人性xxxx| 欧美综合欧美视频| 91麻豆国产精品久久| jlzzjlzz亚洲女人18| 欧美日本乱大交xxxxx| 色综合婷婷久久| 91一区二区三区在线观看| 国产一区二区三区不卡在线观看 | 成人激情动漫在线观看| 国产一区二区影院| 国内成+人亚洲+欧美+综合在线| 视频一区在线播放| 亚洲成人福利片| 亚洲成人一区二区在线观看| 亚洲精品ww久久久久久p站| 成人欧美一区二区三区在线播放| 国产精品色眯眯| 国产色产综合色产在线视频| 欧美精品一区视频| 精品国产电影一区二区| 精品国产精品一区二区夜夜嗨| 日韩欧美一区在线观看| 91精品国产一区二区| 91精品国产91久久久久久最新毛片| 欧美日韩一区不卡| 91精品国产色综合久久ai换脸| 91精品欧美一区二区三区综合在| 欧美人动与zoxxxx乱| 337p亚洲精品色噜噜狠狠| 欧美一级理论片| 2020国产精品自拍| 久久青草国产手机看片福利盒子| 国产亚洲欧美在线| 最新高清无码专区| 亚洲国产综合91精品麻豆| 午夜精品久久久久久久| 免费观看在线综合色| 国产一区二三区好的| 国产成人精品网址| 色婷婷国产精品| 欧美一三区三区四区免费在线看 | 中文字幕+乱码+中文字幕一区| 欧美韩国日本一区| 一区二区三区蜜桃| 日韩av一区二区在线影视| 国产毛片精品视频| 一本在线高清不卡dvd| 在线播放中文字幕一区| 久久久噜噜噜久久中文字幕色伊伊 | 国产呦萝稀缺另类资源| 成人黄色a**站在线观看| 91久久国产综合久久| 欧美一区二区三区播放老司机| 久久久久久97三级| 一二三四区精品视频| 美女视频黄免费的久久| 不卡免费追剧大全电视剧网站| 欧美色偷偷大香| 久久亚洲精精品中文字幕早川悠里 | 欧美成人国产一区二区| 国产精品视频线看| 日韩制服丝袜先锋影音| 丁香婷婷综合色啪| 欧美日韩国产中文| 国产清纯白嫩初高生在线观看91| 亚洲精品中文字幕乱码三区| 美女网站色91| 色综合久久久久综合体桃花网| 日韩欧美一二三区| 亚洲精品成人在线| 国产另类ts人妖一区二区| 在线一区二区三区做爰视频网站| 欧美大肚乱孕交hd孕妇| 亚洲精品国久久99热| 精品一区二区在线观看| 欧美丝袜丝交足nylons| 国产日韩欧美制服另类| 日韩黄色一级片| 91一区一区三区| 久久精品一区二区三区四区| 亚洲成a人v欧美综合天堂下载| 国产精品一区二区久久不卡| 欧美三级电影精品| 国产精品日韩成人| 国产在线观看免费一区| 欧美三级电影网站| 亚洲免费在线观看| 成人av资源站| 精品久久国产字幕高潮| 亚洲综合丝袜美腿| 99久久99久久免费精品蜜臀| 欧美精品一区二区三区很污很色的| 亚洲一区中文在线| 91在线国产观看| 久久精品亚洲乱码伦伦中文 | 91影院在线免费观看| 国产三级欧美三级日产三级99| 免费欧美在线视频| 6080国产精品一区二区| 亚洲成a人片在线不卡一二三区| 91亚洲精华国产精华精华液| 中文字幕不卡在线播放| 国产成人av一区二区三区在线 | 日韩一区二区三区电影在线观看| 亚洲男人天堂av| 91污在线观看| 国产精品国产三级国产普通话三级| 国产九九视频一区二区三区| 欧美第一区第二区| 精品影视av免费| 精品国产乱码久久久久久久久 | 在线观看免费一区| 亚洲色图在线看| 色综合咪咪久久| 亚洲欧美日韩在线| 色婷婷av一区| 亚洲国产婷婷综合在线精品| 日本道色综合久久| 亚洲午夜影视影院在线观看| 在线观看国产91| 亚洲图片欧美视频| 3d动漫精品啪啪1区2区免费| 日韩精品福利网| 欧美成人一区二区三区在线观看| 久久精品国产免费| 26uuu久久天堂性欧美| 国产成人免费视频网站| 国产精品久久久久久久久免费樱桃| 成人免费高清在线观看| 亚洲女子a中天字幕| 欧美最猛黑人xxxxx猛交| 午夜久久电影网| 日韩一级二级三级精品视频| 国产一区二区三区国产| 国产精品久久久久久亚洲伦 | 粉嫩一区二区三区在线看| 国产精品久久网站| 欧美午夜免费电影| 免费国产亚洲视频| 中文无字幕一区二区三区| 99国产精品久久久久久久久久| 亚洲美女视频在线观看| 欧美二区三区91| 黑人精品欧美一区二区蜜桃| 国产精品黄色在线观看| 欧美在线视频不卡| 久久疯狂做爰流白浆xx| 中文字幕久久午夜不卡| 欧美午夜电影一区| 激情综合色综合久久综合| 国产精品午夜春色av| 在线精品视频一区二区| 日本女人一区二区三区| 国产三级三级三级精品8ⅰ区| av不卡一区二区三区| 三级久久三级久久久| 久久精品人人爽人人爽| 欧洲激情一区二区| 国产一区二区三区四区五区美女 | 国产成人自拍高清视频在线免费播放 | 欧美xxxx在线观看| 99久久99精品久久久久久| 青青国产91久久久久久| 国产精品高潮久久久久无| 91精品福利在线一区二区三区 | 卡一卡二国产精品 | 美女视频网站黄色亚洲| 国产精品理伦片| 日韩欧美的一区二区| 91浏览器在线视频| 激情另类小说区图片区视频区| 亚洲女与黑人做爰| 久久久久久久久久看片| 欧美色大人视频| 成人污视频在线观看| 理论电影国产精品| 一区二区理论电影在线观看| 欧美成人综合网站| 欧美高清视频在线高清观看mv色露露十八|