⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 systffs.c

📁 vxworks MPC8541 BSP
💻 C
📖 第 1 页 / 共 2 页
字号:
/* sysTffs.c - Motorola 860ads system-dependent TrueFFS library *//*lyf@ok*//* Copyright 1984-1997 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01l,29jan02,dtr  Changing vxImmrGet to vxImmrIsbGet.01k,15nov01,dtr  Put in #if defined to retain file dependencies for make.01j,31may99,yp   Added comments suggested in SPR #2531901i,21apr98,yp   added tffs subdir to search path01h,11mar98,yp   made including tffsConfig.c conditional so man page                 generation does not include it.01g,09mar98,kbw  fixed a flub I missed in the sysTffsFormat function01f,09mar98,kbw  made man page edits to fix problems found by QE01e,04mar98,kbw  made man page edits01d,18jan98,hdn  added configuration macros for SIMM and PCMCIA.01c,18dec97,hdn  added comment.  cleaned up.01b,05dec97,hdn  added flDelayMsecs(), tffsSocket[]. cleaned up.01a,05nov97,hdn  written.*//*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 storespointers to the functions of this socket component driver in an 'FLSocket'structure.  When TrueFFS needs to access the flash device, it uses thesefunctions.Because this file is, for the most part, a device driver that exports itsfunctionality by registering function pointers with TrueFFS, very few of thefunctions defined here are externally callable.  For the record, theseexternal functions are flFitInSocketWindow() and flDelayLoop().  You shouldnever 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 initializationtime to register socket component drivers for all the flash devices attachedto your target.  It is this call to sysTffs() that results in assigningdrive numbers to the flash devices on your target hardware.  Drive numbersare 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 to4.  As shipped, TrueFFS supports up to five flash drives.After registering socket component drivers for a flash device, you mayformat 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 externallycallable helper function.  Internally, it calls tffsDevFormat() with apointer to a 'FormatParams' structure initialized to values that leave aspace on the flash device for a boot image. This space is outside theregion managed by TrueFFS.  This special region is necessary for bootimages because the normal translation and wear-leveling services of TrueFFSare incompatible with the needs of the boot program and the boot image itrelies upon.  To write a boot image (or any other data) into this area,use tffsBootImagePut().Finally, this file also contains define statements for symbolic constantsthat determine which MTDs, translation layer modules, and other utilitiesare ultimately included in TrueFFS.  These defines are as follows:.IP "INCLUDE_TL_NFTL"To include the NAND-based translation layer module..IP "INCLUDE_TL_FTL"To include the NOR-based translation layer module..IP "INCLUDE_TL_SSFDC"To include the SSFDC-appropriate translation layer module..IP "INCLUDE_MTD_I28F016"For Intel 28f016 flash devices..IP "INCLUDE_MTD_I28F008"For Intel 28f008 flash devices..IP "INCLUDE_MTD_I28F008_BAJA"For Intel 28f008 flash devices on the Heurikon Baja 4700..IP "INCLUDE_MTD_AMD"For AMD, Fujitsu: 29F0{40,80,16} 8-bit flash devices..IP "INCLUDE_MTD_CDSN"For Toshiba, Samsung: NAND CDSN flash devices..IP "INCLUDE_MTD_DOC2"For Toshiba, Samsung: NAND DOC flash devices..IP "INCLUDE_MTD_CFISCS"For CFI/SCS flash devices..IP "INCLUDE_MTD_WAMD"For AMD, Fujitsu 29F0{40,80,16} 16-bit flash devices..IP "INCLUDE_TFFS_BOOT_IMAGE"To include tffsBootImagePut() in TrueFFS for Tornado..LPTo exclude any of the modules mentioned above, edit sysTffs.c and undefineits associated symbolic constant.The function sysTffsFormat() is provided so one might seasily format theFlash SIMM to have the TFFS file system in one half of it.INCLUDE FILES: flsocket.h, tffsDrv.h*//* includes */#include "vxWorks.h"#include "tffs/flsocket.h"#include "tffs/tffsDrv.h"#if defined(INCLUDE_TFFS)/* defines */#define	INCLUDE_MTD_USR			/* User MTD */#define MTD_USR_IDENTIFY        FlashIdentify#undef  INCLUDE_MTD_CFIAMD#undef  INCLUDE_MTD_CFISCS#undef  INCLUDE_MTD_I28F016#undef  INCLUDE_MTD_I28F008#undef  INCLUDE_MTD_I28F008_BAJA#undef  INCLUDE_MTD_AMD#undef  INCLUDE_MTD_WAMD#define	INCLUDE_TL_FTL			/* FTL translation layer */#undef	INCLUDE_TL_SSFDC		/* SSFDC translation layer */#undef	INCLUDE_SOCKET_SIMM		/* SIMM socket interface */#undef	INCLUDE_SOCKET_PCMCIA		/* PCMCIA socket interface */#define	INCLUDE_SOCKET_GLUE		/* GLUE socket interface */#undef	INCLUDE_TFFS_BOOT_IMAGE		/* include tffsBootImagePut() */#define KILL_TIME_FUNC	 ( ((iz * iz) / (iz + iz)) / ((iy + iz) / (iy * iz)) )/* imports */extern UINT32 g_tffs_DataBase;extern UINT32 g_tffs_DataSize;IMPORT STATUS gFlashInit  (void);/* locals */LOCAL UINT32 sysTffsMsecLoopCount = 0;/*#define FLASH_WINDOWS_SIZE 0x02000000L*//* forward declarations */#ifdef	INCLUDE_SOCKET_GLUELOCAL FLBoolean glueCardDetected (FLSocket vol);LOCAL void      glueVccOn (FLSocket vol);LOCAL void      glueVccOff (FLSocket vol);#ifdef	SOCKET_12_VOLTSLOCAL FLStatus  glueVppOn (FLSocket vol);LOCAL void      glueVppOff (FLSocket vol);#endif	/* SOCKET_12_VOLTS */LOCAL FLStatus  glueInitSocket (FLSocket vol);LOCAL void      glueSetWindow (FLSocket vol);LOCAL void      glueSetMappingContext (FLSocket vol, unsigned page);LOCAL FLBoolean glueGetAndClearCardChangeIndicator (FLSocket vol);LOCAL FLBoolean glueWriteProtected (FLSocket vol);LOCAL void      glueRegister (void);#endif	/* INCLUDE_SOCKET_GLUE */#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;    UINT32 oldTick;    /* we assume followings:     *   - no interrupts except timer is happening.     *   - the loop count that consumes 1 msec is in 32 bit.     * it is 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;    gFlashInit();    #ifdef	INCLUDE_SOCKET_GLUE    glueRegister ();			/* GLUE socket interface register */#endif	/* INCLUDE_SOCKET_GLUE */    }#ifdef	INCLUDE_SOCKET_GLUE/********************************************************************************* glueRegister - install routines for the Flash GLUE** This routine installs necessary functions for the Flash GLUE.** RETURNS: N/A*/LOCAL void glueRegister (void)    {    FLSocket vol = flSocketOf (noOfDrives);    tffsSocket[noOfDrives] =	"GLUE";    vol.serialNo = 0;        vol.window.baseAddress = g_tffs_DataBase >> 12;    vol.cardDetected = glueCardDetected;    vol.VccOn =	 glueVccOn;    vol.VccOff = glueVccOff;#ifdef SOCKET_12_VOLTS    vol.VppOn =	 glueVppOn;    vol.VppOff = glueVppOff;#endif    vol.initSocket = glueInitSocket;    vol.setWindow = glueSetWindow;    vol.setMappingContext =	glueSetMappingContext;    vol.getAndClearCardChangeIndicator = glueGetAndClearCardChangeIndicator;    vol.writeProtected = glueWriteProtected;    noOfDrives++;    }/********************************************************************************* glueCardDetected - 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 glueCardDetected    (    FLSocket vol		/* pointer identifying drive */    )    {    return (TRUE);    }/********************************************************************************* glueVccOn - 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 glueVccOn    (    FLSocket vol		/* pointer identifying drive */    )    {    }/********************************************************************************* glueVccOff - turn off Vcc (3.3/5 Volts)** This routine turns off Vcc (3.3/5 Volts).** RETURNS: N/A*/LOCAL void glueVccOff    (    FLSocket vol		/* pointer identifying drive */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -