fs_info.c
上传用户:yj_qqy
上传日期:2017-01-28
资源大小:2911k
文件大小:9k
源码类别:

uCOS

开发平台:

C/C++

  1. /*
  2. **********************************************************************
  3. *                          Micrium, Inc.
  4. *                      949 Crestview Circle
  5. *                     Weston,  FL 33327-1848
  6. *
  7. *                            uC/FS
  8. *
  9. *             (c) Copyright 2001 - 2003, Micrium, Inc.
  10. *                      All rights reserved.
  11. *
  12. ***********************************************************************
  13. ----------------------------------------------------------------------
  14. File        : fs_conf.c
  15. Purpose     : File system configurable global data
  16.               Unless you are going to add own device drivers, or you
  17.               would like to modify e.g. order in the device table, you
  18.               do not have to modify this file. Usually all configuration
  19.               can be made in fs_conf.h.
  20. ----------------------------------------------------------------------
  21. Known problems or limitations with current version
  22. ----------------------------------------------------------------------
  23. None.
  24. ---------------------------END-OF-HEADER------------------------------
  25. */
  26. /*********************************************************************
  27. *
  28. *             #include Section
  29. *
  30. **********************************************************************
  31. */
  32. #include "fs_port.h"
  33. #include "fs_dev.h"
  34. #include "fs_api.h"
  35. #include "fs_fsl.h"
  36. #include "fs_int.h"
  37. #include "fs_conf.h"
  38. /*********************************************************************
  39. *
  40. *             Externals
  41. *
  42. **********************************************************************
  43. */
  44. /*********************************************************************
  45. *
  46. *             File System Layer Function Tables
  47. */
  48. /* FAT function table */
  49. #ifdef FS_USE_FAT_FSL
  50.  extern const FS__fsl_type FS__fat_functable;
  51. #endif /* FS_USE_FAT_FSL */
  52. /*********************************************************************
  53. *
  54. *             Device Driver Function Tables
  55. *
  56.   If you add an own device driver, you will have to add an external
  57.   for its function table here.
  58. */
  59. /* RAMDISK_DRIVER function table */
  60. #if FS_USE_RAMDISK_DRIVER
  61.   extern const FS__device_type    FS__ramdevice_driver;
  62. #endif  /* FS_USE_RAMDISK_DRIVER */
  63. /* WINDRIVE_DRIVER function table */
  64. #if FS_USE_WINDRIVE_DRIVER
  65.   extern const FS__device_type    FS__windrive_driver;
  66. #endif  /* FS_USE_WINDRIVE_DRIVER */
  67. /* SMC_DRIVER function table */
  68. #if FS_USE_SMC_DRIVER
  69.   extern const FS__device_type    FS__smcdevice_driver;
  70. #endif /* FS_USE_SMC_DRIVER */
  71. /* MMC_DRIVER function table */
  72. #if FS_USE_MMC_DRIVER
  73.   extern const FS__device_type    FS__mmcdevice_driver;
  74. #endif /* FS_USE_SMC_DRIVER */
  75. #if FS_USE_IDE_DRIVER
  76.   extern const FS__device_type    FS__idedevice_driver;
  77. #endif /* FS_USE_IDE_DRIVER */
  78. #if FS_USE_FLASH_DRIVER
  79.   extern const FS__device_type    FS__flashdevice_driver;
  80. #endif /* FS_USE_FLASH_DRIVER */
  81. /*********************************************************************
  82. *
  83. *             Local variables        
  84. *
  85. **********************************************************************
  86. */
  87. /*********************************************************************
  88. *
  89. *             Logical Block Layer Cache
  90. *
  91.   If FS_USE_LB_READCACHE is enabled, then the buffer definition
  92.   for each media is done here according to the settings in
  93.   fs_conf.h.
  94. */
  95. #if FS_USE_LB_READCACHE
  96.   /*
  97.     RAMDISK cache settings.
  98.     There is no cache required for RAM.
  99.   */
  100.   #define FS_CACHEINFO_RAMDISK_DRIVER     0,
  101.   /* 
  102.     Windrive cache settings. 
  103.     The driver does have its own cache. Therefore we never
  104.     use LB read cache for it.
  105.   */
  106.   #define FS_CACHEINFO_WINDRIVE_DRIVER    0,
  107.   /*
  108.     FLASH cache settings.
  109.     There is no read cache required for flash.
  110.   */
  111.   #define FS_CACHEINFO_FLASH_DRIVER       0,
  112.   /* SmartMedia cache settings */
  113.   #ifndef FS_SMC_CACHENUM
  114.     #define FS_SMC_CACHENUM 0
  115.   #endif
  116.   #if ((FS_SMC_CACHENUM) && (FS_USE_SMC_DRIVER))
  117.     static FS__CACHE_BUFFER  _FS__SMC_Buffers[FS_SMC_MAXUNIT][FS_SMC_CACHENUM];
  118.     static FS__LB_CACHE      _FS__SMC_Cache[FS_SMC_MAXUNIT] = 
  119.       #if (FS_SMC_MAXUNIT==1)
  120.         { {FS_SMC_CACHENUM, 0, &_FS__SMC_Buffers[0][0]} };
  121.       #elif (FS_SMC_MAXUNIT==2)
  122.         { {FS_SMC_CACHENUM, 0, &_FS__SMC_Buffers[0][0]},
  123.           {FS_SMC_CACHENUM, 0, &_FS__SMC_Buffers[1][0]} };
  124.       #else
  125.         #error Please define _FS__SMC_Cache for desired number of units
  126.       #endif
  127.     #define FS_CACHEINFO_SMC_DRIVER     &_FS__SMC_Cache[0],
  128.   #else
  129.     #define FS_CACHEINFO_SMC_DRIVER     0,
  130.   #endif
  131.   
  132.   /* MMC/SD cache settings */
  133.   #ifndef FS_MMC_CACHENUM
  134.     #define FS_MMC_CACHENUM 0
  135.   #endif
  136.   #if ((FS_MMC_CACHENUM) && (FS_USE_MMC_DRIVER))
  137.     static FS__CACHE_BUFFER  _FS__MMC_Buffers[FS_MMC_MAXUNIT][FS_MMC_CACHENUM];
  138.     static FS__LB_CACHE      _FS__MMC_Cache[FS_MMC_MAXUNIT] = 
  139.       #if (FS_MMC_MAXUNIT==1)
  140.         { {FS_MMC_CACHENUM, 0, &_FS__MMC_Buffers[0][0]} };
  141.       #elif (FS_MMC_MAXUNIT==2)
  142.         { {FS_MMC_CACHENUM, 0, &_FS__MMC_Buffers[0][0]},
  143.           {FS_MMC_CACHENUM, 0, &_FS__MMC_Buffers[1][0]} };
  144.       #else
  145.         #error Please define _FS__MMC_Cache for desired number of units
  146.       #endif
  147.     #define FS_CACHEINFO_MMC_DRIVER     &_FS__MMC_Cache[0],
  148.   #else
  149.     #define FS_CACHEINFO_MMC_DRIVER     0,
  150.   #endif
  151.   
  152.   /* IDE cache settings */
  153.   #ifndef FS_IDE_CACHENUM
  154.     #define FS_IDE_CACHENUM 0
  155.   #endif
  156.   #if ((FS_IDE_CACHENUM) && (FS_USE_IDE_DRIVER))
  157.     static FS__CACHE_BUFFER  _FS__IDE_Buffers[FS_IDE_MAXUNIT][FS_IDE_CACHENUM];
  158.     static FS__LB_CACHE      _FS__IDE_Cache[FS_IDE_MAXUNIT] = 
  159.       #if (FS_IDE_MAXUNIT==1)
  160.         { {FS_IDE_CACHENUM, 0, &_FS__IDE_Buffers[0][0]} };
  161.       #elif (FS_IDE_MAXUNIT==2)
  162.         { {FS_IDE_CACHENUM, 0, &_FS__IDE_Buffers[0][0]},
  163.           {FS_IDE_CACHENUM, 0, &_FS__IDE_Buffers[1][0]} };
  164.       #else
  165.         #error Please define _FS__IDE_Cache for desired number of units
  166.       #endif
  167.     #define FS_CACHEINFO_IDE_DRIVER     &_FS__IDE_Cache[0],
  168.   #else
  169.     #define FS_CACHEINFO_IDE_DRIVER     0,
  170.   #endif
  171. #else
  172.   #define FS_CACHEINFO_RAMDISK_DRIVER     
  173.   #define FS_CACHEINFO_WINDRIVE_DRIVER    
  174.   #define FS_CACHEINFO_SMC_DRIVER         
  175.   #define FS_CACHEINFO_MMC_DRIVER         
  176.   #define FS_CACHEINFO_IDE_DRIVER
  177.   #define FS_CACHEINFO_FLASH_DRIVER 
  178. #endif  /* FS_USE_LB_READCACHE */
  179. /*********************************************************************
  180. *
  181. *             Global variables        
  182. *
  183. **********************************************************************
  184. */
  185. /*********************************************************************
  186. *
  187. *             _FS_devinfo
  188. *
  189.   This data structure does tell the file system, which file system layer
  190.   (currently FAT only) and device driver (e.g. SmartMedia or RAM disk) is
  191.   used for which device name.
  192.   If you do not specify the device name in an file system API call, the
  193.   first entry in this table will be used.
  194. */
  195. #ifndef FS_DEVINFO
  196.   #if FS_USE_SMC_DRIVER
  197.     #define FS_DEVINFO_DEVSMC     { "smc",    &FS__fat_functable, &FS__smcdevice_driver, FS_CACHEINFO_SMC_DRIVER 0 },
  198.   #else
  199.     #define FS_DEVINFO_DEVSMC
  200.   #endif
  201.   #if FS_USE_MMC_DRIVER
  202.     #define FS_DEVINFO_DEVMMC     { "mmc",    &FS__fat_functable, &FS__mmcdevice_driver, FS_CACHEINFO_MMC_DRIVER 0 },
  203.   #else
  204.     #define FS_DEVINFO_DEVMMC
  205.   #endif
  206.   #if FS_USE_IDE_DRIVER
  207.     #define FS_DEVINFO_DEVIDE     { "ide",    &FS__fat_functable, &FS__idedevice_driver, FS_CACHEINFO_IDE_DRIVER 0 },
  208.   #else
  209.     #define FS_DEVINFO_DEVIDE
  210.   #endif /* FS_USE_IDE_DRIVER */
  211.   #if FS_USE_FLASH_DRIVER
  212.     #define FS_DEVINFO_DEVFLASH   { "flash",    &FS__fat_functable, &FS__flashdevice_driver, FS_CACHEINFO_FLASH_DRIVER 0 },
  213.   #else
  214.     #define FS_DEVINFO_DEVFLASH
  215.   #endif /* FS_USE_FLASH_DRIVER */
  216.   #if FS_USE_WINDRIVE_DRIVER
  217.     #define FS_DEVINFO_DEVWINDRV  { "windrv", &FS__fat_functable, &FS__windrive_driver, FS_CACHEINFO_WINDRIVE_DRIVER 0 },
  218.   #else
  219.     #define FS_DEVINFO_DEVWINDRV
  220.   #endif
  221.   #if FS_USE_RAMDISK_DRIVER
  222.     #define FS_DEVINFO_DEVRAM     { "ram",    &FS__fat_functable, &FS__ramdevice_driver, FS_CACHEINFO_RAMDISK_DRIVER 0 },
  223.   #else
  224.     #define FS_DEVINFO_DEVRAM
  225.   #endif
  226.   #define FS_DEVINFO FS_DEVINFO_DEVSMC FS_DEVINFO_DEVMMC FS_DEVINFO_DEVIDE FS_DEVINFO_DEVFLASH FS_DEVINFO_DEVWINDRV FS_DEVINFO_DEVRAM
  227. #endif  /* FS_DEVINFO */
  228. const FS__devinfo_type _FS__devinfo[] = { FS_DEVINFO };
  229. const FS__devinfo_type *const FS__pDevInfo = _FS__devinfo;
  230. const unsigned int FS__maxdev=sizeof(_FS__devinfo)/sizeof(FS__devinfo_type);
  231. const unsigned int FS__fat_maxunit=FS_FAT_MAXUNIT;