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

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

?? systffs.c

?? Kontron的ETX-P3T的BSP的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* sysTffs.c - PC Pentium/Pentium2/Pentium3 system-dependent TrueFFS library *//* Copyright 1984-1997 Wind River Systems, Inc. */#include "copyright_wrs.h"/* FAT-FTL Lite Software Development Kit * Copyright (C) M-Systems Ltd. 1995-1997	*//*modification history--------------------01t,30apr01,yp  removing assumption that Disk On Chip support will always be                 present01s,14dec00,mks  removed references to pc386 and pc486. SPR 63032.01r,29nov00,yp  cleaning up so we can build as BSP stub01q,31may99,yp  Added comments suggested in SPR #2531901p,21apr98,yp   added tffs to files included from there01o,26mar98,hdn  added DOC2_XXX macros along with windowBaseAddress().01n,11mar98,yp   made including tffsConfig.c conditional so man page		 generation does not include it.01m,09mar98,kbw  made man page edits to fix problems found by QE01l,04mar98,kbw  made man page edits01k,13feb98,hdn  commented out pcVccOff() to fix multi drive testing.01j,19jan98,hdn  fixed pcVccXX, pcVppXX. added timeout in while loop.01i,18dec97,hdn  added comment.  cleaned up.01h,11dec97,hdn  added our PCMCIA library support.01g,05dec97,hdn  added flDelayMsecs(), socketTable[]. cleanup.01f,25nov97,hdn  made each interface functions configurable.01e,24nov97,hdn  made each socket interface configurable.01d,11nov97,hdn  made flDelayLoop() dummy function.01c,11nov97,hdn  fixed comments, copyright.01b,05nov97,hdn  cleaned up.01a,09oct97,and  written by Andray in M-Systems*//*DESCRIPTIONThis library provides board-specific hardware access routines for TrueFFS.  In effect, these routines comprise the socket component driver (or drivers)for your flash device hardware.  At socket registration time, TrueFFS stores pointers to the functions of this socket component driver in an 'FLSocket' structure.  When TrueFFS needs to access the flash device, it uses these functions.  Because this file is, for the most part, a device driver that exports its functionality by registering function pointers with TrueFFS, very few of the functions defined here are externally callable.  For the record, these external functions are flFitInSocketWindow() and flDelayLoop().  You should never have any need to call these functions.  However, one of the most import functions defined in this file is neitherreferenced in an 'FLSocket' structure, nor is it externally callable.  Thisfunction is sysTffsInit().  TrueFFS calls this function at initialization time to register socket component drivers for all the flash devices attached to your target.  It is this call to sysTffs() that results in assigning drive numbers to the flash devices on your target hardware.  Drive numbers are assigned by the order in which the socket component drivers are registered.The first to be registered is drive 0, the second is drive 1, and so on up to 4.  As shipped, TrueFFS supports up to five flash drives.  After registering socket component drivers for a flash device, you may format the flash medium even though there is not yet a block device driverassociated with the flash (see the reference entry for the tffsDevCreate() routine).  To format the flash medium for use with TrueFFS, call tffsDevFormat() or, for some BSPs, sysTffsFormat().  The sysTffsFormat() routine is an optional but BSP-specific externally callable helper function.  Internally, it calls tffsDevFormat() with a pointer to a 'FormatParams' structure initialized to values that leave a space on the flash device for a boot image. This space is outside the region managed by TrueFFS.  This special region is necessary for boot images because the normal translation and wear-leveling services of TrueFFS are incompatible with the needs of the boot program and the boot image it relies upon.  To write a boot image (or any other data) into this area, use tffsBootImagePut().  INCLUDE FILES: flsocket.hSEE ALSO : tffsDevFormat tffsRawio*//* includes */#include "vxWorks.h"#include "config.h"#include "tffs/flsocket.h"#include "tffs/pcic.h"/* defines */#define INCLUDE_MTD_I28F016#define INCLUDE_MTD_I28F008#define INCLUDE_MTD_AMD#undef  INCLUDE_MTD_CFISCS#undef  INCLUDE_MTD_WAMD#define INCLUDE_TL_FTL#undef  INCLUDE_TL_SSFDC       #undef	INCLUDE_SOCKET_DOC		/* DOC socket interface */#define	INCLUDE_SOCKET_PCIC0		/* PCIC socket interface 0 */#define	INCLUDE_SOCKET_PCIC1		/* PCIC socket interface 1 */#define INCLUDE_TFFS_BOOT_IMAGE		/* include tffsBootImagePut() */#define	WINDOW_ID	0		/* PCIC window used (0-4) */#define	VPP_DELAY_MSEC	100		/* Millisecs to wait for Vpp ramp up */#define	DOC2_SCAN_ADRS_0 0xc8000	/* start of mem range to scan for DOC2 */#define	DOC2_SCAN_ADRS_1 0xf0000	/* end of mem range to scan for DOC2 */#define	PC_BASE_ADRS_0	0xd8000		/* base addr for socket 0 */#define	PC_BASE_ADRS_1	0xda000		/* base addr for socket 1 */#define KILL_TIME_FUNC	 ((iz * iz) / (iz + iz)) / ((iy + iz) / (iy * iz))#define PC_WINDOW	1		/* PCIC window no. used by TFFS */#define PC_EXTRAWS	1		/* PCIC wait state used by TFFS */#define PC_SOCKET_NAME_DOC "DOC"	/* DOC socket name for DOC */#define PC_SOCKET_NAME_0 "PCMCIA-0"	/* PCIC socket name for socket 0 */#define PC_SOCKET_NAME_1 "PCMCIA-1"	/* PCIC socket name for socket 1 *//* externs */#ifdef INCLUDE_SOCKET_DOCIMPORT unsigned windowBaseAddress (unsigned driveNo, unsigned long startAddr,                                   unsigned long endAddr);   /* nfdc2148.c */#endif /* INCLUDE_SOCKET_DOC */IMPORT PCMCIA_CTRL pcmciaCtrl;/* globals */char pcDriveNo[2] = {NONE, NONE};	/* drive number of the sockets *//* locals */LOCAL UINT32 sysTffsMsecLoopCount = 0;	/* loop count to consume milli sec */#ifndef	INCLUDE_PCMCIALOCAL FLMutex flPcicMutex = NULL;	/* protects PCIC register access  */                                        /* in multi-threaded environments */#endif	/* INCLUDE_PCMCIA *//* forward declarations */#ifdef	INCLUDE_SOCKET_DOCLOCAL FLStatus		docRegister (void);LOCAL unsigned		docWindowBaseAddress (unsigned driveNo);LOCAL FLBoolean		docCardDetected (FLSocket vol);LOCAL void		docVccOn (FLSocket vol);LOCAL void		docVccOff (FLSocket vol);#ifdef	SOCKET_12_VOLTSLOCAL FLStatus		docVppOn (FLSocket vol);LOCAL void		docVppOff (FLSocket vol);#endif	/* SOCKET_12_VOLTS */LOCAL FLStatus		docInitSocket (FLSocket vol);LOCAL void		docSetWindow (FLSocket vol);LOCAL void		docSetMappingContext (FLSocket vol, unsigned page);LOCAL FLBoolean		docGetAndClearCardChangeIndicator (FLSocket vol);LOCAL FLBoolean		docWriteProtected (FLSocket vol);#ifdef	EXITLOCAL void		docFreeSocket (FLSocket vol);#endif	/* EXIT */#endif	/* INCLUDE_SOCKET_DOC */#if	defined (INCLUDE_SOCKET_PCIC0) || defined (INCLUDE_SOCKET_PCIC1)LOCAL FLStatus		pcRegister (int socketNo, unsigned int baseAddress);#ifndef	INCLUDE_PCMCIALOCAL unsigned char	flInportb (unsigned portId);LOCAL void		flOutportb (unsigned portId, unsigned char value);LOCAL unsigned char	get365 (FLSocket vol, unsigned char reg);LOCAL void		set365 (FLSocket vol, unsigned char reg, 				unsigned char value);#endif	/* INCLUDE_PCMCIA */LOCAL FLBoolean		pcCardDetected (FLSocket vol);LOCAL void		pcVccOn (FLSocket vol);LOCAL void		pcVccOff (FLSocket vol);#ifdef	SOCKET_12_VOLTSLOCAL FLStatus		pcVppOn (FLSocket vol);LOCAL void		pcVppOff (FLSocket vol);#endif	/* SOCKET_12_VOLTS */LOCAL FLStatus		pcInitSocket (FLSocket vol);LOCAL void		pcSetWindow (FLSocket vol);LOCAL void		pcSetMappingContext (FLSocket vol, unsigned page);LOCAL FLBoolean		pcGetAndClearCardChangeIndicator (FLSocket vol);LOCAL FLBoolean		pcWriteProtected (FLSocket vol);#ifdef	EXITLOCAL void		pcFreeSocket (FLSocket vol);#endif	/* EXIT */#endif	/* defined (INCLUDE_SOCKET_PCIC0) || defined (INCLUDE_SOCKET_PCIC1) */#ifndef DOC#include "tffs/tffsConfig.c"#endif /* DOC *//********************************************************************************* sysTffsInit - board level initialization for TFFS** This routine calls the socket registration routines for the socket component* drivers that will be used with this BSP. The order of registration signifies* the logical drive number given to the drive associated with the socket.** RETURNS: N/A*/LOCAL void sysTffsInit (void)    {    UINT32 ix = 0;    UINT32 iy = 1;    UINT32 iz = 2;    int oldTick;    /* we assume followings:     *   - no interrupts except timer is happening.     *   - the loop count that consumes 1 msec is in 32 bit.     * it should be done in the early stage of usrRoot() in tffsDrv().  */    oldTick = tickGet();    while (oldTick == tickGet())	/* wait for next clock interrupt */	;    oldTick = tickGet();    while (oldTick == tickGet())	/* loop one clock tick */	{	iy = KILL_TIME_FUNC;		/* consume time */	ix++;				/* increment the counter */	}        sysTffsMsecLoopCount = ix * sysClkRateGet() / 1000;#ifdef	INCLUDE_SOCKET_DOC    (void) docRegister ();			/* Disk On Chip */#endif	/* INCLUDE_SOCKET_DOC */#ifdef	INCLUDE_SOCKET_PCIC0    (void) pcRegister (0, PC_BASE_ADRS_0);	/* flash card on socket 0 */#endif	/* INCLUDE_SOCKET_PCIC0 */#ifdef	INCLUDE_SOCKET_PCIC1    (void) pcRegister (1, PC_BASE_ADRS_1);	/* flash card on socket 1 */#endif	/* INCLUDE_SOCKET_PCIC1 */    }#ifdef	INCLUDE_SOCKET_DOC/********************************************************************************* docRegister - registration routine for M-Systems Disk On Chip (DOC) *		socket component driver** This routine populates the 'vol' structure for a logical drive with the* socket component driver routines for the M-System DOC. All socket routines* are referanced through the 'vol' structure and never from here directly** RETURNS: flOK, or flTooManyComponents if there're too many drives,*                or flAdapterNotFound if there's no controller.*/LOCAL FLStatus docRegister (void)    {    FLSocket vol;    if (noOfDrives >= DRIVES)        return (flTooManyComponents);    pVol = flSocketOf (noOfDrives);    vol.window.baseAddress =	docWindowBaseAddress (vol.volNo);    if (vol.window.baseAddress == 0)        return (flAdapterNotFound);    vol.cardDetected =		docCardDetected;    vol.VccOn =			docVccOn;    vol.VccOff =		docVccOff;#ifdef SOCKET_12_VOLTS    vol.VppOn =			docVppOn;    vol.VppOff =		docVppOff;#endif    vol.initSocket =		docInitSocket;    vol.setWindow =		docSetWindow;    vol.setMappingContext =	docSetMappingContext;    vol.getAndClearCardChangeIndicator = docGetAndClearCardChangeIndicator;    vol.writeProtected =	docWriteProtected;#ifdef EXIT    vol.freeSocket =		docFreeSocket;#endif    tffsSocket[noOfDrives] = PC_SOCKET_NAME_DOC;    noOfDrives++;    return (flOK);    } /********************************************************************************* docWindowBaseAddress - Return the host base address of the DOC2 window** This routine Return the host base address of the window.* It scans the host address range from DOC2_SCAN_ADRS_0 to DOC2_SCAN_ADRS_1* (inclusive) attempting to identify DiskOnChip 2000 memory window.** RETURNS: Host physical address of window divided by 4 KB*/LOCAL unsigned docWindowBaseAddress    (    unsigned driveNo		/* drive number */    )    {    return (windowBaseAddress (driveNo, DOC2_SCAN_ADRS_0, DOC2_SCAN_ADRS_1));    }/********************************************************************************* docCardDetected - detect if a card is present (inserted)** This routine detects if a card is present (inserted).** RETURNS: TRUE, or FALSE if the card is not present.*/LOCAL FLBoolean docCardDetected    (    FLSocket vol		/* pointer identifying drive */    )    {    return (TRUE);    }/********************************************************************************* docVccOn - turn on Vcc (3.3/5 Volts)** This routine turns on Vcc (3.3/5 Volts).  Vcc must be known to be good* on exit.** RETURNS: N/A*/LOCAL void docVccOn    (    FLSocket vol		/* pointer identifying drive */    )    {    }/********************************************************************************* docVccOff - turn off Vcc (3.3/5 Volts)** This routine turns off Vcc (3.3/5 Volts). ** RETURNS: N/A*/LOCAL void docVccOff    (    FLSocket vol		/* pointer identifying drive */    )    {    }#ifdef SOCKET_12_VOLTS/********************************************************************************* docVppOn - turns on Vpp (12 Volts)** This routine turns on Vpp (12 Volts). Vpp must be known to be good on exit.** RETURNS: flOK always*/LOCAL FLStatus docVppOn    (    FLSocket vol		/* pointer identifying drive */    )    {    return (flOK);    }/********************************************************************************* docVppOff - turns off Vpp (12 Volts)** This routine turns off Vpp (12 Volts).** RETURNS: N/A*/LOCAL void docVppOff    (    FLSocket vol		/* pointer identifying drive */    )    {    }#endif	/* SOCKET_12_VOLTS *//********************************************************************************* docInitSocket - perform all necessary initializations of the socket** This routine performs all necessary initializations of the socket.** RETURNS: flOK always*/LOCAL FLStatus docInitSocket    (    FLSocket vol		/* pointer identifying drive */    )    {    return (flOK);    }/********************************************************************************* docSetWindow - set current window attributes, Base address, size, etc** This routine sets current window hardware attributes: Base address, size,* speed and bus width.  The requested settings are given in the 'vol.window' * structure.  If it is not possible to set the window size requested in* 'vol.window.size', the window size should be set to a larger value, * if possible. In any case, 'vol.window.size' should contain the * actual window size (in 4 KB units) on exit.** RETURNS: N/A*/LOCAL void docSetWindow    (    FLSocket vol		/* pointer identifying drive */    )    {    }/********************************************************************************* docSetMappingContext - sets the window mapping register to a card address** This routine sets the window mapping register to a card address.* The window should be set to the value of 'vol.window.currentPage',* which is the card address divided by 4 KB. An address over 128MB,* (page over 32K) specifies an attribute-space address. On entry to this * routine vol.window.currentPage is the page already mapped into the window.* (In otherwords the page that was mapped by the last call to this routine.)** The page to map is guaranteed to be on a full window-size boundary.** RETURNS: N/A*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产美女搞黄色| 不卡区在线中文字幕| 国产精品系列在线观看| 97精品国产露脸对白| 91精品国产福利| 国产精品欧美一区喷水| 视频一区二区三区入口| 成人免费观看视频| 日韩欧美国产综合一区| 亚洲欧美日韩中文字幕一区二区三区 | 在线视频国产一区| 欧美va天堂va视频va在线| 自拍偷拍欧美激情| 精品亚洲国产成人av制服丝袜| 91久久精品一区二区三| 国产视频一区在线播放| 日韩电影在线一区二区| 欧美性一二三区| 亚洲天堂精品在线观看| 国产精品系列在线观看| 欧美大白屁股肥臀xxxxxx| 亚洲第一狼人社区| 欧美主播一区二区三区美女| 国产精品美女久久久久久久久 | 精品久久免费看| 性久久久久久久久| 日本二三区不卡| 亚洲欧美在线观看| www.欧美日韩| 日韩美女啊v在线免费观看| 国产乱子轮精品视频| 欧美tk丨vk视频| 狠狠色综合色综合网络| 日韩视频免费观看高清完整版 | 亚洲天堂成人网| 成人久久18免费网站麻豆| 国产亚洲欧美日韩俺去了| 久久99蜜桃精品| 久久亚洲精品小早川怜子| 久久黄色级2电影| 久久精品一区二区三区av| 国内外精品视频| 欧美国产成人在线| 91在线观看一区二区| 一区二区在线观看视频| 欧美色老头old∨ideo| 秋霞影院一区二区| 久久综合色播五月| 成人精品国产免费网站| 日韩码欧中文字| 欧美视频在线一区二区三区| 三级欧美韩日大片在线看| 欧美另类高清zo欧美| 麻豆极品一区二区三区| 国产日韩欧美a| 色一情一乱一乱一91av| 天天亚洲美女在线视频| 精品久久久久久久久久久院品网| 国产美女在线精品| 一色桃子久久精品亚洲| 欧美午夜一区二区三区| 久久精品国产秦先生| 国产欧美日韩在线视频| 日本精品视频一区二区| 日韩影院精彩在线| 欧美国产精品中文字幕| 欧美喷潮久久久xxxxx| 国产精品亚洲午夜一区二区三区 | 国产亚洲精品中文字幕| 99re视频精品| 美女一区二区视频| 亚洲欧洲无码一区二区三区| 777欧美精品| 不卡视频在线观看| 美女免费视频一区| 亚洲视频一二区| 精品国产乱码久久久久久图片| 成人一级视频在线观看| 性感美女久久精品| 国产欧美日本一区二区三区| 欧美疯狂性受xxxxx喷水图片| 国产精品中文有码| 亚洲va在线va天堂| 国产精品热久久久久夜色精品三区| 欧美二区三区的天堂| 99久久99精品久久久久久| 蜜桃精品视频在线观看| 亚洲欧美日韩中文播放| 国产欧美一区二区三区网站| 日韩一区二区免费高清| 欧洲亚洲国产日韩| 99vv1com这只有精品| 国产麻豆精品久久一二三| 天天做天天摸天天爽国产一区| 国产日韩精品视频一区| 91精品国产aⅴ一区二区| 色天天综合久久久久综合片| 国产精品白丝jk黑袜喷水| 美女网站色91| 日本最新不卡在线| 五月激情六月综合| 亚洲综合色成人| 亚洲激情欧美激情| 亚洲欧美在线高清| 日韩一区有码在线| 亚洲国产高清aⅴ视频| 久久网站热最新地址| 精品日韩99亚洲| 日韩午夜激情电影| 在线播放一区二区三区| 精品视频在线免费看| 欧美日韩一区二区在线视频| 在线免费观看日本一区| av不卡一区二区三区| 成人精品国产免费网站| 成人国产精品免费| 成人一区在线看| 91免费观看视频| 色系网站成人免费| 在线看国产日韩| 欧美日韩不卡一区| 欧美精选在线播放| 欧美一三区三区四区免费在线看| 欧美男人的天堂一二区| 3d成人动漫网站| 精品久久久久久最新网址| 久久久青草青青国产亚洲免观| 久久亚洲私人国产精品va媚药| 国产亚洲一本大道中文在线| 日本一区二区三区电影| 国产精品全国免费观看高清| 亚洲日本成人在线观看| 亚洲一区二区三区爽爽爽爽爽| 午夜久久久影院| 免费观看在线色综合| 国产成人av自拍| 欧美系列亚洲系列| 精品久久人人做人人爱| 日本一区二区视频在线观看| 亚洲另类在线一区| 全国精品久久少妇| 成人a免费在线看| 色噜噜偷拍精品综合在线| 欧美日韩精品三区| 精品国产凹凸成av人网站| 中文字幕第一区第二区| 亚洲色图一区二区| 蜜臀av一级做a爰片久久| 成人午夜电影网站| 欧美日韩亚洲综合| 国产亚洲一区二区三区| 亚洲国产日韩a在线播放性色| 九九精品一区二区| 99re这里只有精品首页| 日韩一级片网站| 亚洲丝袜美腿综合| 免费在线看成人av| 99久久久国产精品免费蜜臀| 欧美一级艳片视频免费观看| 中文字幕欧美日韩一区| 亚洲h动漫在线| 成人h动漫精品| 欧美成人高清电影在线| 一区二区三区四区不卡在线 | 国产精品1024| 欧美日韩一区在线| 国产亚洲精品aa午夜观看| 亚洲成人av中文| fc2成人免费人成在线观看播放 | 免费日韩伦理电影| 91麻豆精品在线观看| 精品区一区二区| 亚洲成人精品一区| bt7086福利一区国产| 日韩精品最新网址| 日韩不卡在线观看日韩不卡视频| 99综合影院在线| 国产亚洲午夜高清国产拍精品 | 成人免费av资源| 欧美成人r级一区二区三区| 亚洲激情男女视频| 99国产欧美另类久久久精品| 久久久久国产精品麻豆ai换脸 | 成人免费观看视频| 精品日产卡一卡二卡麻豆| 天天综合日日夜夜精品| 在线看国产日韩| 亚洲欧洲中文日韩久久av乱码| 成人午夜碰碰视频| 国产人成一区二区三区影院| 国产综合久久久久影院| 日韩一区和二区| 日韩和欧美一区二区三区| 欧美日韩一区中文字幕| 亚洲午夜免费电影| 在线观看一区二区精品视频| 亚洲综合清纯丝袜自拍| 欧美三级中文字幕| 亚洲狠狠爱一区二区三区| 一本大道久久a久久精二百|