Сталкивался с таким.. даже ограничивал напряжение на выходе до 3V, чтобы не мешало.. (на GSM модулях)..
А вот почему ток потребления не снижается - загадка. Правда на новом SDK 1.0.0 еще не пробовал.
Достаточно посмотреть реализацию этого дела в коде... Отличий от 0.9.5 там практически нет.
Отличия 1.0.0 от 0.9.5:
1) Перенесли адрес банка памяти (названной "для пользователя") в RTC
2) Дописан глюк при инициализации SDK, приводящий к множеству ошибок с большими Flash. Включен бездарный и никчемный код разбора по заголовку в Flash. Всё для дополнения их новым загрузчиком.
3) Увеличено кол-во никчемных буферов в "heap" для хранения никому не нужных переменных. Как итог - доступный размер памяти для приложений сократился.
4) Несколько функций дополнено дополнительной проверкой входных параметров. Но сделано это кое-как, не трогая старое. Итог - неодекватностей стало больше.
5) Путем увеличения кода и используемой памяти "запатчено" пару ошибок с управлением настроек WiFi.
6) В очередной раз патчена espconn. Но многие её уже и не используют. Я - тоже. По тому сказать что там изменилось, специально не смотрев - не могу.
7) Добавлены ещё флаги (занимающие память) в процедурах обработки WDT и т.д.
8) Приписан ненужный интерфейс работы с частотой CPU, просто переадресующий к процедурам ROM-BIOS. Итог - увеличение кода и доп. затраты стека при их вызове.
Никчемные функции в SDK 1.0.0 (беглый реверс):
Код:
uint8 cpu_overclock;
bool system_update_cpu_freq(uint8 freq)
{
if(freq == 80) {
HWREG(PERIPHS_DPORT_BASEADDR,0x14) &= 0x7E;
system_update_cpu_freq(80);
return true;
}
if(freq == 160) {
HWREG(PERIPHS_DPORT_BASEADDR,0x14) |= 0x01;
system_update_cpu_freq(160);
return true;
}
return false;
}
uint8 system_get_cpu_freq(void)
{
return ets_get_cpu_frequency();
}
bool system_overclock(void)
{
if(system_get_cpu_freq()!=80) {
cpu_overclock = 1;
system_update_cpu_freq(160);
return true;
}
return false;
}
bool system_restoreclock(void)
{
if(system_get_cpu_freq() == 160) {
if(cpu_overclock) {
system_update_cpu_freq(80);
return true;
}
}
return false;
}
+ ещё много добавлено ненужного кода и буферов постоянного хранения данных в heap с введением "интерфейса" по поводу загрузчика. Все данные по загрузчикам теперь лежат в heap и отнимают и так малую память...
Всё это у китайцев названо - опимайзе
Полная "оптимайзе" памяти уже близка.
Про отдельные дополнительные библиотеки, типа smart-config - это отдельный разговор.
Тут разгребаю в основном базовую... (
libmain.a libnet80211.a libphy.a libpp.a libwpa.a)