Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Realtek - SDK, прошивки и утилиты", создана пользователем findeler, 18 янв 2017.

  1. vad7

    vad7 Авторитетный участник сообщества

    Сообщения:
    398
    Симпатии:
    48
    Вот когда цена упадет на али приблизительно до цены esp8266 и доступность увеличится, тогда и пощупаю...
    А пока мне достаточно, того что вы вещаете (склероз?):
    Да небось: RTL8710RUS
     
    Последнее редактирование: 26 янв 2017
  2. Юрий Ботов

    Юрий Ботов Moderator Команда форума

    Сообщения:
    1.052
    Симпатии:
    175
    ПОВЕШУ НАД СТОЛОМ!
     
  3. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.726
    Симпатии:
    1.283
    Тогда будут новые чипы. Некромантией не замаюсь - могил не раскапываю. Наверно забыли.
    Цена на нормальные вещи не падает ниже дурных.
    Ну вот и выяснили - просто выдумываете глупости, т.к. "покупалка" ещё не выросла :)
    Там миссия не подходящая :)
     
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.726
    Симпатии:
    1.283
    Кто просил инструкцию по работе с Arduino на RTL?
    Вот - купите, правда на китайском :)
     
  5. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    574
    Симпатии:
    51
    2pvvx:
    Изменилось ли размещение OTA в новом загрузчике ?
    Хочу OTA писать не с 0x80000 а со следующего блока за Image2 (примерно как было раньше).
    Общая структура такая:
    default Image2 - обновлялка OTA Image через web + сброс настроек wifi, в него попадаем по кнопке (IsForceLoadDefaultImg2).
    OTA Image - приложение, оно стартует по умолчанию если зашито
     
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.726
    Симпатии:
    1.283
    Это зависит от программатора. Загрузчик поддерживает 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 тактов (в лучшую погоду)...
     
    Последнее редактирование: 17 апр 2017
  7. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    574
    Симпатии:
    51
    Если есть 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. Если пины не заданы всегда запускается аварийная.
     
  8. pvvx

    pvvx Активный участник сообщества

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

    sharikov Авторитетный участник сообщества

    Сообщения:
    574
    Симпатии:
    51
    Второй день тыркаюсь, впечатление *****. Мне было интересно узнать под какой сценарий использования было написано то что написано.
    От разных людей ответов не дождетесь: RTL ковыряет 2,5 человека а загрузчик - 1,5.
     
  10. pvvx

    pvvx Активный участник сообщества

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

    Bebebe Новичок

    Сообщения:
    1
    Симпатии:
    0
    Делаю первые шаги с этим контроллером. Пытаюсь получить OTA.bin, а получаю вот это:
    Лог (раскрыть)

    Используем библиотеку OTA версии 1.0.1 из папки: C:\Arduino\hardware\development\rtl87xx\libraries\OTA
    Скетч использует 263684 байт (70%) памяти устройства. Всего доступно 372736 байт.
    Внимание: Это ядро не подерживает экспорт скетчей. Пожалуйста ожидайте обновлений или свяжитесь с автором

    Версия ArduinoIDE 1.8.2 . Может я что-то не так делаю....

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

    Lom Новичок

    Сообщения:
    2
    Симпатии:
    0
    Добрый день!
    Подскажите пожалуйста про 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 ?

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

    pvvx Активный участник сообщества

    Сообщения:
    8.726
    Симпатии:
    1.283
    Это вопрос по архитектуре ARM, а не модуля.
    Большинство других процов, типа в ESP-32, имеют память в виде множества малых раздельных блоков с разными шинами и объединить их в один непрерывный невозможно.
    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.
     
    Последнее редактирование: 4 фев 2018
    parovoZZ, A.V, Lom и 3 другим нравится это.
  14. Артемий

    Артемий Читатель

    Сообщения:
    166
    Симпатии:
    8
    Pvvx , подскажите , как Вашу прошиву (webserver) залить через ота обновление ?
    Скачал ваш исходник , а там куча бинарников .. Инструкции не нашел как это сделать.. Буду Вам искренне благодарен за помощь!
     
  15. nikolz

    nikolz Гуру

    Сообщения:
    4.708
    Симпатии:
    452
    можно отметить начало движения в сторону RTL.
    кто-то утверждал 4 года назад,
    что RTL быстро убьет ESP,
    ему возражали, а он не верил.
     
  16. pvvx

    pvvx Активный участник сообщества

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

Поделиться этой страницей