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

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

?? nan.c

?? K9F1208 在STR710處理器上的驅動源代碼
?? C
字號:
/****************************************Copyright (c)**************************************************
**                                      
**                                          	公 司
**                                         	部 門
**
**                                 http://www.osmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: 		nan.c
** 創 建 人: 		李海軍
** 創建日期: 	2006年6月14日
** 描    述: 		該文件提供外部NAN  FLASH  的所有操作
**
**--------------歷史版本--------------------------------------------------------------------------------
** 創 建 人: 		李海軍
** 版      本: 		V1.0
** 日   期: 		2006年6月14日
** 描   述: 		原始版本
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#include "config.h"

/******************************************* 全局變量定義 ***********************************************/

//用于存放NAN FLASH 壞塊信息
UINT8	nan_valid_block_bitmap[NAN_BLOCKS>>3] = {0};

/******************************************* 局部函數聲明 ***********************************************/

/*********************************************************************************************************
;** 函數名稱: 	nan_get_id
;** 功能描述: 	獲取NAN FLASH ID 信息
;** 
;** 參    數: 	無
;**  
;** 返 回 值: 		32 位ID
;**         
;** 作   者: 	李海軍
;** 日   期: 	2006年6月14日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
UINT32 nan_get_id(void)
{
	UINT32	id = 0;


	NAN_WRITE_COMMAND(0x90);
	NAN_WRITE_ADDRESS(0);
	
	id += 	NAN_READ_DATA();
	id <<= 	8;
	id += 	NAN_READ_DATA();
	id <<= 	8;
	id += 	NAN_READ_DATA();
	id <<= 	8;
	id += 	NAN_READ_DATA();

	return id;
}

/*********************************************************************************************************
;** 函數名稱: 	nan_read_status
;** 功能描述: 	獲取NAN FLASH 狀態信息
;** 
;** 參    數: 	無
;**  
;** 返 回 值: 		8 位狀態
;**         
;** 作   者: 	李海軍
;** 日   期: 	2006年6月14日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
UINT8 nan_read_status(void)
{
	NAN_WRITE_COMMAND(0x70);
	
	return NAN_READ_DATA();
}

/*********************************************************************************************************
;** 函數名稱: 	nan_poll_bad_blocks
;** 功能描述: 	查詢NAN 壞塊并保存在緩存區里
;** 
;** 參    數: 	無
;**  
;** 返 回 值: 	無
;**         
;** 作   者: 	李海軍
;** 日   期: 	2006年6月14日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void nan_poll_bad_blocks(void)
{
	UINT16	block_num = 0;
	UINT8	temp = 0;
	BOOL	block_valid = TRUE;
	UINT32	page_num = 0;

	for(block_num = 0; block_num < (NAN_BLOCKS >> 3); block_num++)
		nan_valid_block_bitmap[block_num] = 0;
	
	for(block_num = 0; block_num < NAN_BLOCKS; block_num++)
	{
		uart_printf("nan_poll_bad_blocks");
		
		page_num 	= block_num * NAN_PAGE_PER_BLOCK;
		block_valid 	= TRUE;

		for(temp = 0; temp < 2; temp++)
		{
			NAN_WRITE_COMMAND(0x50);
			NAN_WRITE_ADDRESS(5);
			NAN_WRITE_ADDRESS(page_num&0xff);
			NAN_WRITE_ADDRESS((page_num>>8)&0xff);
			NAN_WRITE_ADDRESS((page_num>>16)&0x01);
			page_num++;

			while(0 == NAN_GET_RB) ;

			if(0xff != NAN_READ_DATA())
			{
				block_valid = FALSE;
				break;
			}
		}

		nan_valid_block_bitmap[block_num / 8] |=	block_valid << (block_num % 8);	
	
	}
}

/*********************************************************************************************************
;** 函數名稱: 	nan_earse
;** 功能描述: 	塊擦除
;** 
;** 參    數: 		block -> 要擦除的塊
;**  
;** 返 回 值: 		錯誤信息或成功
;**         
;** 作   者: 	李海軍
;** 日   期: 	2006年6月14日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
NAN_RETURN_T nan_earse(UINT32 block)
{
	UINT32	time = 0;

	uart_printf("block = %d",block);
	
	if(block >= NAN_BLOCKS)
		return NAN_PARA_ERROR;

	if(0 == nan_valid_block_bitmap[block / 8] & (1 << (block % 8)))
		return NAN_BLOCK_ERROR;
	
	NAN_WRITE_COMMAND(0x60);
	ns_sleep(10);
	NAN_WRITE_ADDRESS((block<<5)&0xff);
	NAN_WRITE_ADDRESS((block>>3)&0xff);
	NAN_WRITE_ADDRESS((block>>11)&0x01);
	
	NAN_WRITE_COMMAND(0xd0);
	
	for(time = 0; time < 0xffff; time ++)
	{
		if((1 == NAN_GET_RB))
			break;
	}
	
	if(time >= 0xffff)
		return NAN_TIMEOUT;

	uart_printf("time1 = %d",time);
	if(0x01&nan_read_status())
		return NAN_PROGRAM_ERROR;	
	else
		return NAN_SUCCESS;
	
}

/*********************************************************************************************************
;** 函數名稱: 	nan_program
;** 功能描述: 	寫入數據到指定的地方
;** 
;** 參    數: 		
;**		column 	-> 	頁中起始地址 0 - 527
;**		page 	-> 	頁地址			  
;**		p_data	->	要寫入的數據指針
;**		size		->	數據大小
;**
;** 返 回 值: 		錯誤信息或成功
;**         
;** 作   者: 	李海軍
;** 日   期: 	2006年6月14日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
NAN_RETURN_T nan_program(UINT16 column, UINT32 page, UINT8 * p_data, UINT16 size)
{
	UINT32	i = 0;
	UINT8 * p_temp = (UINT8 *)p_data;
	UINT32	time = 0;
	UINT8  	temp = 0;
	
	uart_printf("page = %d",page);
	
	if((page >= NAN_PAGES) ||(column + size > NAN_PAGE_SIZE))
		return NAN_PARA_ERROR;

	if(column >= NAN_SPARE_ADDRESS)
	{
		column -= NAN_SPARE_ADDRESS;
		NAN_WRITE_COMMAND(0x50);
	}	
	else if(column >= NAN_HALF_ADDRESS)
	{
		column -= NAN_HALF_ADDRESS;
		NAN_WRITE_COMMAND(0x01);
	}
	else
	{
		NAN_WRITE_COMMAND(0x00);
	}
		
	NAN_WRITE_COMMAND(0x80);
	
	NAN_WRITE_ADDRESS(column&0xff);
	NAN_WRITE_ADDRESS(page&0xff);
	NAN_WRITE_ADDRESS((page>>8)&0xff);
	NAN_WRITE_ADDRESS((page>>16)&0x01);
	ns_sleep(10);
	//for(i = 0; i < NAN_PAGE_SIZE; i++)
	for(i = 0; i < size; i++)
		NAN_WRITE_DATA(*p_temp++);
	
	NAN_WRITE_COMMAND(0x10);
	
	for(time = 0; time < 0xffff; time ++)
	{
		if((1 == NAN_GET_RB))
			break;
	}
	
	if(time >= 0xffff)
		return NAN_TIMEOUT;
	
	if(0x01&nan_read_status())
		return NAN_PROGRAM_ERROR;	
	else
		return NAN_SUCCESS;

}

/*********************************************************************************************************
;** 函數名稱: 	nan_read
;** 功能描述: 	讀NAN  內的數據到指定的地方
;** 
;** 參    數: 		
;**		column 	-> 	頁中起始地址 0 - 527
;**		page 	-> 	頁地址			  
;**		p_buf	->	數據存放指針
;**		size		->	數據大小
;**
;** 返 回 值: 		錯誤信息或成功
;**         
;** 作   者: 	李海軍
;** 日   期: 	2006年6月14日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
NAN_RETURN_T nan_read(UINT16 column, UINT32 page, UINT8 * p_buf, UINT16 size)
{
	UINT32	i = 0;

	uart_printf("page = %d",page);

	if((page >= NAN_PAGES) ||(column + size > NAN_PAGE_SIZE))
		return NAN_PARA_ERROR;

	if(column >= NAN_SPARE_ADDRESS)
	{
		column -= NAN_SPARE_ADDRESS;
		NAN_WRITE_COMMAND(0x50);
	}	
	else if(column >= NAN_HALF_ADDRESS)
	{
		column -= NAN_HALF_ADDRESS;
		NAN_WRITE_COMMAND(0x01);
	}
	else
	{
		NAN_WRITE_COMMAND(0x00);
	}

	NAN_WRITE_ADDRESS(column&0xff);
	NAN_WRITE_ADDRESS(page&0xff);
	NAN_WRITE_ADDRESS((page>>8)&0xff);
	NAN_WRITE_ADDRESS((page>>16)&0x01);

	while(0 == NAN_GET_RB) ;

	for(i = 0; i < size; i++)
		*p_buf++ = NAN_READ_DATA();

	return NAN_SUCCESS;
}

/*********************************************************************************************************
;** 函數名稱: 	nan_copy_back
;** 功能描述: 	NAN 中同一通道頁拷貝
;** 
;** 參    數: 		
;**		src_page 	-> 	源頁地址
;**		dest_page 	-> 	目標頁地址			
;**
;** 返 回 值: 		錯誤信息或成功
;**         
;** 作   者: 	李海軍
;** 日   期: 	2006年6月14日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
NAN_RETURN_T nan_copy_back(UINT32 src_page, UINT32 dest_page)
{
	UINT32 time = 0;

	if(	(src_page >= NAN_PAGES) |(dest_page >= NAN_PAGES) |	(src_page&0xc0 != dest_page&0xc0))
		return NAN_PARA_ERROR;
	
	NAN_WRITE_COMMAND(0x00);

	NAN_WRITE_ADDRESS(0);
	NAN_WRITE_ADDRESS(src_page&0xff);
	NAN_WRITE_ADDRESS((src_page>>8)&0xff);
	NAN_WRITE_ADDRESS((src_page>>16)&0x01);

	while(0 == NAN_GET_RB) ;

	NAN_WRITE_COMMAND(0x8a);

	NAN_WRITE_ADDRESS(0);
	NAN_WRITE_ADDRESS(dest_page&0xff);
	NAN_WRITE_ADDRESS((dest_page>>8)&0xff);
	NAN_WRITE_ADDRESS((dest_page>>16)&0x01);
	
	NAN_WRITE_COMMAND(0x10);
	
	for(time = 0; time < 0xffff; time ++)
	{
		if((1 == NAN_GET_RB))
			break;
	}
	
	if(time >= 0xffff)
		return NAN_TIMEOUT;

	if(0x01&nan_read_status())
		return NAN_COPY_ERROR;	
	else
		return NAN_SUCCESS;	

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99热这里都是精品| 久久aⅴ国产欧美74aaa| 国产精品欧美久久久久一区二区 | 欧美色涩在线第一页| 91社区在线播放| 91久久久免费一区二区| 99久久99久久综合| 欧美性猛交xxxx黑人交| 欧美色图一区二区三区| 91精品久久久久久蜜臀| 欧美一区二区视频免费观看| 欧美第一区第二区| 久久久久国产免费免费| 国产精品久久久久久久浪潮网站| 国产精品每日更新| 亚洲精品美腿丝袜| 偷窥少妇高潮呻吟av久久免费| 亚洲第一成年网| 另类欧美日韩国产在线| 国产一区二区三区视频在线播放| 风流少妇一区二区| 色婷婷国产精品综合在线观看| 欧美无乱码久久久免费午夜一区 | 国产日韩亚洲欧美综合| 中文字幕av一区二区三区免费看| 亚洲欧美日韩中文播放| 日韩不卡手机在线v区| 国内不卡的二区三区中文字幕 | 亚洲图片你懂的| 亚洲国产精品一区二区久久| 老色鬼精品视频在线观看播放| 国产一区二区精品久久99| 99久久国产综合精品色伊| 欧美人xxxx| 欧美国产日韩a欧美在线观看 | 91精品国产免费| 国产精品毛片大码女人| 性做久久久久久久久| 国产在线精品免费| 91久久香蕉国产日韩欧美9色| 91 com成人网| 一区二区日韩av| 国产麻豆日韩欧美久久| 欧美午夜一区二区| 国产精品久久久久久一区二区三区| 丝袜诱惑亚洲看片| 99精品视频一区二区三区| 日韩欧美精品在线视频| 亚洲精品视频在线观看网站| 国产电影一区在线| 欧美日韩视频在线一区二区| 国产精品情趣视频| 狂野欧美性猛交blacked| 91成人国产精品| 亚洲视频你懂的| 国产成人综合在线| 日韩欧美成人一区二区| 日本不卡一区二区三区| 在线日韩国产精品| 亚洲精品高清在线| 不卡一区二区在线| 中文字幕免费不卡在线| 国产在线一区观看| 精品国产一区二区三区不卡 | 国产精选一区二区三区| 日韩欧美视频一区| 日韩二区三区四区| 欧美日韩精品综合在线| 亚洲永久免费av| 欧美做爰猛烈大尺度电影无法无天| 亚洲国产高清不卡| 成人夜色视频网站在线观看| 久久综合九色综合97婷婷女人 | 欧美亚洲免费在线一区| 亚洲色图一区二区| 99这里只有精品| 亚洲欧美日韩中文字幕一区二区三区 | 色悠悠久久综合| 亚洲欧美激情在线| 欧美午夜宅男影院| 天天综合色天天| 91精品国产综合久久久蜜臀图片| 亚洲电影你懂得| 欧美一级专区免费大片| 韩国av一区二区三区四区 | 成人精品一区二区三区中文字幕| 久久久影院官网| 成人深夜福利app| 亚洲婷婷综合久久一本伊一区| 96av麻豆蜜桃一区二区| 亚洲va国产va欧美va观看| 欧美二区三区的天堂| 精品影院一区二区久久久| 久久精品亚洲一区二区三区浴池| 成人av在线电影| 亚洲一区二区美女| 日韩午夜电影在线观看| 国产盗摄女厕一区二区三区 | 色综合天天综合色综合av| 亚洲综合一区二区三区| 欧美成人一区二区三区在线观看 | 亚洲免费在线观看| 欧美一区二区三区四区高清| 国产一区二三区好的| 亚洲视频资源在线| 欧美一区二区三区在线电影| 国产成人av一区二区三区在线| 亚洲精品自拍动漫在线| 日韩一级完整毛片| 不卡的av中国片| 午夜精品久久久久久久| 久久人人97超碰com| 日本精品一区二区三区四区的功能| 男女视频一区二区| 亚洲日本va午夜在线影院| 日韩免费在线观看| 91网页版在线| 国产精品亚洲一区二区三区在线| 一区二区三区国产精品| 国产亚洲综合av| 欧美一级欧美三级在线观看| 91片黄在线观看| 国产高清在线精品| 婷婷成人激情在线网| 亚洲精品乱码久久久久久黑人| 精品理论电影在线| 欧美精品少妇一区二区三区| 欧美性一区二区| 国产福利精品导航| 日本麻豆一区二区三区视频| 亚洲精品免费一二三区| 国产女同性恋一区二区| 日韩欧美亚洲国产精品字幕久久久 | 国产伦精品一区二区三区视频青涩 | 午夜电影网一区| 亚洲欧美电影院| 中文字幕高清不卡| 久久久不卡影院| 日韩精品专区在线| 67194成人在线观看| 欧美日本国产视频| 欧美日韩一区二区三区四区 | 91精品免费在线观看| 欧美午夜精品久久久| 色婷婷精品久久二区二区蜜臀av| 成人免费毛片a| 国产高清亚洲一区| 国产91精品露脸国语对白| 国产美女视频91| 懂色av中文字幕一区二区三区 | 久久久久久久综合色一本| 亚洲777理论| 日韩视频在线永久播放| 99麻豆久久久国产精品免费优播| 亚洲蜜桃精久久久久久久| 欧美大尺度电影在线| 韩国v欧美v亚洲v日本v| 在线电影国产精品| 久久电影国产免费久久电影| 日产欧产美韩系列久久99| 免费成人结看片| 久草精品在线观看| 国产自产v一区二区三区c| 国产精品1024| 成人丝袜18视频在线观看| 91欧美激情一区二区三区成人| 91婷婷韩国欧美一区二区| 欧美午夜一区二区三区免费大片| 欧美性极品少妇| 欧美一级免费大片| 欧美精品一区二区不卡| 国产欧美一区二区精品仙草咪| 国产精品久久99| 亚洲国产乱码最新视频| 久久99精品久久久久久| 国产精品自拍网站| 色综合久久中文字幕| 欧美精品久久久久久久久老牛影院| 日韩视频免费观看高清完整版| 久久新电视剧免费观看| 亚洲欧洲制服丝袜| 奇米888四色在线精品| 国产成人av福利| 欧美色手机在线观看| 久久久午夜精品理论片中文字幕| 国产精品二三区| 免费观看30秒视频久久| 成人国产精品免费观看视频| 在线播放/欧美激情| 国产蜜臀av在线一区二区三区| 亚洲专区一二三| 国产精品一区三区| 欧美视频在线不卡| 国产欧美日韩在线观看| 午夜欧美大尺度福利影院在线看| 国产成人自拍网| 日韩三级伦理片妻子的秘密按摩| 国产精品毛片久久久久久| 久久se这里有精品| 欧美日韩综合色|