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

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

?? main.c

?? ARM 4510 bootloader,完整的工程實例
?? C
?? 第 1 頁 / 共 2 頁
字號:

int WriteRegB(int argc, char *argv[])
{
	return WriteReg(argc, argv, 0);
}
int WriteRegW(int argc, char *argv[])
{
	return WriteReg(argc, argv, 1);
}
int WriteRegD(int argc, char *argv[])
{
	return WriteReg(argc, argv, 2);
}

int ReadRegB(int argc, char *argv[])
{
	return ReadReg(argc, argv, 0);
}
int ReadRegW(int argc, char *argv[])
{
	return ReadReg(argc, argv, 1);
}
int ReadRegD(int argc, char *argv[])
{
	return ReadReg(argc, argv, 2);
}

int ReadHDInfo(int argc, char *argv[])
{
	int i;
	
//	*(unsigned char *)0x600000c = 0xe0;
	*(unsigned char *)0x600000e = 0xec;
	
	while(*(volatile unsigned char *)0x600000e&0x80)printf("%x\n", *(volatile unsigned char *)0x600000e);
	//getch();
	for(i=0; i<256; i++)
		printf("%5x", *(unsigned short *)0x6000000);
			
	return 0;
}

/*****************************************************/
unsigned char GetStatus()
{
	return *(volatile unsigned char *)0x600000e;
}
int WaitNDrdy()
{
	int i;
	
	while(1)
	{
		if(GetStatus()&0x40)
			break;
		else
			for(i=100;i;i--);			
	}
	return 1;
}
int WaitNDrq()
{
	while(!(GetStatus()&8));	
	return 1;
}
int WaitBusy()
{
	while(GetStatus()&0x80);
	return 1;
}

int SelDevice()
{
	if(WaitBusy())
    {	

     	*(volatile unsigned char *)0x600000c = 0xa0;
        WaitNDrdy();
    }

    return 1;
}

int GetIdentify()
{
	int i, j;
   
    // Select device.
	if(SelDevice())
    {
	    // Send IDE IDENTIFY command.
	    *(volatile unsigned char *)0x600000e = 0xec;

	    if(WaitNDrq())
        {            
	        // Suck out 256 words. After waiting for one model that asserts busy
	        // after receiving the Packet Identify command.
	        for(i=0;i<256;i++)
	        {
	        	j = *(volatile unsigned short *)0x6000000;
	        }	        
        }
	    
	    // Work around for some IDE and one model Atapi that will present more than
	    // 256 words for the Identify data.	    
		
		while(GetStatus()&8)
        {
			// Suck out any remaining bytes and throw away.			    
			i = *(volatile unsigned short *)0x6000000;	    		
	    }
    }

	return 1;
}

int SetFeature()
{
	outportb(0x6000002, 0x03);
	outportb(0x6000004, 0x08);
	outportb(0x6000006, 0);
	outportb(0x6000008, 0);
	outportb(0x600000a, 0);
	outportb(0x600000e, 0xef);
	
	return 1;
}
int SetParameters()
{
   

	if(WaitBusy())
    {
    	// Set up registers for SET PARAMETER command.   	    
        outportb(0x600000c, 0xef);        
        outportb(0x6000004, 0x20);

        if(WaitNDrdy())
        {	        
	        // Send SET PARAMETER command.
	        // IDE_COMMAND_SET_DRIVE_PARAMETERS 0x91 (Init Device Parameter)	        
	        outportb(0x600000e, 0x91);
            WaitBusy();
        }
    }
    return 1;
}
int InitHardDisk(int argc, char *argv[])
{
	int i;
	
	*(unsigned int *)0x3ff5008 = 0;
	i = 1000;
	while(i--);
	*(unsigned int *)0x3ff5008 = 0xffffff;
	
	i = 100000;
	while(i--);
	
	if(SelDevice())
	{
		outportb(0x600000c, 0xa0);
	}


    while(1)
    {
        if(WaitNDrdy())            
            break;
        
    }	
    
    SetFeature();
    
    //if(SelDevice())
	//{
	//	GetIdentify();
	//}
	
	//SetParameters();
	
	return 1;	
}

