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

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

?? fat_ioct.c

?? uCOS uCGUI uCFS 在ADS下調試通過 LPC2292
?? C
?? 第 1 頁 / 共 3 頁
字號:
  }
#if (FS_FAT_NOFAT32==0)
  else {
    /* FAT32 */
    /* FATSz32 */
    buffer[36]  = (char)(bpb.FATSz32 & 0xff);
    buffer[37]  = (char)((FS_u32)(bpb.FATSz32 & 0x0000ff00UL) >> 8);
    buffer[38]  = (char)((FS_u32)(bpb.FATSz32 & 0x00ff0000UL) >> 16);
    buffer[39]  = (char)((FS_u32)(bpb.FATSz32 & 0xff000000UL) >> 24);
    /* EXTFlags */
    buffer[40]  = (char)(bpb.ExtFlags & 0xff);
    buffer[41]  = (char)((unsigned int)(bpb.ExtFlags & 0xff00) >> 8);
    /* FSVer = 0:0 */
    buffer[42]  = 0x00;
    buffer[43]  = 0x00;
    /* RootClus */
    buffer[44]  = (char)(bpb.RootClus & 0xff);
    buffer[45]  = (char)((FS_u32)(bpb.RootClus & 0x0000ff00UL) >> 8);
    buffer[46]  = (char)((FS_u32)(bpb.RootClus & 0x00ff0000UL) >> 16);
    buffer[47]  = (char)((FS_u32)(bpb.RootClus & 0xff000000UL) >> 24);
    /* FSInfo */
    buffer[48]  = (char)(bpb.FSInfo & 0xff);
    buffer[49]  = (char)((unsigned int)(bpb.FSInfo & 0xff00) >> 8);
    /* BkBootSec = 0x0006; */
    buffer[50]  = 0x06;
    buffer[51]  = 0x00;
    /* Reserved */
    for (i = 52; i < 64; i++) {
      buffer[i] = (char)0x00;
    }
    /* DrvNum = 0x00 (floppy) */
    buffer[64]  = (char)0x00;
    /* Reserved1 = 0x00 (floppy) */
    buffer[65]  = (char)0x00;
    /* BootSig = 0x00 (next three fields are not 'present') */
    buffer[66]  = (char)0x00;
    /* VolID = 0x00000000 (serial number, e.g. date/time) */
    for (i = 67; i < 71; i++) {
      buffer[i] = (char)0x00;
    }
    /* VolLab = ' ' */
    for (i = 71; i < 82; i++) {
      buffer[i] = (char)0x20;
    }
    /* FilSysType = 'FAT12' */
    FS__CLIB_strncpy(&buffer[82], "FAT32   ", 8);
  }
#endif /* FS_FAT_NOFAT32==0 */
  /* Signature = 0xAA55 */
  buffer[510] = (char)0x55;
  buffer[511] = (char)0xaa;
  /* Write BPB to media */
  i = FS__lb_write(pDriver, Unit, 0, (void*)buffer);
  if (i < 0) {
    FS__fat_free(buffer);
    return -1;
  }
  if (FSysType == 2) {
    /* Write backup BPB */
    i = FS__lb_write(pDriver, Unit, 6, (void*)buffer);
    if (i<0) {
      FS__fat_free(buffer);
      return -1;
    }
  }
  /*  Init FAT 1 & 2   */
  FS__CLIB_memset(buffer, 0x00, (FS_size_t)FS_FAT_SEC_SIZE);
  for (sector = 0; sector < 2 * (bpb.FATSz16 + bpb.FATSz32); sector++) {
    value = sector % (bpb.FATSz16 + bpb.FATSz32);
    if (value != 0) {
      i = FS__lb_write(pDriver, Unit, bpb.RsvdSecCnt + sector, (void*)buffer);
      if (i<0) {
        FS__fat_free(buffer);
        return -1;
      }
    }
  }
  buffer[0] = (char)Media;
  buffer[1] = (char)0xff;
  buffer[2] = (char)0xff;
  if (FSysType != 0) {
    buffer[3] = (char)0xff;
  }
