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

BLE SoC PHY6202

pvvx

Активный участник сообщества
А конструкция
.stack:
{
*(.stack*)
} > RAM
используется только для того, чтобы написать warning - превышен размер retention RAM.
Но лучше это определять/cделать по другому...
 

pvvx

Активный участник сообщества
@cool2000 - предложения по оптимизации и прочему просьба направлять в Pull requests или регистрируйтесь как соучастник проекта (пишите тут в личку). Проекты (всё ПО и коменты в github) с PHY62x2 будут только на русском языке.
Нечего более засорять форум техническими деталями... Тут люди болтают о жизни :)
 

pvvx

Активный участник сообщества
Есть такая функция - spif_config(sysclk_t ref_clk, uint8_t div, uint32_t rd_instr, uint8_t mode_bit, uint8_t QE)
Она задает работы XIP c Flash.
Если менять ref_clk, то время старта (TestTHB2) от ноги RST выходит:
1704640052865.png
Шкала времени в секундах.
Чем занят чип первые 150 мс - непонятно. Но далее частота spif влияет на время исполнения, а на потребление - очень мало.
 

cool2000

Member
Судя по графикам, разница во времени между 96МГц и 32МГц несущественная. Получается, можно спокойно выполнять программу на 32MHz CPU clock.
Чем занят чип первые 150 мс - непонятно.
ROM bootloader ищет secure boot? Как измеряли задержку, выставляли уровень на gpio?
 

cool2000

Member
Вы сильно перепахали весь код. Что в итоге вызывало повышенное потребление сборки gcc?
 

pvvx

Активный участник сообщества
Судя по графикам, разница во времени между 96МГц и 32МГц несущественная. Получается, можно спокойно выполнять программу на 32MHz CPU clock.
Разница в исполнении кода программы из Flash, только после 150 мс от страта. До этого работает ROM - наверно ожидает с ком порта на 9600 страт перепрошивки. А после 150 мс и исполняется переключение CLK SPI Flash/XIP.
Т.е. итог серьезен - 16 и 96 = 2 раза.
Вы сильно перепахали весь код.
Я не перепахивал, а убрал Warning-и и сделал правильную последовательность вызова функций страта-инициализации которые писали таблицы для ROM. Часть переписывалась, обнулялась из-за неправильной последовательности вызова для варианта GCC.
 

pvvx

Активный участник сообщества
Смысла загрузки первых сегментов RAM для ROM в GCC нет. Они потом обнуляются или копируются из Flash.
Global_config обнуляется в init_config() (rf/patch.c). Таблица векторов где-то тоже.
В Keil очке это всё ненаглядно и было невозможно проследить. В Eclipse сразу стало видно...
Это всё и исправил.
 

pvvx

Активный участник сообщества
1704672575934.png
В итоге оставил как в последнем SDK - 64МГц. Разница между 64МГц и 96МГц для всего кода старта с кучей циклов не зависящих от XIP примерно 10..15%.
Как раз наглядное пособие для ESP32 требующего код для 2x240МГц CPU от XIP SPI Flash в десятки раз меньше.
А тут CPU 16МГц и разница от CLK SPI Flash всего пару раз.

В итого общее среднее "рабочее" потребление для THB2 ещё уменьшилось.
 

cool2000

Member
In-system flash supports single-wire, 2-wire, and 4-wire reading, 2 wire reading mode by default.
Докинул в pull request кусок кода из 3.1.3.
 

pvvx

Активный участник сообщества
Эти опции могут быть для PHY6252. Где-то валяется, позже гляну....
 

cool2000

Member
Может зависеть от типа flash.
XFLASH_HIGH_SPEED тоже ничего не дает
Эти опции могут быть для PHY6252. Где-то валяется, позже гляну....
Не, не в этом дело. Китайская экономия пары копеек в действии. Посмотрел datasheet на GD25WD40C. Эта Giga не не поддерживает quad mode. High speed read уже активирован (режим 3B). Если только в PHY6252 не приварена другая память.
 

pvvx

Активный участник сообщества
PHY6252(SSOP24) PB-03F
```
Connecting...
PHY62x2 - Reset Ok
Revision: b'0012600b 6222M005'
FlashID: 12600b, size: 256 kbytes
```
 

pvvx

Активный участник сообщества
Не, не в этом дело. Китайская экономия пары копеек в действии.
Эти Flash кристаллы стоят везде. Но в Китае есть ещё дешевле производитель...
Экономии тут нет.
Этому CPU за глаза XIP с 96MHz CLK DSPI Flash. Я не включаю 96MHz, т.к. надо проверять на -35С. А у меня холодильник -28С и холод на улице тоже уже ушел вчера с -28C и ползет к 0С.
 

cool2000

Member
XT25W02E
Flash ID: 0x12600B
  • 256 K-byte
  • 256 bytes per programmable page
  • Standard, Dual SPI
  • 60MHz for fast read with 30pF load
  • 20mA maximum active current
  • 5uA typical Standby current ???
  • Page Program time: 2.5ms typical
  • Sector Erase time: 110ms typical
  • Block Erase time: 0.8s typical
  • Chip Erase time: 3s typical
GD25WD40C
Flash ID: 0x1364C8
  • 512 K-byte
  • 256 bytes per programmable page
  • Standard, Dual SPI
  • 70MHz for fast read on 2.1~3.0V power supply
  • 0.1uA typical standby current
  • 0.1uA typical power down current
  • Page Program time: 1.6ms typical
  • Sector Erase time: 150ms typical
  • Block Erase time: 0.8s typical
  • Chip Erase time: 6s typical
 
Сверху Снизу