Перейти к содержанию
    

ESP8266, ESP32: сравнение средств разработки по эффективности: минимальный размер кода, максимальное быстродействие - где посмотреть?

При реализации каких-то функций на микроконтроллерах, например, генератора импульсов, я примерно представляю

- максимальную частоту импульсов (ассемблер, С в разных средах разработки (IAR или, например, компиляторы GCС и XC8, прикрученные к Microchip Studio), Ардуино);

- соотношение размера кода, который получу, написав программу на ассемблере, на С в разных средах и в Ардуино,

Можно ли в этом плане сравнить среды разработки для ESP? Ардуино, Eclipce с TDM-GCC и MinGW, PlatformIO, что-то еще...

Тот же генератор импульсов - использование какой среды разработки и компилятора обеспечит

-максимальную частоту

-минимальный размер кода?

Может, попадалась статья по такому сравнению с результатами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я проверил минимальный период импульсов на выводе модуля ESP8266 - задержки убраны, без сброса сторожевого таймера, только чередование записей в порт 1-0-1... в цикле при использовании

- Eclipse + MinGW + ESP8266 NonOS SDK:

while(1){
  gpio_output_set(0, 1<<LED, 1<<LED, 0);
	//ets_delay_us(1); //delay step 1us
  gpio_output_set(1<<LED, 0, 1<<LED, 0);
	//ets_delay_us(1);
}

 

длительность импульса 0,7 мкс, период 1,2мкс;           небольшое отличие от меандра из-за организации цикла while(1);

объем памяти 29680 + 212992 байт (двумя кусками с 0x0 и с 0x10000);

есть библиотечная функция задержки с шагом 1мкс

 

- части примера ардуино Blink.ino:

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
//  delay(1000);	//delay step 1ms
  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW
//  delay(1000);
}

длительность импульса 1,8 мкс, период 10мкс;  большой перекос (скважность >5) из-за цикла loop();

объём памяти 265152 байта;

библиотечная функция задержки с шагом 1мс

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неправильно выбранный способ решения задачи порождает весьма странные вопросы:smile:

Берете условно один и тот же код и компилите разными инструментами, смотрите получившийся асм с разными ключами и уровнями оптимизации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/13/2023 at 10:27 PM, Arlleex said:

Неправильно выбранный способ решения задачи порождает весьма странные вопросы:smile:

Берете условно один и тот же код и компилите разными инструментами, смотрите получившийся асм с разными ключами и уровнями оптимизации.

Как применить Ваши рекомендации к приведенному примеру для сравнения параметров импульсов в ардуино и эклипсе?

 

Оптимизация в Eclipse не использовалась, для этого примера в ардуино она тоже вряд ли использовалась.

Я хочу определиться со средой разработки, можете ли Вы что-то сообщить по вопросу темы?

С ардуино не разбирался - в нем просто запуститься не составляет труда; с эклипсом повозился.

 

Я не знаю, как в ардуино напрямую вызвать функции ESP8266 NonOS SDK и организовать цикл while() вместо loop();

большинство пользователей ардуино будет лишь слегка изменять готовые примеры, не углубляясь.

Если Вы можете изменить пример ардуино File\Examples\Basics\Blink так, чтобы получить меньший период импульсов, было бы интересно посмотреть.

Хорошо бы и задержки с шагом 1мкс вставить из ESP8266 NonOS SDK...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

В 10.01.2023 в 03:23, bvn123 сказал:

Тот же генератор импульсов - использование какой среды разработки и компилятора обеспечит

43 минуты назад, bvn123 сказал:

задержки с шагом 1мкс

Думаю, в этом случае, нужно не компиляторы и IDE сравнивать, а применять соответствующую периферию микроконтроллера.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/13/2023 at 11:32 PM, tgruzd said:

 

Думаю, в этом случае, нужно не компиляторы и IDE сравнивать, а применять соответствующую периферию микроконтроллера.

 

Т.е., какую-то другую периферию модуля ESP8266... Какую именно?

Думаю, простое переключение состояния вывода микроконтроллера показательно в этом плане.

Если бы среди периферии ESP8266 оказался, например, ГУН, он управлялся бы через функции SDK - скорее всего максимальная частот ГУН была бы одинакова, независимо от того, какие среда/компилятор обращаются к этим функциям SDK.

 

