• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь как использовать rapid loader ???

russus_16

New member
Читая форум наткнулся на наличие rapid loader, который был написан уважаемым pvvx. Однако, не совсем понимаю как включить его в прошивку. Взял готовый rapid_loader.bin с githib. Прошил его вместо 00000.bin но посыпались эксепшены. Как правильно это сделать?
 

pvvx

Активный участник сообщества
Читая форум наткнулся на наличие rapid loader, который был написан уважаемым pvvx. Однако, не совсем понимаю как включить его в прошивку. Взял готовый rapid_loader.bin с githib. Прошил его вместо 00000.bin но посыпались эксепшены. Как правильно это сделать?
copy /b rapid_loader.bin + 0x00000.bin new_0x00000.bin
 

russus_16

New member
copy /b rapid_loader.bin + 0x00000.bin new_0x00000.bin
Прошил как вы сказали. Получаю на экране что показано ниже.
Код:
ets Jan  8 2013,rst cause:1, boot mode:(3,5)

load 0x40100000, len 108, room 16
tail 12
chksum 0x84
csum 0x84
Насколько я понял, так и должно быть. Однако, мой код не работает. То есть загрузчик отработал верно, но мой код не запустился. В чем может быть дело? Использую non-os SDK 1.5.3. Прошиваю по следующим адресам:

copy /b rapid_loader.bin + 0x00000.bin new_0x00000.bin @ 0x00000
0x40000.bin @ 0x40000
esp_init_data_default.bin @ 0xFC000
blank.bin @ 0xFE000
 

pvvx

Активный участник сообщества
Прошил как вы сказали. Получаю на экране что показано ниже.
Код:
ets Jan  8 2013,rst cause:1, boot mode:(3,5)

load 0x40100000, len 108, room 16
tail 12
chksum 0x84
csum 0x84
Насколько я понял, так и должно быть.
Это правильно.
Однако, мой код не работает. То есть загрузчик отработал верно, но мой код не запустился. В чем может быть дело? Использую non-os SDK 1.5.3.
Он давно не проверялся со всеми последними версиями оф. SDK, где-то с 1.5.
Варианты:
1) SDK вываливается по "протектед" или как-то виснет? (в некоторых вариантах новых SDK убрали инициализацию 'кэша' для flash)
2) Не работает WiFi? (лоадер его отключает на время загрузки для уменьшения потребления и чтобы он не шумел в эфир на неверной частоте. В старых SDK WiFi включался в их инициализации, в новых - не всегда.)
3) Не должно быть дополнительных загрузчиков типа boot_v1.2.bin, boot_v1.6.bin. Иначе теряется весь смысл.
Вообще загрузчик предназначен не для оф. SDK, т.к. нет смысла что-там быстро грузить и ждать длительной инициализации в китайском SDK... Это не меняет потребления и время загрузки - SDK потом тормозит и жрет до исполнения вашего кода достаточно долго и разница укорочения старта в 100..200 ms уже не существенна. Так-же нет смысла применения с оф. SDK для сокращения стартового вывода всяких сообщений в UART. Оф. SDK туда фигачит кучу всякого... и перетраслировать с опцией отключения сообщений китайский SDK вы не можете.
Первые два пункта лечатся добавлением пары команд в код лоадера - вызова одной процедуры из ROM-BIOS и включения тактирования на WiFi потроха чтобы шумели и глушили всё вокруг пока их и PLL не проинициализируют. Но какой смысл?
 
Последнее редактирование:

russus_16

New member
1) SDK вываливается по "протектед" или как-то виснет?
Похоже что виснет. UART после загрузки лоудера молчит. Ровным счетом, ничего не происходит. Даже диод не блинкает.

Вообще загрузчик предназначен не для оф. SDK, т.к. нет смысла что-там быстро грузить и ждать длительной инициализации в китайском SDK... Это не меняет потребления и время загрузки - SDK потом тормозит и жрет до исполнения вашего кода достаточно долго и разница укорочения старта в 100..200 ms уже не существенна.
Не знаю есть ли разница, но я пользуюсь openSDK. А сколько по времени занимает инициализация SDK? Не десятки же секунд...

Дополнительных загрузчиков нет.
 

pvvx

