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

BLE SoC PHY6202

cool2000

Member
Там вроде нет boot OTA. Там example\OTA\slboot
Примеры OTA в SDK есть. Зачем мучать TestTHB2.hex или оригинал для разгадывания PhyOTA?
Так вроде PhyOTA => slboot?
Лучше разобраться с вариантом SDK имеющим все исходники, без всяких либ и собрать его на gcc.
Именно❗
 

cool2000

Member
PhyOTA не подходит. Из slboot этот функционал выпилили. При старте slboot ищет во flash по смещению 0x55000 маркер `OTAF` проверяет целостность данных и дальше выполняет обновление.
 
Приветствую участников данной темы, у меня вопрос.
Имею термометр как на страничке https://github.com/pvvx/THB2/issues/1?ysclid=lqwtu2nn8f60423299
Делаю согласно инструкции сохранение родной прошивки, но получаю следующее:
1704230061675.png
Надо понимать не получилось.
Сделал прошивку через утилиту PhyPlusKit как написано в той-же инструкции.
Судя по логам все получилось.
1704230362263.png
Но, датчик не видится в эфире.
Что я мог сделать не так?
 

pvvx

Активный участник сообщества
Ждите, когда мне придет следующая пачка заказов с али, тогда и посмотрю, что там с BTH01.
1704232908452.png
1704232914328.png
1704232900547.png
 

cool2000

Member
Для BTH01 мне неизвестно, какие выводы чипа куда идут.
Судя по фото, i2c линии сенсора явно заведены на другие выводы phy6222. P18, P20 у BTH01 это Rx2, Tx2.
@АлексейМ прозванивайте с какими выводами phy6222 соединены пятачки CHT8305_SCL и CHT8305_SDA.
 

cool2000

Member
В phy6222_SDK_3.1.3 практически ничего не работает.
Есть ещё довольно актуальное, тоже phy62xx SDK 3.1.3 на gitee. Я пробовал собирать slb через gcc и даже собирается, но и там без правок не обойтись. Как минимум ld скрипт нужно править, вот типа такого.
Код:
MEMORY
{
  jumptbl (rwx) : ORIGIN = 0x1fff0000, LENGTH = 0x00400
  gcfgtbl (rw)  : ORIGIN = 0x1fff0400, LENGTH = 0x00400
  flash (rx)    : ORIGIN = 0x11020000, LENGTH = 0x20000
  sram (rwx)    : ORIGIN = 0x1fff1838, LENGTH = 0x0E7C8
}

OUTPUT_ARCH(arm)
EXTERN(_vectors)
ENTRY(__start)

