• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

CH582M (СH581, CH582, СH583)

pvvx

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

pvvx

Активный участник сообщества
Последний позавчерашний пример - открыл список встроенных контроллеров в BL702... вижу там есть I2S в PDF. Ну и прилепил к нему AUDIO ADC на 24 бита 2 канала на 100 ksps и в USB через 3-х разовую буферизацию (ну лень было оптимизировать). И всё Ок - т.к. оно тянет изначально в USB2.0 FS полные 12 Мбит/c в любые стороны, а поток 24-х бит 2 канала - это всего 600 килобайт + ещё 20% заголовков (так вышло для совместимости внешнего ПО) и в тупой USB-COM. Нашел ошибку в SDK, написал в репо, но оказалось что SDK не поддерживает I2S....
А тут CH579 не тянет в Ethernet тот-же поток. С USB у CH58x будут те-же проблемы, что описывает автор "лапши из пачкордов" для излюбленного толпой чипа? (интересно, почему это простейшая инфа только через десятилетия до таких авторов доходит?)
 

pvvx

Активный участник сообщества
Ну и теперь главный вопрос пишущему: "Друзья, я давно занимаюсь BLE." - вышло ли на CH582M с WCH-Link добиться хотя-бы 15200 BAUD на BLE при совместимости с BT4.2?
 

pecherskih

Member
Там и написано - никакого JTAG, а отладка по считыванию переменных только на ходу, без остановки CPU! Научитесь читать внимательно, или только писать переводы PDF умеете?
Вам обязательно надо чтобы из платы торчали пины с подписями SWDIO? А SWM (Telink Swire Master) c SWS (Telink Swire Slave) не катит? :)
Ну может я чего то не понимаю, так объясните. В статье первый раздел так и называется 1. Включаем JTAG Для этого товарищ использует WCHISPTool. А что бы использовать PrintF Debug включать совсем не обязательно. А проблема протокола SWS, как вы сами писали - отсутствие точек остановки. И как следствие не умении ходить по коду. Как то так. Но я никого не агитирую, каждому своё :) Хорошего вечера всем :)
 

pvvx

Активный участник сообщества
И ещё раз напомнить чем отличается WCH-Link от одного провода SWM<->SWS у TLSR чипов. Но могу только на своих примерах, т.к. не пользуюсь "народными":
Вот надо поглядеть сколько примерно чип находится в sleep, запускаю чтение любого адреса в нем и период сего действия (0x6bc - это регистр PC счетчика):
python3 TlsrPgm.py -pCOM11 -z10 dc 0x6bc 10000
1674743524666.png
Получаю, что цикл рекламы примерно 2.5 сек и иногда SoC читает датчик и не спит глубоко (0.01 сек активности в suspend).
Или вдрух мне нужно прочитать что там у чипа в памяти (или регистрах и т.д., пусть по адресу 0x840000, адрес нужного можно взять из лога сборки), когда он активен и не спит и не останавливая CPU:
Код:
python3 TlsrPgm.py -pCOM11 -z10 ds 0x840000 16
=======================================================
TLSR82xx TlsrPgm version 14.01.23
-------------------------------------------------------
Open COM11, 230400 bit/s... ok
PGM: ChipID: 0x5327 (TLSR8269), ver: 0.0.0.2
swdiv 5, addrlen 3, swbuf [5a 00 06 02 00 05], pfr Off
SWire bit rate: 1.2800 Mbits/s
=== PreProcess ========================================
CPU sleep? (0.810 sec)
CPU PC=0x00005e04
840000: 26 80 00 00 a5 81 5d 02 4b 4e 4c 54 da 05 88 00
Можно и изменить какой байт/бит на ходу - очень удобно при реверсе неописанных регистров... Накалякал нужное на питоне (можно и bat файле :) ) и вперед тестить что меняет битик в ....
Аналогично работает и J-Link RTT...
Более от отладчиков ничего не требуется, т.к. все современные интерфейсы время-зависимые и любая "точка останова" накроет весь процесс и убьет ваше время на итерации перезапуска процессов и разглядывание незнакомых битиков... :p
 

pvvx

Активный участник сообщества
И ущё отличие от JTag у такой шины - по одному проводу можно соединять чипы - они автоматом могут перекидывать блоки памяти, и шина самосинхронизирующаяся в широких пределах - синхронизируются любые CLK CPU и т.д.
 

