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

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

?? mainloop.c

?? ARM專輯-152M-pdf.zip
?? C
?? 第 1 頁 / 共 2 頁
字號:
   //*************************************************************************
   //
   //                  P H I L I P S   P R O P R I E T A R Y
   //
   //           COPYRIGHT (c)   1999 BY PHILIPS SINGAPORE.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // File Name:	MainLoop.C
   // Author:       Hilbert Zhang ZhenYu
   // Created:      Nov. 19 99
   // Modified:
   // Revision: 	0.0.
   //
   //*************************************************************************
   // Implementation Notes:
   //
   //   4. Bulk-Only Transport FSM
   //      IDLE Stage ->  CBW -> CBW Proc -> DATA OUT Stage -> CSW Proc -> CSW Stage -> IDLE
   //      IDLE Stage ->  CBW -> CBW Proc -> DATA IN Stage -> CSW Proc -> CSW Stage -> IDLE
   //      STALL Stage ->  IDLE -> ...
   //
   //
   //   3. Default Control Pipe Finite State Machine
   //      SETUP Stage -> SETUP Proc -> DATA OUT Stage -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
   //      SETUP Stage -> SETUP Proc -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
   //      SETUP Stage -> SETUP Proc -> DATA IN Stage-> CONTROL IN Handshake ->STATUS Stage -> IDLE
   //      STALL -> SETUP Stage -> ...
   //
   //   2. Stack Overflow Avoidance.
   //      Setup TK overwritten allowance.
   //
   //   1. System Modeling
   //       A. D12
   //       B. 8051
   //       C. ATA controller emulation by 8051
   //
   //   0. 8051 Modeling
   //       A. Target 8051 , 128B RAM, 16KB ROM
   //       B. Choose 2 IRQL levels, Interrupt Priority 0 as IRQL_1, Mainloop as IRQL_0
   //       C. Bit Address Space, Byte Ram Addess Space, Code Address Space, IO port Space
   //
   //*************************************************************************
   // Development Environment
   //
   //   1. Use VC++ IDE instead of DOS enviroment
   //   0. Keil C Ver4
   //
   //*************************************************************************

#include  "config.h"       /* special function register declarations */

#define GLOBAL_EXT			//定義全局

#include "SysCnfg.h"
#include "BasicTyp.H"

#include "usb100.h"

#include "Common.h"
#include "Hal4Sys.h"
#include "Hal4d12.h"
#include "Hal4ata.h"

//#include "ATA.h"
#include "RBCCmd.h"
#include "RBC.h"

#include "mainloop.h"
#include "chap_9.h"
#include "TPBulk.h"


//*************************************************************************
//  Public data
//*************************************************************************


// bit Flags
STRUC_EXT BITFLAGS     bFlags;

#define             MCUBF_Timer  					bFlags.bits.timer
#define             D12BF_SetupOverwritten  		bFlags.bits.setup_overwritten
#define             D12BF_Configuration	  			bFlags.bits.;configuration
#define             REQBF_DCPRequest_dir  			bFlags.bits.DCPRequst_Dir
#define             REQBF_DCPRequest_EPdir  		bFlags.bits.DCPRequst_EPDir
#define             REQBF_StallDCPRequest   		bFlags.bits.Stall_DCPRequest
#define             BOTBF_StallAtBulkOut  			bFlags.bits.BO_Stalled
#define             BOTBF_StallAtBulkIn  			bFlags.bits.BI_Stalled
#define             BOTXfer_Abort  					bFlags.bits.Abort_BOT
#define             ATABF_IsAttached  				bFlags.bits.ATABF_IsAttached
#define             ATABF_IsSupportMultiSector  	bFlags.bits.ATABF_IsSupportMultiSector
#define             ATABF_IDEXfer_dir	 			bFlags.bits.ATABF_IDEXfer_dir
#define             ATABF_IsSkipSetParameters 	 	bFlags.bits.ATABF_IsSkipSetParameters

INT8_EXT            Hal4Sys_ClockTicks = 0;

// D12 bit flags


//USB
// DefaultControlPipe Finite State Machine [One-Hot]
STRUC_EXT char_bit   _DCPFSMstate;
#define		DCPFSMstate			_DCPFSMstate.char_
#define		DCPFSM_SetupProc 	_DCPFSMstate.bit_.b0
#define     DCPFSM_DataIn 		_DCPFSMstate.bit_.b1
#define     DCPFSM_DataOut 		_DCPFSMstate.bit_.b2
#define     DCPFSM_COhandshake 	_DCPFSMstate.bit_.b3
#define     DCPFSM_CIhandshake 	_DCPFSMstate.bit_.b4
#define     DCPFSM_Stall 		_DCPFSMstate.bit_.b7
//      DCP FSM
//      SETUP Stage -> SETUP Proc -> DATA OUT Stage -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
//      SETUP Stage -> SETUP Proc -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
//      SETUP Stage -> SETUP Proc -> DATA IN Stage-> CONTROL IN Handshake ->STATUS Stage -> IDLE
//

