• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Как прошить, куда копать RTL8710

vad7

Active member
И как вижу вам сказать уже конкретно нечего о том чего нету в RTL на сегодня в Arduino и других примерах...
Вот когда цена упадет на али приблизительно до цены esp8266 и доступность увеличится, тогда и пощупаю...
А пока мне достаточно, того что вы вещаете (склероз?):
То, что там сейчас творится - это просто бардак.
Вся документация в CИ файлах и в IDA :)
Не забудь оставить адресок для адептов RTL.
Да небось: RTL8710RUS
 
Последнее редактирование:

pvvx

Активный участник сообщества
Вот когда цена упадет на али приблизительно до цены esp8266 и доступность увеличится, тогда и пощупаю...
А пока мне достаточно, того что вы вещаете (склероз?):
Тогда будут новые чипы. Некромантией не замаюсь - могил не раскапываю. Наверно забыли.
Цена на нормальные вещи не падает ниже дурных.
Ну вот и выяснили - просто выдумываете глупости, т.к. "покупалка" ещё не выросла :)
Там миссия не подходящая :)
 

sharikov

Active member
0x00000 Image1 - bootloader - ram_1.p.bin
0x09000 SystemData.bin
0x0A000 CalibrationData.bin
0x0B000 Image2 - прошивка - ram_2.bin - для области SRAM
0x0......... 0x7..... Image3 - прошивка - sdram.bin - для области SDRAM
..... (может быть доп.блок - лоадер обслуживает)
0x80000 OTA - ota.bin - так-же может быть из двух или 3-х частей
0xFC000 SavedData2.bin FEEP Установки WiFi, LwIP, UART из AT или пользовательские
---------
Старые SDK ota писали последовательно за первыми блоками.
2pvvx:
Изменилось ли размещение OTA в новом загрузчике ?
Хочу OTA писать не с 0x80000 а со следующего блока за Image2 (примерно как было раньше).
Общая структура такая:
default Image2 - обновлялка OTA Image через web + сброс настроек wifi, в него попадаем по кнопке (IsForceLoadDefaultImg2).
OTA Image - приложение, оно стартует по умолчанию если зашито
 

pvvx

Активный участник сообщества
Хочу OTA писать не с 0x80000 а со следующего блока за Image2 (примерно как было раньше).
Это зависит от программатора. Загрузчик поддерживает 4 последовательных прошивки и 5-ую (нулевую) по адресу в 9-ом секторе... Arduino для RTL8710.
Сегменты в прошивках могут грузиться в любую память, включая регистры периферии или запись в Flash (копировать), но надо указать разрешающие флаги RTL00MP3/rtl_boot.c at master · pvvx/RTL00MP3 · GitHub
Номер прошивки, положительный 32-х битный задается тут RTL00MP3/rtl_boot.c at master · pvvx/RTL00MP3 · GitHub
Полностью переделанный инит Spic работает пока только с MXIC Flash (задается таблицей) RTL00MP3/rtl_boot.c at master · pvvx/RTL00MP3 · GitHub
Предел у SPIC - 35 тактов на байт, в режиме блоков memcpy или dwordcpy (без разницы). SDK использовало и настраивало от 72 тактов (в лучшую погоду)...
 
Последнее редактирование:

sharikov

Active member
Это зависит от программатора. Загрузчик поддерживает 4 последовательных прошивки и 5-ую (нулевую) по адресу в 9-ом секторе... Arduino для RTL8710.
Если есть 2 прошивки: 1 и 2 они во флэшке должны располагаться одна за другой с выравниванием на границу блока ?

Не могу понять вашу логику выбора прошивок.
1-4 выбираются пинами, это все рабочие прошивки ?
0 прошивка что должна делать ? Аварийная на случай повреждения рабочих ?
Если аварийная то нет условий ее вызова по пинам. Рабочая прошивка может быть с валидным заголовком но неработоспособная (наговнокодили/повредилась/юзер залил по OTA не тот апдейт). Сейчас в этом случае запустить аварийную никак не получится и устройство окирпичится.
Также если стереть блок 0x9000 аварийная прошивка не запустится а этот блок иногда стоит очищать если туда прописались глючные настройки.

Амебовкий вариант с Default Image2 и Upgraded Image2 был логичнее и проще в реализации .
Проще - значит меньше багов. А они в rtl_boot.c есть: не все варианты загрузки рабочие (я знаю что это трудно протестировать) и сейчас опрашивается только 1 пин gpio_pin[1] (цикл for (int i = 1; i; i--) делает только одну итерацию).


Удобнее было бы с другой логикой выбора прошивки:
2 пина дают 4 кода: 0,1,2,3.
0 - пины в воздухе (неактивны), 3 - пины притянуты к замле/питанию (активны).

