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

Обсуждение Программатор для TLSR

pvvx

Активный участник сообщества
Мой Расчет:
Время передачи по UART 512 KB на скорости 230400 бод составляет 512000/23040 (10 тактов на байт) =22 секунды
на скорости 3 Мбод составит 512000/300000 (10 тактов на байт) =2 секунды
Т е время исполнения программы составляет примерно 10 секунд
Таким образом, при скорости 3 Мбод 90% времени тратится на исполнение программы , а не на работу UART
ИНФОРМАЦИЯ К РАЗМЫШЛЕНИЮ:
Скорость в бодах не отражает кол-во переданных байт в чип. У протокола есть заголовки и много других команд для передачи одного байта в Flash.
Для передачи данных в Flash BDT использует скрипты (некоторые версии на LUA). Передача данных в Flash производится манипуляцией регистров SPI контроллера и на один байт переданный в чип Flash уходят десятки команд котроллеру SWire и SPI. В последних версиях, на новых адаптерах у Telink стали применять оптимизацию - в Telink вдруг вспомнили, что у SWire контроллера есть 'fifo mode'...

Ваши соединения по UART, т.е. более чем 1 сигнальным проводом = не удобно.
Для тех кто не хочет ничего паять и устанавливать какое-то ПО давно есть вариант запуска однопроводного TX-SWS программатора из эксплорера по ссылке:
1617488253111.png
 

pvvx

Активный участник сообщества
Но аппаратный программатор на USB в TLSR8269 отличается "умом и сообразительностью" (с) Тайна Третьей планеты
Ему не интересны никакие боды. Т.е. совсем пофиг, т.к. Telink SWire самосинхронизирующийся в широчайших пределах - более чем в 100 раз по бодовой скорости, в отличии от UART.
И аппаратный программатор не допускает ошибок, как это происходит в эмуляции протокола через UART.

PS: У Telink cуществует и вариант для openocd. Все ПО от него доступно. Но оно не дается "смертным".
 

pvvx

Активный участник сообщества
И писатель от Ai-Thinker уже давно отчитался о встраивании варианта с резисторами на RX-TX, вместо их программатора во Flash:
При этом взял за основу не лучший (немного проблемный и старый) вариант кода на Питоне...
 

pvvx

Активный участник сообщества
В их репозитории у Ai-Thinker, в переработанных вариантах SDK от Telink, ещё много несовместимостей с оригинальным ПО от Telink для чипов. В основном в во всех дописанных скриптах:
1. Распределение Flash для OTA
2. Подписи файлов для OTA. Не работают с другими версиями SDK от Telink, а имеющаяся в репозитории у Ai-Thinker SDK для BLE - устаревшая и в ОТА не проверяет подписи, что и прокатило отсебятину от Ai-Thinker.
 

nikolz

Well-known member
Но аппаратный программатор на USB в TLSR8269 отличается "умом и сообразительностью" (с) Тайна Третьей планеты
Ему не интересны никакие боды. Т.е. совсем пофиг, т.к. Telink SWire самосинхронизирующийся в широчайших пределах - более чем в 100 раз по бодовой скорости, в отличии от UART.
И аппаратный программатор не допускает ошибок, как это происходит в эмуляции протокола через UART.

PS: У Telink cуществует и вариант для openocd. Все ПО от него доступно. Но оно не дается "смертным".
Благодарю за подробную информацию.
---------------------
У меня все проще, но также быстро.
-------------------------
Использую CH340. (можно любой)
SWS TLSR соединяю лишь с Tx СH340 (можно без паяльника).
-------------------------
Обмен информацией двухсторонний.
---------------------------
Размер загрузчика для TLSR 2 КБ.(грузится 0.1сек)
TLSR8266 и CH340 работают на скорости 1 500 000 бод. Ничего не теряют.
-------------------------------
Время чтения всей флеш памяти (512КБ) составляет 9 (точнее 9.08) сек
----------------------
Прошивальщик написан на СИ может работать на любой винде в режиме командной строки.
Не надо заморачиваться с версиями питона и библиотеками для UART.
-------------------------
Для контроля сообщений открываю окно.
1617713511339.png
 

nikolz

Well-known member
Но аппаратный программатор на USB в TLSR8269 отличается "умом и сообразительностью" (с) Тайна Третьей планеты
Ему не интересны никакие боды. Т.е. совсем пофиг, т.к. Telink SWire самосинхронизирующийся в широчайших пределах - более чем в 100 раз по бодовой скорости, в отличии от UART.
И аппаратный программатор не допускает ошибок, как это происходит в эмуляции протокола через UART.
PS: У Telink cуществует и вариант для openocd. Все ПО от него доступно. Но оно не дается "смертным".
Я эмулирую протокол SW лишь для передачи 2КБ загрузчика.
После этого работаю по UART со всеми возможностями контроля ошибок.
-------------------
Если сможете, то подскажите, как уменьшить размер файла cstartup.s.
Что можно выкинуть, чтобы работать на "голом металле"?
 

