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

Обсуждение TLSR8269

pvvx

Активный участник сообщества
Другие функции MP3-декодера ещё легче. Так что - 2КБ кеша должно вполне хватить для них.
Не хватает ни памяти ни производительности.
Даже STM32F10x еле тянет - декодирование фрейма к 20 мс при 36 МГц (FLASH_LATENCY=0)
Мне он не нужен. Спрашивал nikolz. Ему и карты в руки.
А нафига тогда советуете сделать то, что не влезает? Забавы ради?
 

pvvx

Активный участник сообщества
@rst - Прочувствуйте разницу
Processor / SystemDhrystone MIPS or MIPS, and frequencyD instructions per clock cycleD instructions per clock cycle per coreYearSource

ARM Cortex-M045 MIPS at 50 MHz0.90.92009[81]
ARM Cortex-M3125 MIPS at 100 MHz1.251.252004[67]
1.25 к 0.9 только там.
И не забудьте переписать ассемблерные вставки MP3 декодера на asm к TLSR8269 :)
 

rst

Member
И не забудьте переписать ассемблерные вставки MP3 декодера на asm к TLSR8269 :)
И...?
В своё время я переписал "ассемблерные вставки" с "Classic ARM" на "Thumb2". Когда портировал этот декодер. Не вижу проблемы. Если для вас это проблема - очевидно эта задача не для вас. :confused:
 

pvvx

Активный участник сообщества
В своё время я переписал "ассемблерные вставки" с "Classic ARM" на "Thumb2". Когда портировал этот декодер. Не вижу проблемы. Если для вас это проблема - очевидно эта задача не для вас. :confused:
Да, эта задача только для вас - но сначала вам надо создать документацию на данный CPU.
А остальные пока посидят всторонке :p
А с чего решили что "не влезает"?
Из объемов памяти и производительности.
Ну что-то фиктивное наверняка влезит, но не взлетит :)
 

pvvx

Активный участник сообщества
В своё время я переписал "ассемблерные вставки" с "Classic ARM" на "Thumb2". Когда портировал этот декодер. Не вижу проблемы.
Вот тут для чел начал и бросил работу по разбору реальных команд данного T32 CPU.
Надеюсь вы продолжите и возможно соберете gcc с C++ для него - у вас же "Не вижу проблемы.".
А вот вижу и не считаю что стоит даже копаться ради получения фиктивного MP3 декодера, без возможности реального применения в данном чипе.
Ждем героев потерянного времени. :p
 

rst

Member
Из объемов памяти и производительности.
И как же вы оценили эту самую производительность? Пока что от вас не было никаких конкретных цифр, касаемых скорости выполнения этого декодера. На любом ядре. Одно только пенсионерское брюзжание... :geek:
Ссылаетесь на чьи-то чужие попытки использования Helix здесь: http://we.easyelectronics.ru/STM32/programmnyy-dekoder-mp3-na-stm32f10x-chast-3-izvlekaem-zvuki.html
Но судя по описанию - там человек совсем не пытался как-то оптимизировать код под своё ядро. Он использовал имеющиеся функции PolyphaseStereo \ PolyphaseMono. Я же выше приводил свою реализацию PolyphaseStereo, оптимизированную под Cortex-M4. Так вот - моя реализация выполняется примерно на 20% быстрее, чем исходная (ассемблерная) из Helix (на CM4).
Это говорит о том, что если подойти к задаче с головой, то вполне возможно, что решение найдётся. Только придётся немного напрячь голову, а не просто старчески ворчать. :geek:

PS: Есть такая поговорка - "Дорогу осилит идущий". Именно - идущий, а не сидящий на пеньке и брюзжащий....
 

xplayerx_p

New member
Ребята нид хелп, что то не могу понять как загрузить прошу в
E180-Z6907A

1. развел плату тупо раскидал пины

1687297530167.png

2. Взял CP21рую воткнул 1к между RX TX
3. Подключил SWM к TX RST к RST ну и питание получаю

TLSR82xx TlsrPgm version 20.04.23
-------------------------------------------------------
Open COM10, 230400 bit/s... ok
Error[102] Read PGM Version and Config!

что я не так сделал. в наличии есть jlink дохера stm куча esp и всякой хрени как ее прошить?
 

pvvx

Активный участник сообщества
TLSR825x и TLSR826x имеют разный размер адреса по шине SWS.

По этой причине есть разные программы для их программирования или опции в этих программах.

Для прошивки по минимуму нужно соединение для передачи по протоколу Telink 1-wire в SWS и включение питания (можно Reset). Telink 1-wire не совместим с UART или SPI, но можно кое-как эмулировать.

Для качественной прошивки с обратной связью необходим аппаратный программатор, работающий с протоколом Telink 1-wire.

Другой способ – эмулируя только передачу по Telink 1-wire загнать в RAM чипа загрузчик по SWS, который перейдет на работу по UART через пины RX-TX.

Третий вариант – пытаться эмулировать передачу и прием Telink 1-wire на китайских USB-UART чипах.

