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

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

nikolz

Well-known member
Добрый день,
Идея следующая:
сделать программатор для TLSR без использования каких-либо дополнительных CPU.
Пишем прогу для PC которая через USP-UART пишет в TLSR по Swire драйвер для USB.
После этого работаем по USB через BDT софт от TELINK.
Если превратили чип в камень , то снова пишем драйвер.
В итоге нет надобности в доп.железе.
Возможно есть иные идеи.
Прошу высказываться.
----------------------------------------------------------------------------
Хотелось бы послушать начальника транспортного цеха.
 

nikolz

Well-known member
продолжу.
один байт UART с одним стопом позволяет передать 2 бита в формате Swire
т е скорость записи в TLSR будет в 4 раза меньше, чем скорость UART
при скорости UART 921600 получим 2 Мbit /s
 

pvvx

Активный участник сообщества
продолжу.
один байт UART с одним стопом позволяет передать 2 бита в формате Swire
т е скорость записи в TLSR будет в 4 раза меньше, чем скорость UART
при скорости UART 921600 получим 2 Мbit /s
С арифметикой то как?
Swire 2 Мbit /s - это 2 000 000 бит в секунду.
UART - при 921600 - 921600 бит в секунду.
:) :) :)
При ваших 2 бита на байт UART -> От UART требуется: (2 000 000/2)*10 = 10 000 000 baud
 

pvvx

Активный участник сообщества
Попахивает покупкой дорогого USB-COM адаптера на минимум полный USB2.0.
Это значительно дороже применения модуля TLSR8269 c прошивкой USB CDC - SWM или даже Bluetooth COM (программировать по воздуху).
А лучше взять готовый на STM32 с программой TlsrTool. Там и доп. плюшки:
Десяток GPIO STM32 для произвольного управления, как логический анализатор но низкой скорости - отслеживать уровни GPIO на модуле симулировать кнопки...
 

pvvx

Активный участник сообщества
Каждый GPIO STM32 в TlsrTool настраивается (обведена группа GPIO):
upload_2019-10-10_22-0-14.png
и цветом показывает состояние.
Полные настройки любого GPIO:
upload_2019-10-10_22-0-32.png
upload_2019-10-10_22-0-40.png
В новых версиях вполне может появится и симуляция I2C и/или SPI для отлаживаемого модуля TLSR.
Всё это через простой USB-COM организованный на самой дешевой платке до 90 рупь:
upload_2019-10-10_22-5-56.png
Т.е. применимо любое ПО на любом языке на компе или смарте с примитивным алгоритмом управления (подачи команд в СOM порт).
 

pvvx

Активный участник сообщества
О - цены уже подросли на несколько руб (или я не нашел самых дешевых этих плат)
79.47 руб. 5% СКИДКА|STM32F103C8T6 ARM STM32 минимальная система макетная плата модуль CS32F103C8T6-in Интегральные схемы from Электронные компоненты и принадлежности on Aliexpress.com | Alibaba Group
Для nikolz - раз уж так хочется подергаться с COM портом, то эти платки программируется через COM порт и STlink адаптер.
 

nikolz

Well-known member
С арифметикой то как?
Swire 2 Мbit /s - это 2 000 000 бит в секунду.
UART - при 921600 - 921600 бит в секунду.
:) :) :)
При ваших 2 бита на байт UART -> От UART требуется: (2 000 000/2)*10 = 10 000 000 baud
признаю ошибся максимум будет 500 Кбод
Хотя в данном случае не имеет значение так как это активатор
 

nikolz

Well-known member
тест Swire ->UART на адаптере СH340G скорость 250Кбод
вывод в цикле последовательности:
END;START;SENDRW;ADRH;ADRL;END;

upload_2019-10-12_8-47-2.png
 

nikolz

Well-known member
максимальная скорость активатора на UART-Swire получается 500 Кбод.
upload_2019-10-12_12-52-38.png
на дурине тоже можно реализовать Swire
 

pvvx

Активный участник сообщества
На всякий случай вам некоммерческая версия USB_COM_SWIRE_TLSR8269, созданная по мотивам коммерческой но без лицензий и прочего, т.е. в виде аля-Arduino глюк:
(и да, я не хочу погрязнуть в разборках Микрософт-овских драйверов CDC для винды, чтобы устранять все его глюки - на то есть профи, которые и сделали уже ком.версию, а я с неё написал как смог на правленных мной кусках кода от Telink и вышел глюк :) Оно мне пока не надо, но если кто даст полную спеку от Микрософт-овских драйверов CDC для винды то возможно подправлю...)
 

Вложения

pvvx

