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

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

?? flash.c

?? Intel XScale PXA255 引導Linux的Redboot 版bootloader源代碼!
?? C
?? 第 1 頁 / 共 3 頁
字號:
//=============================================================================////      flash.c - Cyclone Diagnostics////=============================================================================//####COPYRIGHTBEGIN####//                                                                          // -------------------------------------------                              // The contents of this file are subject to the Red Hat eCos Public License // Version 1.1 (the "License"); you may not use this file except in         // compliance with the License.  You may obtain a copy of the License at    // http://www.redhat.com/                                                   //                                                                          // Software distributed under the License is distributed on an "AS IS"      // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the // License for the specific language governing rights and limitations under // the License.                                                             //                                                                          // The Original Code is eCos - Embedded Configurable Operating System,      // released September 30, 1998.                                             //                                                                          // The Initial Developer of the Original Code is Red Hat.                   // Portions created by Red Hat are                                          // Copyright (C) 2001 Red Hat, Inc.                             // All Rights Reserved.                                                     // -------------------------------------------                              //                                                                          //####COPYRIGHTEND####//=============================================================================//#####DESCRIPTIONBEGIN####//// Author(s):   Scott Coulter, Jeff Frazier, Eric Breeden// Contributors:// Date:        2001-01-25// Purpose:     // Description: ////####DESCRIPTIONEND####////===========================================================================*/#include <redboot.h>#include <cyg/io/flash.h>#include "iq80310.h"	/* 80310 chip set specific */#include "7_segment_displays.h"typedef unsigned char FLASH_TYPE;#define MASK 0xff  /* for 1 bank *//* 28F016S5/28F640J3A Command Definitions  - First Bus Cycle */#define RESET_CMD				(0xffffffff & MASK)#define WRITE_TO_BUF_CMD		(0xe8e8e8e8 & MASK)#define WRITE_CONFIRM_CMD		(0xd0d0d0d0 & MASK)#define READ_ID_CMD				(0x90909090 & MASK)#define READ_STAT_REG			(0x70707070 & MASK)#define CLEAR_STAT_REG			(0x50505050 & MASK)#define ERASE_CMD				(0x20202020 & MASK)#define PROGRAM_CMD				(0x40404040 & MASK)#define BEP_SUSPEND				(0xb0b0b0b0 & MASK)#define BEP_RESUME				(0xd0d0d0d0 & MASK)#define LOCK_CMD				(0x60606060 & MASK)#define CLEAR_LOCK_BIT_SETUP	(0x60606060 & MASK)	/* 10/06/00 *//* 28F016S5/28F640J3A Command Definitions  - Second Bus Cycle */#define ERASE_CONFIRM			(0xd0d0d0d0 & MASK)#define LOCK_BLOCK_CONFIRM		(0x01010101 & MASK)#define MASTER_LOCK_CONFIRM		(0xf1f1f1f1 & MASK)  /* DO NOT EVER set master enable bit!!! */#define UNLOCK_BLOCK_CONFIRM	(0xd0d0d0d0 & MASK)#define CLEAR_LOCK_BIT_CONFIRM	(0xd0d0d0d0 & MASK)	/* 10/06/00 *//* Flash category definitions */#define SECTOR_PROG	0#define BLOCK_PROG	1/* status register bits */#define WSM_READY				(FLASH_TYPE) (1 << 7)#define WSM_BUSY				(FLASH_TYPE) (0 << 7)#define BE_SUSPENDED			(FLASH_TYPE) (1 << 6)#define BE_COMPLETED			(FLASH_TYPE) (0 << 6)#define ERASE_UNLOCK_ERROR		(FLASH_TYPE) (1 << 5)#define ERASE_UNLOCK_SUCCESS	(FLASH_TYPE) (0 << 5)#define CLEAR_LOCK_BIT_ERROR	(FLASH_TYPE) (1 << 5)	/* 10/06/00 */#define CLEAR_LOCK_BIT_SUCCESS	(FLASH_TYPE) (0 << 5)	/* 10/06/00 */#define PROGRAM_LOCK_ERROR		(FLASH_TYPE) (1 << 4)#define PROGRAM_LOCK_SUCCESS	(FLASH_TYPE) (0 << 4)#define SET_LOCK_BIT_ERROR		(FLASH_TYPE) (1 << 4)	/* 10/17/00 */#define SET_LOCK_BIT_SUCCESS	(FLASH_TYPE) (0 << 4)	/* 10/17/00 */#define VPP_LOW_DETECT			(FLASH_TYPE) (1 << 3)#define VPP_OK					(FLASH_TYPE) (0 << 3)#define PROGRAM_SUSPENDED		(FLASH_TYPE) (1 << 2)#define PROGRAM_COMPLETED		(FLASH_TYPE) (0 << 2)#define DEVICE_PROTECTED		(FLASH_TYPE) (1 << 1)#define DEVICE_UNLOCKED			(FLASH_TYPE) (0 << 1)/* Other Intel 28F016S5/28F640J3A definitions */#define CMD_SEQ_ERR			(FLASH_TYPE) (ERASE_UNLOCK_ERROR | PROGRAM_LOCK_ERROR)#define ALL_FLASH_STATUS	(FLASH_TYPE) (0xfe)#define UNKNOWN_ERR			(FLASH_TYPE) (0xff)#define TEST_BUF_LONGS		16384#define TEST_BUF_CHARS		65536#define MADE_BY_INTEL		(0x89898989 & MASK)		/* Manufacturer Code, read at address 0, note that address bit A0 is not used in x8 or x16 mode when obtaining identifier code *//*#define I28F016S5			(0xAAAAAAAA & MASK)*/	/* 28F016S5 */#define I28F640J3A			(0x17171717 & MASK)		/* Device Code, read at address 1, note that bit address A0 is not used in x8 or x16 mode when obtaining identifier code *//*#define FLASH_BLOCK_SIZE	0x10000*/	/* 28F016S5 */#define FLASH_BLOCK_SIZE	0x20000		/* 28F640J3A */#define BLOCK_LOCKED		1#define BLOCK_UNLOCKED		0// First 4K page of flash at physical address zero is// virtually mapped at address 0xa0000000.#define FLASH_P2V(x) ((volatile FLASH_TYPE *)(((unsigned)(x) < 0x1000) ?  \                           ((unsigned)(x) | 0xa0000000) :  \                           (unsigned)(x)))unsigned long *flash_buffer = (unsigned long *)0xa1000000;extern void _flushICache();extern void _enableICache();extern void _disableICache();extern void _switchMMUpageTables();extern void _usec_delay();extern void _msec_delay();unsigned long eeprom_size;unsigned long flash_base;ADDR flash_addr=FLASH_ADDR, eeprom_prog_first, eeprom_prog_last;extern long hexIn();extern char * sgets();/* forward declarations */void init_eeprom() RAM_FUNC_SECT;int reserved_check(ADDR addr, unsigned long length) RAM_FUNC_SECT;int is_eeprom(ADDR addr, unsigned long length) RAM_FUNC_SECT;int check_eeprom(ADDR addr, unsigned long length) RAM_FUNC_SECT;int lock_breeze() RAM_FUNC_SECT;int check_bstat(int block_num) RAM_FUNC_SECT;int set_all_lock_bits(void) RAM_FUNC_SECT;		/* 10/11/00 added */int clear_all_lock_bits(ADDR addr) RAM_FUNC_SECT;	/* 10/06/00 added */int check_erase_unlock(volatile FLASH_TYPE *flash) RAM_FUNC_SECT;int check_op_status(int cmd, volatile FLASH_TYPE *flash) RAM_FUNC_SECT;int erase_eeprom(ADDR addr, unsigned long length) RAM_FUNC_SECT;int check_program_lock(volatile FLASH_TYPE *flash) RAM_FUNC_SECT;int write_eeprom(ADDR start_addr, const void *data_arg, int data_size) RAM_FUNC_SECT;void flash_test(void) RAM_FUNC_SECT;void delay_and_flush(void) RAM_FUNC_SECT;void do_nothing(void) RAM_FUNC_SECT;void display_val(int num) RAM_FUNC_SECT;void display_out (int msb_flag, unsigned char val) RAM_FUNC_SECT;void check_lock_bit_status(void) RAM_FUNC_SECT;#define MSB_DISPLAY_REG		(volatile unsigned char *)0xfe840000#define LSB_DISPLAY_REG		(volatile unsigned char *)0xfe850000void display_out (int msb_flag, unsigned char val){/*	unsigned char *ledPtr; */	volatile unsigned char *ledPtr;	unsigned char  SevSegDecode;	if (msb_flag) ledPtr = MSB_DISPLAY_REG;	else          ledPtr = LSB_DISPLAY_REG;	switch (val)	{		case 0:			SevSegDecode = ZERO;				break;		case 1:			SevSegDecode = ONE;			break;		case 2:			SevSegDecode = TWO;			break;		case 3:			SevSegDecode = THREE;			break;		case 4:			SevSegDecode = FOUR;			break;		case 5:			SevSegDecode = FIVE;			break;		case 6:			SevSegDecode = SIX;			break;		case 7:			SevSegDecode = SEVEN;			break;		case 8:			SevSegDecode = EIGHT;			break;		case 9:			SevSegDecode = NINE;			break;				case 10:			SevSegDecode = LETTER_A;			break;		case 11:			SevSegDecode = LETTER_B;			break;		case 12:			SevSegDecode = LETTER_C;			break;				case 13:			SevSegDecode = LETTER_D;			break;				case 14:			SevSegDecode = LETTER_E;			break;		case 15:			SevSegDecode = LETTER_F;			break;		default:			SevSegDecode = DECIMAL_POINT;	}	*ledPtr = SevSegDecode;}void display_val (int number){	unsigned char disp_val = number % 256;	unsigned char msb, lsb;	lsb = disp_val & 0x0f;	msb = (disp_val & 0xf0) >> 4;	display_out (0, lsb);	display_out (1, msb);}/* Used in write to buffer routine */void do_nothing (void){	volatile int i;	for (i = 0; i < 50; i++);		/* Rev 2.0B and Rev 2.0C *//*	for (i = 0; i < 100; i++); */	/* Rev 2.0A */}void delay_and_flush (void){	do_nothing(); 	_flushICache();}/********************************************************//* INIT FLASH											*//*														*//* This routine initializes the variables for timing    *//* with any board configuration.  This is used to get   *//* exact timing every time.								*//********************************************************/void init_eeprom(){#if 1	unsigned char MfgCode=MADE_BY_INTEL;	unsigned char DevCode=I28F640J3A;	eeprom_size = 0x800000;#else	unsigned char MfgCode=0;	unsigned char DevCode=0;	flash_addr = FLASH_ADDR;	flash_base = FLASH_BASE_ADDR;    /* Set defaults */    eeprom_size = 0;    /* Note: the PCI-700 platform has only 1 memory bank *//*	*( volatile unsigned char * ) FLASH_BASE_ADDR = RESET_CMD;	printf( "Wrote 1rst Read Array Command\n");*/	*FLASH_P2V(FLASH_BASE_ADDR) = RESET_CMD;	/* issue read array command */		delay_and_flush();		  /* wait for Flash to re-enter Read Array mode */			*FLASH_P2V(FLASH_BASE_ADDR) = READ_ID_CMD;	/* issue read id command */			MfgCode = *FLASH_P2V(FLASH_BASE_ADDR);		/* read a manufacturer code at addr 0, address bit A0 is not used  */		DevCode = *FLASH_P2V(DEV_CODE_ADDR);		/* read a device code at addr 1 */    if (MfgCode == (MADE_BY_INTEL))     {		switch ( DevCode )								/* device code stored in addr 1, address bit A0 is not used, must shift 0x00000001<<1=0x00000002 */ 		{			case I28F640J3A:				eeprom_size += 0x800000 * FLASH_WIDTH;		/* I28F640J3A */				break;            default:                break;        }	}	*FLASH_P2V(FLASH_BASE_ADDR) = READ_ID_CMD;	/* issue 2nd read id command */			*FLASH_P2V(FLASH_BASE_ADDR) = RESET_CMD; /* issue read array command */			delay_and_flush();	/* wait for Flash to re-enter Read Array mode */#endif	printf( "\nManufacturer Code = 0x%x\n", MfgCode);	printf( "Device Code = %x\n", DevCode);	printf( "Flash Memory size = 0x%x\n", eeprom_size);    return;}/********************************************************//* RESERVED AREA CHECK                         			*//*                                   					*//* returns TRUE if the address falls into the 			*//* 	reserved system area								*//* returns FALSE if the address is outside  			*//* 	the reserved system area							*//********************************************************/int reserved_check(ADDR addr, unsigned long length){    /* check start address */    if ( ( addr >= RESERVED_AREA1 ) && ( addr <= ( FLASH_BLK4_BASE_ADDR - 1 ) ) )		return TRUE;	    /* must be outside the area */	else		return FALSE;}/********************************************************//* IS EEPROM											*//* Check if memory is Flash								*//*														*//* returns TRUE if it is; FALSE if not eeprom ;			*//* returns ERROR bad addr or partial eeprom				*//*														*//********************************************************/int is_eeprom(ADDR addr, unsigned long length){    ADDR eeprom_end = flash_addr + eeprom_size - 1;    ADDR block_end = addr + length - 1;    /* Check for wrap: if the address and length given wrap past     * the end of memory, it is an error. */    if (block_end < addr)        return ERR;    if (addr >= flash_addr && block_end <= eeprom_end)        return TRUE;    if (addr > eeprom_end || block_end < flash_addr)        return FALSE;    /* If the block was partly within the Flash, it is an error. */    return ERR;}/********************************************************//* CHECK EEPROM											*//* Check if Flash is Blank								*//*														*//* returns OK if it is; returns ERROR and sets cmd_stat *//* to an error code if memory region is not Flash or if *//* it is not blank.										*//*														*//********************************************************/int check_eeprom(ADDR addr, unsigned long length)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美区在线观看| 中文字幕亚洲电影| 国产精品福利在线播放| 日日夜夜精品视频天天综合网| 成人永久看片免费视频天堂| 678五月天丁香亚洲综合网| 国产精品午夜免费| 国内精品视频666| 欧美日韩国产小视频| 国产精品久久久久天堂| 激情欧美一区二区三区在线观看| 欧美三级一区二区| 日韩理论电影院| 国产98色在线|日韩| 精品国产一区a| 奇米影视在线99精品| 欧美日韩色综合| 亚洲午夜一区二区| 一本色道a无线码一区v| 国产精品福利影院| 国产91精品在线观看| 久久久久久99精品| 国产又粗又猛又爽又黄91精品| 欧美一卡二卡在线观看| 亚洲电影在线免费观看| 欧美色图第一页| 亚洲国产精品久久人人爱蜜臀 | 国产精品你懂的| 国产尤物一区二区| 久久久.com| 国产成人精品免费在线| 国产欧美日韩视频一区二区| 国产精品123| 欧美国产日本视频| 成人免费视频视频在线观看免费| 国产亚洲精品aa| 成人综合在线视频| 亚洲视频 欧洲视频| 91香蕉视频mp4| 亚洲图片欧美一区| 欧美一区二区三区四区五区| 久久激情五月婷婷| 久久亚洲捆绑美女| 成人激情文学综合网| 亚洲另类中文字| 欧美日韩一区二区欧美激情| 欧美aaaaaa午夜精品| 久久免费的精品国产v∧| 国产不卡高清在线观看视频| 国产精品国产三级国产| 在线观看av一区二区| 日韩制服丝袜先锋影音| 2020国产精品久久精品美国| 粉嫩一区二区三区在线看| 中文字幕一区二区三| 欧美性高清videossexo| 久久99精品久久久久久动态图| 国产午夜精品久久| 色国产精品一区在线观看| 天堂资源在线中文精品| 欧美大片一区二区三区| 成人激情文学综合网| 亚洲成人精品一区| 久久精品一区二区三区不卡| 91在线视频免费91| 人人精品人人爱| 欧美激情中文不卡| 欧美男女性生活在线直播观看| 激情成人综合网| 亚洲影视在线观看| 亚洲精品一区二区三区精华液| av高清不卡在线| 日韩不卡一区二区三区| 国产精品美女久久久久久久网站| 欧美日本在线看| 9久草视频在线视频精品| 五月激情六月综合| 亚洲视频一区二区免费在线观看| 在线综合+亚洲+欧美中文字幕| 国产99久久久国产精品| 日本成人超碰在线观看| 一区二区三区四区亚洲| 日本一区二区三级电影在线观看 | 亚欧色一区w666天堂| 久久久久久日产精品| 欧美精品色一区二区三区| 国产成人av一区二区| 久久国产视频网| 天堂影院一区二区| 一区二区三区毛片| 成人免费小视频| 国产欧美日韩综合| 久久这里只有精品首页| 欧美一区二区三区视频免费 | 国产成人精品一区二区三区四区| 亚洲成av人片在线观看无码| 亚洲色图视频网| 中文字幕巨乱亚洲| www精品美女久久久tv| 日韩午夜电影av| 欧美一区二区视频免费观看| 欧美日韩三级一区二区| 在线日韩一区二区| 91麻豆精品在线观看| jlzzjlzz亚洲日本少妇| www.一区二区| 粉嫩av一区二区三区在线播放| 激情五月婷婷综合| 狠狠色丁香婷婷综合久久片| 男女男精品网站| 美腿丝袜亚洲综合| 美洲天堂一区二卡三卡四卡视频 | 国产成人高清在线| 国产一区在线看| 国产高清精品在线| 国产精品99久久久久久久vr| 国产黄色精品视频| 成人黄色片在线观看| 91在线精品秘密一区二区| 97国产一区二区| 欧美天堂亚洲电影院在线播放| 色香色香欲天天天影视综合网| 91成人免费电影| 欧美军同video69gay| 欧美一区二区久久| 欧美精品一区二区久久婷婷| 国产网站一区二区三区| 国产精品色哟哟网站| 亚洲精品亚洲人成人网在线播放| 亚洲影视在线观看| 久久国产精品无码网站| 成人一区在线看| 色域天天综合网| 在线播放日韩导航| 久久综合五月天婷婷伊人| 国产精品麻豆一区二区| 亚洲电影在线播放| 免费成人结看片| 懂色一区二区三区免费观看| 91网站最新地址| 日韩片之四级片| 国产精品久久久久国产精品日日| 一区二区在线免费| 精东粉嫩av免费一区二区三区| 成人a免费在线看| 欧美另类一区二区三区| 26uuu国产一区二区三区| 亚洲免费电影在线| 寂寞少妇一区二区三区| 91一区二区三区在线观看| 4hu四虎永久在线影院成人| 国产亚洲美州欧州综合国| 亚洲美腿欧美偷拍| 国产真实乱偷精品视频免| 色综合天天性综合| 欧美大片拔萝卜| 亚洲激情成人在线| 精品一区二区三区免费播放| 色婷婷综合久久久中文字幕| 2021中文字幕一区亚洲| 依依成人精品视频| 国产精品一区免费视频| 欧美日韩免费一区二区三区| 国产日韩欧美高清在线| 日韩成人一级片| 色婷婷综合久久久久中文| 亚洲精品一区二区三区99| 亚洲第一久久影院| av成人免费在线| 欧美精品一区二区三区四区| 亚洲国产精品一区二区尤物区| 成人精品亚洲人成在线| 精品99一区二区三区| 午夜精品久久久久久久99水蜜桃| 白白色 亚洲乱淫| 精品久久一二三区| 日韩国产欧美一区二区三区| 91国偷自产一区二区开放时间| 久久久国产精华| 精品综合免费视频观看| 91精品中文字幕一区二区三区| 亚洲欧美色图小说| 91在线精品一区二区| 国产欧美日韩卡一| 国产精品中文字幕日韩精品| 日韩免费高清av| 免费观看日韩电影| 日韩一级片在线观看| 天天色 色综合| 欧美日韩情趣电影| 亚洲va韩国va欧美va| 欧美日韩一区三区四区| 亚洲伊人色欲综合网| 欧美在线免费观看亚洲| 亚洲黄网站在线观看| 91久久一区二区| 亚洲国产色一区| 欧美日韩精品一区二区| 亚洲一卡二卡三卡四卡| 欧美视频在线一区二区三区 |