星期二, 5月 27, 2014

http://www.if-not-true-then-false.com/2012/svn-subversion-backup-and-restore/
  1. svnadmin dump /svn/repository_path > dumpfile
  2. svnadmin load /svn/repository_path < dumpfile

  1. svnadmin hotcopy c:\repository d:\repobak
  2.                               來源             備份處
  3. svnadmin load backrepo < dumpfile

星期六, 5月 24, 2014

Camera






DIGITIMES & 2014 secutech























星期二, 5月 13, 2014

FAT Sample



http://webcache.googleusercontent.com/search?q=cache:http://read.pudn.com/downloads167/ebook/768493/lpc2136/fat/fat.c__.htm

www.pudn.com > 317676632136tft.rar > fat.c, change:2008-06-20,size:10191b


#include "fat.h" 
 
INT8U  fname[20][8]; 
INT8U  fext[20][3]; 
INT32U fclust[20]; 
INT8U  fcount; 
INT32U fsize[20]; 
 
 
 
 
 
INT32U  NextCluster;       //指向当前正在读取文件的簇号 
INT32U  SectorIndex=0;     //正在读扇区 
 
 
//////////////////////////////////////////////////////////////////////////////// 
//磁盘分区信息 
//////////////////////////////////////////////////////////////////////////////// 
INT8U Partition_Active;    // 0x80代表该分区为缺省分区 
INT8U Partition_StartHead;   // 该分区入口的磁头地址 
INT16U Partition_StartCylSect;   // 该分区入口的扇区地址和柱面地址 
INT8U Partition_PartType;    // 该分区类型 
INT8U Partition_EndHead;    // 该分区结束的扇区地址 
INT16U Partition_EndCylSect;   // 该分区结束的柱面地址 
INT32U Partition_StartLBA;    // 该分区内第一个扇区地址 
INT32U Partition_Size;     // 该分区所包含的扇区总数 
 
 
 
//////////////////////////////////////////////////////////////////////////////// 
//fat32 BPB结构,包括扩展BPB 
//////////////////////////////////////////////////////////////////////////////// 
INT8U BS_jmpBoot[3];     //jmp code 
INT8U BS_OEMName[8];     //oem and os like dos5.0 
 
INT16U BPB_BytesPerSec;     //扇区字节数 
INT8U BPB_SecPerClus;     //每簇扇区数 
INT16U BPB_RsvdSecCnt;     //保留扇区数 
INT8U BPB_NumFATs;     //FAT数目 
INT16U BPB_RootEntCnt;     //根目录项数 0 
INT16U BPB_TotSec16;      //小扇区总数 0 
INT8U BPB_Media;      //媒体描述符 
INT16U BPB_FATSz16;      //每FAT扇区数fat32不用为0 
INT16U BPB_SecPerTrk;      //每道扇区数 
INT16U BPB_NumHeads;      //磁头数 
INT32U BPB_HiddSec;      //隐藏扇区数 
INT32U BPB_TotSec32;      //总扇区数    
INT32U BPB_FATSz32;     //每FAT扇区数fat32 
INT16U BPB_ExtFlags;     //fat32扩展标志 
INT16U  BPB_FSVer;      //fat32特有,高位为fat32的主版本号,底位为次版本号 
INT32U BPB_RootClus;     //根目录簇号 
INT16U BPB_FSInfo;      //文件系统信息扇区号 
INT16U BPB_BKBootSec;     //引导扇区备份号 
INT8U BPB_Reserved[12];    //保留空间 
 
INT8U BS_drvNum;         //物理驱动器号 
INT8U BS_Reservd1;     //保留 
INT8U BS_BootSig;      //扩展引导标签 
INT32U BS_VolID;      //分区序号 
INT8U BS_VolLab[11];     //卷标 
INT8U BS_FilSysType[8];    //系统ID 
 
 
 
//////////////////////////////////////////////////////////////////////////////// 
//目录信息 
//////////////////////////////////////////////////////////////////////////////// 
INT8U   deName[8]; 
INT8U   deExtension[3]; 
INT32U  Clust;        //当前目录的簇号 
INT16U  Nums;         //仅FAT12—FAT16中的根目录区有效 
INT32U  Index;        //当前的BLOCK中目录项索引 
INT32U  FileSize;       //文件长度 
 
 
//////////////////////////////////////////////////////////////////////////////// 
//文件信息 
//////////////////////////////////////////////////////////////////////////////// 
INT8U DIR_Name[11];     //文件名,没有. 
INT8U DIR_Attr;             //文件属性,自低至高,只读、隐藏、系统、卷标、子目录、归档 
INT8U DIR_NTRes;            //系统保留 
INT8U DIR_CrtTimeTenth;      //创建时间的10毫秒位 
INT16U DIR_CrtTime;          //创建时间 
INT16U DIR_CrtDate;          //创建日期 
INT16U DIR_LastAccDate;      //最后访问日期 
INT16U DIR_FstClusHI;        //文件起始簇号高16位                
INT16U DIR_WrtTime;          //最近修改时间 
INT16U DIR_WrtDate;          //最近修改日期 
INT16U DIR_FstClusLO;        //文件起始簇号的低16位                
INT32U DIR_FileSize;         //文件长度 
 
 
 