pvvx

Активный участник сообщества
@pecherskih - ещё написать? :)
Ну как, насмотрелись неандертальцев, которые ещё вставляют в код GPIO Output и тыкают ослом, вместо вывода счетчика в тактах CPU в RTT? :)
 

sed_alex

New member
Более от отладчиков ничего не требуется, т.к. все современные интерфейсы время-зависимые и любая "точка останова" накроет весь процесс и убьет ваше время на итерации перезапуска процессов и разглядывание незнакомых битиков... :p
Какое интересное у Вас мнение на счет отладчиков.
Свет клином на BLE вообще то не сошелся, и точка останова - весьма полезная штука, при настройке многих участков кода.

То что WCH накуролесили в файлах debug.c и debug.h - было выпилено первым делом, ибо использовать Систик исключительно для Delay - это так себе решение.
 

aloika

Active member
А вот расскажите мне (вечно начинающему и ни на что не претендующему) - как вы отлаживаете? Я по-простому - назначаю какую-нибудь ногу uart-tx, и вывожу туда что хочу вывести. Но минус в том, что нормальных программ для разглядывания потока из UART как-то и нет. Я пользуюсь Terminal by Br@y++, как наиболее вменяемый из того, что вообще есть. А больше особо и нет ничего.

Вот хочу я, например, посмотреть, что принимает АЦП. В терминале можно вывести в виде графика, но только 8-битные данные и только беззнаковые. Приходится прибавлять 0x80 к значениям (т.к. дифференциальный вход), чтобы ноль посередине графика был. Если АЦП больше 8 бит - то всё, так просто не получится. Смотрю только младшие 8 бит тогда.

Поделитесь опытом - чем вы пользуетесь? Сейчас мне актуально для tlsr.
 

pecherskih

Member
@pecherskih - ещё написать? :)
Ну как, насмотрелись неандертальцев, которые ещё вставляют в код GPIO Output и тыкают ослом, вместо вывода счетчика в тактах CPU в RTT? :)
Нет, спасибо, можно не продолжать. Вы всё обо одном и том же. Никто же ведь с вами не спорит, что точка останова разрушает BLE процесс. Зачем это лишний раз доказывать. Но я придерживаюсь того же мнения что и sed_alex : "точка останова - весьма полезная штука, при настройке многих участков кода ". Не хотите использовать - не нужно, делайте как вам удобнее. Что касается вопроса aloika, то ничего нового посоветовать не могу. Я то же через Терминал отлаживаюсь. В особенных случаях для визуального отображения использую Builder C++ c его TChart. В Builder-е можно разные алгоритмы приема данных из UART-а реализовать, а потом в красивом виде вывести. Сам Builder конечно не ахти, но для таких профанов в GUI как я - вполне подходит. Всё просто и быстро.
 

pvvx

Активный участник сообщества
Да, прикольно. Что же, получается - вспоминать Делфи, самому писать... что ж никто не написал что-то более-менее универсальное-то...
Давно уже сделан API в Chrome для работы с USB-UART. А уж js Chart там много разных. И не только Chart.
Для Arduino где-то валяется отображение в графике чисел, посылаемых в UART и с конвертированием html в виде приложения...
С BLE ещё проще - гоните отладку прямо в BLE.
И ещё есть Питон.
 

pvvx

Активный участник сообщества
Нет, спасибо, можно не продолжать. Вы всё обо одном и том же. Никто же ведь с вами не спорит, что точка останова разрушает BLE процесс. Зачем это лишний раз доказывать. Но я придерживаюсь того же мнения что и sed_alex : "точка останова - весьма полезная штука, при настройке многих участков кода ". Не хотите использовать - не нужно, делайте как вам удобнее.
Для точки останова необходимо модифицировать исходники, т.е. создавать специальную версию программы. Отключать всё.
Это "удобно" исключительно в одном случае - отладки программы мигающего светодиода с задержкой на циклах while() CPU. Или для "Hello World!".
В остальных случаях уже не годится.
Сравните время - написать в исходник "printf("x=%08x", x) и загрузить и время пайки JTAG c загрузкой и переключением в режим отладки, да с поиском переменной.
 

aloika

