Ничего не меняет. Разница в размере кода и занимаемых сегментов памятей не отличается, что свидетельствует о том что никаких изменений нет.Добавлю эту опцию в пример hello_world_optimized, что про эту опцию думает многоуважаемый pvvx ?
PROVIDE ( dport_ = 0x3ff00000);
PROVIDE ( io2_regs_ = 0x3ff20000);
PROVIDE ( uart0_ = 0x60000000);
PROVIDE ( spi1_ = 0x60000100);
PROVIDE ( spi0_ = 0x60000200);
PROVIDE ( gpio_ = 0x60000300);
PROVIDE ( timer_ = 0x60000600);
PROVIDE ( rtc_ = 0x60000700);
PROVIDE ( iomux_ = 0x60000800);
PROVIDE ( wdt_ = 0x60000900);
PROVIDE ( uart1_ = 0x60000F00);
PROVIDE ( rtc_ram_ = 0x60001000);
PROVIDE ( rtc_mem_ = 0x60001100);
PROVIDE ( io4_regs_ = 0x60009800);
extern volatile uint32 dport_[64]; // 0x3ff00000
extern volatile uint32 io2_regs_[1536]; // 0x3ff20000
extern volatile uint32 uart0_[64]; // 0x60000000
extern volatile uint32 spi1_[64]; // 0x60000100
extern volatile uint32 spi0_[64]; // 0x60000200
extern volatile uint32 gpio_[64]; // 0x60000300
extern volatile uint32 timer_[64]; // 0x60000600
extern volatile uint32 rtc_[64]; // 0x60000700
extern volatile uint32 iomux_[64]; // 0x60000800
extern volatile uint32 wdt_[64]; // 0x60000900
extern volatile uint32 sar_[64]; // 0x60000D00
extern volatile uint32 uart1_[64]; // 0x60000F00
extern volatile uint32 rtc_ram_[64]; // 0x60001000
extern volatile uint32 rtc_mem_[192]; // 0x60001100
extern volatile uint32 io4_regs_[384]; // 0x60009800
Не нужно, шьёт обе части сразу, потом надо GPIO0 вернуть в <1> и опять ресет .Ну и там шьется же не 1, а 2 части при обычной прошивке. Не знаю точно, но есть вероятность, что и Reset нужно дергать дважды. Хотя тут могу врать...
help_word_cpp и help_word_cpp_irom это по сути не оптимизация, просто в help_word_cpp_irom все по-умолчанию ложиться в IROM, в отличии от help_word_cpp, тем самым мы освобождаем IRAM для другого кода.Добрый день,
я правильно понял следующие результаты:
------------------------------
собираю пример help_word_cpp, получаю:
Total Used RAM : 39104 Free RAM : 42816 Free IRam : 6392
----------------------------
теперь собираем help_word_cpp_irom
-- это пример с оптимизацией - верно? получаю:
Total Used RAM : 39104 Free RAM : 42816 Free IRam : 6592
----------------------------------
Вопрос:
В результате оптимизации освободилось 200 байт. Правильно я понял?
Не могу понять сколь значимы такие ресурсы.
Буду признателен, если кто-нибудь придумает пример,
когда этих 200 байт не хватает либо на что их теперь хватит.
Спасибо
pvvx Вы меня конечно простите, но Вы задолбали нести ахинею, что я только собираю бабло... Завидуйте молча, я Вам уже это говорил неоднократно.Но тут ничего не поделать - сборщик UDK говорит, что он не будет исправлять ничего пока ему в рот не положат что и как у него лично в его компе исправить при трансляции компилятора и не доплатят. Выходит, что UDK платный и проще использовать от xtensa.
Чему завидовать то? Кривому транслятору и 100 рупь пожертвований?pvvx Вы меня конечно простите, но Вы задолбали нести ахинею, что я только собираю бабло... Завидуйте молча, я Вам уже это говорил неоднократно.
Сборкой UDK я не занимаюсь. Что он делает не совсем правильно - указано до битика. Обходные решения тоже. Далее - шаг того, кто собирает UDK.Скажите конкретно, что исправить и я исправлю, скажите с какими опциями пересобрать GCC и я пересоберу, проблем в этом нет..
Про платность вы сами писали - типа никто не платит... с напрашивающимся выводом (по контексту где про это писалось), что пока не оплатят ничего нового не будетЕсли Вы хотите часть пирога от пожертвования - нет проблем, пишите в личку, обсудим, договоримся, но вначале внесите изменения и опубликуйте их в официальном репозитарии.
Не хотите, не публикуйте, Выше право, но не нужно нести ахинею про платность UDK.
Если libc.a и libgcc.a заменены правильно (к примеру из моей свалки на libmc.a и libmgcc.a) то получаем так:Если возможно, поясните каким образом я могу реализовать эту оптимизацию в произвольном проекте.
Что для этого надо делать.
Спасибо
Пример: https://github.com/mattcallow/esp8266-sdk/blob/master/apps/07switch/driver/adc.cЕсли я правильно понял, Вы писали,что АЦП в ESP реализован программно.
Интересно посмотреть.
Шум никто не измерял. 14 бит дает сумма sar, которую считывает read_sar_dout() в виде 8 шт значений, если не обрезать 4 бита. https://github.com/mattcallow/esp8266-sdk/blob/master/apps/07switch/driver/adc.c#L63Возможно ли увеличение разрядности за счет быстродействия и какой уровень шума предельный.
Почему же не хочу, очень даже хочу и немного сделал, см. новую версию DevKit v2.0.4Оптимизация самого транслятора, которую не хочет делать сборщик UDK дает ещё 10..20% уменьшения объему по коду и от 30% по скорости для драйверов... Он будет ссылаться на что угодно, но делать этого не станет Он жаждет, чтобы кто-то сделал альтернативную сборку нового UDK и все отказались от данного UDK
На что я сопротивляюсь и уже не знаю как ему ещё это донести, но он ссылается на какую-то “зависть”...
Так что уважаемый pvvx, не нужно нести всякую чепуху, что я стану делать или не стану, что я жажду и т.д.v2.0.4 (09.05.2015):
* Обновлен компилятор xtensa-lx106-gcc и xtensa-lx106-g++
Изменены опции сборки newlib, как следствие в прошивках увеличилось количество свободной IRAM.
Например в примере "examples\nodemcu-firmware\" на старом компиляторе Free IRam было 810 Байт, на новом Free IRam стало 2986 Байт (при отключеном LUA_USE_BUILTIN_MATH).
Уже влезает, с новым DevKit. Даже сверхжирный nodemcu-firmware с включенным LUA_USE_BUILTIN_MATH влезает теперь.Некоторые проекты в UDK уже не влезают в IRAM без специальной libmgcc.a - пример
Я вот месяц сижу без работы, меня сократили 31 марта
Благодарю за информацию.
Только путем модификации либ. Не хватает IRAM, да самой RAM для nodeMCU с SDK от 1.0.0.Добрый день,
собрал в последней версии UDK nodeMCU и загрузил его в devkit
Но каково же было мое разочарование,
когда я увидел что сборка даже не на 0.9.6 а аж 0.9.5 (а я то ожидал увидеть 1.0.1)
Как бы исправить это, хотя бы на последнюю сборку на 0.9.6?
Спасибо
еще получил следующее.
собираем в DevKit v2.0.4 nodeMCU загружаем в devkit -все прекрасно, heap-20320
А в последней версии nodemcu от китайцев имеем heap-20536
Как это понимать?.. мать...мать..(это эхо в интернете)
Sections:
Idx Name Size VMA LMA File off Algn
0 .irom0.text 0005ab96 40210000 40210000 0000bcd0 2**4
CONTENTS, ALLOC, LOAD, CODE
1 .text 000074c0 40100000 40100000 00004804 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .data 00000ac8 3ffe8000 3ffe8000 000000e0 2**4
CONTENTS, ALLOC, LOAD, DATA
3 .rodata 00003c54 3ffe8ad0 3ffe8ad0 00000bb0 2**4
CONTENTS, ALLOC, LOAD, READONLY, DATA
4 .bss 00009c48 3ffec728 3ffec728 00004808 2**4
ALLOC
------------------------------------------------------------------------------
Section info:
Section| Description| Start (hex)| End (hex)|Used space
------------------------------------------------------------------------------
data| Initialized Data (RAM)| 3FFE8000| 3FFE8AC8| 2760
rodata| ReadOnly Data (RAM)| 3FFE8AD0| 3FFEC724| 15444
bss| Uninitialized Data (RAM)| 3FFEC728| 3FFF6370| 40008
text| Cached Code (IRAM)| 40100000| 401074C0| 29888
irom0_text| Uncached Code (SPI)| 40210000| 4026AB96| 371606
Total Used RAM : 58212
Free RAM : 23708
Free IRam : 2898
------------------------------------------------------------------------------
Это сложно сказать. Разные SDK по разному используют heap при инициализации. Новые - вроде меньше, но у них static данные уже больше занимают.дело в том, что когда я собираю то тоже вижу аж 28692 свободного RAM,
но в nodemcu они превращаются в 20320. а в последней версии от китайцев на 216 байт больше.
--------------------------
следовательно с SDK 1.0 RAM 23708 превратятся в 18700.
Около сотен глобальных ошибок по сравнению с SDK 0.9.5... Изменены методы, добавок много, но много ненужных никому - типа китайских плюсиков и галочек что у них теперь это есть, и встроено навечно и не выковырять, хотя исходники этих добавок лежат в примерах к Lwip и т.д. прилепляются без изменений кода - просто вставкой файлов исходников Так-же туда, в китай-SDK всунуты примеры, которые надо немного править, чтобы они работали правильно. Но это не сделано - им лиш-бы впихнуть до предела и в либах бездарно лежат куски, которые не работают. Пример - netio.c + netio.h, ping.h + ping.c, ... от оф.примеров к Lwip. В последний SDK они всунули громадный mdns - он тоже есть в опен-сорцахВопрос: Чем лучше будет SDK 1.0( иначе сказать какие ошибки устранятся)?.
Многое .Что надо исправить в makefile nodemcu чтобы собрать сSDK 1.0?
Всё же указано в ld и в названии файлов. Я базу ld не менял, менял только eagle.rom.addr.v6.ld - с побольше описанными функциями и данными от ROM-BIOS....