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

BLE SoC PHY6202

pvvx

Активный участник сообщества
Если в PB-03F-Kit прошить нормальную прошивку, которая мало потребляет (типа THB2), то больше ничего в него не записать через встроенный USB-COM.
Чип питается от линий RX TX и не сбрасывается :p Накрученные диодики и прочее на плате никак не помогают. В питании 10 uF и тока утечек со всех дыр самому модулю хватает для работы.
Необходим внешний источник 3.3В и USB-COM + прыгать с бубном, чтобы сбросить чип в режим прошивки по UART.
 

pvvx

Активный участник сообщества
И USB компа тоже сбрасывается, если принудительно разрядить кондер в 10 мкФ в питании модуля, т.к. он коммутируется от USB-COM чипа с RTS ключом от AMS1117-3.3.
Ножки сброса у PHY6252 нет, как и у многих корпусов с мало ножек...
Китайцы они такие затейники... т.е. простую схему сброса не могут сделать. Аналогичная ситуация и у отладочной платы от WCH.
 

pvvx

Активный участник сообщества
И у Telink оф. программатора с его оф. макетными платами тоже самое - не вывести чип из sleep.
 

pvvx

Активный участник сообщества
Сегмент кода можно сделать 0x11005000 и ниже. К примеру 0x11003000, но тогда это надо указать в опциях rdwr_phy62x2.py.
Тем параметром можно сместить сегменты данных за сегмент кода в Flash. Если дать одинаковый адрес с кодом - данные будут записаны после сегментов кода. И т.д.
Так же можно установить другой адрес для чтения ROM адреса старта. Адрес старта читается со смешением от указателя на +4 байта (до этого идет адрес стека).

Но далее в rdwr_phy62x2.py будет добавлена ещё и форматирование для OTA...
 

pvvx

Активный участник сообщества
Полный рефакторинг! 👌
Необходимо избавиться от китайских болезней...
Но если GCC дать команду -pedantic тогда наверно будет нескончаемая простыня warnig-ов. Не пробовал - страшно это делать с китайскими исходниками :)
Только и теперь можно что-то оптимизировать и т.д.
 

pvvx

Активный участник сообщества
@cool2000 - Как убрать warning: build/bthome_phy6222.elf has a LOAD segment with RWX permissions ?
Пишут какую-то белиберду...
Чем новее gcc - тем больше в нем глупостей. Особенно в swith() { case 1: a=b; case 2: break }, мотивируя это тупыми путающимися программистами, которые попутали язык программирования 🤪
Про segment with RWX что-то подобное пишут - типа так незя где-то :eek: Это типа вирус, модифицирующий своё тело :) :)
 

pvvx

Активный участник сообщества
Про msp - это тоже какая-то шутка, типа незя - меняй таблицу хитрых регистров... Тут сразу не понятно - а нафига там приставка "_ASM"? Её что, java программист поставил?
Кто ставил __asm - тот лучше gcc знает что будет...
Лучше бы оптимизацией в gcc занялись, чем городить запреты c warning.
Надо новую опцию - "код написан с пониманием", а не ардуинщиком.
 

pvvx

Активный участник сообщества
Вот где опция оптимизации для исполнения кода из XIP (или cache) в GCC?

Чтение в cache (и в XIP) происходит происходит блоками, а не по одному байту. Значит вызовы вложенных процедур должны идти по увеличению адреса (после той из которой вызывается), чтобы захватить в хвосте считанного блока начало вложенной процедуры. А не наоборот, как это принято – сначала должна быть объявлена… :devilish:
А о тупизме gcc с загрузкой каждый раз адресов переменных – это вообще отдельный кошмар. Спасает только если все переменные объявить в структуре (или в функцию передавать только указатель ) – тогда до gcc доходит, что можно применить смещение к прошлому, уже загруженному указателю, а не снова грузить указатель на переменную на следующий байт (запросто достижимый asm командой со смещением от предыдущего загруженного указателя). В итоге выходной код из gcc в полтора раза больше (и более), чем возможно путем малых и простых оптимизаций. По производительности = полное г...
 

pvvx

Активный участник сообщества
Пришла куча очередного хлама с али. Но новых устройств с PHY62x2 пока нет – где-то заcтряли на почте.
Среди хлама очередной PPK2 (nRF Power Profiler kit II). Упакован nRF 2023.17, сборка платы 2023.16. Видно, что не вскрывался, но в программе показывает чушь – бредит кусками.
Через PPK2 на термометр THB2 включен простейший PowerPRofiler и видим как бредит PPK2:
1704887655234.png
1704887677521.png
Старт THB2 по кнопке подачи питания в PPK2.
 

cool2000

Member
Через PPK2 на термометр THB2 включен простейший PowerPRofiler и видим как бредит PPK2
Какая-то жесть.

Разобрался, как убрать has a LOAD segment with RWX permission без -Wl,--no-warn-rwx-segments.
Надо в заголовке вручную указать каждой секции права.
Код:
Elf file type is EXEC (Executable file)
Entry point 0x1fff1841
There are 6 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x00a000 0x1fff0000 0x1fff0000 0x00800 0x00800 RW  0x1000
  LOAD           0x00a838 0x1fff1838 0x1fff1838 0x02978 0x02978 R E 0x1000
  LOAD           0x001000 0x11020000 0x11020000 0x08058 0x08058 R E 0x1000
  LOAD           0x00d1b0 0x1fff41b0 0x1fff41b0 0x00336 0x00336 RW  0x1000
  LOAD           0x009058 0x11028058 0x11028058 0x002b4 0x002b4 R   0x1000
  LOAD           0x0004e8 0x1fff44e8 0x1fff44e8 0x00000 0x026c8 RW  0x1000

Section to Segment mapping:
  Segment Sections...
   00     .jumptbl .gcfgtbl
   01     .textentry .text
   02     .xip
   03     .data
   04     .rodata
   05     .bss
Прикладываю ld script. Pull request делать?
 

Вложения

pvvx

Активный участник сообщества
Разобрался, как убрать has a LOAD segment with RWX permission без -Wl,--no-warn-rwx-segments.
Надо в заголовке вручную указать каждой секции права.
Прикладываю ld script. Pull request делать?
Позже разберусь...
Пока ковыряюсь в Luckfox Pico-M-256MB и подобных... Народ требует BLE шлюз.
 

pvvx

Активный участник сообщества
Для BLE шлюза самая дешевое решение выходит прилепить любой BLE чип к внутренним RX-TX в этой коробке https://aliexpress.ru/item/1005006233384435.html за 400 руб.
Правда они не долговечны - через пару лет непрерывной работы в БП сохнут кондеры и надо паять...
 

pvvx

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

pvvx

Активный участник сообщества
Linux ныне стал размером меньше чем модули ESP32. И при этом имеет разъем USB-C, подключение SD карты, камеры, монитора и т.д.
1704895290139.png1704895572844.png
 

pvvx

Активный участник сообщества
C nRF PPK2 выходит так - нужно искать "правильный" USB порт. 🤪
Подключил генератор для просмотра линейности измерений...
Кривизна в любом диапазоне:
1704911804171.png
Несоответствие уровней при переключении диапазона:
1-й прыжок:
1704911875152.png
2-ой прыжок:
1704911906618.png
3-й прыжок и выброс:
1704911929185.png

Что таким можно намерять?
 

pvvx

Активный участник сообщества
В итоге PPK2 на прошивку THB2 говорит:
1704913722578.png
При этом он считает, что датчик температуры и влажности потребляет так:
1704913774446.png
И чип типа тоже делает выбросы:
1704913816731.png
Когда там нет импульсов более 8 мА.

А про sleep PPK2 говорит это:
1704913909416.png
Когда даже любой дешман-китай тестер показывает другие значения...
 

pvvx

Активный участник сообщества
Подковырял, теперь PPK2 показывает примерно правильно средние токи для THB2:
1704919934891.png
Average 7.12, Sleep 3 мкА
 
Сверху Снизу