A_D

Active member
Случайно наткнулся, иногда почитываю темы ради интереса...
SWS TLSR соединяю лишь с Tx СH340 (можно без паяльника).
-------------------------
Обмен информацией двухсторонний.
Отличная шутка! XD Нафига в UART Rx\Tx линии, когда можно подключить только Tx и будет двухсторонний обмен...
 

pvvx

Активный участник сообщества
Отличная шутка! XD Нафига в UART Rx\Tx линии, когда можно подключить только Tx и будет двухсторонний обмен...
Он наверно перепутал CH430 с некоторыми UART у MCU, у которых есть вариант переключения TX вывода в режим OK и переключения RX на тот-же пин. :)
Вот только не ясно каким образом производится синхронизация скорости ответа чипа по SWire с UART, да ещё на 1.5 мегабита, когда тактовый генератор у Swire в чипе тактируется от частоты CLK CPU. А частота CLK CPU может меняться в процессе и у 825x обычно имеет 4 варианта при стандартных делителях от RC генератора или кварца.
Но в итоге всё равно делитель тактирования у Swire на 1.5 мегабита очень редко совпадает, т.к. минимальное деление от CLK - число 5, а дискретность не позволяет попасть в синхронизацию бит у UART адаптера. Так-же диаграмма режима чтения слова по swire не имеет строгой дискретности - начальный бит (как строб) задает читающий, а ответные 9 бит выдает читаемый через асинхронное время паузы. Даже если в промежуток после строба переключить UART на прием, то у UART будут ошибки по синхронизации - побитный протокол отличается от диаграммы приема UART на 8 бит. По этой причине чипы FTDI не могут эмулировать Telink Swire - они строго соблюдают битовую последовательность с проверкой по 3-м точкам каждого бита и выводят ошибку фрейма без занесения "шума" в принятый буфер. Только урезанные до безобразия китайские чипы USB-COM могут как-то принять последовательность swire, т.к. не проверяют RX биты на шум и правильную последовательность - есть или нет старт/стоп бита и т.д. К примеру UART в ESP так-же не шарит что на линии - шум или передача. :)
 

pvvx

Активный участник сообщества
CH430 не может выдавать строгую последовательность бит на TX уже начиная со скорости порядка 230400 бит/c. Происходит разрыв посылок на размер внутреннего буфера - пока по USB придут новые байты для его заполнения. А USB устроена так, что это пауза происходит от частоты опроса флагов point мастером на шине... И она асинхронна с UART и зависит от драйверов на компе и наличия нагрузки на хаб, pci и прочие блоки в структуре компа.
Аналогично и прием - на скоростях более 230400 бит/c c USB Full-Speed (до 12 Мбит/с) без RTS/CTS на время передачи буфера по USB обязательно будут потери. Вероятность такого события превышает уже десятки процентов для Windows и подобных не real-time систем.

В итоге эмуляция Swire на UART - это работа с некой вероятностью наличия неисправимых ошибок, а не строгая эмуляция.
 

pvvx

Активный участник сообщества
Кратность кол-ва бит на слово Swire с размером буфера USB-COM чипа только снижет вероятность появления асинхронных пауз между байтами UART, но не исправляет ситуацию.
У nikolz нет на то средств проверить это, т.к. у него нет осциллографа, нескольких компов c разными USB, времени на проверку, знаний, предыдущих работ и отзывов по ним от пользователей, решений этих проблем с пользователями имеющими эти возможности и т.д...
По одиночному тесту, и то, когда это вдруг "проскочило" среди сотен опытов, он выдумывает, что это рабочий вариант :)

По отзывам и проверкам только запись в TLSR чипа загрузчика в пару килобайт с компа через USB-COM - это вариант с вероятностью ошибки к 10%.
 

pvvx

Активный участник сообщества
Такой вероятности ошибок достаточно для критических случаев восстановления сбитого ПО в чипе у пользователя, но не для работы с TLSR чипами.
 

pvvx

Активный участник сообщества
Время чтения всей флеш памяти (512КБ) составляет 9 (точнее 9.08) сек
Это очередной теоретически ошибочный подсчет от вас?
Предельная скорость Swire у разных чипов и разных CLK разная. Только это уже направляет ваши расчеты в помойку.
Прошивальщик написан на СИ может работать на любой винде в режиме командной строки.
Чтобы странслировать СИ пользователю необходимо загрузить от пол GB приложений и библиотек на компе и без наличия типовой инструкции :p :)
А на многих OC есть и другие заморочки несовместимые с знаниями пользователей...
Не надо заморачиваться с версиями питона и библиотеками для UART.
Т.е. вы ещё не осознали, что код для Питона написанный с синтаксисом к последней версии и учета старых работает на всех старых версиях? А причина подбора старых версий у пользователей - код написан до выхода новых версий Питона и типа...
 