Код 3 (аварийный режим, все пины активны) всегда запускает аварийную.
Коды 1-2 (служебный режим: сервис или калибровка) всегда запускают прошивки 1 или 2.
Код 0 (нормальный режим, все пины неактивны) запускает прошивку по адресу из 0x9000 если там не пусто или 3 прошивку если пусто.
Если выбранной прошивки нет автоматически запускается аварийная.
Если задан только 1 пин логика сводится к выбору 0/3. Если пины не заданы всегда запускается аварийная.
 

pvvx

Активный участник сообщества
Не могу понять вашу логику
Не могу понять вашу логику, т.к. исходники даны и указано где и что ставится как вам нравится. Даже читать не буду ваши предложения, пока не попробуете (измените сами - это просто), потыркаетесь и выработаете более нормальное решение. Думаю, что на это уйдет неделя минимум (на обдумывание, пробы и поиск нормальных решений, не обязательно через пины и т.д. Когда наберется от разных людей вариантов - можно и мне будет подумать :) А пока и так потянет.
 

sharikov

Active member
Не могу понять вашу логику, т.к. исходники даны и указано где и что ставится как вам нравится. Даже читать не буду ваши предложения, пока не попробуете (измените сами - это просто), потыркаетесь и выработаете более нормальное решение.
Второй день тыркаюсь, впечатление *****. Мне было интересно узнать под какой сценарий использования было написано то что написано.
От разных людей ответов не дождетесь: RTL ковыряет 2,5 человека а загрузчик - 1,5.
 

pvvx

Активный участник сообщества
Второй день тыркаюсь, впечатление *****. Мне было интересно узнать под какой сценарий использования было написано то что написано.
От разных людей ответов не дождетесь: RTL ковыряет 2,5 человека а загрузчик - 1,5.
А и без них разберется, когда полеплю свои проекты... От вас никакого проекта, кроме ужасного RTLHTTPD то нет, а RTLHTTPD пока никуда не годиться и вам нужна только ветка отладки - загрузка для теста в RAM и она работает :) Рано вам с ним думать как его грузить в flash.
Сценарий такой: когда писал код, так рука написала при стыковке подпрограмм. Больше там мыслей не было. Голова не использовалась :) Потом зато пришлось включить распознавание, чтобы описать вам что там накалякалось :) Но вроде работает же ? (!)
Вторая причина - совместимость с старыми вариантами SDK и Arduino. Он победил - глюков со Spic от разных версий startup в прошивках теперь нет.
А так, по поводу инита - осталась одна бяка - там, при типа deep_sleep, но хитрых, есть перезагрузка модуля сразу, из первой процедуры ROM-BIOS прямо в назначенный адрес приложения (энерго-экономичные режимы всякие). Вот в нем бяда - инициализация LOGUART там происходит не на том baud rate. Надо что-то править где-то в HAL (горе писаки SDK) :mad:
 
Последнее редактирование:

Bebebe

New member
Делаю первые шаги с этим контроллером. Пытаюсь получить OTA.bin, а получаю вот это:
Используем библиотеку OTA версии 1.0.1 из папки: C:\Arduino\hardware\development\rtl87xx\libraries\OTA
Скетч использует 263684 байт (70%) памяти устройства. Всего доступно 372736 байт.
Внимание: Это ядро не подерживает экспорт скетчей. Пожалуйста ожидайте обновлений или свяжитесь с автором
Версия ArduinoIDE 1.8.2 . Может я что-то не так делаю....

Update: разобрался, я пытался сделать экспорт бинарного файла и получал такую ошибку. Попробовал типа загрузить прошивку в устройство через сом-порт, естественно получил ошибку соединения но и bin файл я тоже получил :).
 
Последнее редактирование:

Lom

New member
...
Speed rd RAM = 147462, clk/byte = 2 (просто чтение RAM в цикле)
Speed rd TCM = 136536, clk/byte = 2 (просто чтение TCM в цикле)
...
Абсолютная скорость у TCM области - 1 такт на обращение в 16 или даже 32 бита.
...
Добрый день!
Подскажите пожалуйста про RAM RTL8710

1) Что есть RAM, а что TCM?
2) Где-то написано RAM 512к, где-то указано 48k available for user

P.S. Что-то уже нашел

"Memory map:


  • 0x00000000 - 0x0FFFFFFF: ROM
    0x10000000 - 0x1006FFFF: RAM
    0x1FFF0000 - 0x1FFFFFFF: TCM (tightly coupled memory)"
Но не понятно TCM=64k, можно ли как-то использовать более 64к RAM ?

Или подскажите, где можно это прочитать, пока найти не смог, заранее спасибо.
 
Последнее редактирование:

pvvx

