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

Обсуждение TLSR8269

pvvx

Активный участник сообщества
В общем случае идея такая
...
Вам уже говорилось месяц назад - реализовать swire можно на чем угодно за день и EVK не нужен.
И то, за день - это было до того как уже расписал всё про swire. Ныне на это надо полчаса :p
 

pvvx

Активный участник сообщества
Если ещё выкинуть исходники готовых CDC дров на github и прочих USB к TLSR, то вообще будет весело с TLSR.
Но это не моё - не люблю оформлять и некогда поддерживать... У меня "варится" не только TLSR.
 

nikolz

Well-known member
Вам уже говорилось месяц назад - реализовать swire можно на чем угодно за день и EVK не нужен.
И то, за день - это было до того как уже расписал всё про swire. Ныне на это надо полчаса :p
Я вам верю.
Но предпочитаю делать сам.
Поэтому я взял EVK изучил протоколы
нашел те картинки которые потом выложили в форум в том числе и вы
Пока все сделал собственными силами и прочитал документацию ( если посмотрите то месяц назад писал что протокол накорябал на ESP)
Но в отличии от вас-профессионала, я -любитель Вашего оборудования нет и не пашу 30 лет на разработке железа на микропроцессорах
поэтому так как вы быстро не делаю но делаю как мне нравится.
------------------------
Поэтому меня интересуют прикладные вопросы и конкретная информация, если жаба не душит Вас,
а не Ваше самовосхваление.
 

nikolz

Well-known member
Вариант с адаптером делает не нужными не только EVK но и вашу поделку на STM32,
которая тоже не будет широко использоваться (как и ваша свалка и ваши поделки на RTL).
 

pvvx

Активный участник сообщества
Вот вам очищенные исходники floader от TlsrTool.
Для сборки нужен только SDK Telink.
 

Вложения

pvvx

Активный участник сообщества
Вариант с адаптером делает не нужными не только EVK но и вашу поделку на STM32,
которая тоже не будет широко использоваться (как и ваша свалка и ваши поделки на RTL).
Сильно ошибаетесь - всё перечисленное используется :p
Есть земля, на ней растет трава, траву едят .... Круговорот. А перечисленное есть звено этого.
Иначе жизни нет, т.е. совсем как у вас. :p
 

nikolz

Well-known member
Сильно ошибаетесь - всё перечисленное используется :p
Есть земля, на ней растет трава, траву едят .... Круговорот. А перечисленное есть звено этого.
Иначе жизни нет, т.е. совсем как у вас. :p
Вы постоянно в заботе о других. Всегда думаете о народах.
Как я Вам сочувствую.
----------------------------------------
Василий Иванович, а ты армией командовать могёшь?
- Могу.
- А фронтом?
- Могу, Петька, могу.
- А всеми вооружёнными силами Республики?
- Малость подучиться, смогу и вооружёнными силами.
- Ну, а... в мировом масштабе, Василий Иванович, совладаешь?
 

pvvx

Активный участник сообщества
Описание как работать с Floader.


Предварительно по swire посылается остановка/сброс CPU - SwireWrite(0x006f, 0x20, 1).

Далее загружается бинарник в адрес 0x8000 - SwireWrite(0x8000, floader, sizeof(floader) ).

После загрузки запускается CPU - SwireWrite(0x0602, 0x88, 1).

В бинарнике floader.bin по адресу 4 расположен указатель на адрес структуры обмена командами EXT.

Далее общаемся c работающим floader по swire через эту структуру EXT в памяти TLSR8269.

Код:
typedef struct {
                volatile u32 faddr; // адрес Flash или другого устройства
                volatile u32 pbuf; // адрес буфера в памяти TLSR
                volatile u16 count; // кол-во байт обработки
                volatile u16 cmd; // команда Floader-у
                volatile u16 iack; // оповещение о смене команды по swire
                volatile u16 oack; // оповещение Floader-а о исполнении команды
} sext;
sext ext;
По старту Floader-а данная структура заполняется:
  • ETX.faddr = Flash ID
  • ETX.pbuf = адрес буфера в памяти TLSR
  • ETX.count = максимальный размер буфера
  • ETX.cmd = команда чтения ID Flash
  • ETX.iack = номер версии Floader
  • ETX.oack = 0

После старта Floader, через задержку в пару ms, по swire считываем EXT.
Проверяем размер ETX.count, FlashID, адрес буфера, номер версии Floader...

Если хотим подать команду чтения Flash, то изменяем:
  1. ETX.faddr = адрес чтения Flash,
  2. ETX.count = сколько хотим прочитать за раз (см. ограничение буфера)
  3. ETX.cmd = FLASH_READ_CMD
  4. ETX.iack увеличиваем на 1
ETX.pbuf не меняем (будем менять - это надо только при хитрых мультизадачах).

Передаем структуру ETX по Swire за раз, но не всю, без последних 2-х байт ETX.oack.

В цикле читаем по swire слово ETX.oack и ждем когда оно изменится от прошлого (изменяется на +1).
Это значит floader выполнил команду.

Читаем по swire буфер по адресу ETX.pbuf и размером ETX.count.
Всё – заданный кусок Flash прочитан.
 

pvvx

Активный участник сообщества
Вы постоянно в заботе о других. Всегда думаете о народах.
Как я Вам сочувствую.
Человек общественное животное.
Есть трутни, есть зомби, есть ...
Вы чъих будете?
(Я вот человек, который строит под себя мир и часто чужими руками за счет малых подач... :p )
 