// USB Device Request
STRUC_EXT DEVICE_REQUEST  DCPDeviceRequest;

INT8_EXT            UsbReq_Recipient;
INT8_EXT            UsbReq_Type;
INT8_EXT            UsbReq_Request;

INT16_EXT           DCPXfer_wResidue;
INT8_EXT            * DCPXfer_pdata;

// Bulk-Only TP Finite State Machine [One-Hot]      端點狀態
STRUC_EXT char_bit _BOTFSMstate;
#define 	BOTFSMstate		_BOTFSMstate.char_ 
#define 	BOTFSM_IDLE 	_BOTFSMstate.bit_.b0
#define     BOTFSM_CBWProc  _BOTFSMstate.bit_.b1
#define     BOTFSM_DataIn 	_BOTFSMstate.bit_.b2
#define     BOTFSM_DataOut  _BOTFSMstate.bit_.b3
#define     BOTFSM_CSWProc  _BOTFSMstate.bit_.b4
#define     BOTFSM_CSW 		_BOTFSMstate.bit_.b5
#define     BOTFSM_Stall 	_BOTFSMstate.bit_.b7
//      BOT FSM
//      IDLE Stage ->  CBW -> CBW Proc -> DATA OUT Stage -> CSW Proc -> CSW Stage -> IDLE
//      IDLE Stage ->  CBW -> CBW Proc -> DATA IN Stage -> CSW Proc -> CSW Stage -> IDLE
//      STALL Stage ->  IDLE
//
INT16_EXT   BOTXfer_wResidue;   //數據沉余
INT8_EXT    * BOTXfer_pdata;
STRUC_EXT	TPBLK_STRUC			TPBulk_Block;
#define     TPBulk_CBW			TPBulk_Block.TPBulk_CommandBlock
#define	    RBC_CDB				TPBulk_CBW.cdbRBC
#define     RBC_LUN				TPBulk_CBW.bCBW_LUN
#define     Hal4ATA_Atapi		RBC_CDB
#define     TPBulk_CSW			TPBulk_Block.TPBulk_CommandStatus


// Xfer_Space
STRUC_EXT char_bit  	_Xfer_Space;
#define 	Xfer_Space 			_Xfer_Space.char_
#define     DCPXfer_atMCUCODE 	_Xfer_Space.bit_.b0
#define     DCPXfer_atMCURAM 	_Xfer_Space.bit_.b1
#define    	DCPXfer_atEEROM 	_Xfer_Space.bit_.b2
#define    	DCPXfer_atATA 		_Xfer_Space.bit_.b3
#define   	BOTXfer_atRAM 		_Xfer_Space.bit_.b4
#define   	BOTXfer_atATA 		_Xfer_Space.bit_.b5
#define    	BOTXfer_atROM 		_Xfer_Space.bit_.b6


STRUC_EXT HW_ATA_DEVICES_EXTENSION	Hal4ATA_DevExt;
#define     ATADevExt_IDData		Hal4ATA_DevExt.IdentifyData



INT8_EXT            Hal4ATA_SectCntInBlk;

//*************************************************************************
//  Public temp var
//*************************************************************************


STRUC_EXT FLEXI_INT32 tempvars4UsbReq;		//????????????????

STRUC_EXT char_bit   _FlexByte;
#define    FlexByte		_FlexByte.char_
#define    FlexByte_b0 	_FlexByte.bit_.b0
#define    FlexByte_b1 	_FlexByte.bit_.b1
#define    FlexByte_b2 	_FlexByte.bit_.b2
#define    FlexByte_b3 	_FlexByte.bit_.b3
#define    FlexByte_b4 	_FlexByte.bit_.b4
#define    FlexByte_b5 	_FlexByte.bit_.b5
#define    FlexByte_b6 	_FlexByte.bit_.b6
#define    FlexByte_b7 	_FlexByte.bit_.b7

//INT8_EXT            TempByte;



//*************************************************************************
// USB protocol function pointer arrays協議函數指針
//*************************************************************************


 void (*StandardDeviceRequest[MAX_STD_REQUEST])(void) =
{
	Chap9_GetStatus,
	Chap9_ClearFeature,
	MLsup_StallEP0,
	Chap9_SetFeature,
	MLsup_StallEP0,
	Chap9_SetAddress,
	Chap9_GetDescriptor,
	MLsup_StallEP0,
	Chap9_GetConfiguration,
	Chap9_SetConfiguration,
	Chap9_GetInterface,
	Chap9_SetInterface,
};

void (*ClassDeviceRequest[MAX_CLASS_REQUEST])(void) =
{
	TPBulk_ResetATA,
    TPBulk_GetMaxLUN
};