Активный участник сообщества
1) Что есть RAM, а что TCM?
Это вопрос по архитектуре ARM, а не модуля.
Большинство других процов, типа в ESP-32, имеют память в виде множества малых раздельных блоков с разными шинами и объединить их в один непрерывный невозможно.
2) Где-то написано RAM 512к, где-то указано 48k available for user
48k - это размер заданный в исходниках для "heap" в готовом приложении (прошивке) какой-то версии "AT", которую оно пишет в logUART при загрузке :) Никоим образом не описывает кол-во RAM на чипе. Это значение задается для работы стеков RTOS и части буферов к конкретному приложению. Из описания, от куда вы взяли данную цифру - это указание, что для работы среднего приложения достаточно описать в файле конфигурации RTOS "heap" в 48 килобайт. При меньшем может не хватить на стеки задач RTOS, буферизацию потоков, буфера и переменные для работы WiFi в режиме AP+Station с поддержкой всех функций данной версии "AT" прошивки. :)
В чипе RTL8710AF 512 килобайт SRAM. Из них 64 килобайта отдельный блок в виде TCM RAM. Отличие в том, что TCM область не имеет тактов ожидания при работе с ней CPU. Остальная память (единый блок 448 килобайт SRAM) имеет такт ожидания при некоторых асинхронных обращениях. Вдаваться вам в это на первых этапах не стоит. Потери скорости исполнения от этого в ваших приложениях не составят более процента.
Различий типов имеющейся RAM памяти по возможности побайтового обращения (четные/нечетные адреса) у RTL8195/871x нет. Как и нет запретов что находится в RAM памяти - исполняемый код или данные. Для серии "A" есть одно ограничение - у неё нет XIP. Serial Flash не позволяет обеспечивать поток данных и кода со скоростью работы CPU (тут у нас 166 МГц CPU), а SRAM - позволяет. В дешевых WiFi-SoC при работе с Serial Flash (типа ESP8266) используют механизм аппаратного XIP - это система "кэширования" данных из Flash в SRAM. При этом сильно страдает производительность на ожидание CPU загрузки кода из Flash в область "кеширования", если их там ещё нет или они не вытеснены. И область "кеширования" обычно мала. У ESP8266 объем "кеша" - это два блока SRAM по 16 килобайт. Т.е. ваша программа с постоянно отрабатывающим кодом в размер более 32 килобайта будет достаточно сильно тормозить. Кроме этого на ESP8266 вы не можете писать Flash и одновремнно исполнять программу из Flash. На время записи (и чтения) Flash механизм XIP у ESP8266 отключен. По этому весь зависимый код у него находится в специальной области 64к SRAM названной IRAM (включающей и 32к "кеш") - только там и в ROM может исполняться код. Но в ROM ESP8266 код содержит много ошибок и не используется более чем на 10%, а ревизии с его исправлением нет.
У RTL спец. областей для исполнения кода нет. Другая архитектура CPU и меньше ошибок в ROM, да и туда помещен почти весь код API. От этого пользовательский код выходит объемом меньше. ROM не имеет тактов ожидания для CPU.
У чипов RTL серии "A" есть варианты с 2 МегаБайт SDRAM. SDRAM при этом имеет шину в 16 бит и 100 MHz. Это неизбежно дает такты ожидания для 166 MГц ядра CPU и в ней исполнение кода замедленное.
Flash в RTL серии "A" имеет контроллер отображения QSPI устройств в область памяти (до 128 МБайт). Но "кеша" для них более 64 байт не имеет. Аппаратно обслуживается и запись в эти устройства путем записи процессором в область отображения. Контролер имеет регистры для задания всех команд работы с устройством на QSPI, тактов ожидания и режимов (4/2/1 бит SPI). psRAM и другие типы могут работать на нем...
Это описание дано, чтобы понять различие в чипах, если знакомы с ESP8266.
 
Последнее редактирование:
Не знаю - точнее не помню. Воможно какая-то версия от китайцев.
Вот странслировал свой "AT" на SDK 3.5 (он без второй прошивки OTA - она пустая):
Pvvx , подскажите , как Вашу прошиву (webserver) залить через ота обновление ?
Скачал ваш исходник , а там куча бинарников .. Инструкции не нашел как это сделать.. Буду Вам искренне благодарен за помощь!
 

nikolz

Well-known member
можно отметить начало движения в сторону RTL.
кто-то утверждал 4 года назад,
что RTL быстро убьет ESP,
ему возражали, а он не верил.
 

pvvx

Активный участник сообщества
можно отметить начало движения в сторону RTL.
кто-то утверждал 4 года назад,
что RTL быстро убьет ESP,
ему возражали, а он не верил.
У меня и других всё хорошо и модули RTL нашли свою нишу за счет полноценных внутренних контролеров и скорости работы CPU серии A из SRAM, превышающих способности ESP32. В итоге так и произошло - RTL убил ESP наповал и во всех ком./пром./разработках.
Arduino это не касается. Там свои тараканы - тяп-ляп и блоггеры :p
Открою маленький сИкрет - за всю историю ESP у меня не сделано и не работает на них ни одного устройства. А вот на RTL - сделано и работают...
 
Сверху Снизу