На соседней странице страницы мы наконец-то добились ,что наш STM32 прикинулся флэшкой . В качестве реальной флэш памяти используем микросхему AT45 на плате STM32.
В результате наша флэшка нормально работает : мы ее отформатировали.

Появился к каталог System Volume Information, внутри каталога два файла IndexerVolumeGuid и WPSettings.dat .
Далее мы создали в корне файл 1111111.txt и внутри ему написали 11111111... (много единиц).
Как узнать в STM32 , что получен файл прошивки проверить его и запустить процесс перепрошивки самого контроллера?
Во первых я даже понятия не имею , что там Windows написАла в память AT45 после форматирования.
Первая страница (512К) : Загрузочный сектор

Пытаемся разобраться какая это FAT?
0x0036 [8]: SystemID тип файловой системы 46 41 54 31 32 20 (как у нас) наверное это FAT16. По интернету я не понял какой здесь должен быть ID. В свойствах диска просто FAT и все.
Ха-Ха прочитайте 46 41 54 31 32 20 : 'FAT12 ' - вот оно как. Почему Windows форматирует в FAT12 ? Наверное потому , что размер крохотный.
FAT12 выбирается, если на носителе не более 2^12 = 4096 секторов.
Значение для каждой ячейки считаются справа налево, например если написано 00 02h, то на самом деле это 02 00h, т.е. 512 в десятичной системе исчисления.

для FAT12
0x000B [2] : 00 02 (=00200=512) Число байтов в секторе (всегда 512)
0x000D [1] : 01 - количество секторов в кластере
0x000E [2] : 02 00 (= 0002 ) ReservedSectors = Загрузочная область 2 сектора (и правильно вторая страница (сектор) у нас нулями забита)
0x0010 [1] : 02 - количество FAT таблиц
0х0013 [2] : 00 04 (=0x0400=1024) Общее число секторов на диске !
0x0015 [1] : F8 тип устройства
0x0016 [2|4] : 03 00 (= 0003) SectorPerFat - количество секторов в FAT области , т.е. 3 шт.
Третий сектор это FAT1
00000420 : F8 FF FF FF FF FF FF 6F 00 FF 0F 00 00 00 00 00 øÿÿÿÿÿÿo ÿ
00000430 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000440 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000450 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000460 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000470 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000480 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Вот тут без поллитра не понять , что в FAT12 есть что
Внимание на индекс кластера отводится 1.5 байта.
Всегда сначала F8 FF FF . Это 2 зарезервированных номера кластера.
Маска yz Zx XY для 3 байт
Далее все делится по полтора байта (12бит и FAT тоже 12) :
FF 6F 00 == yz Zx XY== FFF 006
FF 0F 00 == yz Zx XY== FFF 000
Остается только догадываться какой добрый человек придумал использовать такую маску...
FFF - конец файла
006 - номер следующего кластера для файла 1111111.txt
FFF - конец файла 1111111.txt
000 - пусто , не занятое место.
....................
и так далее...
Еще 2 сектора относятся к FAT1.
Потом еще 3 сектора на FAT2 , она дублирует FAT1.
Корневой каталог
0x0011 : RootEntries загрузочного сектора = 00 02, т.е. 0x0200 = 512 .
Корневой каталог - это получается у нас 512 дескрипторов по 32 байта (т.е. 512 файлов в корне может быть , я лично не проверял) ,т.е. 512 * 32 = 16384 байт.
Вот его начало , тут 1 каталог (всем известный) System Volume Information.
00001000 : 51 55 51 55 20 20 20 20 20 20 20 08 00 00 00 00 QUQU
00001010 : 00 00 00 00 00 00 D3 86 7F 50 00 00 00 00 00 00 O?P
00001020 : 42 20 00 49 00 6E 00 66 00 6F 00 0F 00 72 72 00 B I n f o rr
00001030 : 6D 00 61 00 74 00 69 00 6F 00 00 00 6E 00 00 00 m a t i o n
00001040 : 01 53 00 79 00 73 00 74 00 65 00 0F 00 72 6D 00 S y s t e rm
00001050 : 20 00 56 00 6F 00 6C 00 75 00 00 00 6D 00 65 00 V o l u m e
00001060 : 53 59 53 54 45 4D 7E 31 20 20 20 16 00 BB D2 86 SYSTEM~1 »O?
00001070 : 7F 50 7F 50 00 00 D3 86 7F 50 02 00 00 00 00 00 PP O?P
00001080 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00001090 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000010A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000010B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Корневой каталог у нас расположен от адреса 0x00001000 до адреса 0x00005000.
Нас интересует смещение 0x1А у первого дескриптора (младшее слово первого кластера файлов) 00 00 . Это и есть номер кластера (а у нас и сектора) , где его искать? , т.е. по адресу 0x00005000. Там каталог как я понимаю.
Файлы для скачивания
очень полезная инфа как Wndows при форматировании флэшки на FAT12 работает с секторами (по 512 байт)