Пока я использую ESP8266, и ответы на вопрос темы

"ESP8266, ESP32: сравнение средств разработки по эффективности: минимальный размер кода, максимальное быстродействие - где посмотреть?"

меня интересуют, но хотелось бы конкретики и именно по вынесенному в тему вопросу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, bvn123 сказал:

Как применить Ваши рекомендации к приведенному примеру для сравнения параметров импульсов в ардуино и эклипсе?

Применить примерно так: сперва выкинуть любые мысли что-то там измерять какими-то там импульсами ногодрыжными.

А потом скачать Eclipse + GCC (у Вас уже это все установлено, я полагаю) и писать код, не занимаясь пустым:smile:

Цитата

Думаю, простое переключение состояния вывода микроконтроллера показательно в этом плане.

Так же показательна, как погода в Екатеринбурге в зависимости от количества подписчиков у Клавы Коки.

Цитата

Т.е., какую-то другую периферию модуля ESP8266... Какую именно?

А что, в этих ESP таймеров с выходами сравнения нету?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/14/2023 at 1:38 PM, Arlleex said:

Применить примерно так: сперва выкинуть любые мысли что-то там измерять какими-то там импульсами ногодрыжными.

А потом скачать Eclipse + GCC (у Вас уже это все установлено, я полагаю) и писать код, не занимаясь пустым:smile:

Так же показательна, как погода в Екатеринбурге в зависимости от количества подписчиков у Клавы Коки.

А что, в этих ESP таймеров с выходами сравнения нету?

В чем показательность использования таймера или встроенного управляемого генератора (если бы он был) для сравнения средств разработки?

одна среда разработки с "медленным" кодом установит регистры МК, управляющие генератором (таймером), за 100мкс, альтернативный код - за 10мкс,

результат работы - одинаковая частота на выходе такого генератора.

Попалось аналогичное сравнение: https://habr.com/ru/post/254163/

Общие соображения... Чего-либо нового для себя (кроме Клавы - не понял, о чем это, искать интереса нет) в Ваших сообщениях не нашел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 13.01.2023 в 22:45, bvn123 сказал:

Оптимизация в Eclipse не использовалась,

Серьезно? И что тогда вы пытались сравнить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, bvn123 сказал:

В чем показательность использования таймера или встроенного управляемого генератора (если бы он был) для сравнения средств разработки?

Ни в чём, как и скорость ногодрыга.  Если цель - сравнить разные библиотеки управляющие пином (чиво@ля???) для одного МК - сравнивайте код, смотрите сколько проверок он делает прежде чем переключить пин, насколько эффективно эти проверки оптимизируются: 

В 14.01.2023 в 03:27, Arlleex сказал:

смотрите получившийся асм с разными ключами и уровнями оптимизации.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Исходная цель - выбор среды разработки для ESP8266,

пост размещался до того, как я разобрался с запуском эклипс+mingw+ESP8266 NONOS SDK.

Поэтому хотелось сравнения от разработчиков устройств на ESP8266, ESP32 с опытом работы в разных средах разработки для ESP под Windows, что именно лучше, эффективнее из средств разработки и почему: Espressif Systems (производитель ESP8266, ESP32), arduino под ESP, PlarformIO, Eclipse, VS (это то, что мне попалось).

Вроде таких: работал в VS, eclipse и..., но перешел на среду ..., потому что...

Пока выводы следующие:

ардуино - очень дружественная среда: без каких-либо статей и уроков установил, в течение нескольких минут запустил пример http-сервера, заменил IP, пароль и текст 'Hello world' на гипертекст, споткнулся на загрузке в ESP, быстро нашел установку COM-порта, загрузил, получил сервер с html-страничкой

эклипс - возился несколько дней до загрузки проекта в ESP; наткнулся на 3 проблемы, ответов на форумах eclipse и mingw не получил, на electronix.ru по крайней мере натолкнули на решение одной из них, в итоге решил методом тыка.

Эти же вопросы без ответов встречал в сети - наверняка многие на этом остановились.

По результатам моего теста пока предпочту эклипс. Может, есть что-то более дружественное, но эффективное?

 