/*********************************************************/
int Help(int argc, char *argv[]);

typedef int (*cmdproc)(int argc, char *argv[]);
typedef struct {
	const char *cmd;
	const char *hlp;
	cmdproc proc;
}CMD_STRUC;

CMD_STRUC CMD_INNER[] =
				{ 
					{"?", "help", Help},	
					{"load", "load file to memory", LoadFile2Mem},										
					{"comload", "load file from serial port", LoadFromUart},
					{"run", "run from ram", RunProgram},														
					{"ipcfg", "show or set IP address", SetIPAddr},
					{"setbaud", "set baud rate", SetBaudRate},
					{"prog", "program flash", ProgFlash},
					{"boot", "boot from flash", BootLoader},
					{"ap", "auto load image flie and program flash", AutoProgFlash},																			
					{"copy", "copy flash from src to dst address", CopyFlash},
					//{"wb", "", WriteRegB},
					//{"rb", "", ReadRegB},
					//{"ww", "", WriteRegW},
					//{"rw", "", ReadRegW},
					//{"wd", "", WriteRegD},
					//{"rd", "", ReadRegD},					
					//{"disk","", ReadHDInfo},
					//{"init", "", InitHardDisk},					
					{NULL, NULL, NULL}
				};

int Help(int argc, char *argv[])
{
	int i;	
	
	for(i=0; CMD_INNER[i].cmd!=NULL; i++)
	{
		if(CMD_INNER[i].hlp!=NULL)
		{
			printf(CMD_INNER[i].cmd);
			puts("	------	");
			printf(CMD_INNER[i].hlp);
			putch('\n');
		}
	}
	
	return 0;
}

/************************************************/
static void ParseArgs(char *cmdline, int *argc, char **argv)
{
#define STATE_WHITESPACE	0
#define STATE_WORD			1

	char *c;
	int state = STATE_WHITESPACE;
	int i;

	*argc = 0;

	if(strlen(cmdline) == 0)
		return;

	/* convert all tabs into single spaces */
	c = cmdline;
	while(*c != '\0')
	{
		if(*c == '\t')
			*c = ' ';
		c++;
	}
	
	c = cmdline;
	i = 0;

	/* now find all words on the command line */
	while(*c != '\0')
	{
		if(state == STATE_WHITESPACE)
		{
			if(*c != ' ')
			{
				argv[i] = c;		//將argv[i]指向c
				i++;
				state = STATE_WORD;
			}
		}
		else
		{ /* state == STATE_WORD */
			if(*c == ' ')
			{
				*c = '\0';
				state = STATE_WHITESPACE;
			}
		}
		c++;
	}
	
	*argc = i;
#undef STATE_WHITESPACE
#undef STATE_WORD
}

static int GetCmdMatche(char *cmdline)
{
	int i;	
	
	for(i=0; CMD_INNER[i].cmd!=NULL; i++)
	{
		if(strncmp(CMD_INNER[i].cmd, cmdline, strlen(CMD_INNER[i].cmd))==0)
			return i;
	}
	
	return -1;
}

static int ParseCmd(char *cmdline, int cmd_len)
{
	int argc, num_commands;
	char *argv[8];

	ParseArgs(cmdline, &argc, argv);

	/* only whitespace */
	if(argc == 0) 
		return 0;
	
	num_commands = GetCmdMatche(argv[0]);
	if(num_commands<0)
		return -1;
		
	if(CMD_INNER[num_commands].proc!=NULL)	
		CMD_INNER[num_commands].proc(argc, argv);
				
	return 0;			
}

/************************************************/
#include "4510irq.h"
void ARMEnableInt(void);
void ARMDisableInt(void);
void IsrNetRx(void)
{
//	*(unsigned int *)UTXBUF0 = '@';	
	putch('#');	
}
void ISR_CS8900(void);