Активный участник сообщества
@nicolz - Хотелось бы услышать концепцию отладки собранной программы имея ваш описываемый “активатор”-программатор.

Приведу как это у меня:

По опыту, написав и тестируя уже десяток разных прошивок на TLSR, пришлось более нескольких сотен раз перепрошивать TLSR8269 в сутки (за присест). Так быстрее отладить драйвера требующие тесты внутренностей чипа, о которых нет ничего в оф. документации. При этом 80% прошивок висло или 99% не имело связи по USB из-за отсутствия в прошивке специального драйвера USB совместимого с программами Telink и EVK. В итоге, имея в наличии и подобие EVK, и весь комплекс ПО от Telink для записи и отладки, с ними не было никакой возможности работать. Они просто ничего не могли поделать с зависшим тестируемым “окирпичиваемым” модулем. Срабатывала исключительно только TlsrTool c STM32 и то в некой хитрой последовательности используемых операций для реанимации модуля на TLSR8269. Да и спасала скорость записи TlsrTool, т.к. программы для тестов внутренностей чипа занимали несколько килобайт и писались в совсем зависший “кирпич” модуль за пару секунд – т.е. скорость зависела от "как успеваем жать кнопки". Так-же при этом ни разу не потребовалось изменить скорость работы swire у STM32. Это даже спасало в некоторых случаях, т.к. связи на других скоростях и при наличие имеющихся фич у других “программаторов” ничего не удавалось сделать, или бы пришлось потратить больше времени на поиски как в данной текущей ситуации поступить для реанимации или получения связи с модулем по swire…

В итого – инструмент, программатор, должен быть универсальным:

1. Иметь возможность серийной записи = скорость и желательно сразу несколько модулей за раз.

2. Обеспечивать быстрые отладочные прошивки с любым “окирпиченным” модулем. На то она и отладка.

PS: жду вашего описания как же пользоваться вашим “активатор”-программатором в описанных случаях и вообще о понятиях “программатор” :)
А пока выходит, что “активатор”-программатор нужен исключительно чтобы прошить имеющуюся прошивку от Telink в модуль от Telink и поиграться его утилитами. Для других модулей, типа ET104-BT10-G/N c TLSR8269 у Telink нет рабочих прошивок, а имеющиеся не работают.
В основном это связано с засИкреченной информацией по настройке PLL и прочих CLK в SoC, как и многое другое. А пока этого у вас нет, никакой USB или BT вы не получите на модулях TLSR с другими кварцами. Будете катать только полу-рабочие “примеры” от Telink. :p
 

pvvx

Активный участник сообщества
И по поводу TLSR и Arduino.

У вас уже есть Arduino для TLSR чипов?

А её нет. Но, если кто возьмется, то тут-же, уже имея выложенные хотя-бы мной описания, напишет в среду Arduino программатор хоть на UART.

Я считаю, и имея то, что уже наработал с TLSR, что первая бэтка Arduino для них может быть набита за два вечера, далее всё время уйдет исключительно на “сопровождение”, чего я не могу себе позволить – есть другие задачи.
Это примерно как с RTL серии "B" - нет для неё Arduino, а у меня есть, но не выкину в паблик, т.к. не собираюсь сопровождать...
 

pvvx

Активный участник сообщества
Уточненное и полное описание как сделать EVK из модуля ET104-BT10.
EVK_ET104-BT10.zip
Для этого потребуется USB разъем, источник питания на 3.3V и резистор. Более ничего.
 

pvvx

Активный участник сообщества
Для @nikolz - он мечтал о UART прошивке...
Ai-Thinker-Open/Telink_825X_SDK

Введение в UART BOOT
Цель
Чипы серии TLSR не поддерживают UART программирование. Вам необходимо приобрести дополнительный писатель, который стоит более 100 юаней. Таким образом, была разработана функция программирования последовательного порта, экономящая деньги автора и способствующая продвижению.

Принцип
Загрузчик хранится в первых 16 Кбайт Flash. При включении эта часть кода определяет уровень контакта SWS и определяет, следует ли войти в режим программирования или режим работы в соответствии с различными условиями.

После включения микросхемы ЦПУ автоматически копирует первые 16 Кбайт данных Flash (то есть загрузчика) в память, а затем запускается с адреса 0. BootLoader определяет, какой режим нужно ввести, основываясь на уровне контакта SWS.

Если он входит в режим записи, код загрузчика будет продолжать выполняться, ожидая, пока пользователь запишет прошивку.

Если вы войдете в режим выполнения, то Ram-код кода прикладного уровня будет скопирован с адреса 0x2C000 Flash в память 0x0, а затем код прикладного уровня будет запущен с адреса памяти 0x0.
 
Сверху Снизу