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

BLE модули TB-04/TB-03F (TLSR8253F512)

pvvx

Активный участник сообщества
А вот еще, что происходит с калибровкой, если флеш очистить? Если там были какие-то значения, они затрутся ...
А мне пофиг - обычно Flash перезаписывается через Zigbee OTA после Tuya. А у Tuya SDK свой бардак. И тем более Tuya (обычно) идет с boot-loader и с чипом TLSR8258 с Flash на 1 МБ.
Я такое не пользую - после Zigbee OTA прошивка перемещается и затирает нафиг Tuya boot-loader и использует только 512 КБ (для BLE или Zigbee, или BLE-Zigbee FW), т.к. есть варианты и у Tuya модулей с Flash на 512 КБ.
И если загружается прошивка BLE в Flash на 1 МБ, то старшие 512 КБ дополняются к записи истории замеров...
Разметку Flash можно менять как угодно - исходники SDK на то и даны.
 

pvvx

Активный участник сообщества
U_Cfg_Info. Там используется только первый 16 байт. Больше я нигде в коде не нашел, что там еще что-то пишется/читается.
Да есть там ещё чего-то. И в 0x76000, где MAC. Тоже пофиг, т.к. я все обращения во всех SDK переписал на свои, удалив большую часть, т.к. они не нужны. Да и это проще и быстрее, чем разбираться что там наворотили - ничего сложного и непонятного во всем ПО для данных чипов нет.
Никто из пользователей что-либо калибровать не будет. Зальют альтернативную прошивку и будут пользоваться. А если нужны коррекции - описываем их с доступом через спец. кластеры в Zigbee или интерфейс в BLE. А сохранение данных своё и в некоторых вариантах в NV Zigbee из SDK. Но NV Zigbee стирается при сбросе для связывания и не катит для таких переменных...
 

Slacky

Member
Виктор, можно вопрос. Как совместить на 8258 сон и uart. Что-то не получается у меня. uart перестает нормально работать. Хотелось бы просыпаться, когда на RX что-то придет.
 

_eugene_

New member
Доброго времени суток.

Разбираюсь с принципами работы TB-03F, в наличии один KIT и один отдельный модуль.

При просмотре из BLE_Scaner на TB-03F KIT виден один custom-сервис с двумя характеристиками, но дескриптора для включения уведомлений для приёмной характеристики не наблюдается.

Запаял/запустил отдельный модуль и у него уже указанный дескриптор на месте. B итоге нормально заработал обмен с написанной мной прогой QT/WinRT.

В чём может быть причина? Модули могут продаваться с разными?

И второй вопрос: Модуль с дефолтовским именем «Ai-Thinker» обнаруживается при сканировании, но при смене имени AT-BLENAME перестаёт, как будь-то отключается отправка рекламы.
 

pvvx

Активный участник сообщества
В сортах и вариантах "г.." для AT прошивок никто тут не разбирается. Этих "AT" вариантов прошивок много и неизвестно что там у вас записано в эти модули.
Соберите свой вариант "AT" из предоставляемых «Ai-Thinker» исходных кодов и залейте в модули, если вам так нужен этот "AT".
Никто эти прошивки с "AT" на данных модулях не использует, а сразу записывает свои программы...
 

_eugene_

New member
Что касается нормальной прошивки, то я её вроде как нашёл.

Зашил китайской софтиной в TB-03F-KIT:

photo_2025-04-13_09-42-48.jpg

Прошивка прекрасно работает:

#####################################################

arch:CHIP_TLSR825x,0x00000001
company:Ai-Thinker|B&T
ble_mac:a4c138042688
sdk_version:release/V3.4.1
firmware_version:release/V205
compile_time:Oct 13 2022 15:21:40

ready

#####################################################

Но… только до перезагрузки, после первого же ресета перестаёт отвечать на АT-команды и обнаруживаться.

Такое ощущение, что эта софтина записывает прошивку со смещением (в область основного приложения) и с этого адреса запускает. А по ресету стартует загрузчик, но на основное приложение не переходит.