int main()
{
	char command[MAX_CMD_LEN];
	char key;
	int i;
//	unsigned short tmp[32];
	
	SERIAL_BAUD = DFT_SERIAL_BAUD;
	console_init(SERIAL_BAUD);
	next_line();
	puts(star_line);
	puts("Bios for download and program.\n");
	puts("Author Jerry\n");
	puts("Build date : "__DATE__" Time : "__TIME__"\n");	
	printf("Type ? for help.\n");
	puts(star_line);	
	prompt();
	
//		printf("%x", ReadSWPID());		
//		for(i = 0; i<32; i++)
//			tmp[i] = 32-i;
//		FlashProg(0x40000, tmp, 32);	
//		SectorErase(0x40000);

//		InitIrq();
//		SetIrqVector(INT_EXTINT0, (U32)ISR_CS8900);//(U32)IsrNetRx);
//		EnableIrq(INT_EXTINT0);
//		EnableIrq(INT_GLOBAL);
//		ARMEnableInt();
	
/*		while(1)
		{
			U32 i;
			
			SetIntTest(INT_EXTINT0);
			i = 1000000;
			while(i--);
		}*/					
	
	i = 0;
	
	for(;;)
	{
		if(kbhit())
		{
			key = getch();
			if(key==BACK_KEY)
			{			
				i -= i?1:0;
				putch(key);
			}
			else
			if(key==ENTER_KEY)
			{
				int tmp;
				command[i] = 0;
				next_line();
				tmp = ParseCmd(command, i);
				if(tmp<0)
					puts("Bad command\n");
				prompt();
				
				i = 0;
			}
			else
			{
				if(i<MAX_CMD_LEN-1)
					command[i++] = key;
					putch(key);
			}				
		}
	}
	
}