Active member
Давно уже сделан API в Chrome для работы с USB-UART. А уж js Chart там много разных. И не только Chart.
Для Arduino где-то валяется отображение в графике чисел, посылаемых в UART и с конвертированием html в виде приложения...
С BLE ещё проще - гоните отладку прямо в BLE.
И ещё есть Питон.
Понятно, что полуфабрикатов много каких-то. Хотелось бы готовое решение без бубна. Напрямую в BLE я делал, с вашей подачи. Да, удобно, но... не очень. Т.к. устройство может быть подключено к чему-то другому по BLE, или я, например, могу не хотеть сильно модифицировать исходник (заводить там отдельную характеристику для отладки) и т.д.
 

pvvx

Активный участник сообщества
Производитель обычно выпускает отладочные средства. Для Telink оно всё представлено в виде BDT. Другие производители, кто помелочнее и жаднее, юзают чужое - всякие примочки/интерфейсы для JTAG из open-source.
SEGGER не удалось возглавить стандарт, хотя он пытался... Опять подвела жадность.
 

pvvx

Активный участник сообщества
Не хотите использовать - не нужно, делайте как вам удобнее.
А с Jtag не выйдет как удобнее.
Имеющиеся варианты ограничены применением dll от SEGGER для быстрого описания отладочных средств на питоне или чем вам удобнее.
В итоге Jtag в пролете, т.к. проприетарщина.
 

sed_alex

New member
Для точки останова необходимо модифицировать исходники, т.е. создавать специальную версию программы. Отключать всё.
Это "удобно" исключительно в одном случае - отладки программы мигающего светодиода с задержкой на циклах while() CPU. Или для "Hello World!".
В остальных случаях уже не годится.
Сравните время - написать в исходник "printf("x=%08x", x) и загрузить и время пайки JTAG c загрузкой и переключением в режим отладки, да с поиском переменной.
Какую специальную версию программы ?
Любой GCC, ARMC да даже мертворожденное убожество от C-Sky (W806 - которое вы так хвалили) при компиляции в настройках компилятора просто ставим поддержку отладки и, спокойно отлаживаем, отладили выбираем Release в соответсвующих настройках.
Если нужно смотреть процесс энумерации USB или начальный обмент BLE - покупаем анализатор и опять же спокойно смотрим какие пакеты и в какой последовательности идут - анализатор разбирает пакеты, ставит метки времени и даже красиво подсвечивает места с ошибкой. Вы же предлагаете шарашить поток в порт и потом разбирать портянку, не ну я понимаю гуру любят нестандартные методы :) Касаемо отладчиков - Сеггер де факто и по сей день является лучшим отладчиком и это признают большинство производителей, ну а то что не все Китайцы смогли с ними договорится, ну это как бы не проблема Сеггера а проблема Китайцев (и нас как пользователей китайских камней).
 

pvvx

Активный участник сообщества
Какую специальную версию программы ?
Любой GCC, ARMC да даже мертворожденное убожество от C-Sky (W806 - которое вы так хвалили) при компиляции в настройках компилятора просто ставим поддержку отладки и, спокойно отлаживаем, отладили выбираем Release в соответсвующих настройках.
Если нужно смотреть процесс энумерации USB или начальный обмент BLE - покупаем анализатор и опять же спокойно смотрим какие пакеты и в какой последовательности идут - анализатор разбирает пакеты, ставит метки времени и даже красиво подсвечивает места с ошибкой. Вы же предлагаете шарашить поток в порт и потом разбирать портянку, не ну я понимаю гуру любят нестандартные методы :) Касаемо отладчиков - Сеггер де факто и по сей день является лучшим отладчиком и это признают большинство производителей, ну а то что не все Китайцы смогли с ними договорится, ну это как бы не проблема Сеггера а проблема Китайцев (и нас как пользователей китайских камней).
Вы о чем? Об снифере BLE в Wireshark? Действительно - "шарашить поток в порт и потом разбирать портянку" :)
Или вас смущает нормальный отладочный лог, принятый везде при нормальном программировании?
Обычно он выводится текстом понятным для человека, а не в виде табличек битов в вашем любимом отладчике.
"ну это как бы не проблема Сеггера а проблема Китайцев" а не о этом ли я написал?
У вас плохо со всем связанным с электроникой и программированием. Наверно только вчера взяли первый чип в руки... Потыркаетесь и поймете.
 
Сверху Снизу