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

📄 format.c

📁 周立功ARM9 2410试验平台的uCOS-II基础实验代码
💻 C
📖 第 1 页 / 共 2 页
字号:
                
                parameter.SectorIndex = 0 + Disk->SecOffset;
                parameter.RsvdForLow = Disk->RsvdForLow;
                parameter.Buf = FormatBuf;
                Disk->DiakCommand(DISK_WRITE_SECTOR, &parameter);
                
/* 初始化 FAT和根目录 */
                cp2 = FormatBuf + 4;
                FormatBuf[0] = 0xf0;
                FormatBuf[1] = 0xff;
                FormatBuf[2] = 0xff;
                FormatBuf[3] = 0xff;
                for (j = 4; j < BytsPerSec; j++)
                {
                    *cp2++ = 0;
                }
                for (j = 0; j < temp; j++)
                {
                    parameter.SectorIndex = j + 1 + Disk->SecOffset;
                    Disk->DiakCommand(DISK_WRITE_SECTOR, &parameter);
                    FormatBuf[0] = 0;
                    FormatBuf[1] = 0;
                    FormatBuf[2] = 0;
                    FormatBuf[3] = 0;
                }
                i = (i * 32) / BytsPerSec;
                temp++;
                for (j = 0; j < i; j++)
                {
                    parameter.SectorIndex = j + temp + Disk->SecOffset;
                    Disk->DiakCommand(DISK_WRITE_SECTOR, &parameter);
                }
                    
            }
            else                        /* FAT32 */
            {
                /* 保留扇区数 */
                FormatBuf[14] = 12;
                FormatBuf[15] = 0;
                /* 根目录FDT项数 */
                FormatBuf[17] = 0;
                FormatBuf[18] = 0;

                /* FAT表占用扇区数 */
                FormatBuf[22] = 0;
                FormatBuf[23] = 0;
                    
                temp1 = (SecPerDisk * 4 + BytsPerSec - 12) / BytsPerSec;
                FormatBuf[36] = temp1 & 0xff;
                FormatBuf[37] = (temp1 >> 8) & 0xff;
                FormatBuf[38] = (temp1 >> 16) & 0xff;
                FormatBuf[39] = (temp1 >> 24) & 0xff;

                /* FAT32 RootDirTable为开始簇号 */
                FormatBuf[44] = 2;
                FormatBuf[45] = 0;
                FormatBuf[46] = 0;
                FormatBuf[47] = 0;


                FormatBuf[40] = 0;
                FormatBuf[41] = 0;
                FormatBuf[42] = 0;
                FormatBuf[43] = 0;

                FormatBuf[48] = 1;
                FormatBuf[49] = 0;

                FormatBuf[50] = 6;        /* 6? */
                FormatBuf[51] = 0;

                FormatBuf[52] = 0;
                FormatBuf[53] = 0;

                FormatBuf[82] = 'F';
                FormatBuf[83] = 'A';
                FormatBuf[84] = 'T';
                FormatBuf[85] = '3';
                FormatBuf[86] = '2';
                FormatBuf[87] = ' ';
                FormatBuf[88] = ' ';
                FormatBuf[89] = ' ';

                parameter.SectorIndex = 0 + Disk->SecOffset;
                parameter.RsvdForLow = Disk->RsvdForLow;
                parameter.Buf = FormatBuf;
                Disk->DiakCommand(DISK_WRITE_SECTOR, &parameter);

                parameter.SectorIndex = 6 + Disk->SecOffset;
                parameter.RsvdForLow = Disk->RsvdForLow;
                parameter.Buf = FormatBuf;
                Disk->DiakCommand(DISK_WRITE_SECTOR, &parameter);

                cp2 = FormatBuf;
                for (j = 0; j < BytsPerSec; j++)
                {
                    *cp2++ = 0;
                }
                FormatBuf[0] = 0x52;
                FormatBuf[1] = 0x52;
                FormatBuf[2] = 0x61;
                FormatBuf[3] = 0x41;

                FormatBuf[484] = 0x72;
                FormatBuf[485] = 0x72;
                FormatBuf[486] = 0x41;
                FormatBuf[487] = 0x61;

                FormatBuf[488] = 0xff;
                FormatBuf[489] = 0xff;
                FormatBuf[490] = 0xff;
                FormatBuf[491] = 0xff;
                
                FormatBuf[492] = 0x02;
                FormatBuf[493] = 0x00;
                FormatBuf[494] = 0x00;
                FormatBuf[495] = 0x00;

                FormatBuf[508] = 0x00;
                FormatBuf[509] = 0x00;
                FormatBuf[510] = 0x55;
                FormatBuf[511] = 0xaa;
                
                parameter.SectorIndex = 1 + Disk->SecOffset;
                parameter.RsvdForLow = Disk->RsvdForLow;
                parameter.Buf = FormatBuf;
                Disk->DiakCommand(DISK_WRITE_SECTOR, &parameter);

                parameter.SectorIndex = 7 + Disk->SecOffset;
                parameter.RsvdForLow = Disk->RsvdForLow;
                parameter.Buf = FormatBuf;
                Disk->DiakCommand(DISK_WRITE_SECTOR, &parameter);


/* 初始化 FAT和根目录 */
                cp2 = FormatBuf + 12;
                FormatBuf[0] = 0xf0;
                FormatBuf[1] = 0xff;
                FormatBuf[2] = 0xff;
                FormatBuf[3] = 0xff;
                FormatBuf[4] = 0xff;
                FormatBuf[5] = 0xff;
                FormatBuf[6] = 0xff;
                FormatBuf[7] = 0xff;
                FormatBuf[8] = 0xf8;
                FormatBuf[9] = 0xff;
                FormatBuf[10] = 0xff;
                FormatBuf[11] = 0x0f;
                for (j = 12; j < BytsPerSec; j++)
                {
                    *cp2++ = 0;
                }
                //temp += 2;
                parameter.SectorIndex = 12 + Disk->SecOffset;
                Disk->DiakCommand(DISK_WRITE_SECTOR, &parameter);
                FormatBuf[0] = 0;
                FormatBuf[1] = 0;
                FormatBuf[2] = 0;
                FormatBuf[3] = 0;
                FormatBuf[4] = 0;
                FormatBuf[5] = 0;
                FormatBuf[6] = 0;
                FormatBuf[7] = 0;
                FormatBuf[8] = 0;
                FormatBuf[9] = 0;
                FormatBuf[10] = 0;
                FormatBuf[11] = 0;
                for (k = 1; k < temp1; k++)
                {
                    parameter.SectorIndex = k + 12 + Disk->SecOffset;
                    Disk->DiakCommand(DISK_WRITE_SECTOR, &parameter);
                }
                cp2 = FormatBuf;
                for (i = 0; i < BytsPerSec; i++)
                {
                    *cp2++ = 0;
                }
                FormatBuf[0] = '.';
                FormatBuf[1] = 0x20;
                FormatBuf[2] = 0x20;
                FormatBuf[3] = 0x20;
                FormatBuf[4] = 0x20;
                FormatBuf[5] = 0x20;
                FormatBuf[6] = 0x20;
                FormatBuf[7] = 0x20;

                FormatBuf[8] = 0x20;
                FormatBuf[9] = 0x20;
                FormatBuf[10] = 0x20;
                
                FormatBuf[11] = ATTR_DIRECTORY;

                FormatBuf[26] = 0x02;
                
                FormatBuf[32 + 0] = '.';
                FormatBuf[32 + 1] = '.';
                FormatBuf[32 + 2] = 0x20;
                FormatBuf[32 + 3] = 0x20;
                FormatBuf[32 + 4] = 0x20;
                FormatBuf[32 + 5] = 0x20;
                FormatBuf[32 + 6] = 0x20;
                FormatBuf[32 + 7] = 0x20;

                FormatBuf[32 + 8] = 0x20;
                FormatBuf[32 + 9] = 0x20;
                FormatBuf[32 + 10] = 0x20;
                
                FormatBuf[32 + 11] = ATTR_DIRECTORY;

                FormatBuf[32 + 26] = 0x02;

                parameter.SectorIndex = temp1 + 12 + Disk->SecOffset;
                Disk->DiakCommand(DISK_WRITE_SECTOR, &parameter);
            }
        }
        mount(DriveName);
        return TRUE;
    }
    return FALSE;
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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