#if (FS_FAT_NOFAT32==0)
  if (FSysType == 2) {
    buffer[4]   = (char)0xff;
    buffer[5]   = (char)0xff;
    buffer[6]   = (char)0xff;
    buffer[7]   = (char)0x0f;
    buffer[8]   = (char)0xff;
    buffer[9]   = (char)0xff;
    buffer[10]  = (char)0xff;
    buffer[11]  = (char)0x0f;
  }
#endif /* FS_FAT_NOFAT32==0 */
  for (i = 0; i < 2; i++) {
    j = FS__lb_write(pDriver, Unit, (FS_u32)bpb.RsvdSecCnt + i * ((FS_u32)bpb.FATSz16+bpb.FATSz32), (void*)buffer);
    if (j < 0) {
      FS__fat_free(buffer);
      return -1;
    }
  }
  /* Init root directory area */
  FS__CLIB_memset(buffer, 0x00, (FS_size_t)FS_FAT_SEC_SIZE);
  if (bpb.RootEntCnt != 0) {
    /* FAT12/FAT16 */
    n = (((FS_u32)bpb.RootEntCnt * 32) / (FS_u32)512);
    for (i = 0; i < n; i++) {
      j = FS__lb_write(pDriver, Unit, bpb.RsvdSecCnt + 2 * bpb.FATSz16 + i, (void*)buffer);
      if (j < 0) {
        FS__fat_free(buffer);
        return -1;
      }
    }
  }
#if (FS_FAT_NOFAT32==0)
  else {
    /* FAT32 */
    n = bpb.SecPerClus;
    for (i = 0; i < n; i++) {
      j = FS__lb_write(pDriver, Unit, bpb.RsvdSecCnt + 2 * bpb.FATSz32 + (bpb.RootClus - 2) * n + i, (void*)buffer);
      if (j < 0) {
        FS__fat_free(buffer);
        return -1;
      }
    }
  }
#endif /* FS_FAT_NOFAT32==0 */
#if (FS_FAT_NOFAT32==0)
  if (FSysType == 2) {
    /* Init FSInfo */
    FS__CLIB_memset(buffer, 0x00, (FS_size_t)FS_FAT_SEC_SIZE);
    /* LeadSig = 0x41615252 */
    buffer[0]     = (char)0x52;
    buffer[1]     = (char)0x52;
    buffer[2]     = (char)0x61;
    buffer[3]     = (char)0x41;
    /* StructSig = 0x61417272 */
    buffer[484]   = (char)0x72;
    buffer[485]   = (char)0x72;
    buffer[486]   = (char)0x41;
    buffer[487]   = (char)0x61;
    /* Invalidate last known free cluster count */
    buffer[488]   = (char)0xff;
    buffer[489]   = (char)0xff;
    buffer[490]   = (char)0xff;
    buffer[491]   = (char)0xff;
    /* Give hint for free cluster search */
    buffer[492]   = (char)0xff;
    buffer[493]   = (char)0xff;
    buffer[494]   = (char)0xff;
    buffer[495]   = (char)0xff;
    /* TrailSig = 0xaa550000 */
    buffer[508]   = (char)0x00;
    buffer[509]   = (char)0x00;
    buffer[510]   = (char)0x55;
    buffer[511]   = (char)0xaa;
    i = FS__lb_write(pDriver, Unit, bpb.FSInfo, (void*)buffer);
    if (i < 0) {
      FS__fat_free(buffer);
      return -1;
    }
  }
#endif /* FS_FAT_NOFAT32==0 */
  FS__fat_free(buffer);
  return 0;
}


