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

Обсуждение TLSR8269

pvvx

Активный участник сообщества
Такой тест, начально взятый из USB CDC Benchmarking - Texas Instruments Wiki
Код:
#!/usr/bin/env python
############################### txrxUSB.py ###############################
import serial;
import time;
# 32 bytes per row
txData = b'000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f' \
         b'000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f' \
         b'000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f' \
         b'101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e';

def main():
    try:
        serialPort = serial.Serial("COM10",\
                                   115200,
                                   serial.EIGHTBITS,\
                                   serial.PARITY_NONE,
                                   serial.STOPBITS_ONE);
    except:
        print("Couldn't open serial port");
        exit();
    text = txData;
    num_Packets = 2000;
    byteSent = 0;
    byteRead = 0;
    # First time slice
    t1 = time.time()
    for i in range(num_Packets):
        sent = serialPort.write(text);
        byteSent += sent;
        read = serialPort.read(sent);
        byteRead += len(read);
    # Second time slice
    t2 = time.time()

    throughPut = (byteSent + byteRead)/(t2-t1);

    print (t2 - t1);
    print ("Write: %d Bytes" % byteSent);
    print ("Read: %d Bytes" % byteRead);
    print ("%d Bytes/s " % throughPut);
if __name__ == '__main__':
    main()
При одном или двух блоках в 64 байта на моих дровах CDC к TLSR показывает:
upload_2019-10-12_11-9-48.png

Редкая передача 63 байта и прием обратно (в дровах TLSR для теста что пришло то и отдается обратно) выглядит так:
upload_2019-10-12_11-16-11.png
CH1 - сигнал USB
CH2 - тестовый GPIO с TLSR.
upload_2019-10-12_11-21-37.png
 

pvvx

Активный участник сообщества
320 мкс - это почти предельная скороcть ответа 8269 на запрос (TX пакета по USB CDC). При этом он всего копирует блок в 63 байта из одного FIFO точки (IN) в другой (OUT) и пинает ACK-и в регистрах USB.

TLSR CPU (tc32) тормоз ещё тот, а код совершенно не оптимален ни по одному параметру... Может выезжать только за счет качественной периферии (встроенных аппаратных драйверов), чего не густо в 8269.
 

pvvx

Активный участник сообщества
нашел RTOS
и openocd для TLSR8269
MD2020nMe - Overview
Там нет USB и BT, т.к. автор не умеет работать с PLL и нет оф. описания по PLL, USB, BT, .. регистрам.
Я могу прикрутить туда что-то, но пока не вижу в этом смысла. Код RTOS жрет очень много от скорости и по размеру в данном CPU.
Создано исключительно что-бы побаловаться и не имеет практического применения на данном чипе с CPU TC32.
PS: при сборке floader-а были использованы пару файлов из данного репозитория и объява с ссылкой на них уже опубликована в данной теме числа 4-го сего месяца...
 

pvvx

Активный участник сообщества
Нашел ещё метод, как сделать почти "кирпичек" из модуля 8269.
Можно запрограммировать так, что вход "reset" становится хитрым. На нем, при подаче питания не более 0.2 В.
Т.е. проц не запускается. Подтягивание резистором типа 6 кОм на 3.3В не приводит к запуску процессора. Надо тянуть чем-то низкоомным (я вообще коротил к 3.3В или переключал вывод STM32 идущий на сброс TLSR в режим пуш-пул в TlsrTool - по старту он как ОК). Тогда проц запускается и начинает работать swire...
 

pvvx

Активный участник сообщества
Всё, наконец победил CDC USB на TLSR8269 к стандартным дровам USB-COM от Микрософт для PC:
upload_2019-10-15_22-23-57.png
Это при Packet Size 2048 (64*32) байт туда и от туда и ещё специально через USB switch (чтоб медленнее вышло).
Т.е, если читать Flash, то можно это устроить за 1 сек (она 512 кило).
Сравнение скорости можно сделать тут: USB CDC Benchmarking - Texas Instruments Wiki
 

pvvx

Активный участник сообщества
Примерный объем кода для прошивки дров CDC USB для 8269 выходит от 3.5 килобайта (с мини моей os: task/timer - предусмотрен менеджер с задачами и событиями... время переключения, типа шага опроса задач и вызов по таймеру вышло ~10 us - проц 8269 тормоз, особенно когда программа в Flash - ещё у него малый "кеш" Flash...).
 

