При создании Usb flash диска (128мб) появились проблемы с его определением windows. Дела обстоят следующим образом: при подключении устройства windows загружает все необходимые драйвера, т.е. диск определяется как сменный носитель, появляется в проводнике (с этим проблем нет); а вот дальше начинаются странности. На флэше был создан раздел FAT16, при создании раздела руководствовался документацией по этой файловой системой.
Блок параметров биос выглядит так:Смещение Название Размер Значение Описание0 (0x0) BS_jmpBoot 3 EB 3E 90 Команда перехода на загрузчик ОС
3 (0x3) BS_OEMName 8 2B 58 64 68 39 49 48 43 (Xdh9IHC) Название и версия Windows
11 (0xB) BPB_BytsPerSec 2 00 02(512) Количество байтов в секторе (всегда 512)
13 (0xD) BPB_SecPerClus 1 04(4) Секторов на кластер всегда кратно степени двух
14 (0xE) BPB_RsvdSecCnt 2 01 00(1) Количество зарезервированных секторов перед первой FAT
16 (0x10) BPB_NumFATs 1 02(2) Количество таблиц FAT (всегда 2)
17 (0x11) BPB_RootEntCnt 2 B0 02(688) Количество элементов в корневом каталоге (максимальный предел)
19 (0x13) BPB_TotSec16 2 00 00 Общее число секторов (0 - если размер диска больше 32 Мб)
21 (0x15) BPB_Media 1 F8 Тип устройства: F0 - гибкий диск, F8 - жесткий диск с любой емкостью (Media дескриптор носителя)
22 (0x16) BPB_FATsz16 2 FA 00(250) Количество секторов на элемент таблицы FAT (число секторов в одной FAT)
24 (0x18) BPB_SecPerTrk 2 20 00(32) Количество секторов на дорожку
26 (0x1A) BPB_NumHeads 2 FF 00(255) Число головок
28 (0x1C) BPB_HiddSec 4 00 00 00 00 Количество скрытых секторов
32 (0x20) BPB_TotSec32 4 FF E4 03 00(255231) Общее число секторов (0 - если размер диска меньше 32 Мб)
36 (0x24) BS_DrvNum 1 80(128) Номер диска
37 (0x25) BS_NtRsvd 1 01 Зарезервировано для Windows NT
38 (0x26) BS_BootSig 1 29 Расширенная сигнатура (если 29h, то следующие поля актуальны)
39 (0x27) BS_VolID 4 68 42 6C 30(hBl0)Серийный номер тома
43 (0x2B) BS_VolLab 11 4E 4F 20 4E 41 4D 45 20 20 20 20(NO NAME ) Метка тома
54 (0x36) BS_FilSysSize 8 46 41 54 31 36 20 20 20(FAT16 ) Тип файловой системы (12- или 16-разрядная)
В готовой флэши (смотрел несколько флэш Trancend) процесс чтения происходит так: сначала читается загрузочная область (винда почему-то это делает несколько раз), затем начинается чтение fat по порядку, а затем читается root и т.д. и т.п, т.е все достаточно логично.
У меня происходит все довольно странно после чтения boot сектора винда читает сектор со смещением 0x40h(64) и переодисечки повторяет чтение то boot сектора, то этого сектора
При попытке зайти на диск проводник виснет при это не выводится ни каких сообщений.
Пробовал отфармотировать флэшку при помощи HP USB Disk Storage Format Tool, но она пишет, что диск защищен от записи.
Очень хотелось бы узнать как те кто этим занимался решили проблему файловой системы диска, либо как я писали ее сами, либо брали уже готовую, скажем с носителя такой же емкости?
Возможно проблема в блоке параметров биос (параметры брал согласно мануалам)?
Ни где не встретил описание параметров BPB_SecPerTrk (Количество секторов на дорожку) и BPB_NumHeads (Число головок) из каких соображений они выбираются?
Не мог бы кто-нибуть выложить свой бут сектор с комментариями, буду очень признателен?