/*********************************************************************
*
*             _FS_FAT_AutoFormat
*
  Description:
  FS internal function. Get information about the media from the 
  device driver. Based on that informaton, calculate parameters for
  formatting that media and call the format routine.

  Parameters:
  Idx         - Index of device in the device information table 
                referred by FS__pDevInfo.
  Unit        - Unit number.
  
  Return value:
  >=0         - Media has been formatted.
  <0          - An error has occured.
*/

static int _FS_FAT_AutoFormat(int Idx, FS_u32 Unit) {
  struct {
    FS_u32 hiddennum;
    FS_u32 headnum;
    FS_u32 secnum;
    FS_u32 partsize;
  } devinfo;
  FS_u32 rootentcnt;
  FS_u32 fatsz;
  FS_u32 rootdirsectors;
  FS_u32 tmpval1;
  FS_u32 tmpval2;
  FS_u32 fatsz32;
  FS_u32 totsec32;
  FS_u32 resvdseccnt;
  FS_u16 totsec16;
  FS_u16 fatsz16;
  int i;
  unsigned char secperclust;
  char fsystype;

  /* Get info from device */
  devinfo.hiddennum = 0x00001111UL;
  devinfo.headnum   = 0x00002222UL;
  devinfo.secnum    = 0x00003333UL;
  devinfo.partsize  = 0x00004444UL;
  i = FS__lb_ioctl(FS__pDevInfo[Idx].devdriver, Unit, FS_CMD_GET_DEVINFO, 0, (void*)&devinfo);
  if (i) {
    return -1;
  }
  /* Check if the driver really supports FS_CMD_GET_DEVINFO */
  if (devinfo.hiddennum == 0x00001111UL) {
    if (devinfo.headnum == 0x00002222UL) {
      if (devinfo.secnum == 0x00003333UL) {
        if (devinfo.partsize == 0x00004444UL) {
          return -1;
        }
      }
    }
  }
  if (devinfo.partsize <= 1048576UL) {
    fsystype = 1;   /* FAT16 */
  }
#if (FS_FAT_NOFAT32==0)
  else {
    fsystype = 2;   /* FAT32 */
  }
#else
  else {
    /* FAT32 disabled */
    return -1;
  }
#endif /* FS_FAT_NOFAT32==0 */

  /* Set correct RootEntCnt & ResvdSecCnt */ 
  if (fsystype != 2) {
    /* FAT16 */
    i = 0;
    while (_FS_auto_rootcnt[i].SecNum < devinfo.partsize) {
      i++;
    }
    rootentcnt = (FS_u16)_FS_auto_rootcnt[i].Num;
    resvdseccnt = 1;
  }
#if (FS_FAT_NOFAT32==0)
  else {
    /* FAT32 */
    rootentcnt = 0;
    resvdseccnt = 0x20;
  }
#endif /* FS_FAT_NOFAT32==0 */

  /* Determinate SecPerClust */
  i = 0;
  while (_FS_auto_secperclust[i].SecNum < devinfo.partsize) {
    i++;
  }
  secperclust = (unsigned char) _FS_auto_secperclust[i].Num;
  /* 
     FAT16/FAT32 FAT size calculation 
     The formula used is following the Microsoft specification
     version 1.03 very closely. Therefore the calculated FAT
     size can be up to 8 sectors bigger than required for the 
     media. This is a waste of up to 8 sectors, but not a problem
     regarding correctness of the media's data.
  */
  rootdirsectors = ((rootentcnt * 32 ) + 511) / 512;
  tmpval1 = devinfo.partsize - (resvdseccnt + rootdirsectors);
  tmpval2 = (256 * secperclust) + 2;
#if (FS_FAT_NOFAT32==0)
  if (fsystype == 2) {
    tmpval2 = tmpval2 / 2;
  }
#endif /* FS_FAT_NOFAT32==0 */
  fatsz = (tmpval1 + (tmpval2 - 1)) / tmpval2;
  if (fsystype != 2) {
    fatsz16 = (FS_u16)fatsz;
    fatsz32 = 0;
  }
#if (FS_FAT_NOFAT32==0)
  else {
    fatsz16 = 0;
    fatsz32 = fatsz;
  }
#endif /* FS_FAT_NOFAT32==0 */

  /* Number of total sectors (512 byte units) of the media
     This is independent of FAT type (FAT12/FAT16/FAT32) */
  if (devinfo.partsize < 0x10000UL) {
    totsec16 = (FS_u16)devinfo.partsize;
    totsec32 = 0;
  }
  else {
    totsec16 = 0;
    totsec32 = devinfo.partsize;
  }
  /* Format media using calculated values */
  i = _FS_fat_format(FS__pDevInfo[Idx].devdriver,
                        Unit,
                        secperclust,
                        (FS_u16)rootentcnt,
                        totsec16,
                        totsec32,
                        (char)0xf8,
                        fatsz16,
                        fatsz32,
                        (FS_u16)devinfo.secnum,
                        (FS_u16)devinfo.headnum,
                        devinfo.hiddennum,
                        fsystype);
  return i;
}

