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

BLE SoC PHY6202

pvvx

Активный участник сообщества
Скачал
tuyaos-subdev-beaconmesh_0.1.20_phy6252_adv_beacon_common_0.1.6 : PHY62XX_SDK_3.1.1
tuyaos-subdev-bt_3.8.3_phy6222_ble_ble-common_1.0.0: PHY62XX_SDK_3.1.2
Всё старое.

----
Тут phy6222_v313_0512.rar
Код:
# SKD Release Notes

## ChipSet

***PHY6222/PHY6252***

---

## SDK Version

***PHY62XX_SDK_3.X.X***

---

### **Version**: PHY62XX_SDK_3.1.3

### **Change List**

### **[components]**

    driver:
        boot        : 1.Add read chip harware version function,new hw version support 48M DLL
                      2.Initial AON register after wakeup process or software reset
        flash       : Add flash lock moudle to realize flash lock/unlock
        pwrmgr      : 1.Bugfixed AON register abnormal,use rom interface
                      2.LDO low current bit set zero when CFG_SRAM_RETENTION_LOW_CURRENT_LDO_ENABLE is not define
                      3.Reset all common peripheral interrupt priority to IRQ_PRIO_HAL after wakeup
        fs          : 1.Add CRC verify
                      2.Supports fs ID caching, enabling fast indexing of fs read and write operations
                      3.Support fs dual backup operation, which can retrieve old data in case of current file CRC error
        spi            : 1.Bugfixed multi-bytes transmit error
                      2.Add Data Frame Size(DFS) select function
        uart        : Bugfixed uart busy when set baudrate
        pwm         : Bugfixed pwm dead zone Settings and complementary interface Settings
        bsp_button  : Use bsp button driver(SW) instead of kscan(HW)
    mesh:           :
        EM_timer    : 1.Bugfixed op EM_stop_timer when this timer expire                     
                      2.Add sensor/time/scheduler model(client/server)                     
    profiles        : 1.Add latest phy_plus_phy profiles, aka 2.4G proprietary protocol, support smart_RF/smart_nRF with Autoack or not                     
                      2.Add encryption upgrade for slb                      

### **[example]**
    example         : Remove tasksArr and tasksCnt from XIP to SRAM
    ble_mesh        : 1.mesh_gateway: Add PB-GATT provision function
                      2.Redefine cli command buffer length
                      3.Add mesh gcc demo
                      4.mesh_lpn: Bugfixed lpn receive message before poll fsn error
    ble_peripheral  : 1.When enter dtm mode,watchdog clock is disabled
                      2.SbpSmart_nRF project uses the lastest common phy_plus_phy profiles in components//profiles
    ble_multi       : 1.Add sbm AT demo(CLI)
                      2.Add scan_duration with random values
                      3.Bugfixed multi schedule abnormal stop                
    peripheral      : Use macro definitions to distinguish adc demos,No longer mixed together
    ppsp_demo          : Add ppsp demo
    ota_dongle      : Add ota dongle demo
    PhyPlusPhy      : Smart_nrf project uses the lastest common phy_plus_phy profiles in components//profiles     

### **[lib]**
    rf.lib          : 1.Bugfixed fake connection
                      2.Add txdataQLen to limit notify or write_cmd
                      3.Optimize ll malloc linkbuf
                      4.Fix phyrsp &phyupdate issue in same conn_event
                      5.Adjust directadv delay
                      6.Adjust slave rx window for crcok
    ble_host.lib    : Optimize the transmission of received message(patch filter)                    
    mesh_lib        : 1.Bugfixed mesh stack of ltrn/trn                    
                      2.Add mesh nodeid and networkid beacon scan procedure
                      3.Add mesh patch,support mesh node and mesh gateway

### **[misc]**
    bb_rom_sym_m0   : Update some symbol tables
 

pvvx

Активный участник сообщества
Ну есть же PHY62XX_SDK_3.1.3. Там примерчик с nRF ESD докинули, чтобы большие дети больше не баловались nRF24L01.
Такой же Id имеет spi flash GD25WD40 от Giga Device.
Интересно, там отдельный кристалл в корпусе приварен или они купили у Giga IP Core.
Отдельный кристалл.
---

Питон утилита для PHY6222 выросла и съела все старые варианты... PhyPlusKit более не нужен и не нужно дергать проводки - работает RST-RESET.
Код:
usage: rdwr_phy6222.py [-h] [--port PORT] [--baud BAUD] [--allerase] [--erase]
                       [--reset]
                       {wh,we,wf,er,ea,rc,i} ...

PHY6222 Utility version 29.12.23

positional arguments:
  {wh,we,wf,er,ea,rc,i}
                        Run rdwr_phy6222.py {command} -h for additional help
    wh                  Write hex file to Flash
    we                  Write bin file to Flash with sectors erases
    wf                  Write bin file to Flash without sectors erases
    er                  Erase Region (sectors) of Flash
    ea                  Erase All Flash
    rc                  Read chip bus address to binary file
    i                   Chip Information

options:
  -h, --help            show this help message and exit
  --port PORT, -p PORT  Serial port device
  --baud BAUD, -b BAUD  Set Port Baud (115200, 250000, 500000, 1000000)
  --allerase, -a        Pre-processing: All Chip Erase
  --erase, -e           Pre-processing: Erase Flash work area
  --reset, -r           Post-processing: Reset
Время прошивки из *.hex, со стартом уже прошитого:
1703867759233.png
 

pvvx

