увеличение времени старта - это вы про задержку, которая там якобы была в пару секунд? Он вроде писал в блоге, что ставил ее в момент отладки, чтобы смотреть логи. Сейчас задержек нету.
Нет. Не про неё. Его код грузится пол секунды и далее грузит ещё код лоадера SDK тоже очень долго (всё это время потребление модулем бывает зашкаливает за 200 mA - зависит от состояния блока WiFi, как его "сорвало" при перезагрузке).
"Тормоз" связан с тем, что ROM-BIOS не инициализирует QSPI, а грузит на низкой частоте по SPI из Flash по кусочкам (до 32-х байт) и выводит длинные сообщения на UART на скорости 78440 на каждый загружаемый блок по разметке лоадера с ожиданием вывода всех символов. Между выводами сообщений в UART ничего не делается.
Отличия RapidLoader в том, что он имеет размер в 108 байта и для его загрузки ROM-BIOS выводит всего десяток символов, т.к. он имеет всего один сегмент.
Код:
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 108, room 16
tail 12
chksum 0x84
csum 0x84
Далее включается QSPI на 80MHz и все остальные, стандартные блоки загрузки грузятся за пару миллисекунд, без вывода лишнего мусора в UART-ы.
Загрузчик использует аппаратное "кеширование" flash ESP-8266 и для дальнейшей загрузки.
https://raw.githubusercontent.com/pvvx/Rapid_Loader/master/ESP-01-StartSignals.gif
Т.е. как итог bootloader от Richard Burton сделан для увеличения потребления автономных реализаций c deep-sleep и другими вариантами.
RapidLoader отключает и WiFi на время загрузки - ток потребления падает до десяка mA, как его запустит ROM-BIOS и время при этом минимально возможное для ESP-8266.
При старте модуля китайцы не доделали массу вещей - пока не стартанет инициализация WiFi в SDK, модуль часто глушит всю сеть WiFi. Это тоже спасет RapidLoader. Он вырубает это безобразие сразу, как его запустит ROM-BIOS. Он делает и отключение вывода CLK на GPIO0 (туда выводится 26MHz всё время до инициализации SDK при использовании bootloader от Richard Burton), это не отображено на картинке, т.к. сделано уже в новой версии. Так-же инициализирует стек в ноль при старте следующего кода и поддерживает загрузку в 48 килобайт IRAM, что не может bootloader от Richard Burton.
Так-же meSDK имеет открытую инициализацию библиотек и можно вставить любой код - например опрос датчика и дальнейшее засыпание, без включения жрущей части WiFi и прочей фигни, на что уходит питание.
Не путайте всю эту разницу со стандартным загрузчиком от Richard Burton, который замещает китайские для запуска разных кусков и создает несовместимость с китай-SDK обновлением.
----
После выполнения короткого загружаемого стартового кода в RapidLoader -
https://github.com/pvvx/Rapid_Loader/blob/master/app/loader/loader.c#L30 уже доступен запуск процедур непосредственно из Flash.
В данном случае запускается
загрузчик уже в Flash, который грузит указанные ему сегменты в обычной разметке лоадеров для ROM-BIOS. Можно туда сделать вставку и грузить из любой области выбранный для старта стандартный загрузчик.