/*
const void (*VendorDeviceRequest[MAX_VENDOR_REQUEST])(void) =
{
	MLsup_StallEP0
};
*/


//*************************************************************************
//  Functions
//*************************************************************************
  

int main(void)
{
	BCFG2 = 0x00002480;

	PINSEL0 = 0x00000005;		    // 設置所有管腳連接GPIO 設置I/O連接到UART0
   	PINSEL1 = 0x55400000;
	PINSEL2 = 0x0f814914;
	
	IO0DIR = 0x00002400;			//D12、P0.15(U_V):輸入 P0.13(SUSP):輸出 P0.10(USBRST):輸出

   	IO0DIR |= OUT_PUT_P0;				// IDE 接口定義
	IO1DIR |= OUT_PUT_P1; 

	
    if(Hal4ATA_FindIDEDevice()==0)	//查找IDE設備
		while(1);					//沒找到可用設備

    Hal4Sys_InitD12();				//初始化D12
	IOCLR = SUSP;			// 

	while (readchipid() != 0x1012);//讀取ID號

// Connect to USB Host
    MLsup_ReconnectUSB();

    // Init FSM
	DCPFSMstate = USBFSM4DCP_IDLE;
    BOTFSMstate = USBFSM4BOT_IDLE;// USBFSM4BOT_IDLE=0x01


       // LowerIRQL();  //LowerIRQL() == EA=1 , (no IRQ when EA=0!)
        // USB Control Pipe

    /* Main program loop */
    while(TRUE)
    {		
    	if (!(IOPIN & USBINT))
		{
			usb_isr();
		}
		
		// Enable Interrupt for Interrupt Type Event Stimulie
        // LowerIRQL();  //LowerIRQL() == EA=1 , (no IRQ when EA=0!)
        // USB Control Pipe
        if (DCPFSM_SetupProc)	// DCPFSM_SetupProc=DCPFSMstate^0
        {
        	//RaiseIRQL();						//關中斷
            MLsup_USBSetupTokenHandler();
            //LowerIRQL();						//開中斷
		} // if SetupProc

		// USB Bulk Pipe
        //RaiseIRQL();
        //if(D12BF_SetupOverwritten==1)
        {
            if(BOTFSM_IDLE)   //BOTFSM_IDLE = BOTFSMstate^0
            {
			    Hal4Sys_D12CmdPortOutB( 0x04);// SelectEP BulkOut
			    FlexByte = Hal4Sys_D12DataPortInB();
                if(FlexByte_b0 == 1) // BulkOut Full
                    TPBulk_CBWHandler(); // Goto BOTFSMstate_CBWProc
           	   // Hal4D12_ReadLastTransactionStatus(5); 
            } // if BOT in IDLE


            while(BOTFSM_DataOut) //BOTFSM_DataOut = BOTFSMstate^3

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看一区日韩| 高清在线观看日韩| 欧美久久高跟鞋激| 性欧美疯狂xxxxbbbb| 欧美日韩高清一区二区三区| 亚洲成人中文在线| 日韩欧美在线观看一区二区三区| 日韩精品电影在线| 欧美www视频| 午夜免费久久看| 欧美浪妇xxxx高跟鞋交| 亚洲第一搞黄网站| 欧美xxx久久| 国产91精品在线观看| 亚洲欧美在线aaa| 色av一区二区| 免费一级片91| 26uuu欧美| 不卡免费追剧大全电视剧网站| 亚洲色欲色欲www| 777a∨成人精品桃花网| 国产精品夜夜嗨| 亚洲色大成网站www久久九九| 欧美三级视频在线| 久久精品国产一区二区| 国产精品久久久久永久免费观看 | 在线影院国内精品| 亚洲永久精品大片| 精品国产乱码久久久久久久久| 国产精品亚洲综合一区在线观看| 伊人色综合久久天天人手人婷| 欧美群妇大交群的观看方式| 国产乱码精品一区二区三区忘忧草 | 欧美精选午夜久久久乱码6080| 久久精品国产色蜜蜜麻豆| 亚洲国产精品成人久久综合一区| 91久久人澡人人添人人爽欧美| 久久草av在线| 亚洲欧美色一区| 精品久久久久一区二区国产| 99精品国产99久久久久久白柏| 日精品一区二区三区| 国产精品无码永久免费888| 欧美精品三级日韩久久| 粉嫩蜜臀av国产精品网站| 污片在线观看一区二区| 国产精品乱码一区二三区小蝌蚪| 欧美电影影音先锋| 99re6这里只有精品视频在线观看| 午夜欧美视频在线观看| 亚洲少妇最新在线视频| 国产亚洲精品福利| 宅男在线国产精品| 91丨porny丨中文| 国产成人在线免费观看| 免费人成网站在线观看欧美高清| 亚洲色图在线视频| 国产精品传媒入口麻豆| 国产日本亚洲高清| 日韩欧美中文字幕制服| 精品av综合导航| 欧美精品日韩综合在线| 在线观看亚洲a| 丰满白嫩尤物一区二区| 国产精品一区二区三区网站| 亚洲成av人综合在线观看| 国产亚洲精品bt天堂精选| 欧美一区二区不卡视频| 欧美亚洲自拍偷拍| 色成年激情久久综合| 成人精品视频网站| 国产大陆a不卡| 国产在线国偷精品免费看| 捆绑变态av一区二区三区| 秋霞成人午夜伦在线观看| 日韩电影免费在线观看网站| 午夜久久久久久久久久一区二区| 亚洲va国产天堂va久久en| 亚洲韩国精品一区| 亚洲成人三级小说| 五月天精品一区二区三区| 亚洲成av人片在线观看| 首页国产丝袜综合| 日本不卡一二三区黄网| 久久精品免费观看| 国产麻豆精品久久一二三| 国产一区二区伦理| 国产亚洲欧美激情| 69p69国产精品| 欧美一区二区精品在线| 欧美电视剧免费全集观看| 精品国产乱码91久久久久久网站| 久久新电视剧免费观看| 中文字幕精品一区| 亚洲日本中文字幕区| 亚洲综合色婷婷| 日韩成人一区二区三区在线观看| 另类小说视频一区二区| 国产成人在线视频网址| 91视频一区二区三区| 精品视频在线看| 日韩欧美色综合| 国产午夜精品久久久久久久| 综合久久国产九一剧情麻豆| 亚洲香肠在线观看| 免播放器亚洲一区| 国产精品中文欧美| 在线免费一区三区| 精品国产亚洲在线| 1区2区3区国产精品| 偷拍日韩校园综合在线| 欧美亚洲免费在线一区| 91精品国产免费| 国产精品色呦呦| 午夜日韩在线观看| 日韩视频在线一区二区| 亚洲国产岛国毛片在线| 一区二区三区久久| 精品一区二区三区欧美| zzijzzij亚洲日本少妇熟睡| 欧美美女直播网站| 国产三级欧美三级| 亚洲r级在线视频| 国产高清一区日本| 欧美日韩午夜影院| 国产精品久久毛片av大全日韩| 日韩中文字幕一区二区三区| 国产成人aaa| 日韩一级完整毛片| 亚洲男人电影天堂| 国产一区二区精品久久99| 欧美亚洲动漫精品| 国产欧美日韩视频一区二区| 天天色天天爱天天射综合| 成人av高清在线| 欧美不卡一区二区三区| 亚洲午夜精品一区二区三区他趣| 国产精品一区久久久久| 欧美一区二区三级| 一二三区精品福利视频| 高清国产一区二区三区| 欧美v日韩v国产v| 五月天国产精品| 欧美影片第一页| 国产成人精品亚洲777人妖| 91片黄在线观看| 久久久精品tv| 首页国产欧美日韩丝袜| eeuss鲁一区二区三区| 欧美本精品男人aⅴ天堂| 亚洲国产日日夜夜| 91免费看`日韩一区二区| 日本一区二区免费在线观看视频| 欧美aⅴ一区二区三区视频| 在线亚洲人成电影网站色www| 国产婷婷精品av在线| 国产一区二区三区黄视频| 日韩视频在线你懂得| 奇米影视在线99精品| 欧美日韩你懂得| 亚洲精品免费视频| 94色蜜桃网一区二区三区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲欧美一区二区三区孕妇| 成人性视频免费网站| 国产日韩av一区二区| 国产黄人亚洲片| 中文一区一区三区高中清不卡| 国产精品影视在线| 欧美国产精品一区二区| 国产很黄免费观看久久| 国产精品久久久久久久久图文区 | 欧美日韩免费高清一区色橹橹 | 91精品国产综合久久精品app | 911国产精品| 秋霞午夜av一区二区三区| 欧美xxx久久| 成人一区二区三区视频| 国产精品久久久久久户外露出| 成人av免费观看| 亚洲一区二区三区中文字幕| 欧美高清性hdvideosex| 奇米精品一区二区三区在线观看| 日韩免费高清电影| 国产精品香蕉一区二区三区| 国产精品久久一级| 91久久奴性调教| 久热成人在线视频| 中文字幕乱码一区二区免费| av一区二区久久| 亚洲成人黄色影院| 亚洲精品一区二区三区影院| 国产成人日日夜夜| 一区二区三区日韩| 日韩欧美国产一区在线观看| 粉嫩久久99精品久久久久久夜 | 午夜在线成人av| 26uuu国产一区二区三区| 不卡视频在线看| 日韩专区中文字幕一区二区|