pvvx

Активный участник сообщества
И чтобы Гуру @nikolz не расстраивался, то в TlsrTool давно вписано такое:
upload_2019-10-10_20-23-47.png
Нажал FFread на чтение 16 байт :) Но читать/писать не отказывается.
Распределение на оптимум по скорости в программу не вписано, может потом... Пока не требовалось.

Более мелкие операции быстрее сделать непосредственно по swire, путем копания в регистрах чипа.
Например стирание всей Flash - это всего подать команду стирания Flash через регистры SPI = несколько коротких транзакций по swire, а не загрузка килобайтного лоадера.

Другие опции в TlsrTool вписываются пор мере моей нужды.
 

pvvx

Активный участник сообщества
А вот в загрузчике программы cstartup_8269.S закоментированная защита от EVK
Код:
    .org 0x20
__reset:
@    tloadr        r0, DAT0 + 36
@    tmov        r1, #1024        @ set sws to GPIO
@    tstorer     r1, [r0, #0]
Но не от TlsrTool :)
 

nikolz

Well-known member
Человек общественное животное.
Есть трутни, есть зомби, есть ...
Вы чъих будете?
(Я вот человек, который строит под себя мир и часто чужими руками за счет малых подач... :p )
Русский язык - могучий язык
С его помощью можно изложить любую чушь и делать вид что это что-то значит.
Как может человек (животное) быть трутнем (насекомым) и зомби( придуманным персонажем страшилок для дебилов)
---------------
Все замечательно когда Вы излагаете технические вопросы по микропроцессорам,
но просто кошмар, какой-то,
когда Вы начинаете излагать свои домыслы на гуманитарные темы.
-----------------------------
 

nikolz

Well-known member
pvvx,
Признайтесь , положа руку на библию:
Если бы я Вас так не раздражал,
Вы бы и десятой доли не сделали того что есть.
-------------------
"О, сколько нам открытий чудных
Готовят
просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг"
 

pvvx

Активный участник сообщества
pvvx,
Признайтесь , положа руку на библию:
Если бы я Вас так не раздражал,
Вы бы и десятой доли не сделали того что есть.
-------------------
"О, сколько нам открытий чудных
Готовят
просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг"
Посмотрите начало тем ESP8266, RTL, ... Там вас не было, а сделано было больше за тот-же период.
В данной теме есть большая проблема - безграмотный в электронике и программировании nikolz. На описание вам простейших и уходит всё время... А за это время вполне возможно было-бы создать нормальные описания по Tlsr и их глюки и баги в чипе (они есть - уже нашел кучку...).
 

nikolz

Well-known member
Посмотрите начало тем ESP8266, RTL, ... Там вас не было, а сделано было больше за тот-же период.
В данной теме есть большая проблема - безграмотный в электронике и программировании nikolz. На описание вам простейших и уходит всё время... А за это время вполне возможно было-бы создать нормальные описания по Tlsr и их глюки и баги в чипе (они есть - уже нашел кучку...).
Мы говорим не про ESP а про TLSR.
--------------------------
Посмотрите начало этой темы я создал ее в августе.
а эту
https://esp8266.ru/forum/threads/ochen-umnyj-dom.4518/
в сентябре
-------------------
Что же касается ESP, то там я вообще просто погулять вышел.
А про RTL - верно это Вы кричали на форуме что убили ESP
А я лишь написал, что RTL не получит такого распростанения как ESP
---------------------------
У вас опять приступ хамства и позерства, значит злитесь.
 

pvvx

Активный участник сообщества
Забудем о глупом Гуру @nikolz, он только темы ни о чем создает :)

По мере копаний с USB1.1 у TLSR8269 вылезло, что FIFO у точек на RX в 256 байт, на TX 64 байт. Это ограничивает максимальную скорость по USB. В номинале у USB1.1 всего 64 килобайта в сек - 64 байта на строб в 1 мс.
Со стандартным драйвером USB-COM (Микрософт), в режиме CDC, TLSR8269 работает плохо. Это связано со спецификой аппаратной части USB у TLSR8269. Host посылает непрерывно и сразу пачку блоков по 64 байта, а USB у TLSR8269 их проглатывает и не дает ACK или прерываний на блок в 64 байта. Только на 256, хотя везде выставленно 64. (Может ещё где-то что-то можно установить в каком из тысячи регистров, но документации нет). Выходит беда - на каждую посылку 64 байт комп передает от 4..5 блоков по 64 байта. При большем запросе к COM порту в компе пачка увеличивается и всегда комп передает лишние, без подтверждения от TLSR, что уменьшает максимальный трансфер. Я переписал дрова в TLSR и ограничение приема только по объему памяти, но выйти за скорость более 64000 байт в сек на ответ (TX к компу) не выходит. Как и пишут - у USB1.1 в CDC это иногда сделать невозможно.

Да и вообще CPU у TLSR тормоз и имеет ужасный код. В помойке такие архитектуры давно.
 

pvvx

Активный участник сообщества
Видимо по этим причинам Telink забросил коды USB CDC дров, оставил кривые потуги (куски нерабочих исходников) со старой версией так называемой OS, и не стал использовать.
Т.к. обещал покопаться с USB у TLSR, то вывод пока такой:
Из всего описанного вытекает, что USB TLSR можно использовать как примитивные HID устройства USB1.1 с редкими запросами/ответами блоками по 64 байта в несколько мс и не более.
 
Сверху Снизу