Активный участник сообщества
Похоже что виснет. UART после загрузки лоудера молчит. Ровным счетом, ничего не происходит. Даже диод не блинкает.
Значит надо в конце загрузчика, перед стартом кода SDK вписать [inline]Cache_Read_Disable();[/inline] и, возможно, [inline](*((volatile unsigned int *)(0x60000710))) = 0xfe000000;[/inline]
Не знаю есть ли разница, но я пользуюсь openSDK. А сколько по времени занимает инициализация SDK? Не десятки же секунд...
Самый короткий старт после deep_sleep - несколько сотен ms. Типы инициализации WiFi и примерное время описаны в доках.

А где вы взяли "open" SDK? "Open" - это когда приложены все исходники - где такое дают на ESP8266?
 

russus_16

New member
@pvvx,
Спасибо! Попробую добавить!

Типы инициализации WiFi и примерное время описаны в доках.
А в каких именно доках? В родных от Espressif?

А где вы взяли "open" SDK? "Open" - это когда приложены все исходники - где такое дают на ESP8266?
Исходники приложены только частично, далеко не все. Вот здесь:
GitHub - pfalcon/esp-open-sdk: Free and open (as much as possible) integrated SDK for ESP8266/ESP8285 chips
 
Последнее редактирование:

pvvx

Активный участник сообщества
Тоже пытался использовать но увы.
А вообще-то идея была у Вас хорошая если ее развить дальше
т е в этом загрузчике опросить датчик записать его значение в память RTC и если не требуется WIFI снова пойти спать.
Было бы просто супер. Согласны?
Оно и сделано - доказано и показано, что это возможно и работает. А как использовать - отдано вам.
Миру Arduino оно не надо... Части уже использовали в конкурсе на самый короткий код, но увы всё взять так и не смогли :)
 

pvvx

Активный участник сообщества
Пробовал прикрутить. Не работает.
Ещё раз - С чем не работает? С кривым китайским SDK? Оно с ним не должно работать, т.к. там не предусмотрено таких режимов, как вы описываете... Ошибки там в китай-бред-SDK инициализации - не всё инится правильно и рассчитано на загрузку только с идущим к нему boot.
И вам это уже более 3-х раз описал - добавьте одну команду в конец загрузки boot - отключить "кеш".
 

pvvx

Активный участник сообщества
Да и так понятно, что вы не разбираетесь.
Это вам поможет: EspLua/user_exceptions.c at master · pvvx/EspLua · GitHub ?
call_user_strt1() - это сама call_user_start(), переименованная патчем в китайской либе.
Патчить нет смыслу - есть команды компилятору подменить имя процедуры... А мне так было проще :p
Но всё равно китай-SDK не предназначена для "проснулся пописал и снова спать"
 
Последнее редактирование:

pvvx

Активный участник сообщества
Хрен редьки не слаще.
А какие претензии, если китай-SDK не грузится и не рассчитано на модификации под IoT :) Это не я сделал, а Espressif.

У RTL - всё пучком. Там запуск после сна не требует загрузки вообще. Есть там такая ветка и дана в SDK, если питание во время сна не снимется (SRAM сохраняет весь код и потребления во время сна сильно не увеличивает). При этом восстанавливается вся ранее включенная аппаратура. Но имеет ошибку с RTL8710AF - Log UART ставиться не на ту скорость, т.к.
ROM его стартует на пониженной частоте для специализации RTL8710AF в маложручих (уменьшен пиковый ток старта) применениях.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Это не претензия. Это констатация реальности.
В любом чипе для IOT надо решать эту проблему.
Дык реальность и показывает, что ESP не применим в IoT. У всех других малых WiFi SoС режимы быстрого просыпания являются базовыми, но их невозможно применить в концепции Arduino. В Arduino другой подход - поиграть.
В RTL871xBN даже спец.область памяти сделана для быстрого восстановления CPU после полного отключения всего и сильно развитый PMU. В других SoC - другие фичи для этого...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Т е в RTL871xBN возможно проснуться - запустить датчик заснуть опять проснуться прочитать датчик послать WIFI и уснуть. Так?
Можете сказать сколько времени минимум на это уйдет и сколько энергии.
И сколько стоит модуль.
Спасибо
Он для этого создан. Цены есть хоть тут.
MJIOT-AMB-03 RTL8710BN IOT WIFI MODULE SDK open source 100pcs | eBay 140 руб шт.
152 руб по штучно MJIOT-AMB-03 RTL8710BN IOT WIFI MODULE SDK open source | eBay