Активный участник сообщества
В июле 2021 года высокопроизводительный стек протоколов ZigBee 3.0 — PHYPLUS-zb-stack, независимо разработанный Fengjia Microelectronics, появился в списке сертификации платформ, совместимых с ZigBee, став второй компанией в материковом Китае, получившей Альянс стандартов соединений (CSA) ZigBee. сертифицированная компания, соответствующая требованиям платформы.

И где же SDK?

1703869487288.png
1703869504302.png

И безусловно RTL876x имеет лучший прием, среди USB-BT адаптеров.
 

cool2000

Member
Вдогонку, как я понимаю в текущем варианте промежуточный загрузчик (OTA bootloader) не используется, т. е. сразу загружается основное приложение и OTA встроен в него? Какой именно вариант OTA?
 

pvvx

Активный участник сообщества
В SDK есть разные варианты. Запустите любой. Код в js писать и отлаживать безразлично на каком варианте - глубже разберетесь.
По всем признакам лучшим вариантом будет своя реализация. Программа PhyOTA всё равно никому не нужна. Или вы её будете русифицировать? :)

Без полной картины, какая память задействуется во Flash их варианты не нужны. Куда сохранять историю, как ужать занимаемую область и т.д. - вопросов много, а с китайской OTA их будет больше.
 

pvvx

Активный участник сообщества
Самая главная задача c OTA - это прошить по OTA Tuya, а дальше - решается за день. А разрисовать и оформить для "пользователей" - это задача не имеющая рамок по затратам времени и является самой долгой.
 

pvvx

Активный участник сообщества
Я PhyOTA не анализировал - потыкал пару минут программу с 5 вариантами файлов закинутыми в корень Android-а и тут-же бросил.
 

pvvx

Активный участник сообщества
Очень смешны писатели ПО, которые боятся трогать код SDK.

SDK к таким чипам выходят раз в несколько первых лет выпуска чипа. Потом забрасываются производителем . А горемыки ограничивают себя и других, пытаясь писать “совместимый код” с “будущим” SDK, у которого нет будущего. Ещё ковыряться надо – изучать что-там в блобах :)

По тому, если хотите что сделать – беспощадно режете и выбрасываете все непонятные и кривые функции, меняя на свои, пока не упретесь в предел несовместимостей алгоритмов. :)

И дебагер не нужен, т.к. будете знать что делает ваша функция, а не какого-то китайца, который реф.мануал не написал и вообще сам не знает что писал и с чем её завязал прошлый невольный сотрудник …
ESP уже 12 лет пишут, но каждая версия - несовместимая :)
 

pvvx

Активный участник сообщества
Xiaomi и Tuya BLE имеют свой OTA. Все устройства выпуска последних лет имеют код их OTA и иногда дубль от производителя чипа/SDK. Но немного измененный – к примеру меняют UUID. Так проще и быстрее поступить невольному программисту для быстрого прихода к отладке... Так оно и уходит в продакшн.

OTA от Xiaomi и Tuya практически одинаковы. Передается шифр-ключ, подтверждается, передаются заголовки и далее блоки данных. Но вся связь идет зашифрованная. По окончанию сверяется и если сошлось - запускается.

Необходимо знать начальный ключ для конкретной прошивки. Но Tuya возможно уже дает все ключи его в своем cloud на каждое устройство, если зарегистрировались там и в “Smart Life”… Тоже лень копаться. У Xiaomi тоже есть 2 прошивки – одна дополнена ключом, который прилеплен к прошивке и отрезается :) Наверно специально – чтобы кто-то взялся и разобрался.

А куда это всё пихать – узнать можно только разгребая предоставляемые исходные коды, которые уже годы валяются открытые… Никому до этого нет дела.
 

cool2000

Member
У phy в sdk нешифрованный и шифрованный варианты. Как формируется нешифрованный bin примерно понятно. Кстати формат похож на разметку для загрузки приложения.
С форматом Tuya пока не разбирался.
 

cool2000

Member
По разметке служебной области flash:
  • 0x0800 Chip Id
  • 0x0900 SDK MAC адрес. Кодировка обсуждалась на предыдущей странице
  • 0x1000 данные калибровки ADC
  • 0x2900 SDK ключи OTA
  • 0x3000 разметка OTA Bootloader для загрузки приложения
  • 0x4000 MAC адрес Tuya и SDK(?)
  • 0x4008 данные калибровки частоты
  • 0x400с данные калибровки емкости кварца
  • 0x4050 ???
В прошивке Tuya везде, кроме ADC, 0x3000, MAC и 0x4050, изначально записаны 0xFF. Возможно потому, что я не активировал датчик в Smart Home.
Как-то можно прочитать область efuse?

Вот ещё один шедевр китайского программирования:
C:
    efuse_read(EFUSE_BLOCK_1,buf);
    buf[0]= CHIP_VERSION_L;
    buf[1]= CHIP_VERSION_H;

    if(buf[0]==CHIP_VERSION_L && buf[1]==CHIP_VERSION_H)
 

pvvx

Активный участник сообщества
По разметке служебной области flash:
Вот совсем пофиг, т.к. всё это задается как угодно и различается в зависимости от того, что написать в программе.
Имеет смысл только как обрабатывает таблицу в 0x2000 загрузчик в ROM
ROM переписать невозможно :p
 

cool2000

Member
Вот совсем пофиг, т.к. всё это задается как угодно и различается в зависимости от того, что написать в программе.
Это попутные находки :).
Пока разбираюсь с процессом OTA в SDK, чтобы от чего-то оттолкнуться.
Переписать можно всё что угодно, это не вопрос. Вопрос нужно ли?
 
Сверху Снизу