//////////////////////////////////////////////////////////////////////////////// 
// 
//////////////////////////////////////////////////////////////////////////////// 
INT32U  FAT1Sec;      //FAT1表的位置 
INT32U  FAT2Sec; 
INT32U  FirstDataSector;    //第一个根目录位置,区号为2 
INT32U  FirstDirSector; 
//////////////////////////////////////////////////////////////////////////////// 
 
INT8U   BUFFER[512];  
 
INT8U MP3_BUFFER[512]; 
INT8U  TEXT[512]; 
 
INT8U filetype[][3] ={ {"MP3"},{"WMA"},{"MID"},{"LRC"}}; 
 
 
 
INT32U  FAT_MASK; 
INT16U  RootDirEnts;         // 根目录总的项数(FAT12&FAT16) 
 
 
INT8U Fat_Init(void) 
{    
  
 uint32 j; 
 SD_ReadBlock(0,BUFFER);   
  
 for(j=0;j<512 0="" 0x05="" 0x0b="" 0xe5="" 16="" 1="" 24="" 2="" 3="" 4bytes="" 8="" a="" amp="" artinfo.prstartlba="" artition_parttype="=" artition_startlba="" attr_directory="" attr_long_filename="" bits="" bpb710="" bpb="" bpb_bkbootsec="BUFFER[50]" bpb_bytespersec="BUFFER[11]" bpb_extflags="BUFFER[40]" bpb_fatsz16="BUFFER[22]" bpb_fatsz32="BUFFER[36]" bpb_fsinfo="BUFFER[48]" bpb_fsver="BUFFER[42]" bpb_hiddsec="BUFFER[28]" bpb_media="BUFFER[21];" bpb_numfats="BUFFER[16];" bpb_numheads="BUFFER[26]" bpb_rootclus="BUFFER[44]" bpb_rootentcnt="BUFFER[17]" bpb_rsvdseccnt="BUFFER[14]" bpb_secperclus="BUFFER[13];" bpb_secpertrk="BUFFER[24]" bpb_totsec16="BUFFER[19]" bpb_totsec32="BUFFER[32]" break="" bs_bootsig="BUFFER[66];" bs_drvnum="BUFFER[64];" bs_oemname="" bs_reservd1="BUFFER[65];" bs_volid="BUFFER[67]" buffer="" clust="(BUFFER[tem+20]<<16)" cluster="" deextension="" dename="" directory="" do="" ector="" eserved="BUFFER[52];" fat1sec="BPB_RsvdSecCnt+Partition_StartLBA;" fat2sec="FAT1Sec+BPB_FATSz32;" fat32="" fat_mask="FAT32_MASK;" fatnextcluster="" fatoffset="" filesize="(BUFFER[tem+28])" filetype="" firstdatasector="FAT2Sec+BPB_FATSz32;" for="" getfileclust="" i="" if="" ilsystype="" index="0;" int16u="" int32u="" int8u="" irstdatasector="" is="" ismusicfile="" it="" j="" message="" ndex="" nextcluster="0;" offset="0;" ollab="" part_type_fat32="" partion="" partition_parttype="BUFFER[450];" partition_size="BUFFER[458]+(BUFFER[459]<<8)+(BUFFER[460]<<16)+(BUFFER[461]<<24);" partition_startlba="BUFFER[454]+(BUFFER[455]<<8)+(BUFFER[456]<<16)+(BUFFER[457]<<24);" read="" readblockforcluster="" return="" sd_readblock="" sector="FAT1Sec" smusicfile="" strname="" struct="" tem="" text="" tmp="" void="" while="" x0200="" x02="" x08="" x0fffffff="" x20="" xf9="" ytespersec="">>9);    // 计算FAT扇区号 
        offset = fatOffset % BPB_BytesPerSec;                 // 计算FAT扇区号中表项的偏移地址 
        nextCluster = ReadBlockforCluster(sector,offset);    // 读取下一个簇号  
   // } 
    /* 
    else if(Partition_PartType == PART_TYPE_FAT16)           // 一个表项为 2bytes(16 bits) 
    {     
        fatOffset = cluster << 1;                          // 计算FAT扇区号 
        //sector = FirstFATSector + (fatOffset / BPB_BytesPerSec); 
        offset = fatOffset % BPB_BytesPerSec;        // 计算FAT扇区号中表项的偏移地址 
  nextCluster = ReadBlockforCluster(sector,offset); 
    }  
   */ 
    if (nextCluster >= (CLUST_EOFS & FAT_MASK))    // 是否文件的结束簇 
    { 
        nextCluster = CLUST_EOFE; 
    } 
    return nextCluster; 
}   
 
 
void GetMusicFile(void) 
  { 
    uint8 i; 
     fcount=0; 
    while(1) 
    { 
      GetFileClust();  
       
      if(Index==0) break; 
       
      for(i=0;i<8 deextension="" dename="" fcount="" fname="" for="" i="" if="">=65)  fext[fcount][i]=deExtension[i]+0x20; 
          
         else fext[fcount][i]=deExtension[i]; 
         } 
          
      fclust[fcount]=Clust; 
       
      fsize[fcount]=FileSize; 
       
      fcount++; 
       
      } 
    }