⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 XSBase255_Linux_C开发版BootLoader源代码.gz
💻 C
字号:
/////////////////////////////////////////////////////////////////////////////////// Copyright(c) 2001-2002 Emdoor Co,.ltd. All rights reserved.//// Module name://      main.c//// Description:////// Author://      bedguy//// Created://      2002.10/////////////////////////////////////////////////////////////////////////////////#include "main.h"#include "scc.h"#define FND     0x14000000 #define FND_CS0 (*((volatile unsigned short *)(FND))) #define FND_CS1 (*((volatile unsigned short *)(FND + 0x00100000))) #define FND_CS2 (*((volatile unsigned short *)(FND + 0x00200000))) #define FND_CS3 (*((volatile unsigned short *)(FND + 0x00300000)))LOADER_STATUS	status;// function prototype.bool	DoPrintfHelp		(int argc, char **argv);void c_main(){	int		i;	bool	autoboot=true;	char	cmd[128];	long	timeout;	int		argc=0;	char	*argv[MAX_ARGS];	CMD_TBL	*cptr;	short 	led_value[4] ;	     (*((volatile unsigned short *)( 0x16000000)))=~0x4;    led_value[0]= 0x5b5b;    led_value[1]= 0x0606;    led_value[2]= 0x3f3f;    led_value[3]= 0x0000; 	// initiate status.	status.terminalSpeed = SERIAL_SPEED;	status.downloadSpeed = SERIAL_DOWNLOAD_SPEED;	///// initiate serial and timer. //////////////////////////////////////////	// serial and timer init.	SerialInit(status.terminalSpeed);	TimerInit();	///// printf the required GPL string. //////////////////////////////////////	printf("\n\n");	printf(" "PACKAGE "-" VERSION "\n Copyright (C) 2002 Emdoor Co,. ltd.\n");	printf(" Support: http://www.emdoor.com\n");	printf("\n");	//MemCpy((char *)KERNEL_DRAM_BASE, (char *)KERNEL_SRAM_BASE, KERNEL_MAX_SIZE);	// kernel image reload	EthInit();	///// wait 10 seconds before starting autoboot. ///////////////////////////	printf("Autoboot in progress, press any key to stop ");	for (i=0; i<3; i++){		timeout = GetTime()+1;	// 1檬埃 Delay        FND_CS0 = led_value[i];        FND_CS1 = led_value[i];        FND_CS2 = led_value[i];        FND_CS3 = led_value[i];		printf(".");		while (GetTime()<timeout){			if ((FFLSR & 0x00000001)){	// Serial肺 Input捞 乐阑 锭.				FFRBR;				autoboot = false;				break;			}		}		if (autoboot==false) break;	}	///// No key was pressed, so proceed booting the kernel. //////////////////	if (autoboot){		printf("Autoboot started.\n");		for (cptr=cmdTbl; cptr->cmd; cptr++){			if (!StrCmp(cptr->cmd, "boot")) break;		}		DoBootKernel(cptr, 1, 0);	}	///// Key was pressed, so proceed command mode. ///////////////////////////	printf("\nAutoboot aborted\n");	printf("Type \"help\" to get a list of commands\n");	// the command loop. endless, of course.	for(;;) {		DisplayPrompt(NULL);		// wait an hour to get a command.		GetCommand(cmd, 128, 3600);		if (!cmd || !cmd[0]) continue;				argc = GetArgs(cmd, argv);		for (cptr=cmdTbl; cptr->cmd; cptr++){			if (!StrCmp(argv[0], cptr->cmd)){				(cptr->run)(cptr, argc, argv);				break;			}		}		if (!StrCmp(argv[0], "help") || !StrCmp(argv[0], "?")){			DoPrintfHelp(argc, argv);		} else if (!(cptr->cmd)){			printf("\tUnknown command : %s\n", argv[0]);		}	}} // CMain.bool DoPrintfHelp(int argc, char **argv){	CMD_TBL	*cptr;	if (argc==1){		printf("Help for " PACKAGE "-" VERSION "\n");		printf("The following commands are supported :\n");		printf("  help                             Help for commands.\n");		for (cptr=cmdTbl; cptr->cmd; cptr++){				if (cptr->helpMore) printf(cptr->helpMore);		}		printf("\n");	}	else {		printf("\tUnknown command : %s\n", argv[0]);	}	return true;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -