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

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

?? seeddm642_ide.c

?? SEED-VPM642 Hardware Test子目錄包含SEED-VPM642模板硬件測試程序,包含所有端口功能測試
?? C
字號:
/********************************************************************/
/*  Copyright 2004 by SEED Incorporated.							*/
/*  All rights reserved. Property of SEED Incorporated.				*/
/*  Restricted rights to use, duplicate or disclose this code are	*/
/*  granted through contract.									    */
/*  															    */
/********************************************************************/

#include "seeddm642_ide.h"
#include "seeddm642.h"

/*******************************************************************/
/*																   */
/*	int ata_reg_read()											   */
/*		描述:讀回當前寄存器的狀態								   */
/*		參數:寄存器指示										   */
/*		返值:當前狀態寄存器的值								   */
/*																   */
/*******************************************************************/
int ata_reg_read(Uint32 regaddr)
{
	int regdata = 0;
	/*延時*/
	SEEDDM642_wait(20);
	/*讀寄存器的值*/
	regdata = *((unsigned long *)regaddr);
	return regdata;
	
}
/*******************************************************************/
/*																   */
/*	int ata_reg_write()											   */
/*		描述:設置當前寄存器    								   */
/*		參數:regaddr:寄存器地址								   */
/*			  regdata:寄存器的值                                   */
/*		返值:無												   */
/*																   */
/*******************************************************************/
void ata_reg_write(Uint32 regaddr,Uint32 regdata)
{
	Uint8 *psrc;
	/*延時*/
	SEEDDM642_wait(20);
	/*寫入當前寄存器的值*/
	psrc = (Uint8 *)regaddr;
	*psrc = regdata;
}
/*******************************************************************/
/*																   */
/*	int ata_status()											   */
/*		描述:讀回當前硬盤的狀態								   */
/*		參數:無												   */
/*		返值:當前狀態寄存器的值								   */
/*																   */
/*******************************************************************/
int ata_status()
{
	int registervalue = 0;
	/*延時*/
	SEEDDM642_wait(20);
	/*讀寄存器的值*/
	registervalue = *((unsigned long *)SEEDDM642_ATA_STATUS);
	return registervalue;
}
/*******************************************************************/
/*																   */
/*	SEEDDM642_ATAHandle ata_open()  							   */
/*		描述:打開有效的硬盤設備								   */
/*		參數:無												   */
/*		返值:有效設備的句柄									   */
/*																   */
/*******************************************************************/
SEEDDM642_ATAHandle ata_open()
{
	int ata_flag = 0xff;
	/*等待2ms*/
	SEEDDM642_waitusec(2000);
	/*讀取狀態寄存器,判斷復位是否結束*/

	do
	{
		ata_flag = ata_status();
		if(ata_flag & ATA_BUS_ERR )
		{
			return (SEEDDM642_ATAHandle)0xff;
		}
		ata_flag = ata_flag & ATA_BUS_BSY;
				
	}while(ata_flag != 0 );
	return (SEEDDM642_ATAHandle)1;	
}
/*******************************************************************/
/*																   */
/*	int ata_command()											   */
/*		描述:設置當前寄存器    								   */
/*		參數:regaddr:寄存器地址								   */
/*			  regdata:寄存器的值                                   */
/*		返值:無												   */
/*																   */
/*******************************************************************/
Bool ata_command(ATA_command *command,Uint32 buffer,Uint32 longth)
{
	int ata_st = 0;
	Uint32 *psrc;
	Uint32 errcount = 0;
	Uint32 i;
	
	psrc = (Uint32 *)buffer;
	/*判斷當前總線是否釋放*/
	do
	{
		ata_st = ata_status();
		ata_st = (ata_st & ATA_BUS_BSY);
		errcount++;
		if(errcount ==0x10000)
		{
			return FALSE;	
		}
	}while(ata_st !=0);
	/*判斷先決條件是否成立*/
	errcount = 0;
	do
	{
		ata_st = ata_status();
		ata_st = (ata_st & (command->prereq));
		errcount++;
		if(errcount ==0x10000)
		{
			return FALSE;	
		}	
	}while(ata_st ==0);
	/*將命令的各個參數寫入到相應的寄存器*/
	if(command->features < 0x100)
	{
		ata_reg_write(SEEDDM642_ATA_FEATURES,command->features);
	}
	if(command->sector_count < 0xff)
	{
		ata_reg_write(SEEDDM642_ATA_SECTOR,command->sector_count);
	}
	if(command->LBA_l < 0x100)
	{
		ata_reg_write(SEEDDM642_ATA_LBAL,command->LBA_l);
	}
	if(command->LBA_M < 0x100)
	{
		ata_reg_write(SEEDDM642_ATA_LBAM,command->LBA_M);
	}
	if(command->LBA_H < 0x100)
	{
		ata_reg_write(SEEDDM642_ATA_LBAH,command->LBA_H);
	}
	if(command->device < 0x100)
	{
		ata_reg_write(SEEDDM642_ATA_DEVICE,command->device);
	}
	/*提交命令*/
	ata_reg_write(SEEDDM642_ATA_COM,command->com_code);
	/*等待命令執行完畢:BSY為0*/
	errcount = 0;
	do
	{
		ata_st = ata_status();
		ata_st = (ata_st & ATA_BUS_BSY);
		errcount++;
		if(errcount ==0x10000)
		{
			return FALSE;	
		}
	}while(ata_st !=0);
	/*等待完成條件出現*/
	errcount = 0;
	do
	{
		ata_st = ata_status();
		ata_st = (ata_st & (command->complete_flag));
		errcount++;
		if(errcount ==0x10000)
		{
			return FALSE;	
		}	
	}while(ata_st ==0);
	/*判斷是否出錯*/
	ata_st = ata_status();
	if((ata_st & 0x1)==1)
	{
		ata_st = ata_reg_read(SEEDDM642_ATA_ERROR);
		return FALSE;	
	}
	/*讀取命令結果*/
	for(i = 0;i<longth;i++)
	{
		*psrc++ =ata_reg_read(SEEDDM642_ATA_DATA);	
	}
	ata_st = ata_status();
	if((ata_st & 0x1) != 0 )
	{
		return FALSE;
	}
	else
	{
		return TRUE;
	}
}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品影音先锋| 91精品国产综合久久久蜜臀粉嫩| 偷拍一区二区三区四区| 依依成人综合视频| 一区二区三区四区不卡在线| 一区二区三区欧美亚洲| 亚洲成人在线免费| 天天综合网天天综合色| 日本麻豆一区二区三区视频| 男女视频一区二区| 国产主播一区二区| 成人黄色小视频| 在线视频你懂得一区| 欧美性猛交xxxx乱大交退制版| 欧美性猛交xxxxxx富婆| 欧美精品三级在线观看| 日韩三级高清在线| 国产精品久久久久久久裸模| 亚洲激情五月婷婷| 奇米色一区二区| 国产69精品久久久久毛片| 一本色道久久综合狠狠躁的推荐| 欧美亚洲国产一区在线观看网站 | 777奇米四色成人影色区| 欧美成人精精品一区二区频| 国产精品视频你懂的| 樱花影视一区二区| 精品无人区卡一卡二卡三乱码免费卡 | 欧美性感一区二区三区| 日韩欧美国产一区二区三区| 中文字幕乱码一区二区免费| 一个色综合av| 国产麻豆精品久久一二三| 91极品美女在线| 欧美精品一区二区三区在线播放| 1000部国产精品成人观看| 日韩成人dvd| 91丨国产丨九色丨pron| 日韩一区二区电影| 亚洲精品老司机| 国产精品一卡二卡| 欧美专区日韩专区| 欧美经典三级视频一区二区三区| 午夜视频一区二区| 不卡的电影网站| 久久综合久久综合久久| 亚洲一区二区三区视频在线| 国产成人精品免费看| 欧美另类高清zo欧美| 亚洲少妇30p| 成人午夜激情片| 久久久久久毛片| 理论电影国产精品| 欧美喷水一区二区| 亚洲一二三区视频在线观看| 成人午夜在线免费| 久久综合色播五月| 精品在线播放午夜| 欧美二区乱c少妇| 亚洲1区2区3区视频| 在线视频国内自拍亚洲视频| 国产精品毛片久久久久久久| 国产一二精品视频| 久久综合久久久久88| 免费观看日韩电影| 欧美一二三在线| 免费高清在线视频一区·| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久精品欧美一区二区三区不卡| 免费一区二区视频| 欧美精品久久一区| 免费在线观看视频一区| 69堂精品视频| 亚洲国产欧美在线| 欧美色网站导航| 婷婷亚洲久悠悠色悠在线播放| 欧美色图在线观看| 日韩成人午夜电影| 日韩欧美精品在线视频| 蜜臀国产一区二区三区在线播放| 在线综合视频播放| 免费观看日韩电影| 久久久久久99精品| 成人一区二区在线观看| 国产婷婷一区二区| 不卡欧美aaaaa| 亚洲综合在线电影| 欧美久久久久久久久| 免费成人你懂的| 亚洲精品一区二区三区在线观看| 九色综合国产一区二区三区| 久久久久久99精品| 色婷婷精品久久二区二区蜜臂av| 亚洲免费观看高清完整版在线观看 | 青青草视频一区| 日韩精品一区二区三区视频在线观看| 久久国产精品第一页| 久久综合狠狠综合久久综合88| 成人黄色软件下载| 一区二区三区美女视频| 欧美日本在线观看| 国产精品中文有码| |精品福利一区二区三区| 在线亚洲高清视频| 蜜臀久久99精品久久久久久9 | 国产精品入口麻豆原神| 欧美在线色视频| 久88久久88久久久| 亚洲视频1区2区| 欧美不卡在线视频| 日本精品免费观看高清观看| 日韩电影在线免费观看| 中文字幕第一区第二区| 在线观看www91| 国产精品99久久久久久宅男| 一区二区在线观看免费| 久久综合九色综合97_久久久| 91玉足脚交白嫩脚丫在线播放| 日韩福利电影在线| 中文字幕佐山爱一区二区免费| 91精品国产综合久久国产大片| 国产一区二区三区不卡在线观看| 亚洲欧美在线观看| 亚洲精品在线免费观看视频| 色偷偷成人一区二区三区91| 国产乱码精品一品二品| 午夜一区二区三区视频| 亚洲欧美一区二区视频| 久久综合狠狠综合久久综合88 | 亚洲成人av免费| 国产精品久久久久久久久搜平片 | 欧美一级高清大全免费观看| 99国产精品国产精品久久| 久久精品噜噜噜成人av农村| 一区二区三区色| 亚洲免费在线观看视频| 国产亚洲综合色| 日韩精品一区二区三区四区| 在线电影国产精品| 欧美日高清视频| 欧美日韩色一区| 欧美四级电影在线观看| 91福利在线观看| 99久久久无码国产精品| 成人美女视频在线看| 国产一区二区三区在线观看免费视频| 日韩vs国产vs欧美| 免费成人av在线| 日本在线观看不卡视频| 日日骚欧美日韩| 免费看日韩a级影片| 日韩影视精彩在线| 视频一区在线视频| 日韩激情一区二区| 日韩avvvv在线播放| 日韩中文欧美在线| 美女国产一区二区三区| 久国产精品韩国三级视频| 国产一区二三区好的| 国产精品主播直播| 成人av免费在线播放| 色综合天天狠狠| 欧美日韩国产在线播放网站| 91超碰这里只有精品国产| 日韩欧美国产麻豆| 国产午夜精品久久久久久久| 国产女人aaa级久久久级| 亚洲丝袜精品丝袜在线| 亚洲一二三区不卡| 蜜桃久久av一区| 成人白浆超碰人人人人| 色老综合老女人久久久| 欧美一区二区精美| 国产亚洲1区2区3区| 亚洲视频一区二区在线| 日韩精品电影在线观看| 国产制服丝袜一区| 91麻豆高清视频| 日韩欧美亚洲国产另类| 久久精品一区二区三区不卡牛牛| 中文字幕永久在线不卡| 婷婷久久综合九色国产成人 | 久久超碰97中文字幕| 国产精品综合视频| 在线观看亚洲精品视频| 精品国产区一区| 一区二区三区中文字幕| 国精产品一区一区三区mba视频 | 麻豆一区二区三| 91色婷婷久久久久合中文| 日韩三级视频在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 美女www一区二区| 94色蜜桃网一区二区三区| 欧美另类z0zxhd电影| 中文字幕成人在线观看| 蜜桃av噜噜一区| 色美美综合视频| 国产精品亲子伦对白| 琪琪一区二区三区|