• Система автоматизации с открытым исходным кодом на базе 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
 
Сверху Снизу