www.pudn.com > drivers.rar > cfgffs.c


/****************************************************************************** 
 * Flash File System (ffs) 
 * Idea, design and coding by Mads Meisner-Jensen, mmj@ti.com 
 * 
 * FFS configuration 
 * 
 * $Id: cfgffs.c 1.27 Fri, 19 Dec 2003 12:00:13 +0100 tsj $ 
 * 
 ******************************************************************************/ 
 
#ifndef TARGET 
 
#include "ffs.cfg" 
 
#endif 
 
 
#if (TARGET == 1) 
	#include "config/board.cfg" 
#endif 
 
#include "ffs/ffs.h" 
#include "ffs/board/drv.h" 
 
#if ((BOARD == 35) || (BOARD == 46)) 
  #include "ffs/ffspcm.h" 
  #include "memif/mem.h" 
#endif 
 
#include  
 
/****************************************************************************** 
 * Flash Device Configuration 
 ******************************************************************************/ 
#if (TARGET == 1) 
 
// The absolutely easiest way to disable FFS altogether is to set 
// ffs_flash_manufact = 0x99 and ffs_flash_device = 0x9999. Because this is 
// (as of today at least) an undefined device, FFS will NOT initialize and 
// every FFS function call will fail (with no side-effects). 
 
// FFS will automatically detect the flash device if both ffs_flash_manufact 
// and ffs_flash_device are zero. Note that this works *only* if the flash 
// device is mapped at address zero. Otherwise you *have* to supply 
// the flash_base_addr. 
 
// FFS can be configured to run in ram only. In this case the 
// 'ffs_flash_manufact' must be set to MANUFACT_RAM and an address to a 
// static user allocated ram buffer must be applied to the variable 
// 'ffs_flash_address'. In a ram configuration the 'ffs_flash_device' is an 
// arbitrary value that must be in sync with the 'device code' value chosen 
// in dev.c. 
 
 
#if (BOARD == 43) 
	volatile uint32 flash_base_addr = 0x4000000;  // Esample - Flash at CS5  
#elif ((BOARD == 70)|| (BOARD==71)) 
	volatile uint32 flash_base_addr = 0x6000000;  /* Isample - Flash at CS3 */	 
#else 
	volatile uint32 flash_base_addr = 0x0;        // Flash at CS0 
#endif 
 
 
#if ((BOARD == 35) || (BOARD == 46)) // P2 and F-sample 
// Hardwire both manufacture and device conf. 
uint16 ffs_flash_manufact    = MANUFACT_RAM; 
uint16 ffs_flash_device      = 0x0804; // RAM 
uint32 ffs_ram_image_address = FFS_BASE_ADDRESS; // Located in ffspcm.h or??? 
 
#else 
uint16 ffs_flash_manufact = 0x00; // autodetect device 
//uint16 ffs_flash_manufact = MANUFACT_RAM; 
//uint16 ffs_flash_manufact = 0x04; // Fujitsu 
//uint16 ffs_flash_manufact = 0xBF; // SST 
 
uint16 ffs_flash_device   = 0x0000; // autodetect device 
//uint16 ffs_flash_device   = 0x0404; // RAM 
//uint16 ffs_flash_device   = 0xB496; // Fujitsu stacked device 
 
uint32 ffs_ram_image_address = 0;  // Dummy 
 
#endif // BOARD == 35/46 
 
#else // TARGET == 1 
 
uint16 ffs_flash_manufact = 'T'; 
 
uint16 ffs_flash_device   = 0x0F10; // Test device: 16x64kB blocks 
//uint16 ffs_flash_device   = 0x8010; // Test device: 128x64kB blocks 
//uint16 ffs_flash_device   = 0x0811; // Test device: 8x128kB blocks 
//uint16 ffs_flash_device   = 0x080D; // Test device: 8x8kB blocks 
//uint16 ffs_flash_device   = 0x0404; // Test device: 4x4kB blocks 
 
volatile uint32 flash_base_addr       = 0;  // Dummy    /*Modified by ZhangTing for PC simulator 2006-08-26*/ 
uint32 ffs_ram_image_address = 0;  // Dummy 
#endif 
 
 
/****************************************************************************** 
 * ffs_is_modify_valid() 
 ******************************************************************************/ 
 
// This is function to be implemented by the application programmer. It is 
// called by ffs when a read-only object is about to be modified or 
// removed. It should return zero if the operation should be 
// disallowed. Returning non-zero means go ahead. 
effs_t ffs_is_modifiable(const char *name) 
{ 
    // default is to allow any modification of read-only objects. 
 
    // example of how to disallow modifying a specific object... 
    if (strcmp("IMEI", &name[strlen(name) - 4]) == 0) 
        return 0; 
 
    return 1; 
}