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

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

?? flash.c

?? Intel XScale PXA255 引導Linux的Redboot 版bootloader源代碼!
?? C
?? 第 1 頁 / 共 3 頁
字號:
{        FLASH_TYPE *p, *end;	if (eeprom_size == 0)	{		cmd_stat = E_NO_FLASH;		return ERR;    }	if (addr == NO_ADDR)    {		addr = FLASH_BLK4_BASE_ADDR;	/* start at base address of block */		length = eeprom_size - RESERVED_AREA_SIZE;    }	else if (length == 0)			length = 1;/* Original *//*	if (is_eeprom(addr, length) != 1) *//*	if (is_eeprom(addr, length) != TRUE)    {		cmd_stat = E_EEPROM_ADDR;		return ERR;    }*/	p = (FLASH_TYPE *)addr;/* Original *//*	end = p + length; */	/* find first non_blank address *//*	while (p != end) *//*	{ *//*		if (*p != 0xff) *//*      { *//*			cmd_stat = E_EEPROM_PROG; *//*			eeprom_prog_first = (ADDR)p; */				/* find last non_blank address *//*			for (p = end; *--p == 0xff; ); *//*			eeprom_prog_last = (ADDR)p; *//*			return ERR; *//*       } *//*		 p++; *//*  } *//*	return OK; */	end = (FLASH_TYPE *)FLASH_TOP_ADDR; 	/* search for first non blank address starting at base address of Flash Block 2 */	while (p != end)	{		if (*FLASH_P2V(p) != 0xff)        {			eeprom_prog_first = (ADDR)p;	/* found first non blank memory cell */						/* now find last non blank memory cell starting from top of Flash memory */			for (p = end - 1; *FLASH_P2V(p) == 0xff; --p);			eeprom_prog_last = (ADDR)p;	/* found last non blank memory cell */ 						cmd_stat = E_EEPROM_PROG;			return ERR;        }		p++;    }	return OK;}/********************************************************//* LOCK BREEZE FLASH AREA                               *//*                                                      *//* Lock the Flash ROM blocks which contain the Breeze   *//* Development environment to prevent inadvertent       *//* erasure/reprogramming.                               *//*                                                      *//* RETURNS:		1 = success, 0 = failure				*//********************************************************/int lock_breeze(){    void *err_addr;	if (flash_lock((void *)BREEZE_BLOCK_0, NUM_BREEZE_BLOCKS*FLASH_BLOCK_SIZE, (void **)&err_addr) != 0) {		cmd_stat = E_EEPROM_FAIL;		return (BLOCK_UNLOCKED);	}    return(BLOCK_LOCKED);}/********************************************************//* CHECK BLOCK STATUS                                   *//*                                                      *//* Check the lock status of a flash block				*//*														*//* Input:       block number to check					*//*				-1 = master lock						*/			/*                                                      *//* Returns:     1 = locked, 0 = unlocked                *//*              2 = invalid block number                *//********************************************************/#if 0int check_bstat(int block_num){	volatile FLASH_TYPE *lock_data_addr; 	FLASH_TYPE lock_data;		/* shut the compiler up */	lock_data_addr = 0x00000000;	/* derive the address for block lock configuration data */	if ((block_num >= 0) && (block_num <= NUM_FLASH_BLOCKS))		lock_data_addr = (FLASH_TYPE*)(FLASH_ADDR + (FLASH_BLOCK_SIZE * block_num) + 2);	else if (block_num == -1)		lock_data_addr = (FLASH_TYPE*)(FLASH_ADDR + 3);	else 		return (2);		lock_data_addr = FLASH_P2V(lock_data_addr);		/* read block lock configuration data from address */	*lock_data_addr = READ_ID_CMD;		lock_data = *lock_data_addr;	/* reset flash to read mode */	*lock_data_addr = RESET_CMD;	delay_and_flush();	/* wait for Flash to re-enter Read Array mode */	/* now check data to see if block is indeed locked */	if (lock_data & BLOCK_LOCKED)		return (BLOCK_LOCKED);	else		return (BLOCK_UNLOCKED);}#endif/********************************************************//* CHECK ERASE OR UNLOCK STATUS							*//*														*//* Check the status of erase or unlock operation		*//* using the Status Register of the Flash				*//*														*//* Returns: 	OK		- Erase successful				*//*		VPP_LOW_DETECT	- Vpp low detected				*//*		ERASE_UNLOCK_ERROR - Erase / Unlock error		*//*		CMD_SEQ_ERR - Command sequencing error			*/	/*		UNKNOWN_ERR - Unknown error condition			*//*														*//********************************************************/#if 0int check_erase_unlock(volatile FLASH_TYPE *flash){    FLASH_TYPE stat;    flash = FLASH_P2V(flash);    *flash = READ_STAT_REG   ;    stat = *flash;    /* poll and wait for Write State Machine Ready */    while ((stat & WSM_READY) == WSM_BUSY)    {        stat = *flash;    }    /* now check completion status */    if (stat & VPP_LOW_DETECT)    {		*flash = CLEAR_STAT_REG;		return VPP_LOW_DETECT;    }    if ((stat & CMD_SEQ_ERR) == CMD_SEQ_ERR)    {		*flash = CLEAR_STAT_REG;		return CMD_SEQ_ERR;    }    if (stat & ERASE_UNLOCK_ERROR)    {		*flash = CLEAR_STAT_REG;		return ERASE_UNLOCK_ERROR;    }    if ((stat & ALL_FLASH_STATUS) == WSM_READY)    {		*flash = CLEAR_STAT_REG;		return OK;    }    else    {		*flash = CLEAR_STAT_REG;		return UNKNOWN_ERR;    }}#endif/********************************************************//* CHECK OPERATION STATUS							    *//*														*//* Check the status of an operation		                *//* using the Status Register of the Flash				*//*														*//* if the "cmd" argument flag is TRUE, then a           *//* READ_STAT_REG command should be issued first         *//*                                                      *//* Returns:												*//* 	OK		                 - Operation successful		*//*  value of Status register - Otherwise                *//*														*//********************************************************/#if 0int check_op_status(int cmd, volatile FLASH_TYPE *flash){    FLASH_TYPE stat;	flash = FLASH_P2V(flash);	if (cmd == TRUE)	{		*flash = READ_STAT_REG;	}    stat = *flash;    /* poll and wait for Write State Machine Ready */    while ((stat & WSM_READY) == WSM_BUSY)    {        stat = *flash;    }    /* now check completion status */    if ((stat & ALL_FLASH_STATUS) == WSM_READY)    {		*flash = CLEAR_STAT_REG;		return OK;    }    else    {		*flash = CLEAR_STAT_REG;		return stat;    }}#endif#if 0/* used for debugging only *//* check block lock configuration and display status of 64 blocks, 1=locked, 0=unlocked */void check_lock_bit_status (void){	int block;	volatile FLASH_TYPE *block_addr;	/* address bit A0 is not used when obtaining identifier codes *//* 11/01/00 *//*	unsigned long addr = 0x2<<1; */	unsigned long addr = 0x4;	unsigned char block_lock_status[64];	block_addr = (volatile FLASH_TYPE *) addr; /*	printf("Checking lock status of %d blocks, 1=locked, 0=unlocked...\n", block ); */		/* address bit A0 is not used when obtaining identifier codes */	for (block=0; block<=63; block++)	{		*FLASH_P2V(block_addr) = READ_ID_CMD; 		block_lock_status[block] = *FLASH_P2V(block_addr);		*FLASH_P2V(block_addr) = RESET_CMD;				do_nothing();/* 11/01/00 */		do_nothing();		block_lock_status[block] &= 0x01;	/* Checking lock status of block, 1=locked, 0=unlocked */		block_addr = (volatile FLASH_TYPE *)((unsigned long)block_addr + (unsigned long)FLASH_BLOCK_SIZE); /* block address offset for byte wide data storage */	}	for (block=0; block<=63; block++)	{		if (block == 32)		{			printf("\n\r");		}		printf("%d ", block_lock_status[block] );	}	printf("\nDone!\n\n" );/**	return; **/}#endif/********************************************************//* SET ALL LOCK BITS									*//*														*//* returns OK if successful; otherwise returns ERROR    *//* and sets cmd_stat to an error code					*//* The 28F640J3A is divided into 64, 128Kbyte blocks	*//* This routine sets a lock bit in the block specified  *//* by a given address									*//********************************************************/int set_all_lock_bits(){	unsigned long addr = 0x0;     void *err_addr;	int stat;    if ((stat = flash_lock((void *)addr, 4 * FLASH_BLOCK_SIZE, (void **)&err_addr)) != 0) {		return stat;    }	return( OK );}/********************************************************//* CLEAR ALL LOCK BITS									*//*														*//* returns OK if successful; otherwise returns ERROR    *//* and sets cmd_stat to an error code					*//* The 28F640J3A is divided into 64, 128Kbyte blocks	*//* This routine clears all block lock bits			 	*//********************************************************/int clear_all_lock_bits(ADDR addr){    void *err_addr;	int stat;    if ((stat = flash_unlock((void *)0, eeprom_size, (void **)&err_addr)) != 0)		return stat;	return OK;}/********************************************************//* ERASE EEPROM											*//*														*//* returns OK if erase was successful,					*//* otherwise returns ERROR								*//* and sets cmd_stat to an error code					*//*														*//********************************************************/int erase_eeprom(ADDR addr, unsigned long length){    void *err_addr;	int num_blocks;	/********************************************************/	/* The 28F640J3A is divided into 64, 128Kbyte blocks	*/	/* each of which must be individually erased.			*/	/* This routine and erases a whole number of blocks 	*/	/********************************************************/	/* don't erase boot area even if entire eeprom is specified */	if (addr == NO_ADDR)	{		/* 10/06/00 *//* Original */		/*addr = flash_addr;*/		addr = FLASH_BLK4_BASE_ADDR;		length = eeprom_size - RESERVED_AREA_SIZE;	}	/* Original */	/* check for reserved area if one is used */	/* check to see if the address is within the reserved area *//*	if (reserved_check(addr, length) == TRUE)	{		cmd_stat = E_EEPROM_ADDR;				return ERR;	}*/	if (length == 0)	{		/* 10/06/00 */		printf( "erase_eeprom, return OK, length=0\n");		return OK;	}	/* start address must be block-aligned */	if ((addr % FLASH_BLOCK_SIZE) != 0)	{		cmd_stat = E_EEPROM_ADDR;		printf( "erase_eeprom, addr = 0x%x\n", addr);		printf( "erase_eeprom, FLASH_BLOCK_SIZE = 0x%x\n", FLASH_BLOCK_SIZE);		printf( "erase_eeprom, return ERR, (addr %% FLASH_BLOCK_SIZE) = %d\n", addr % FLASH_BLOCK_SIZE);		return ERR;	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲男人天堂一区| 99久久精品国产网站| zzijzzij亚洲日本少妇熟睡| 欧美主播一区二区三区美女| 2024国产精品| 亚洲一线二线三线久久久| 国产精品中文有码| 3atv在线一区二区三区| **网站欧美大片在线观看| 黑人巨大精品欧美黑白配亚洲| 欧美日韩一区二区欧美激情| 国产精品第五页| 国产69精品久久99不卡| 日韩一卡二卡三卡| 日韩福利电影在线| 精品视频一区三区九区| 亚洲色图制服丝袜| 波多野结衣精品在线| 国产亚洲一本大道中文在线| 久草这里只有精品视频| 欧美女孩性生活视频| 亚洲蜜桃精久久久久久久| 成人午夜av在线| 久久精品网站免费观看| 免费观看久久久4p| 欧美一卡2卡3卡4卡| 日本欧美一区二区| 日韩一区二区三区电影在线观看| 亚洲国产乱码最新视频| 欧美三级电影一区| 日韩影院免费视频| 91精品在线观看入口| 午夜电影一区二区三区| 欧美精品乱人伦久久久久久| 亚州成人在线电影| 欧美一级爆毛片| 国产毛片精品视频| 久久久久国产精品免费免费搜索| 久久精品99国产精品| 国产午夜精品一区二区三区视频 | 日韩一级在线观看| 美女国产一区二区三区| 2017欧美狠狠色| 成人小视频在线观看| 亚洲欧洲精品天堂一级| 欧美性一二三区| 日韩国产欧美在线观看| 欧美精品一区二区蜜臀亚洲| 国产美女在线精品| 亚洲免费成人av| 911精品国产一区二区在线| 美日韩黄色大片| 日本一区二区三区久久久久久久久不| 成人sese在线| 亚洲不卡在线观看| 久久婷婷色综合| 色综合色综合色综合色综合色综合 | 亚洲人成亚洲人成在线观看图片 | 99精品偷自拍| 日韩中文欧美在线| 欧美激情综合网| 欧美亚洲尤物久久| 国产伦精品一区二区三区免费迷 | 日韩区在线观看| 国产精品77777| 亚洲精品免费在线播放| 91精品麻豆日日躁夜夜躁| 国产精品夜夜嗨| 污片在线观看一区二区| 久久久精品中文字幕麻豆发布| 91丝袜高跟美女视频| 日韩电影在线观看网站| 国产精品三级av| 91精品国产91久久综合桃花 | 欧美性做爰猛烈叫床潮| 国产又黄又大久久| 亚洲成在线观看| 国产精品亲子乱子伦xxxx裸| 欧美久久一二区| 99久久久国产精品| 国产一区二区不卡| 日韩黄色片在线观看| 中文字幕视频一区| 亚洲精品一区二区三区福利| 欧美视频中文字幕| 97se亚洲国产综合自在线观| 蜜臀av国产精品久久久久| 自拍偷自拍亚洲精品播放| 欧美精品一区男女天堂| 欧美一区二区视频观看视频| 欧美在线999| gogogo免费视频观看亚洲一| 久久黄色级2电影| 偷拍自拍另类欧美| 亚洲一区视频在线| 依依成人精品视频| 日韩一区在线看| 中文av一区二区| 国产亚洲午夜高清国产拍精品 | 欧美日韩亚洲综合一区二区三区| 国产成人精品亚洲777人妖| 蜜臀久久99精品久久久久宅男| 亚洲日本在线观看| 中文字幕一区二区三| 欧美韩国一区二区| 中文字幕+乱码+中文字幕一区| 精品剧情v国产在线观看在线| 在线电影院国产精品| 欧美日韩精品高清| 欧美日本视频在线| 在线观看日韩毛片| 色综合久久久久| 一本久久精品一区二区| 91美女片黄在线观看91美女| 91亚洲精品一区二区乱码| 国产成人免费在线观看不卡| 国产精品小仙女| 国产成人免费视频网站 | 日韩一级免费一区| 欧美一级片在线| 欧美成人女星排行榜| 日韩一区二区电影网| 久久这里都是精品| 国产精品你懂的| 亚洲色图视频网站| 亚洲国产aⅴ天堂久久| 日韩国产欧美在线播放| 久久99精品视频| 成人午夜看片网址| 91久久精品一区二区三区| 欧美日韩黄视频| 欧美精品一区男女天堂| ...av二区三区久久精品| 亚洲一二三四在线观看| 蜜臀a∨国产成人精品| 国产成a人亚洲| 在线观看一区日韩| 精品国产一区二区三区久久久蜜月| 国产午夜亚洲精品羞羞网站| 亚洲欧美国产毛片在线| 蜜桃一区二区三区在线| 国产传媒一区在线| 欧美性猛交xxxx乱大交退制版| 欧美一级免费大片| 中文字幕乱码久久午夜不卡| 亚洲成人av在线电影| 寂寞少妇一区二区三区| 一本高清dvd不卡在线观看| 日韩亚洲欧美成人一区| 欧美国产日韩亚洲一区| 亚洲国产精品久久久男人的天堂| 久久se精品一区二区| 97aⅴ精品视频一二三区| 欧美一级在线免费| 亚洲男同1069视频| 久久99国产精品免费| 91黄色激情网站| 久久久久久久国产精品影院| 亚洲一区二区在线观看视频 | 国产精品成人在线观看| 日本成人在线视频网站| 91蜜桃视频在线| 久久久久久免费网| 亚洲午夜免费视频| 成人sese在线| 精品成人一区二区| 亚洲福利视频一区二区| 成人午夜激情片| 久久综合久久综合久久综合| 亚洲v日本v欧美v久久精品| www.av亚洲| 久久综合资源网| 日韩精品乱码av一区二区| 99精品热视频| 中文字幕第一区第二区| 狠狠色伊人亚洲综合成人| 欧美日韩免费一区二区三区| 国产精品护士白丝一区av| 激情欧美日韩一区二区| 91麻豆精品国产91| 午夜精品123| 欧美日韩国产高清一区二区| 中文字幕一区二区在线播放| 国产白丝网站精品污在线入口| 日韩精品一区二区三区视频| 亚洲444eee在线观看| 欧美一级艳片视频免费观看| 亚洲国产精品久久久久婷婷884| 91看片淫黄大片一级| 亚洲青青青在线视频| jlzzjlzz国产精品久久| 国产欧美一区二区在线观看| 国产精品一线二线三线| 精品1区2区在线观看| 精品一区二区在线播放| 欧美大片日本大片免费观看| 久久不见久久见免费视频1| 日韩一区二区影院| 久久99国产精品久久99| 久久久不卡网国产精品二区|