Kabron

Member
Жалко, что мы так и не услышали начальника транспортного цеха
 

nikolz

Well-known member
Это очередной теоретически ошибочный подсчет от вас?
Предельная скорость Swire у разных чипов и разных CLK разная. Только это уже направляет ваши расчеты в помойку.
Чтобы странслировать СИ пользователю необходимо загрузить от пол GB приложений и библиотек на компе и без наличия типовой инструкции :p :)
А на многих OC есть и другие заморочки несовместимые с знаниями пользователей...
Т.е. вы ещё не осознали, что код для Питона написанный с синтаксисом к последней версии и учета старых работает на всех старых версиях? А причина подбора старых версий у пользователей - код написан до выхода новых версий Питона и типа...
Вы опять невнимательно читали.
Повторяю специально и медленно.
------------------------------
Все работает по UART а не по Swire. UART у всех чипов одинаковый.
Поэтому скорость чтения flash не изменится.
Я ее не рассчитывал, а измерил на TLSR8266 (JDY-10) и она ограничивается скоростью чтения из флеш внутри чипа.
-----------------------------
По Swire я загружаю лишь 1.8 Кбайт бинарного кода загрузчика .
---------------------------------
загрузчик сделан в виде exe файла и работает на любой вуинде. Его не надо собирать так как он уже собран, но можно и собрать так как никаких сторонних библиотек не требуется.
Исполняемый файл 44 Кбайта.
Это Ваш загрузчик требует питона версии 3 и выше и драйверов на UART т е. гигабайты софта и может работать лишь на win10.
----------------------------
 

nikolz

Well-known member
Случайно наткнулся, иногда почитываю темы ради интереса...

Отличная шутка! XD Нафига в UART Rx\Tx линии, когда можно подключить только Tx и будет двухсторонний обмен...
Видно что не в теме, Но хочется выпендриваться? Верно?
Объясняю для тех кто временами тявкает на караван.
Двухсторонний обмен я делаю по UART интерфейсу. Для него не нужен SW интерфейс.
Поэтому SWS подключается лишь для загрузки начального загрузчика (2 кб) в SRAM чипа т е для этого надо соединить SWS с Tx CH340.
----------------
схему можете нарисовать сами. Rx Tx TLSR соединяете с Tx Rx CH340. и дополнительно через диод шоттки,или тумблер, или кнопу соединяете SWS TLSR с Tx CH340 .
 

nikolz

Well-known member
Кратность кол-ва бит на слово Swire с размером буфера USB-COM чипа только снижет вероятность появления асинхронных пауз между байтами UART, но не исправляет ситуацию.
У nikolz нет на то средств проверить это, т.к. у него нет осциллографа, нескольких компов c разными USB, времени на проверку, знаний, предыдущих работ и отзывов по ним от пользователей, решений этих проблем с пользователями имеющими эти возможности и т.д...
По одиночному тесту, и то, когда это вдруг "проскочило" среди сотен опытов, он выдумывает, что это рабочий вариант :)

По отзывам и проверкам только запись в TLSR чипа загрузчика в пару килобайт с компа через USB-COM - это вариант с вероятностью ошибки к 10%.
я вам результаты работы реальной рассказываю, а вы мне общеизвестные учебники своими словами пересказываете.
Ну и зачем?
Если Вы не можете это сделать, но не факт, что у других не получится.
------------------
 

nikolz

Well-known member
Такой вероятности ошибок достаточно для критических случаев восстановления сбитого ПО в чипе у пользователя, но не для работы с TLSR чипами.
выше спросил Вас, но Вы промолчали. Возможно не заметили вопрос. Повторю:
--------------------------
Если сможете, то подскажите, как уменьшить размер файла cstartup.s.
Что можно выкинуть, чтобы работать на "голом металле"?
 

pvvx

Активный участник сообщества
я вам результаты работы реальной рассказываю, а вы мне общеизвестные учебники своими словами пересказываете.
Ну и зачем?
Чтобы вы осознали, что обречены по теоретическим и физическим факторам.
Если Вы не можете это сделать, но не факт, что у других не получится.
Новая математика получится? Или измените физические законы и все чипы CH430 совместно с компами и ОС у пользователей?
Тем более пока не видно что вы что-то нового сделали, кроме частичного повтора того, что уже выложено в паблик.
 
Сверху Снизу