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

BLE SoC PHY6202

pvvx

Активный участник сообщества
Слепил обновление Boot по OTA. Небезопасная функция, т.к. после передачи, при рестарте переписывает сектор информации загрузки для ROM. Если батарея жива - то всё будет хорошо. Процесс перезаписи, после конца передачи по OTA, длится всего несколько сотен mc при токе до 6 мА.
 

cool2000

Member
Бегло прошёл rf_phy_driver.o. Изменения касаются в основном DTM. Основной функционал практически не изменился.
 

cool2000

Member
А зачем нам эти тесты с управлением по UART?
Я их и не стал восстанавливать. ;)
Создал приватный репозиторий. Приватный по 2-м причинам: - непонятно, какую поставить лицензию, - пока код не проверен, нежелательно, чтобы он расползался.
Проекты simpleBlePeripheral и extBlePeripheral собираются GCC полностью из исходных текстов.
Теперь не могу понять, как дать вам доступ.
 

pvvx

Активный участник сообщества
> какую поставить лицензию
Да любую. Лицензия PHY имеет в виду, что код будет использован только на их чипах. За остальное они не отвечают :)
GNU GPL лицензия требует исполнения авторских прав от любого использования или копирования. Тупо копировать незя, если не перечислите всех участников, включая Адама, Еву и вышестоящих создателей. И многое другое там незя. Т.е. GNU GPL лицензия самая проприетарная и требовательная - жестче чем любая коммерческая. Можно засудить любого использующего GNU GPL лицензию.
 

pvvx

Активный участник сообщества
UNLICENSE - это лицензия без каких-либо условий, которая передает произведения в общественное достояние. И всё включенное под неё должно быть так-же UNLICENSE, что невозможно выполнить :)
По этому любые лицензии - это бредятина от англосаксов и т.д. И служит только для того чтобы засудить любого, кроме Человека. :)
 

pvvx

Активный участник сообщества
Публикуя лицензию вы подписываетесь под объявляемые в ней для вас законы и вашу принадлежность к конкретной категории - раб, челядь, пресмыкающийся, Человек, робот, ИИ, ... :)
 

pvvx

Активный участник сообщества
Вопрос с именами устройств решен. js коды обновлены...
 

pvvx

Активный участник сообщества
С последними исправлениями коррекции RTC часы уходят не более 1 минуты в сутки или более. Это на всех тестируемых у меня устройствах.
Т.е. коррекции, которая применяется для Xiaomi LYWSD03MMC в HA достаточно - скрипт или на gatewаy соединения раз в сутки и установка времени.
 

pvvx

Активный участник сообщества
@cool2000 - Что за функция (my_function)(0xa2e1) ?
C:
void _rom_sec_boot_init(void)
{
    efuse_init();
    if(_efuse_chip_version_check())
    {
        typedef void (*my_function)(void);
        my_function pFunc = (my_function)(0xa2e1);
        //ble_main();
        pFunc();
        return;
    }
    else
    {
        while(1);
    }
}
Может это всё отключить?
 

cool2000