Размер этой прошивки около 80К, возможно в ней чего-то не хватает, здесь кто-то выкладывал прошивку ff.bin размером 512К, так вот она по ресету стартует нормально после записи этой прогой,

Может у кого-то есть бинарник указанной версии, который бы стартовал нормально?
 

_eugene_

New member
В принципе вопрос снят, удалось по методике pvvx-на (на первой странице ветки) считать нормальную прошивку, а также записать её в другие модули.
 

pvvx

Активный участник сообщества
Размер этой прошивки около 80К, возможно в ней чего-то не хватает
Размер простой BLE прошивки (без поддержки дополнительных режимов типа "Le Long Range") влезает в RAM устройства. Это до 64-х килобайт.
80 у AiThinker - это по причине, что они не стали заморачиваться с линкером и там дцать килобайт нулей.
 

_eugene_

New member
”… они не стали заморачиваться с линкером” – это мне не очень понятно, я пользуюсь IAR он без спросу ничего лишнего в ROM не размещает, только если вручную прописать в файле конфигурации линкера какие-то пользовательские регионы.

Правильно ли я понимаю, что для того чтобы обновить основное приложение в TB-03F нужно в параметрах запуска TlsrComProg.py изменить начальный адрес записи на 0x8000:
Код:
python.exe TlsrComProg.py -p COM10 -t 600 we 0x8000 AiThinkerAT.bin
Конечная задача – получить BLE-slave со средним потреблением в пределах 20 мкА. Пока не понятно возможно ли этого достичь средствами стандартной прошивки.Сам ещё потребление не мерил, но нашёл в Интернетах такие результаты:
1744592291247.png
 

pvvx

Активный участник сообщества
”… они не стали заморачиваться с линкером” – это мне не очень понятно, я пользуюсь IAR он без спросу ничего лишнего в ROM не размещает, только если вручную прописать в файле конфигурации линкера какие-то пользовательские регионы.
Какая разница - IAR или Keil или GCC, если в ваших контроллерах нет области Retention RAM?
Вот её свободную часть (порядок до 32 килобайт) и заполнит нулями для сохранения линейности адресации при загрузке, а можно было-бы описать сегмент укороченным по неиспользуемым областям, путем перерасчета и повторной линковки, что многим делать просто лень... Это вами не программная очистка BSS или развертывание rodata при старте...
В итоге видно, что ваши познания в современных SoC и сборке линковщиков никудышные, а пытаетесь что-то выдумать...
Правильно ли я понимаю, что для того чтобы обновить основное приложение в TB-03F нужно в параметрах запуска TlsrComProg.py изменить начальный адрес записи на 0x8000:
Нет. 0x8000 - это область старта FW в Zigbee с Bootloader-ом. Иногда используется в прошивках Tuya.

У AiThinker описано, куда и какие куски прошивок грузить и в каких случаях. Я этого не изучал и не буду, так как зачем мне слегка измененные варианты examples из устаревшего SDK от Telink, но со сборкой от AiThinker?
Помню только, что они пытались сделать в свои прошивки UART загрузчик, но это не работает во всех случаях и скопировали мой код Python c эмуляцией Telink SWire для USB-UART, не сказав даже спасибо и не предложив пачки модулей бесплатно :)
Конечная задача – получить BLE-slave со средним потреблением в пределах 20 мкА. Пока не понятно возможно ли этого достичь средствами стандартной прошивки.Сам ещё потребление не мерил, но нашёл в Интернетах такие результаты:
В приведенной вами таблице и указано, что не выйдет, т.к. надо правильно отключать всю ненужную периферию на время sleep. В задачи AiThinker это не входит и не входило - у них главное продать модули. Для этого они слепили что слепилось - а дальше поправлять и изучать что сделать - вам.
У AiThinker может быть даже активен модуль USB во время сна, т.к. он есть во всех TLSR825x...
 

pvvx

Активный участник сообщества
Нормальный маяк, с под завязку забитым фреймом, с возможностью соединения, если правильно написать у TLSR825x с интервалом около 2.5 сек имеет среднее потребление около 5 мкА (при RF TX +0дбм, но это сильно не сказывается). Утечка на Retention RAM в 32КБ и прочие блоки при sleep у TLSR825x составляет 1.2 мкА (максимум 1.8).
Время на просыпание SoC, передачу на 3-х каналах, засыпание = 4 мс со средним током 3..5 мА в зависимости от выбранной частоты работы CPU.
Из этого и исходите...
 

pvvx

Активный участник сообщества
Для Xiaomi LYWSD03MMC к этим токам добавляются токи драйвера LCD, спящего датчика, опроса датчика по I2C, обработка вывода на дисплей (I2C), опрос батареи, запись истории замеров в Flash. В итоге при интервале передачи BLE рекламы в 2.5 сек средний ток выходит до 14 мкА, с пиковыми значениями при RF-TX до 8 мА.
 

_eugene_

New member
Моих знаний по линковке хватает для решения нужных мне задач, в том числе написания загрузчиков для МК. А отвечать вашим требованиям по глубине познаний в мои планы не входит. Если понадобятся дополнительные знания – изучим.
Залазить в сборку проектов под этот чип пока планирую, изучаю разные вариант чипов.

Интересно ваше мнение по этим модулям
За счёт чего достигнуто такое низкое потребление при рассылке рекламы.
Чем решения на чипах от ST хуже Telink? Только ценником?
 

pvvx

Активный участник сообщества
Интересно ваше мнение по этим модулям
За счёт чего достигнуто такое низкое потребление при рассылке рекламы.
Чем решения на чипах от ST хуже Telink? Только ценником?
По указанным картинкам от осциллографа различий по потреблению с TLSR825x не вижу.
1744665369203.png
А в тексте указаны другие, завышенные расчеты, несовместимые с практикой.
Наверно это был заказ на рекламу.
По картинке тока можно четко сказать, что это замер рекламного события (передачи по 3-м каналам) с самым маленьким размером вложенных данных в пакет передачи. Об этом говорят и деления по времени и отношение длительности включения приемника (сразу после каждой передачи).
Сетка делений указывает на время активности примерно к 5 мс, а в тексте другие значения...
Более 2 мс указанный чип занят дурью - пробуждением и прочими переключениями.
 

pvvx

Активный участник сообщества
Какой там чип и PDF на него не указан.
Но это "доступно 160 кбайт Flash-памяти программ и 24 кбайт оперативной памяти" говорит о том, что уже любой устаревший китайский чип из серии TLSR825x гораздо лучше.
У них у всех (TLSR8250...TLSR8258) 64 килобайта RAM и от 512 килобайт Flash и поддержка всех нужных протоколов - BLE и Zigbee
 

pvvx

Активный участник сообщества
И в статье указано, что CPU CortexM0. Это говорит о том, что его периферия (API модели) примерно аналогичный первым STM. Если это европейская "разработка", то это есть беда.
Так как там всё убогое - I2C, UART, SPI и т.д. только с постоянным участием CPU и на низкие скорости. Большинство I2С датчиков давно требуют частоту шины к 3МГц, что сильно сокращает время работы с ними и на столько-же потребление, что сверх важно для BLE.
Если это так, то TLSR чипы выигрывают на 1000% из-за правильно разработанной периферии.
 

pvvx

Активный участник сообщества
Из-за того, что у TLSR совершенно другие модели всех встроенных контроллеров толпа леммингов с ним не дружит. Им сложно понять, что все устройства работают сами, задав им только команду что нужно сделать и получая ответы в FIFO или в заданные пользователем блоки памяти, даже без DMA :p
 

pvvx

Активный участник сообщества
Во все TLSR825x идет один и тот-же кристалл. В нем есть USB, но ноги USB выведены только у корпусов с много ножек у TLSR8258 и c мало ножек у TLSR8251.
И т.к. контролер не от Cortex, то производительность этого USB2.0FS соответствует полной теоретической за счет требования малого вмешательства в работу CPU. Т.е. не тормозит, прерывания практически не нужны, развитое FIFO. Описывается на одной странице кода (в основном данные для описания точек).
 
Сверху Снизу