#endif /* FS_FAT_NOFORMAT==0 */


#if FS_FAT_DISKINFO

/*********************************************************************
*
*             _FS_fat_GetTotalFree
*

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲美腿欧美偷拍| 色国产精品一区在线观看| 日本一区二区三区四区| 欧美最猛性xxxxx直播| 精品在线观看视频| 夜夜精品视频一区二区| 国产清纯美女被跳蛋高潮一区二区久久w | 成人福利视频在线看| 亚洲色图制服诱惑| 久久影院午夜片一区| 欧美日韩国产综合一区二区| 国产成a人亚洲| 久久国产综合精品| 亚洲第一av色| 亚洲免费高清视频在线| 中文字幕va一区二区三区| 日韩一区二区电影在线| 欧美日韩一区二区在线观看视频| 不卡在线观看av| 国产综合色产在线精品| 日日夜夜精品视频免费| 一区二区激情小说| 中文字幕在线不卡一区二区三区| 久久人人97超碰com| 制服丝袜亚洲网站| 精品视频免费在线| 日本黄色一区二区| 91蜜桃视频在线| 99视频国产精品| 99久久久久免费精品国产| 国产一区二区福利视频| 日本亚洲欧美天堂免费| 一区二区三区四区不卡在线| 亚洲色欲色欲www| 亚洲少妇最新在线视频| 国产精品理论片在线观看| 91网页版在线| 一个色综合av| 亚洲一区视频在线观看视频| 亚洲色大成网站www久久九九| 欧美高清在线视频| 国产日韩欧美综合在线| 国产拍欧美日韩视频二区| 国产亚洲一本大道中文在线| 久久先锋资源网| 国产午夜久久久久| 国产免费观看久久| 国产精品视频麻豆| 亚洲欧美日韩国产综合| 亚洲男人的天堂网| 亚洲自拍欧美精品| 亚洲国产视频a| 亚洲3atv精品一区二区三区| 天堂在线一区二区| 另类小说色综合网站| 精品一区二区三区不卡| 国产一区二区三区黄视频 | 久久综合色鬼综合色| 26uuu久久天堂性欧美| 久久看人人爽人人| 国产精品久久久久影院色老大| 亚洲色图欧美偷拍| 无吗不卡中文字幕| 九一久久久久久| 东方欧美亚洲色图在线| 色屁屁一区二区| 欧美精品亚洲二区| 精品成人一区二区三区四区| 国产精品嫩草久久久久| 一区二区三区影院| 免费人成网站在线观看欧美高清| 国产自产高清不卡| 99re这里只有精品首页| 7799精品视频| 国产欧美日韩在线观看| 亚洲综合图片区| 九九国产精品视频| 色综合久久久久综合体桃花网| 51精品国自产在线| 高清在线观看日韩| 国产精品综合视频| 国产高清久久久久| 欧美一级片免费看| 欧美午夜精品久久久久久超碰| 色狠狠桃花综合| 欧美日韩在线精品一区二区三区激情 | 亚洲国产精品ⅴa在线观看| 久久精品视频在线免费观看| 中国色在线观看另类| 亚洲精品免费看| 日本欧美肥老太交大片| 国产一区二三区好的| 欧洲一区在线观看| 欧美经典一区二区三区| 怡红院av一区二区三区| 精品一区二区免费| 91成人在线精品| 亚洲国产精品激情在线观看| 亚洲一区欧美一区| 国产在线精品免费av| 99久久国产综合精品色伊| 欧美军同video69gay| 国产精品视频yy9299一区| 国产精品亚洲一区二区三区妖精 | 蜜桃久久av一区| 国产精品私人影院| 午夜精品久久久久久| 国产精品自在在线| 制服丝袜日韩国产| 亚洲欧美在线aaa| 国产综合久久久久久鬼色| 欧美日韩久久久久久| 国产精品剧情在线亚洲| 国模一区二区三区白浆| 欧美一区二区大片| 亚洲一区二区三区爽爽爽爽爽| 成人免费毛片aaaaa**| 精品捆绑美女sm三区| 亚洲第一狼人社区| 色婷婷综合久久久久中文 | 99久久99久久免费精品蜜臀| 精品成人免费观看| 麻豆一区二区三| 欧美日韩免费一区二区三区视频| 日韩一区有码在线| 北条麻妃国产九九精品视频| 久久免费偷拍视频| 国内精品视频一区二区三区八戒| 777久久久精品| 亚洲国产美女搞黄色| 在线欧美日韩国产| 综合分类小说区另类春色亚洲小说欧美| 国产一区中文字幕| 精品国产一区二区国模嫣然| 玖玖九九国产精品| 精品国产乱码久久| 久久66热re国产| 精品国产区一区| 国产一区不卡精品| 欧美激情一区二区三区在线| 国产成人亚洲综合a∨婷婷| 国产欧美一区二区在线观看| 成人激情动漫在线观看| 青草av.久久免费一区| 欧美日韩久久久| 无码av免费一区二区三区试看| 91精品在线免费| 久久99最新地址| 久久亚洲精精品中文字幕早川悠里| 久久99精品久久久久| 2020国产精品自拍| 国产99一区视频免费| 中文字幕在线播放不卡一区| 日本高清免费不卡视频| 亚洲一区二区五区| 日韩视频国产视频| 国产一区二区三区久久悠悠色av| 国产女主播在线一区二区| 99热99精品| 亚洲自拍欧美精品| 日韩一区二区三区在线观看| 黄色精品一二区| 中文字幕精品三区| 在线观看av不卡| 久久精品国产**网站演员| 久久久久久久一区| 一本大道综合伊人精品热热| 午夜精品福利一区二区三区av| 欧美一级高清大全免费观看| 国产成人综合在线观看| 一区二区三区91| 日韩一区二区三区观看| 国产69精品久久99不卡| 亚洲一区二区三区美女| 欧美变态tickling挠脚心| 99精品国产热久久91蜜凸| 亚洲成人精品一区| 久久久久久麻豆| 在线看国产一区| 狠狠色丁香婷综合久久| 中文字幕亚洲区| 日韩欧美不卡一区| 97精品久久久午夜一区二区三区| 亚洲成人1区2区| 欧美激情艳妇裸体舞| 国产一二三精品| 粉嫩一区二区三区性色av| 成人免费视频一区| 欧美亚洲一区二区三区四区| 欧美三级午夜理伦三级中视频| 欧美福利一区二区| 欧美成人精品二区三区99精品| 久久久一区二区三区| 亚洲视频一区二区免费在线观看| 日韩高清一区二区| 日本v片在线高清不卡在线观看| 黑人精品欧美一区二区蜜桃| 99久久久国产精品免费蜜臀| 欧美日韩一区二区在线观看视频| 日韩视频免费观看高清完整版在线观看|