Имеющиеся варианты подключения SD карты с FAT/FAT32 на ESP8266 очень медленные. Перенос туда файлов для Web вызовет сильное падение его производительности в отдаче файлов. Остается вариант использования SD как накопителя со своей линейной структурой, без всяких FAT.
Так-же, многие SD не терпят отключения питания в момент записи. Для этого вам придется или не использовать запись на SD или ставить систему поддержки резервного питания на время записи SD.
Т.е. всё это очень специфично и не оптимально для реализации на ESP8266.
Проще взять WiFi-SoC имеющий
полный стандартный аппаратный контроллер SD. При этом работа с такими контроллерами заключается в указании ему какие сектора прочитать и куда их положить по DMA в память.
И ещё не понятны ваш указания на "-24000 kB" и "4Mb".
"4Mb" - это Flash на 512 килобайт?
"-24000 kB" - это надо 24 МегаБайта? Для чего?
Непонятно что не лезет. Сам код проекта? У ESP XIP ограничен 1 МБайт. Для увеличения от базового в 512 килобайт требуется изменение *.ld файла и перенос области сохранения WiFi настроек.
Сам Web-диск работает вне области XIP. В базе, с Flash на модуле в 16 Мегабайт - размер диска 15.5 Мегабайт.
На любой Flash у модуля, имеющей более 512 килобайт, Web-диск располагается за границей 512 килобайт. Базовый проект на таких flash имеет пустое место на 230 килобайт. У вас такой длинный дополнительный код - имеет размер больше SDK + Web?
Вот данные при сборке базового проекта:
Код:
------------------------------------------------------------------------------
Section| Description| Start (hex)| End (hex)|Used space
------------------------------------------------------------------------------
data| Initialized Data (RAM)| 3FFE8000| 3FFE838C| 908
rodata| ReadOnly Data (RAM)| 3FFE838C| 3FFE8E04| 2680
bss| Uninitialized Data (RAM)| 3FFE8E08| 3FFEF888| 27264
lit4| Uninitialized Data (IRAM)| 40105910| 4010651C| 3084
text| Uncached Code (IRAM)| 40100000| 40105910| 22800
irom0_text| Cached Code (SPI)| 40207000| 402400DB| 233691
------------------------------------------------------------------------------
В irom0_text области с 0x40207000 размером в 0x72000 байт использовано всего 233691 байт.
Остаток -> 233253 байт для вашего кода, при условии, что web-диск записывается за областью первых 512 килобайт Flash ( т.е. это автоматически почти на всех модулях с Flash более 512 килобайт). Незанятая область в irom0_text используется для Web-диска только в случае, если модуль имеет Flash в 512 килобайт всего.
Я не силен во всех этих разметках, WEB на SD я не планировал переносить, SD хочу для архивации данных полученных при опросе через ModBus в виде файлов csv или обычнх txt, вот такой лог у меня при компиляции:
------------------------------------------------------------------------------
Section| Description| Start (hex)| End (hex)|Used space
------------------------------------------------------------------------------
data| Initialized Data (RAM)| 3FFE8000| 3FFE839C| 924
rodata| ReadOnly Data (RAM)| 3FFE839C| 3FFE9044| 3240
bss| Uninitialized Data (RAM)| 3FFE9048| 3FFF04C0| 29816
lit4| Uninitialized Data (IRAM)| 40106584| 4010718C| 3080
text| Uncached Code (IRAM)| 40100000| 40106584| 25988
irom0_text| Cached Code (SPI)| 40207000| 40241FC8| 241608
------------------------------------------------------------------------------
Entry Point : 4010016C call_user_start()
Total Used RAM : 63048
Free IRam : 3700 or 20084 (option 48k IRAM)
Free Heap : 47940
Total Free RAM : 68024
------------------------------------------------------------------------------
Add rapid_loader...
0+1 records in
0+1 records out
176 bytes (176 B) copied, 0.001 seconds, 176 kB/s
58+1 records in
58+1 records out
30192 bytes (30 kB) copied, 0.001 seconds, 30 MB/s
Make: ../bin/firmware.bin
Firmware size: 271976, WebFS addr: 274432, Max OTA size: 249856
Space available for OTA: -22120
mingw32-make[1]: Leaving directory 'C:/Espressif/examples/esp8266web-0.6.2_all/app'
mingw32-make[1]: Entering directory 'C:/Espressif/examples/esp8266web-0.6.2_all/webbin'
mingw32-make[1]: 'WEBFiles.bin' is up to date.
mingw32-make[1]: Leaving directory 'C:/Espressif/examples/esp8266web-0.6.2_all/webbin'
про -24 это я писал по памяти, речь шла о строке Space available for OTA: -22120
дополнительный код файлы из этого проекта из этой темы
https://esp8266.ru/forum/threads/esp8266-sd-mmc-fat16-32-demo.501/
c таким логом создается точка доступа, но на сам модуль зайти не получается.