В этом случае FTDI чипы не подходят, т.к. проверяют полную синхронизацию символа UART и, в случае нарушения не выдают криво принятый символ в буфер приема, а выставляют ошибку. Китайские чипы UART плевали на синхронизацию и всё что принято побитно передают в итоговый буфер.
 

pvvx

Активный участник сообщества
3. Подключил SWM к TX RST к RST ну и питание получаю
У чипов TLSR8269 в большеногих корпусах есть два пина SWM и SWS.
SWM - это master, а SWS - это slave.
Для доступа к потрохам чипа используется SWS.
По старту чипа, при включении питания или сразу после RESET, передается команда останова CPU - это называется "активация". Чип, сам SoC может находиться в sleep или deep-sleep. В этом состоянии внутреннее питание шины S-wire отключено.
Внутренняя программа может отключить SWS, но это возможно только тогда, когда заработает CPU и выполнит необходимый код для отключения.
По этой причине отключить считывание-запись прошивки на этих чипах невозможно. Можно только "засИкретить" протокол Telink 1-wire, что и делает Telink.
В программаторах есть опция установки времени непрерывной передачи кода останова - "активации". Большинство BLE или ZigBee модулей на короткое время автоматически пробуждаются по внутреннему таймеру и попав на момент пробуждения SoC код захвата-останова CPU отрабатывает, позволяя в дальнейшем передавать другие команды по S-Wire.
Так же путем установки длительности передачи кода активации в пару-десятку секунд, пока он непрерывно циклически передается, возможно и вручную подать питание или дернуть RESET чипа...
 

pvvx

Активный участник сообщества
У серии TLSR826x есть “болезнь” – сложное восстановление состояния внутренних ключей питаний, которая приводит к тому, что если внутренняя Flash была отключена программно и отключены некоторые неописанные в документациях внутренние питания, тогда доступа к Flash после deep-sleep и sleep для S-Wire не будет. Решается RESET или сбросом питания. Сам Telink это в своем “засИкреченном” программаторе не решил, а дает опцию в SDK для отключения перевода Flash в такое состояние сна на время отладки.
По этой причине и нужен второй провод - reset или ключ питания.
 

pvvx

Активный участник сообщества
TLSR82xx TlsrPgm version 20.04.23
https://github.com/pvvx/TLSRPGM - это программа для построения аппаратных программаторов на основе TB-04-KIT or TB-04 / 03F модуля (TLSR8253 chip and USB-COM PL2303HX or CH430 chip) или на EBYTE E104-BT10-G / N модуле (TLSR8269 chip). Они имеют аппаратный вывод SWM (single wire master).
TB-04-KIT использует для работы свой USB-COM, что не есть хорошо. У чипа TLSR8253 не выведены ноги USB.
EBYTE E104-BT10 (на TLSR8269 чипе с много ножек, имеющем SWM, SWS, USB) - работает через свой USB в чипе и является оптимальным программатором.
 

pvvx

Активный участник сообщества
что я не так сделал. в наличии есть jlink дохера stm куча esp и всякой хрени как ее прошить?
Для программирования TLSR8269:
Через USB-COM - TlsrComSwireWriter или TlsrComProg
Через STM32F103C8T6 - TlsrTools
И аппаратные программаторы: TLSRPGM + TLSR8269-EVK + https://aliexpress.ru/item/1005003712968248.html
 

xplayerx_p

New member
Спасибо через STM32 завелись, только вот теперь не как не могу ничего собрать для теста, сижу курю еклипс до того был на vs code
 

xplayerx_p

New member
одну прибил, пришлось сдувать экран и кварц вынимать тогда ожила и дала себя стереть. кстати на заметку кто зальет не ту прошивку по clock
 

pvvx

Активный участник сообщества
одну прибил, пришлось сдувать экран и кварц вынимать тогда ожила и дала себя стереть. кстати на заметку кто зальет не ту прошивку по clock
Это актуально только для программаторов с эмуляцией S-Wire. Особенно для STM32 по SPI - cложно подобрать частоту стробирования при приеме.
На аппаратном - пофиг, т.к. там есть само-синхронизация, да вручную выставляется любой шаг с дискретизацией набора длительности с шагом частоты кварца, а не делением CLK, как в случае SPI на STM32...
 

pvvx

Активный участник сообщества
Автоматическая синхронизация на Telink S-Wire работает у Slave только на прием. Диапазон, если переводить в частоту или длительность бита - в несколько раз в низ от максимума. Типа от 2 Мбит до 200 кбит.
А вот 8-ми битный ответ у Slave после строба Master-а выводится на фиксированной частоте, заданной в делителе чипа. И подобрать битовый строб для эмулятора S-Wire возможно только путем посылки команды изменения делителя в программируемом чипе, а не наоборот (не в программаторе).
 

pvvx

Активный участник сообщества
О как раз вспомнил - у SoC от Bouffalo (BL702, ...) все длительности (CLK up/down, строб data up/down, пазы до и после) для всех шин (SPI, I2C, UART, I2S, ...) задаются в собственных много-битных счетчиках CLK. Там эмуляция Telink S-Wire будет лучше.
 
Сверху Снизу