unsigned int pIrqStart, pIrqFinish, pIrqHandler;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产另类ts人妖一区二区| 99精品视频在线观看免费| 国产成人精品免费网站| 国产精品国产三级国产aⅴ原创| caoporen国产精品视频| 亚洲6080在线| 亚洲免费观看高清完整版在线观看| 国产精品一区专区| 亚洲妇女屁股眼交7| 精品国产自在久精品国产| 不卡一区二区中文字幕| 日韩 欧美一区二区三区| 中文字幕人成不卡一区| 日韩欧美精品在线| 精品视频在线免费| 91一区在线观看| 国产网站一区二区| 欧美一卡2卡3卡4卡| 欧美在线制服丝袜| av网站一区二区三区| 色综合天天性综合| 国产在线麻豆精品观看| 亚洲图片一区二区| 一区二区三区自拍| 亚洲欧美日韩在线| 久久精品夜色噜噜亚洲a∨| 97se狠狠狠综合亚洲狠狠| 成人免费av网站| 成人视屏免费看| 成人av在线一区二区三区| 成人做爰69片免费看网站| 国产综合色视频| 高清国产一区二区三区| 欧美精品在线视频| 欧美一级日韩免费不卡| 在线观看日韩精品| 在线免费av一区| 欧美日韩在线直播| 欧美一区二区三区免费大片 | 国产在线播放一区三区四| 亚洲成年人影院| 亚洲一区二区三区影院| 亚洲综合无码一区二区| 综合色天天鬼久久鬼色| 精品成人免费观看| 久久在线免费观看| 亚洲欧洲日韩综合一区二区| 日本一区二区三区国色天香 | 亚洲精品免费电影| 亚洲一卡二卡三卡四卡五卡| 最新日韩av在线| 一区二区三区在线观看欧美| 婷婷亚洲久悠悠色悠在线播放| 亚洲在线一区二区三区| 日韩极品在线观看| 久久99深爱久久99精品| 成人精品免费看| 欧美三级乱人伦电影| 久久久精品国产免费观看同学| 久久精品人人做人人综合 | 国产亚洲欧洲一区高清在线观看| 精品久久久久久久久久久久久久久 | 亚洲成人在线观看视频| 久久国产综合精品| 欧美日韩的一区二区| 中文字幕精品在线不卡| 麻豆高清免费国产一区| 91蝌蚪porny| 久久婷婷久久一区二区三区| 亚洲高清免费视频| 91麻豆精品一区二区三区| 欧美一二三四区在线| 亚洲激情自拍偷拍| 91视频免费播放| 国产日韩精品一区| 国产一区二区91| 久久老女人爱爱| 国产麻豆精品久久一二三| 欧美一卡二卡三卡四卡| 黑人精品欧美一区二区蜜桃| 欧美丰满高潮xxxx喷水动漫| 亚洲高清不卡在线观看| 91精彩视频在线观看| 亚洲欧美激情插| 在线观看国产91| 韩国三级电影一区二区| 26uuu欧美| 成人黄色大片在线观看| 亚洲精品成a人| 欧美一区二区三级| 国产精品一区二区视频| 欧美激情在线免费观看| 色一情一伦一子一伦一区| 亚洲免费观看在线观看| 欧美一区二区精品| 国产一区二区福利视频| 一区二区三区小说| 3atv在线一区二区三区| 高清视频一区二区| 国产一区二区三区香蕉| 日本一道高清亚洲日美韩| 1区2区3区欧美| 中文字幕欧美激情| 337p粉嫩大胆噜噜噜噜噜91av| 91成人免费电影| 色婷婷国产精品| 成人午夜视频在线| 国产成人av电影在线观看| 国产盗摄一区二区| 国产成人亚洲综合色影视| 经典三级在线一区| 精品一区二区在线播放| 免费成人你懂的| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲伊人色欲综合网| 亚洲一区av在线| 久久99精品久久久久久国产越南| 天天射综合影视| 狠狠狠色丁香婷婷综合激情| 国产成人日日夜夜| av高清久久久| 欧美日韩dvd在线观看| 欧美一级免费大片| 中文久久乱码一区二区| 国产精品国产三级国产普通话三级 | 2020国产精品自拍| 中文字幕视频一区二区三区久| 亚洲最大成人网4388xx| 男人的天堂久久精品| 丁香亚洲综合激情啪啪综合| 在线亚洲免费视频| 久久久99精品免费观看不卡| 亚洲精选视频免费看| 免播放器亚洲一区| 一本色道久久综合狠狠躁的推荐| 欧美中文字幕久久| 中文字幕精品—区二区四季| 日本中文字幕一区| 成人国产在线观看| 久久这里只有精品视频网| 午夜免费久久看| 色噜噜偷拍精品综合在线| 欧美精品一区二区三区很污很色的| 有码一区二区三区| www.日韩精品| 国产精品国产三级国产专播品爱网 | 国产在线精品免费av| 在线播放国产精品二区一二区四区| 国产欧美日韩三级| 久久国产精品72免费观看| 日韩欧美国产精品| 国产最新精品免费| 国产人久久人人人人爽| 黄一区二区三区| 26uuu久久天堂性欧美| 久久99热狠狠色一区二区| 91.麻豆视频| 极品少妇一区二区| 国产精品亲子乱子伦xxxx裸| 国产一区二区不卡在线| 国产午夜一区二区三区| 成人禁用看黄a在线| 亚洲自拍偷拍图区| 欧美日韩一区小说| 日韩av在线发布| 91麻豆精品91久久久久同性| 视频一区欧美日韩| 69堂国产成人免费视频| 日韩电影在线看| 白白色亚洲国产精品| 国产精品国产a级| 色综合视频在线观看| 亚洲va欧美va天堂v国产综合| 欧美视频一区二| 久久国产麻豆精品| 欧美大肚乱孕交hd孕妇| 国产成人在线网站| 亚洲综合小说图片| 精品国产成人在线影院 | aaa亚洲精品| 亚洲永久免费视频| 亚洲精品一区二区三区影院| 久久成人免费电影| 亚洲欧美日韩国产综合| 欧美精品在线观看一区二区| 国产黄色91视频| 蜜臀av性久久久久蜜臀av麻豆| 欧美激情自拍偷拍| 精品嫩草影院久久| 色综合色狠狠综合色| 国产乱子伦一区二区三区国色天香| 日韩理论电影院| 中文一区一区三区高中清不卡| 色偷偷88欧美精品久久久| 日韩精品一卡二卡三卡四卡无卡| 精品奇米国产一区二区三区| 色综合婷婷久久| 成人免费视频一区| 99久久婷婷国产综合精品电影| 蜜臀av国产精品久久久久|