SECTIONS
{
    .jumptbl : {
       *(jump_table_mem_area)
    } > jumptbl  

    .gcfgtbl : {
       *(global_config_area)
    } > gcfgtbl

    .textentry : {
        _stext = ABSOLUTE(.);
        *(*.isr_vector)
        *phy6222_start.o(.text)
    } > sram

    .init_section : {
        _sinit = ABSOLUTE(.);
        *(.init_array .init_array.*)
        _einit = ABSOLUTE(.);
    } > flash

    .ARM.extab : {
        *(.ARM.extab*)
    } > flash

    __exidx_start = ABSOLUTE(.);
    .ARM.exidx : {
        *(.ARM.exidx*)
    } > flash
    __exidx_end = ABSOLUTE(.);


    ._sjtblsstore : {
       _sjtblss = ABSOLUTE(.);
    } > flash  

   ._eronlystore : {
       _eronly = ABSOLUTE(.);
   } > flash  

    .data : {
        _sdata = ABSOLUTE(.);
        _stextram = ABSOLUTE(.);
        *.o(_section_standby_code_)
        *.o(_section_sram_code_)
        *flash.o(.text .text.*)

        *patch.o(.text .text.*)

        *clock.o(.text.hal_xtal16m_cap_Set)
        *rf_phy_driver(.text .text.*)
        *libphy6222_host.a:l2cap_util.o(.text.L2CAP_Fragment_SendDataPkt)
        *libphy6222_host.a:l2cap_util.o(.text.l2capSegmentBuffToLinkLayer)
        *libphy6222_host.a:l2cap_util.o(.text.l2capPocessFragmentTxData)
       
        _etextram = ABSOLUTE(.);


        *(.data .data.*)
        *(.gnu.linkonce.d.*)
        CONSTRUCTORS
        . = ALIGN(4);
        _edata = ABSOLUTE(.);
    } > sram AT > flash

    .bss : {
        _sbss = ABSOLUTE(.);
        *(.bss .bss.*)
        *(.gnu.linkonce.b.*)
        *(COMMON)
        . = ALIGN(4);
        __heap_start__ = .;
        end = __heap_start__;
        _end = end;
        __end = end;
       
        _ebss = ABSOLUTE(.);
    } > sram

    .int_stack : {
        . = ALIGN(4);
        *(int_stack)
        . = ALIGN(4);
        _stack_top = ABSOLUTE(.);
    } > sram

   .common_text : {
       *(.text .text.*)
       *(.rodata .rodata.*)
       *(.fixup)
        *(.gnu.warning)
        *(.rodata .rodata.*)
        *(.gnu.linkonce.t.*)
        *(.glue_7)
        *(.glue_7t)
        *(.got)
        *(.gcc_except_table)
        *(.gnu.linkonce.r.*)
        _etext = ABSOLUTE(.);
   } > flash  
 
    /* Stabs debugging sections. */
    .stab 0 : { *(.stab) }
    .stabstr 0 : { *(.stabstr) }
    .stab.excl 0 : { *(.stab.excl) }
    .stab.exclstr 0 : { *(.stab.exclstr) }
    .stab.index 0 : { *(.stab.index) }
    .stab.indexstr 0 : { *(.stab.indexstr) }
    .comment 0 : { *(.comment) }
    .debug_abbrev 0 : { *(.debug_abbrev) }
    .debug_info 0 : { *(.debug_info) }
    .debug_line 0 : { *(.debug_line) }
    .debug_pubnames 0 : { *(.debug_pubnames) }
    .debug_aranges 0 : { *(.debug_aranges) }
}
Ещё секцию init, наверное, нужно во flash перенести.
 

pvvx

Активный участник сообщества
А толку? Всё равно получается нерабочий код.
 

pvvx

Активный участник сообщества
Там такие, на gitee, примеры:
```
\SDK\wmt10x_phy6222\example\ble_peripheral\simpleBlePeripheral\gcc>python3 C:\Python310\Scripts\hexinfo.py .\output\sbp.ihex
- file: '.\output\sbp.ihex'
entry: 0x11020009
data:
- { first: 0x11020000, last: 0x11031B06, length: 0x00011B07 }
- { first: 0x11031B08, last: 0x11033217, length: 0x00001710 }
```
 

pvvx

Активный участник сообщества
@cool2000 - Ну вот собрал из вашего gitee, SDK\wmt10x_phy6222\example\ble_peripheral\simpleBlePeripheral\gcc.
Там кто-то наковырял примеры и не справил. Но добавил недостающие файлы...
Скрипт ld исправил, таблицы по сегментам перенес.
Код:
SDK\wmt10x_phy6222\example\ble_peripheral\simpleBlePeripheral\gcc>python3 C:\Python310\Scripts\hexinfo.py .\output\sbp.ihex
- file: '.\output\sbp.ihex'
  entry: 0x11020001
  data:
  - { first: 0x11020000, last: 0x1103150B, length: 0x0001150C }
  - { first: 0x11031510, last: 0x11032C17, length: 0x00001708 }
  - { first: 0x1FFF1838, last: 0x1FFF6E23, length: 0x000055EC }
Итог всё равно печален:
1704299423782.png
Зашился и не запускается (после 5-ой секунды идет команда сброса). И так все варианты с GCC, кроме одного, где нет использования BLE - накрутил какой-пример, кое как работает, рестарт с retention RAM не работает. Но прекрасно работает в Keil.
Уже чего только не делал: код СИ переписывал на 50%, сегменты и таблицы для ROM переставлял и так и сяк - не хочет оно работать с GCC.
 
Адаптер USB-COM какой?
rdwr_phy6222.py имеет опции установки скоростей UART. Не все USB-COM поддерживают 1MBit.
Надо было выбрать другую baud rate.
Абсолютно правы, снизил скорость, все считал. Но увы, уже поздно, буду ждать когда появиться рабочая прошивка....
Но есть Model: THB2 буду теперь с ним экспериментировать.
Соответственно вопрос, как он данные шлет в эфир. Я хочу через Phyton скрипт забирать и далее использовать.
 
Сверху Снизу