Время просыпания = инициализации к примеру SPI или I2C контроллера = ну наверно пару us.
Соединение с внешним AP по полному протоколу зависит от этой AP и в среднем к 2 сек.
Инициализация с нуля драйвера WiFi обычно не более 300 ms (хоть на серии "A").
При DTIM и прочих режимах, перезапуск WiFi драйвера никто кроме вас не использует. Отключают все ненужные устройства совместно с CPU и "просыпаются" за пару us для приема beacon. При этом все прерывания доступны, хоть от ADC и/или активный UART. Итог вам и написан - 2.5 mA в DTIM(3..4)

Вам долго раскрыть вложенную документацию к SDK4.0?
Снимок1534.gif
 
Последнее редактирование:

pvvx

Активный участник сообщества
Можете объяснить почему их нет на али экспресе или бабе?
Они базируются на таобао.
RTL8710BN wifi 模块 RTL8710 透传模块 发射功率高 功耗低
RTL8710BN WiFi модуль RTL8710 модуль питания высокое низкое энергопотребление: цена, фото, отзывы, доставка – купить в интернет-магазине Купинатао

У меня RTL8710BN пока нет - заказаны в трех местах, идут, но не дошли. Предложения бесплатных образцов для "поддержки" всем продавцам отказаны. Не хочу впутываться.
Уточнить что-то конкретное по ним пока не могу. Придут - испытаю, как всегда на реальное потребление и т.д...
 
Последнее редактирование:

pvvx

Активный участник сообщества
С первого взгляда видны ляпы и минусы.
1) На указанной Вами картинке написано Power 2.5 ma (мощность в ма?)
2) Мощность передатчика 17.5 Дб это 55 мвт т е в 2 раза меньше ESP
И каким же образом при 2.5 ма обеспечить 55 мвт?
3) Какой же там процессор стоит,что потребляет в активном режиме менее 2.5 ма? Просто революция какая-то.
Вы уж сначала включите модуль и измерьте, а потом пишите :)
Там написан Rms ток при 3.3В и 55 мвт. Перемножить сложно - Калькулятор онлайн - лучший и бесплатный ? :)
Где вы взяли, что мощность передатчика в два раза меньше ESP8266? Сами выдумали или измерили?
Сторонние измерения на продаваемые модули показывают обратное.
SDK и доки не открыть - значит опять взялись за рекламу небылиц от Espressif... У Espressif написано потребление в LIGHT режиме 1.4 mA :) :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Ну Вы опять удела закусили и понесли.
---------------------------
1)Мы же говорим про RTL причем же здесь ESP?
Вы же сравниваете. В прошлый раз вы то-же самое писали про RTL8710AF.
Но вышло всё наоборот.
Я не рекламирую. Это всё к продавцу, пишите ему сами и учите правильно писать не только по Китайски :) От куда он там выудил -17 или ещё что, на разъеме или на другом модуле в меню...
В PDF от Realtek ляп и завышений пока не обнаружено, что не сказать про Espressif.
Наоборот есть ляпы, как раз по току потребления - описано в таблице с ошибками (завышено более 1.5 раза, а далее, там-же, при конкретном описании уже нормально) и это указал в профильной теме.
Может ещё обсудим ляпы к описаниям на али у модулей?
Или что показывает ESP8266(NodeMCU) на рядом работающий RTL00 модуль (2 см) ?
Снимок1536.gif
(и занижает всех других не менее 4..6 дБ, а к концу диапазона -91 почти сравнивается c RTL)
Или наоборот?
Снимок1537.gif
(и завышает всех других не менее 4..6 дБ, а к концу диапазона -91 почти сравнивается с ESP)
WiFi свисток показывает -19 на оба между прижатыми к нему модулями. :)
Может, что на расстоянии от них (>4 м) WiFi свисток?
Снимок1535.gif
Видим полное отсутствие 802.11n у ESP. :)
У обоих модулей включена мощность TX на полную.
-------
И специально для вас :) Старался - искал максимум у каждого модуля, путем кручения их в рамке диаметром 3 см и СВЧ диодом (детекторный приемник):
RF_2Modules.gif
Оба beacon. В зависимости от положения модулей, расхождения максимумов с каждого модуля не достигают 20%. Значит нет в два раза уж никак.
Почему один короче другого - это спрашивайте у Espressif и Realtek.
У Realtec данных в beacon в несколько раз больше, чем у Espressif. Любой сниффер покажет.
 
Последнее редактирование:
Сверху Снизу