Member
Что за функция (my_function)(0xa2e1)?
Это хороший вопрос. Что-то связанное с просыпанием. Возможно ускоряет просыпание.
C:
void FUN_0000a2e0(void)
{
    g_pGlobal_config = global_config;
    switch(global_config[CLOCK_SETTING])
    {
    case 0:
    case 1:
        hclk_per_us = 32;
        hclk_per_us_shift = 5;
        break;
    case 3:
        hclk_per_us = 0x30;
        hclk_per_us_shift = 0;
        break;
    case 4:
        hclk_per_us = 64;
        hclk_per_us_shift = 6;
        break;
    case 5:
        hclk_per_us = 96;
        hclk_per_us_shift = 0;
        break;
    case 6:
    case 7:
        break;
    default:
        hclk_per_us = 16;
        hclk_per_us_shift = 4;
        break;
    }
    _rom_boot_init();
    wakeup_init();
    rf_init();
    rf_calibrate();
}
void _rom_boot_init(void)
{
    AP_AON->PMCTL0 =  = (AP_AON->PMCTL0 & 0x7ffffff) | 0x28000000;
    // b16..7 software control 32k_clk (0x3fb)
    AP_AON->PMCTL2_0 = (AP_AON->PMCTL2_0 & 0xfffe007f) | 0x1fd80;
    // b6 enable software control
    AP->PMCTL2_0 = AP->PMCTL2_0 | 0x40;
    AP_AON->RTCCTL = AP_AON->RTCCTL | 1;
    // b21.. 17: All RAM on + 
    // 3'b1xx: 62.5us.  control bits for main digital part reset wait time after power up charge pump.
    AP_AON->PMCTL2_0 = AP_AON->PMCTL2_0 | 0x3e0004;
}
По идее _rom_boot_init() включает всю память и подкачивает (бустит) заряд.
Ещё в функции wakeupProcess1() её дополнительно подогревают PHY_REG_WT(0x1fff8000, pGlobal_config[GARBAGE_DATA_RESOURCE]);
 

pvvx

Активный участник сообщества
Мне не нравится _efuse_chip_version_check(). Вызывает finidv() -> LL_ENC_AES128_Encrypt0(), а надо LL_ENC_AES128_Encrypt1(), т.к. там включается CLK на AES блок.
Т.е. тратит объем RAM, нужных дел вроде не делает (?).
efuse_init() вообще вставлена в PhyPlusKit и rdwr_phy62x2.py. Записывает нули в регистры...

Вставлял шифрование рекламы bindkey и наткнулся на это.
Шифрование во всех версиях уже работает...
 

cool2000

Member
Вызывает finidv() -> LL_ENC_AES128_Encrypt0(), а надо LL_ENC_AES128_Encrypt1(), т.к. там включается CLK на AES блок.
Видимо AES блок включается при подаче питания. При начальной загрузке внутри ROM в нескольких местах вызывается LL_ENC_AES128_Encrypt0(), для secure boot. Но не видно ничего похожего на AP_PCR->SW_CLK |= BIT(MOD_AES);
 

pvvx

Активный участник сообщества
Выкинул _efuse_chip_version_check(). 208 байт освободилось.
 

pvvx

Активный участник сообщества
Как там дела с установкой разных частот работы CPU?
В текущей версии используется только один вариант. Остальные я отключил, т.к. не работают, а объем RAM/Flash занимают.
 

Andey1900

New member
Добрый день. Вопрос. На этом проце реально собрать тестер радиодеталей. Лежат пару ненужных браслетов
 

pvvx

Активный участник сообщества
Добрый день. Вопрос. На этом проце реально собрать тестер радиодеталей. Лежат пару ненужных браслетов
Всё реально. CPU у PHY62x2 ARM® Cortex™-M0 32-bit processor with SWD
PHY6222:
• Memory
 128KB-8MB in-system flash memory
 64KB SRAM, all programmable retention in sleep mode
 4-way instruction cache with 8KB Cache RAM
 96KB ROM
 256bit efuse
• 22 general purpose I/O pins
 GPIO status retention in off/sleep mode
 configurable as serial interface and programmable IO MUX function mapping
 All pins can be configured for wake-up
 All pins for triggering interrupt
 3 quadrature decoder(QDEC)
 6-channel PWM
 2-channel PDM/I2C/SPI/UART
 4-channel DMA
• DMIC/AMIC with microphone bias
• 8-channel 12bit ADC with low noise voice PGA
• 6-channel 32bit timer, one watchdog timer
• Real timer counter (RTC)
• Power, clock, reset controller
 

Andey1900

New member
Тогда второй вопрос. Ктонибудь это делал. Очень мало информацыи про этот проц. В основном бесполезные штуковины
 
Сверху Снизу