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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ide.c

?? ARM bootloader,硬件平臺為smartARM
?? C
?? 第 1 頁 / 共 3 頁
字號:

//	  	for(temp32=0;temp32<TIMEOUTSET;temp32++)		/*等待設(shè)備準備好*/
// 		{
//  			SetDeviceHead(0xfa);						/*寫設(shè)備磁頭寄存器*/
//	  		if( 0xfa == (uint8)GetDeviceHead())			/*讀出剛才寫進設(shè)備磁頭寄存器值*/
//	  			break;									/*設(shè)備OK,完成復位*/
//	   	}

		if(temp32<TIMEOUTSET)							/*如果設(shè)備不超時,則ATA接口上有設(shè)備*/
		{
			for(Device=0;MAX_DEVICE>Device;Device++)	/*初始化各設(shè)備,MAX_DEVICE最大值為1,即只能有主和從兩個設(shè)備*/
			{
				ATA_SetFeature(Device);					/*特性設(shè)備,(總線設(shè)置)*/
				if(ATA_IssueIDEIdentify(Device))		/*ATA設(shè)備識別,獲取CF卡內(nèi)部信息*/
					ATA[Device].ATAIsOK = TRUE;			/*ATA設(shè)備可用,置位其標志位*/
				else
					ATA[Device].ATAIsOK = FALSE;		/**ATA設(shè)備不可用,清ATA設(shè)備準備好標志*/
			}
		}
	}
} 


/*********************************************************************************************************
** 函數(shù)名稱: ATA_ReadSetting					所在文件:IDE.C
** 功能描述: 讀扇區(qū)指令設(shè)置相關(guān)的寄存器。
** 輸   入: Sectors ,讀設(shè)備的起始扇區(qū)號
**			 Count ,扇區(qū)數(shù)
** 輸   出: 無
** 全局變量: ATA_DevReg,確定選擇的是主設(shè)備或是從設(shè)備和地址模式(本驅(qū)動使用LBA模式)
** 調(diào)用模塊: ATA_CommandSet(),寫命令設(shè)置
********************************************************************************************************/
void ATA_ReadSetting(uint32 Sectors , uint8 Count)
{
   	ATA_CommandSet( 									/*ATA指令設(shè)置*/
 		NULL,											/*Feature,特征寄存器*/
		(uint8)Count, 									/*SecCnt,扇區(qū)計數(shù)寄存器*/
		(uint8)Sectors, 								/*SecNum,扇區(qū)號寄存器*/
		(uint8)(Sectors/0x100),							/*CylLow,柱面低寄存器*/
		(uint8)(Sectors/0x10000),						/*CylHigh,柱面高寄存器*/
		(uint8)(((Sectors/0x1000000)&0x0f)|ATA_DevReg),	/*C_D_H,設(shè)備磁頭寄存器*/
		(uint8)IDE_CMD_READ 							/*Command,指令寄存器*/ 
				  );
}

/*********************************************************************************************************
** 函數(shù)名稱: ATA_ReadData512B
** 功能描述: 從硬盤讀出一個512B,在指定的緩沖區(qū)里
** 輸   入: Buffer,緩沖區(qū)地址
** 輸   出: 無
** 全局變量: 無
** 調(diào)用模塊: GetData(),從ATA數(shù)據(jù)寄存器讀取一個字節(jié)
********************************************************************************************************/
void ATA_ReadData512B(uint16 * Buffer)
{ 	uint16 i;
	for(i = 0; i < 256; i ++)					/*連續(xù)讀256個字(512字節(jié))數(shù)據(jù)*/
    {
    	*(Buffer ++) = GetData();				/*讀數(shù)據(jù)寄存器一個字數(shù)據(jù)*/
    }
}

/*********************************************************************************************************
** 函數(shù)名稱: ATA_ReadSector					所在文件:IDE.C
** 功能描述: 從硬盤讀取一或多個扇區(qū),放入到形參指定的內(nèi)存中
** 輸   入: Device,設(shè)備號
**			 Buffer,讀出數(shù)據(jù)存放的緩沖區(qū)地址
**			 Sector,讀扇區(qū)號
**			 count, 讀扇區(qū)數(shù)
** 輸   出: TRUE,正常返回
**			 FALSE,出錯返回
** 全局變量: ATA,設(shè)備狀態(tài)及信息結(jié)構(gòu)體
** 調(diào)用模塊: OSSemPend(),等待信號量
**			 ATA_SelDevice(),選擇設(shè)備
**			 ATA_ReadSetting(),讀扇區(qū)設(shè)置
**			 ATA_WaitOnBusyNDrq(),等待數(shù)據(jù)請求
**			 ATA_ReadData512B(),讀512字節(jié)數(shù)據(jù)
**			 ATA_WaitOnBusyNDrdy(),等待設(shè)備準備好
**			 OSSemPost(),發(fā)送信號量
********************************************************************************************************/
uint8 ATA_ReadSector(uint8 Device,uint16 *Buffer,uint32 Sector,uint8 count)
{	
#ifdef UCOSII
	uint8	err;
#endif

	uint8	Status=FALSE;
	if(ATA[Device].ATAIsOK==FALSE) 				/*設(shè)備不可用,立即返回*/
		return	FALSE;							/*設(shè)備無效直接返回*/

#ifdef UCOSII
	OSSemPend(CFIDESem, 0, &err);				/*等待信號量*/
#endif

	if(ATA_SelectDevice(Device))				/*選擇主從設(shè)備*/
	{
		ATA_ReadSetting( Sector, count);		/*讀扇區(qū)設(shè)置*/
		do
		{	
			count--;							/*扇區(qū)數(shù)減1*/
			if(ATA_WaitOnBusyNDrq())			/* 等待設(shè)備請求數(shù)據(jù)傳輸*/
		    {	
			   	ATA_ReadData512B( Buffer );		/*連續(xù)讀取一扇區(qū)的數(shù)據(jù)*/
			   	Buffer +=256;					/*調(diào)整數(shù)據(jù)格式*/
			}
			else
			   	break;							/*出錯,退出d0...while*/
		}while(count>0);						/*所有扇區(qū)數(shù)據(jù)傳輸完成*/
			
		if(ATA_WaitOnBusyNDrdy())				/*等待設(shè)備就緒,讀取狀態(tài)寄存器同時檢測設(shè)備是否出錯*/
			Status = TRUE;						/*操作正確*/
	}	
	
	
#ifdef UCOSII
	OSSemPost(CFIDESem);						/*發(fā)送信號量*/
#endif

	return Status;								/*返回*/
}

/*********************************************************************************************************
** 函數(shù)名稱: ATA_WriteSetting					所在文件:IDE.C
** 功能描述: 寫扇區(qū)指令設(shè)置相關(guān)的寄存器。
** 輸   入: Sectors,寫入的起始扇區(qū)號
**           Count,扇區(qū)數(shù)
** 輸   出: 無
** 全局變量: ATA_DevReg,確定選擇的是主設(shè)備或是從設(shè)備和地址模式(本驅(qū)動使用LBA模式)
** 調(diào)用模塊: ATA_CommandSet(),寫命令設(shè)置
********************************************************************************************************/
void ATA_WriteSetting(uint32 Sectors , uint8 Count)
{
	ATA_CommandSet( 									/*ATA指令設(shè)置*/
 		NULL,											/*Feature,特征寄存器*/
		(uint8)Count, 									/*SecCnt,扇區(qū)計數(shù)寄存器*/
		(uint8)Sectors, 								/*SecNum,扇區(qū)號寄存器*/
		(uint8)(Sectors/0x100),							/*CylLow,柱面低寄存器*/
		(uint8)(Sectors/0x10000),						/*CylHigh,柱面高寄存器*/
		(uint8)(((Sectors/0x1000000)&0x0f)|ATA_DevReg),	/*C_D_H,設(shè)備磁頭寄存器*/
		(uint8)IDE_CMD_WRITE 							/*Command,指令寄存器*/ 
				  );	
} 

/*********************************************************************************************************
** 函數(shù)名稱: ATA_WriteData512B
** 功能描述: 寫入ATA設(shè)備512字節(jié)數(shù)據(jù)
** 輸   入: Buffer,緩沖區(qū)地址
** 輸   出: 無
** 全局變量: 無
** 調(diào)用模塊: SetData(),從ATA數(shù)據(jù)寄存器讀取一個字節(jié)
********************************************************************************************************/
void ATA_WriteData512B(uint16 * Buffer)
{   	
	uint16 i;
   	for(i = 0; i < 256; i ++)			/*連續(xù)寫256個字(512字節(jié))數(shù)據(jù)*/
   	{
     	SetData(*(Buffer++)); 			/*寫數(shù)據(jù)寄存器一個字數(shù)據(jù)*/    	
   	}
}

/*********************************************************************************************************
** 函數(shù)名稱: WriteSector					所在文件:IDE.C
** 功能描述: 向硬盤寫入一或多個扇區(qū)
** 輸   入: Device,選擇主設(shè)備或從設(shè)備
**			 Buffer,緩沖區(qū)地址
**			 Sector,寫入扇區(qū)號
**			 count, 寫入扇區(qū)數(shù)
** 輸   出: TRUE,正常返回
**			 FALSE,出錯返回
** 全局變量: ATA,設(shè)備狀態(tài)及信息結(jié)構(gòu)體
** 調(diào)用模塊: OSSemPend(),等待信號量
**			 ATA_SelDevice(),選擇設(shè)備
**			 ATA_ReadSetting(),讀扇區(qū)設(shè)置
**			 ATA_WaitOnBusyNDrq(),等待數(shù)據(jù)請求
**			 ATA_WriteData512B(),寫512字節(jié)數(shù)據(jù)
**			 ATA_WaitOnBusyNDrdy(),等待設(shè)備準備好
**			 OSSemPost(),發(fā)送信號量
********************************************************************************************************/
uint8 ATA_WriteSector(uint8 Device,uint16 * Buffer, uint32 Sector ,uint8 count)
{	
#ifdef UCOSII
	uint8	err;
#endif
	uint8	Status=FALSE;
	if(ATA[Device].ATAIsOK==FALSE) 			/*CF卡不可用,立即返回*/
		return	FALSE;

#ifdef UCOSII
	OSSemPend(CFIDESem, 0, &err);			/*等待信號量*/
#endif
	
	if(ATA_SelectDevice(Device))			/*選擇需要操作的設(shè)備*/
	{
		ATA_WriteSetting( Sector, count);	/*寫扇區(qū)設(shè)置*/
	    do
	    {	count--;
	    	if(ATA_WaitOnBusyNDrq())		/*等待設(shè)備請求數(shù)據(jù)傳輸*/
			{
	    		ATA_WriteData512B(Buffer);	/*寫入一個扇區(qū)數(shù)據(jù)*/
	    		Buffer +=256;				/*調(diào)要寫入數(shù)據(jù)緩沖區(qū)的指針*/
			}
			else
				break;						/*出錯退出*/
		}while(count>0);

		if(ATA_WaitOnBusyNDrdy())			/*等待設(shè)備就緒,讀取狀態(tài)寄存器同時檢測設(shè)備是否出錯*/
			Status = TRUE;					/*操作正確*/
	}
	
#ifdef UCOSII
	OSSemPost(CFIDESem);					/*發(fā)信號量*/
#endif

	return Status;							/*返回*/
}


/*********************************************************************************************************
** 函數(shù)名稱: ATA_IdleImmediate					所在文件:IDE.C
** 功能描述: 直接進入空閑狀態(tài)(硬件轉(zhuǎn)動)
** 輸   入: Device,選擇主設(shè)備或從設(shè)備
** 輸   出: TRUE,正常返回
**			 FALSE,出錯返回
** 全局變量: ATA,設(shè)備狀態(tài)及信息結(jié)構(gòu)體
**			 CFIDESem,信號量
**			 ATA_DevReg,確定選擇的是主設(shè)備或是從設(shè)備和地址模式(本驅(qū)動使用LBA模式)
** 調(diào)用模塊: OSSemPend(),等待信號量
**			 ATA_SelDevice(),選擇設(shè)備
**			 ATA_CommandSet(),ATA指令設(shè)置
**			 ATA_WaitOnBusyNDrdy(),等待設(shè)備就緒
**			 OSSemPost(),發(fā)送信號量
********************************************************************************************************/
uint8 ATA_IdleImmediate(uint8 Device)
{
#ifdef UCOSII
	uint8	err;
#endif
	uint8 	retStatus = FALSE;
	if(ATA[Device].ATAIsOK==FALSE) 			/*CF卡不可用,立即返回*/
		return	FALSE;

#ifdef UCOSII
	OSSemPend(CFIDESem, 0, &err);			/*等待信號量*/
#endif
	if(ATA_SelectDevice(Device))			/*選擇設(shè)備*/
	{	
   		ATA_CommandSet( 					/*ATA指令設(shè)置*/
 	   		NULL,							/*Feature,特征寄存器*/
			NULL, 							/*SecCnt,扇區(qū)計數(shù)寄存器*/
			NULL, 							/*SecNum,扇區(qū)號寄存器*/
			NULL,							/*CylLow,柱面低寄存器*/
			NULL,							/*CylHigh,柱面高寄存器*/
			ATA_DevReg,						/*C_D_H,設(shè)備磁頭寄存器*/
			IDE_CMD_IDLE_IMMEDIATE			/*Command,指令寄存器*/ 
					   );
    	
    	retStatus =ATA_WaitOnBusyNDrdy();	/*指令執(zhí)行后狀態(tài)*/
	}

#ifdef UCOSII
	OSSemPost(CFIDESem);					/*發(fā)信號量*/
#endif

	return retStatus;						/*返回*/
}

/*********************************************************************************************************
** 函數(shù)名稱: ATA_StandbyImmediate	所在文件:IDE.C
** 功能描述: 立即進入空閑(硬盤停轉(zhuǎn))
** 輸   入: Device,主設(shè)備或從設(shè)備
** 輸   出: TRUE,正常返回
**			 FALSE,出錯返回
** 全局變量: ATA,設(shè)備狀態(tài)及信息結(jié)構(gòu)體
**			 CFIDESem,信號量
**			 ATA_DevReg,確定選擇的是主設(shè)備或是從設(shè)備和地址模式(本驅(qū)動使用LBA模式)
** 調(diào)用模塊: OSSemPend(),等待信號量
**			 ATA_SelDevice(),選擇設(shè)備
**			 ATA_CommandSet(),ATA指令設(shè)置
**			 ATA_WaitOnBusyNDrdy(),等待設(shè)備就緒
**			 OSSemPost(),發(fā)送信號量
********************************************************************************************************/
uint8 ATA_StandbyImmediate(uint8 Device)
{	
#ifdef UCOSII
	uint8	err;
#endif
	uint8 retStatus = FALSE;
	if(ATA[Device].ATAIsOK==FALSE) 			/*CF卡不可用,立即返回*/
		return	FALSE;

#ifdef UCOSII
	OSSemPend(CFIDESem, 0, &err);			/*等待信號量*/
#endif
	
	if(ATA_SelectDevice(Device))			/*選擇設(shè)備*/
	{	
   		ATA_CommandSet( 					/*ATA指令設(shè)置*/
 	   		NULL,							/*Feature,特征寄存器*/
			NULL, 							/*SecCnt,扇區(qū)計數(shù)寄存器*/
			NULL, 							/*SecNum,扇區(qū)號寄存器*/
			NULL,							/*CylLow,柱面低寄存器*/
			NULL,							/*CylHigh,柱面高寄存器*/
			ATA_DevReg,						/*C_D_H,設(shè)備磁頭寄存器*/
			IDE_CMD_STANDBY_IMMEDIATE		/*Command,指令寄存器*/ 
					   );
					   
    	retStatus =ATA_WaitOnBusyNDrdy();	/*等待設(shè)備不忙*/	
	}

#ifdef UCOSII
	OSSemPost(CFIDESem);					/*發(fā)信號量*/
#endif

	return retStatus;						/*返回*/
}






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费在线播放| 成人午夜大片免费观看| 日韩欧美中文字幕一区| 国产中文字幕一区| 日韩精品乱码av一区二区| 亚洲视频一区在线观看| 国产精品高清亚洲| 亚洲丝袜另类动漫二区| 精品亚洲免费视频| 国产精品白丝jk黑袜喷水| 国产美女精品在线| 99国产精品视频免费观看| 97久久超碰国产精品| 2020日本不卡一区二区视频| 337p粉嫩大胆色噜噜噜噜亚洲 | 91精品婷婷国产综合久久性色| 日本精品一级二级| 色婷婷av一区二区三区大白胸 | 亚洲视频小说图片| 国内精品写真在线观看| 欧美一区二区三区免费在线看| 337p粉嫩大胆噜噜噜噜噜91av| 三级亚洲高清视频| 欧亚洲嫩模精品一区三区| 日韩一级欧美一级| 视频在线观看国产精品| 欧美日本国产一区| 久久色中文字幕| 久久精品国产网站| 成人动漫在线一区| 在线不卡中文字幕播放| 亚洲国产精品黑人久久久 | 精品国产乱码久久久久久夜甘婷婷| 国产亚洲欧美一级| 亚洲一二三区视频在线观看| 久色婷婷小香蕉久久| 欧美一区二区三区在线电影| 免费在线观看精品| 色综合 综合色| 一区二区三区高清在线| 国产一区美女在线| 久久久久久**毛片大全| 日韩高清国产一区在线| 99精品久久久久久| 亚洲综合另类小说| 成人午夜在线播放| 亚洲欧美综合色| 国产乱码精品一区二区三| 久久亚洲精华国产精华液| 国产福利视频一区二区三区| 欧美一区二区三区在线观看| 狠狠色丁香久久婷婷综合_中 | 国产精品久久久久久户外露出| av综合在线播放| 精品美女在线播放| 五月天亚洲精品| 一本色道久久加勒比精品| 亚洲综合免费观看高清完整版在线| 欧美日韩在线播放三区四区| 亚洲欧美一区二区久久| 成人动漫精品一区二区| 亚洲图片一区二区| 日韩免费观看2025年上映的电影| 日韩精品乱码免费| 国产日产亚洲精品系列| 九一九一国产精品| 亚洲图片你懂的| 欧美一级专区免费大片| 成人性生交大合| 丝袜诱惑制服诱惑色一区在线观看| 精品乱人伦一区二区三区| 97久久超碰国产精品电影| 久久精品国产亚洲a| 综合欧美一区二区三区| 欧美一区二区网站| 99久久99久久精品免费观看 | 国产精品超碰97尤物18| 4438x亚洲最大成人网| 成人综合婷婷国产精品久久免费| 午夜精品福利在线| 中文字幕第一区二区| 3d成人h动漫网站入口| 91亚洲精品乱码久久久久久蜜桃 | 成人h精品动漫一区二区三区| 视频一区欧美精品| 亚洲日本在线视频观看| 精品乱人伦小说| 欧美日韩国产大片| 91女神在线视频| 国产成人精品网址| 美女精品一区二区| www国产精品av| 欧美一区二区美女| 欧美综合色免费| 91在线国产福利| 国产激情一区二区三区四区| 免费成人性网站| 偷窥国产亚洲免费视频| 亚洲丝袜美腿综合| 国产精品久久久久久久久搜平片| 欧美videossexotv100| 欧美高清视频不卡网| 欧美伊人久久久久久久久影院 | www.性欧美| 国产麻豆精品theporn| 青青草97国产精品免费观看| 亚洲电影激情视频网站| 精品伦理精品一区| 欧美成人bangbros| 91麻豆精品91久久久久久清纯 | 亚洲一区二区三区四区的| 国产精品视频麻豆| 欧美精品第1页| 欧美日韩精品免费| 4438亚洲最大| 日韩欧美高清在线| 欧美不卡123| 精品国产免费视频| 欧美精品一区二区三区久久久| 精品欧美一区二区在线观看| 精品动漫一区二区三区在线观看 | 欧美三级视频在线播放| 在线视频国内一区二区| 欧美日韩高清一区二区三区| 欧美日韩精品专区| 91精品国产麻豆国产自产在线| 欧美一区二区在线看| 精品免费国产一区二区三区四区| 久久久久久一二三区| 国产欧美一区二区三区在线看蜜臀| 国产欧美日韩亚州综合| 18成人在线观看| 亚洲成在人线在线播放| 蓝色福利精品导航| 成人开心网精品视频| 色综合色综合色综合色综合色综合 | 99精品偷自拍| 欧美性一级生活| 日韩欧美一二区| 欧美国产在线观看| 亚洲电影欧美电影有声小说| 麻豆精品视频在线观看免费 | 国产日韩欧美制服另类| 亚洲私人影院在线观看| 日韩成人精品在线| 国产99久久久精品| 久久国产精品99精品国产| 国产91综合一区在线观看| 91女厕偷拍女厕偷拍高清| 7777精品伊人久久久大香线蕉最新版| 日韩精品一区二区三区蜜臀| 亚洲欧美一区二区在线观看| 日韩精品成人一区二区在线| 国产激情视频一区二区三区欧美 | 欧美成人福利视频| 国产精品成人在线观看| 无吗不卡中文字幕| 成人亚洲一区二区一| 欧美精品三级在线观看| 久久婷婷成人综合色| 亚洲免费观看高清| 久久成人麻豆午夜电影| 在线观看国产日韩| 国产视频在线观看一区二区三区| 亚洲国产欧美日韩另类综合| 国产成人精品一区二区三区四区 | 国产午夜精品一区二区| 亚洲国产sm捆绑调教视频 | 久久不见久久见免费视频7| 色综合久久88色综合天天免费| 日韩精品最新网址| 一区二区三区免费看视频| 国产成人福利片| 欧美一区二区免费视频| 亚洲国产综合在线| 99久久精品99国产精品| 久久久综合激的五月天| 粉嫩一区二区三区性色av| 日韩美女天天操| 午夜精品久久久久久久99水蜜桃| 91天堂素人约啪| 国产精品天干天干在线综合| 久久99精品国产.久久久久 | 99在线精品一区二区三区| 久久亚洲捆绑美女| 精品一区二区日韩| 69久久99精品久久久久婷婷| 亚洲国产精品一区二区久久 | 国产成都精品91一区二区三| 精品欧美久久久| 久久精品国产99久久6| 欧美一区二区女人| 免费看日韩a级影片| 日韩午夜av电影| 天天色图综合网| 在线成人免费观看| 日本美女一区二区三区视频| 777色狠狠一区二区三区| 天天射综合影视| 欧美一区二区在线不卡|