pvvx

Активный участник сообщества
Скорость GPIO из программы в Flash (!):
Тестовый пример:
Код:
    r = reg_gpio_out(LED_DEBUG);
    u8 x = r ^ (LED_DEBUG & 0xff);
    reg_gpio_out(LED_DEBUG) = x;
    reg_gpio_out(LED_DEBUG) = r;
    reg_gpio_out(LED_DEBUG) = x; // 62.5 ns
    reg_gpio_out(LED_DEBUG) = r;
    reg_gpio_out(LED_DEBUG) = x;
    reg_gpio_out(LED_DEBUG) = r;
Листинг основного куска:
Код:
37e:    4019          tstorerb    r1, [r3, #0]
380:    401a          tstorerb    r2, [r3, #0]
382:    4019          tstorerb    r1, [r3, #0]
384:    401a          tstorerb    r2, [r3, #0]
386:    4019          tstorerb    r1, [r3, #0]
388:    401a          tstorerb    r2, [r3, #0]
Итого: 62.5 ns между переключениями GPIO при CPU CLK 32 МГц (проц по разным докам до 48 МГц).
А строб GPIO видимо 16 МГц и пока не ясно какому CLK он включен (но и знать не требуется - ногодрыг - это зло).
 

nikolz

Well-known member
на прошлой неделе написал китайцам об ошибках в SDK
-------------------------
На этой недели они их исправили и выложили новую версию
 

pvvx

Активный участник сообщества
на прошлой неделе написал китайцам об ошибках в SDK
-------------------------
На этой недели они их исправили и выложили новую версию
Ничего нового не найдено, как и новых SDK.
Изменения были в конце сентября и 09.10.2019.
 

pvvx

Активный участник сообщества
Вот последние изменения в SDK в этом месяце связанные с TLSR8269:
SIG Mesh Release Notes

Hardware: 8269 dongle ,8258 dongle
Software:
V3.0.1 2019/10/09

· GIT Date: 2019/10/09 19:22:23
· SHA-1: a7c21f4218cbb0a51dcb7bf062adcbfa1bb55a32
· Key Features
· Fix 8258 uart driver.
· 修复8258 uart驱动
· Fix HomeKit pairing problem under IOS 13.
修复IOS 13下HomeKit 配对问题

Как я понял, @nikolz, вы сообщили об ошибках в HomeKit на IOS 13 и их исправили для вас?
Остальные SDK на сайте Telink для 826x без изменений. А общий список SDK - за десяток.
 

pvvx

Активный участник сообщества
telink_ble_sdk_release_v3.3.0_20191012
В нем в нутре написано Telink BLE SDK_VERSION = 3.2.0
Последние исправления:
5、telink_ble_sdk_release_v3.2.0_20170906
对应的git源码时间点信息:sihui.wang 2017/8/30 16:17:07
SHA-1: 96d470db8d04642efe8c190ba014b28a1aef2148
APP的时间点信息: sihui.wang 2017/9/6 14:26:24
SHA-1: cd5b77bf2bdff3a5f0b20b72ee7ef27848e4eb80
------------------------------------------------------------------------------------
修订记录:
1、826x master kma dongle add SMP
2、add 8266 feature test
3、add 826x driver test
4、add 826x hid sample
5、add 8267/8269 IR demo
6、add external 32k crystal select
7、12M/16M crystal add external capacitance select
8、add PA
9、add emi test
10、BLE add whitelist/resolving list

Не содержит хидеров для 8269 \telink_ble_sdk_release_v3.3.0_20191012\proj\mcu_spec\register_8269.h - нету. Дрова закрыты в либы.
В других версиях всё лучше (полный комплект дров в исходниках без пряток в либы) и дата конец сентября...
 

pvvx

Активный участник сообщества
И в данной версии SDK (лучше назвать свалке) куча нерабочих исходников.
Пример (usbcdc.c):
Код:
#if(USB_CDC_ENABLE)

#include "usbcdc.h"
#include "../drivers/usbhw.h"
#include "../drivers/usbhw_i.h"
#include "../drivers/usb.h"
#include "../os/ev.h"
//#include "../os/sys.h"
#include "../os/ev_queue.h"
#include "../os/ev_buffer.h"
а никаких ../os/*.h в данной свалке нет. И такого с десяток.
Пишите китайцам - пусть исправляют. :)
 

pvvx

Активный участник сообщества
О - в telink_ble_sdk_release_v3.3.0_20191012 version.h писано :)
#define BUILD_VERSION "Revision: 45:49M"
#define BUILD_TIME "2012-07-24-21:37:43"
 

pvvx

Активный участник сообщества
telink_ble_sdk_release_v3.3.0_20191012
Не все примеры собираются. Особенно те, которые наиболее интересны, т.к. отсутствуют в других версиях.
А в остальном - зачем v3.3.0, если давненько уже вышла ble_sdk_v3.4.0?
Китайцы, обслуживающие сайт и пользователей, вообще считать умеют?
Или только обновлять дату у файлов в архиве научились и выкладывают это в виде нового? :) :)
Тем более SDK эти берут из других мест, от пользователей...
 

pvvx

Активный участник сообщества
TlsrTool постоянно обновляется…
upload_2019-10-21_12-35-18.png
(Да, на 48Mhz TLSR8269 может гнать Swire на 9.6 Mbps (48/5))

За прошедшее время написал свой базовый SDK - переписал свалку Telink и добавил/исправил на свои опции, процесс ещё не завершен. Но основная оптимизация самой системы прошла успешно. Теперь можно выбрать любые CLK CPU и прочего, от 48 МГц до кГц...
Есть задумки на некий проектик... Кого что интересует - спрашивайте...

Ещё раз копал USB СDС :) Скорость тестового echo (с минимальной обработкой) подросла ещё:
upload_2019-10-21_12-38-10.png
(Скорость 'echo' в зависимости от размеров передаваемых блоков доходит до 550 килобайт в сек, буфера приемные и передающие блоки в TLSR8269 4 шт на 4096+8 байт.)

В прошивку USB_COM_SWIRE_TLSR8269 добавил светодиодики R,G,B на PWM :) Отображают что делает TLSR8269… Пустил CPU на штатные 48MHz – в “DS_TLSR8269F512-E_Datasheet for Telink BLE + IEEE802.15.4 Multi-Standard Wireless SoC TLSR8269F512.pdf” писано:

Embedded 32-bit high performance MCU with clock up to 48MHz.

При включенном USB, работе с ним теста, плавном волновом отоборажении светодиодами, потребление указано выше на картинке.
-------------
Нарвался на неопределенность:

В компе c Ryzen несколько USB, в основном 3.1+, Type С,... Но на них скорость тестов типа echo показывает в два раза ниже, чем на паре разъемов USB2.0 и если пустить через USB-свитч(!). Вообще ситуация непонятная. Очень похоже на программные баги-фичи в дровах Win10x64 при обслуживании древних USB1.1/USB2.0. Опускают скорость проса точек в два раза. Из-за этого не идет даже полный USB2.0 с трафиком в 24 Мбайта. Срывается на 16…
Кто что может подсказать, куда и как это копать?
 

pvvx

Активный участник сообщества
Да, шаг 5 шт торчащих PWM (у TLSR8269 в корпусе 32 ноги) = CLK CPU. Т.е. 48 MHz. Компараторы (пауза/сигнал) на 16 бит... Два с расширенными возможностями. Работают нормально.
Пять люстр можно подключить :)
Есть ещё аналоговые-звуковые ADC/DAC... Но с ними позже разберусь.
Найдено уже несколько несоответствий (ошибок в указании и описании регистров - подписаны не те биты, не те адреса... правильных вообще нет, даже в примерах SDK) с основной документацией на чип TLSR8269 от Telink...
 

Alex

Member
Уважаемы pvvx, проектиком " STM32F103 INA219" не поделитесь? Бывает нужда померить потребление своих поделок. На STM32 я могу написать , а вот для PC писать как то не сложилось у меня.
Но думаю время выберу, попробую начать. И еще вопрос, Вы писали: " Кошмар!!! Вот у меня кончились спец. платки с шагом к таким модулям, а ждать новых некогда." Как хоть они выглядят? Искал на Али не нашел.
 
Сверху Снизу