До публикации результата сравнения ни одного ответа не было; после публикации - ни одного ответа по исходному вопросу.

Если говорить о результатах сравнения,

предложите, что сравнить - чтобы было просто и показательно; фразу 'я работаю с ESP' писать не надо, это подразумевается.

 

Отладка в ассемблере? Она в Ардуино есть? Оптимизация в ардуино есть?

Если да, как оптимизировать приведенную выше программу, чтобы получить исполнение одного цикла не за 10мкс, а как в эклипс, за 1,2мкс?

 

С моими познаниями в ардуино и эклипсе пока мне проще посмотреть изменения осциллографом.

 

Оптимизация в Eclipse - ключ оптимизации при компиляции в gcc не использовался, ожидал, что по умолчанию '-O0', ошибся?

Сравнение разных библиотек, управляющих пином? Почему нет? Даже если исходники библиотек открыты, я планирую только использовать их в готовом виде.

Интересно было бы мнение разработчиков именно под ESP в ардуино и в других средах разработки, работавших под windows.
 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ваши вопросы аналогичны вопросу "Хочу самую бьструю и маневренную машину. Подскажите, какого цвета должен бьть салон?"

Размеры и скорость программы зависят то компилятора (а он один - GCC для Tensilica) и опций компиляции, и не зависят от среды.

Если для обращения к переферии используется библиотека, то максимальная частота ногодрыга будет зависить от библиотеки, и практически не будет зависить от самого процессора. Если вам важна скорость, то переходите на ассемблер.

Что касается Ардуино, то это ещё один слой библиотек поверх IDF - он скорости точно не прибавит, но прибавит дружелюбности IDE.

Решайте, что вам важнее - скорость или удобство разработки. Лично я для ESP8266 писал программы прямо в командной строке (точнее в FAR'е), и ничего, всё работало.

Что касается отладки, то стандартное средство - gdb (все IDE - это обвёрки вокруг него). ESP32 подключается к нему через JTAG (через аппаратный адаптер на FT232 например + OpenOCD). Не уверен, что у ESP8266 есть JTAG (давно это было)

 

 

10 hours ago, bvn123 said:

Оптимизация в Eclipse - ключ оптимизации при компиляции в gcc не использовался, ожидал, что по умолчанию '-O0', ошибся?

У GCC по умолчанию -O2 кажется (если не -O3 вообще)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/16/2023 at 12:02 AM, xvr said:

Ваши вопросы аналогичны вопросу "Хочу самую бьструю и маневренную машину. Подскажите, какого цвета должен бьть салон?"

драматичненько, скорее, "на какой топливной смеси катать?"

 

On 1/16/2023 at 12:02 AM, xvr said:

Размеры и скорость программы зависят то компилятора (а он один - GCC для Tensilica) и опций компиляции, и не зависят от среды.

Что касается Ардуино, то это ещё один слой библиотек поверх IDF - он скорости точно не прибавит, но прибавит дружелюбности IDE.

Спасибо, это по сути. Если gcc единственный компилятор для ESP, вопрос, наверное, можно считать решенным.

Для avr я тестировал три компилятора (и ассемблер), они давали разную производительность и размер;

поэтому полагал, что и для ESP могут быть варианты.

 

Посмотрел, что предлагает Espressif (все-таки производитель ESP) - API и те же сторонние toolchain и среду Eclipse.

Что остается - может, в какой-то среде оказалось бы проще все это связывать и/или поддержка лучше...

Но в этом плане с эклипс на каком-то уровне уже разобрался.

 

On 1/16/2023 at 12:02 AM, xvr said:

У GCC по умолчанию -O2 кажется (если не -O3 вообще)

<По умолчанию в GCC используется уровень оптимизаций “-O0”.> ("Оптимальные опции для x86 GCC" Блог компании Intel Компиляторы *C *)

- сведения из сети; уровень доверия соответствующий.

Проверить с вводом разных ключей оптимизации несложно, тратить время не вижу смысла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, bvn123 said:

<По умолчанию в GCC используется уровень оптимизаций “-O0”.> (

Да, действительно. Но он и на -O0 умудряется что то наоптимизировать 😞

https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...