• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Существует ли с++ среда для esp8266?

Alex_S

New member
Друзья, предлагаю выяснения личных отношений и взаимные любезности перенести в личку, или в другую ветку.
Эта ветка посвящена несколько другим вопросам, и рекомендую придерживаться темы.
Спасибо!
 

jcmvbkbc

New member
О многоуважаемый автор поддержки call0 ABI в xtensa gcc.
Извините что я не занят набором соглашений между программами, библиотеками и операционной системой, обеспечивающих взаимодействие этих компонентов на низком уровне на данной платформе и не обладаю информацией, необходимой для этого от Cadence, но имеющиеся у вас.
И я этим не занят. И никто этим не занят. Тенсилика уж лет 5 как забила болт на gcc. Вся информация мною взята из открытых источников.
 

pvvx

Активный участник сообщества
И я этим не занят. И никто этим не занят. Тенсилика уж лет 5 как забила болт на gcc. Вся информация мною взята из открытых источников.
Блин вам в каждом ответе даю подсказки - зарегистрируйтесь там http://ip.cadence.com/ipportfolio/tensilica-ip и возможно что-то из IP подойдет к ESP8266...
А то так и будите отвечать на http://www.esp8266.com/ что мол RSSI "это внутреняя фича чипа" и не давать процедуры как его считать. :)
 
Последнее редактирование:

jcmvbkbc

New member
Блин вам в каждом ответе даю подсказки - зарегистрируйтесь там http://ip.cadence.com/ipportfolio/tensilica-ip и возможно что-то из IP подойдет к ESP8266...
А то так и будите отвечать на http://www.esp8266.com/ что мол RSSI "это внутреняя фича чипа" и не давать процедуры как его считать. :)
Да... Образцово-показательный бред. Я понял, что говорить с вами бесполезно. Спасибо, и, персонально вам, до свидания.
 

pvvx

Активный участник сообщества
Да... Образцово-показательный бред. Я понял, что говорить с вами бесполезно. Спасибо, и, персонально вам, до свидания.
Т.е. считаете, что в ESP8266 периферия проца эксклюзивная и у неё полностью собственный дизайн :)
Я понял, что говорить с вами бесполезно и делать ничего, кроме спама не хотите.
 

anakod

Moderator
Команда форума
У меня попросили поделиться информацией о сборке LWIP под Windows. Может быть кому-нибудь еще пригодиться:
  1. Берем esp-lwip с гитхаба
  2. Загружаем в Unofficial Developer Kit
  3. Делаем Makefail под Windows (приложил мой пример в аттаче)
  4. Все собирается.

По ходу работы я столкнулся с проблемой - в режиме веб сервера ломается при очень активном и большом количестве соединений (если зажать и не отпускать кнопку F5 в браузере достаточно долгое время). Причем время через которое наблюдается проблема всегда разное. Когда это случается модуль продолжает работать но внешние коннекты на слушающий сокет больше не проходят.
Если верить system_get_free_heap_size() памяти в запасе весьма и весьма много. Может быть дело в чем-то другом? Или счетчик памяти врет? Или это баги где-то в TCP стеке прошивки (espconn я принципиально не использую)? МОжет быть какая-то ошибка в моем коде, но вроде уже на очень много раз все перепроверил. Проблема повторяется как на этой сборке LWIP так и на оригинальной из SDK, так что тут разницы нет.

При этом если обновлять страницу в нормальном режиме (например автоматическое ежесекундное обновление), то все работает очень долго и стабильно. Уже кучу всего перепробовал и теперь даже идей нет как это отладить :(
 

Вложения

CHERTS

Moderator
Команда форума

pvvx

Активный участник сообщества
А чем esp-lwip с гитхаба лучше SDK'шного от Espressif? Или в нем пофиксили все ошибки которые допустила Espressif, в чем я сильно сомеваюсь?

P.S. В DevKit 1.0.10 esp-lwip с гитхаба есть в C:\Espressif\examples\lwip_lib\ для "поиграться" так сказать.
В esp-lwip с гитхаба только версия LwIP 1.4.1 и надо менять libmain.a - либу из SDK. + Ещё данный LwIP, на сегодня, не проверен полностью на работоспособность автором портирования.
 

Victor

Administrator
Команда форума
У меня попросили поделиться информацией о сборке LWIP под Windows. Может быть кому-нибудь еще пригодиться:
  1. Берем esp-lwip с гитхаба
  2. Загружаем в Unofficial Developer Kit
  3. Делаем Makefail под Windows (приложил мой пример в аттаче)
  4. Все собирается.
MakeFAIL в третьем пункте позабавил :)
А так, спасибо, надеюсь, что кому-нибудь пригодится
 

Sermus

New member
И как водится, сам отвечаю на свой вопрос.
Удалось модифицировать скрипт линкера и makefile так, чтобы все функции и методы по дефолту шли в irom, и только помеченные - в iram.
Прилагаю скрипт линковщика, его нужно положить в C:\Espressif\ESP8266_SDK\ld
И тестовый проект, в котором есть правильный makefile. В примере функция user_init помечена атрибутом ICACHE_IRAM_ATTR, так что она перманентно пойдет в iram.

Предлагаю CHERTS включить это в UDK.
 

Вложения

CHERTS

Moderator
Команда форума
Удалось модифицировать скрипт линкера и makefile так, чтобы все функции и методы по дефолту шли в irom, и только помеченные - в iram.
В архиве нет eagle.app.v6.cpp.irom.ld :(

Предлагаю CHERTS включить это в UDK.
Без проблем, включу в сл.версию. (1.0.13)
 

CHERTS

Moderator
Команда форума
Удалось модифицировать скрипт линкера и makefile так, чтобы все функции и методы по дефолту шли в irom, и только помеченные - в iram.
Что то я не понял в чем прикол,

Вот вывод размеров секций из примера C:\Espressif\examples\hello_world_cpp\

Код:
------------------------------------------------------------------------------
Section info:
   Section|                   Description| Start (hex)|   End (hex)|Used space
------------------------------------------------------------------------------
      data|        Initialized Data (RAM)|    3FFE8000|    3FFE89F0|    2544
    rodata|           ReadOnly Data (RAM)|    3FFE89F0|    3FFE8E44|    1108
       bss|      Uninitialized Data (RAM)|    3FFE8E48|    3FFF0A28|   31712
      text|            Cached Code (IRAM)|    40100000|    40106396|   25494
irom0_text|           Uncached Code (SPI)|    40240000|    40263318|  144152
Total Used RAM : 35364
Free RAM : 46556
Free IRam : 7292
------------------------------------------------------------------------------
А вот из Вашего примера:

Код:
------------------------------------------------------------------------------
Section info:
   Section|                   Description| Start (hex)|   End (hex)|Used space
------------------------------------------------------------------------------
      data|        Initialized Data (RAM)|    3FFE8000|    3FFE89F0|    2544
    rodata|           ReadOnly Data (RAM)|    3FFE89F0|    3FFE8E44|    1108
       bss|      Uninitialized Data (RAM)|    3FFE8E48|    3FFF0A28|   31712
      text|            Cached Code (IRAM)|    40100000|    401062CE|   25294
irom0_text|           Uncached Code (SPI)|    40240000|    402633EC|  144364
Total Used RAM : 35364
Free RAM : 46556
Free IRam : 7492
------------------------------------------------------------------------------
Использование irom0 в вашем примере больше, свободной iram в Вашем примере на 200 байт больше.
В чем оптимизация?

Разница между C:\Espressif\examples\hello_world_cpp и Вашим примером:

Код:
--- C:\Espressif\examples\hello_world_cpp\user\user_main.cpp   2015-01-26 10:28:22.000000000 +0500
+++ C:\Espressif\examples_new\hello_world_cpp_irom\user\user_main.cpp   2015-03-19 11:59:31.663470800 +0500
@@ -128,7 +128,7 @@
 // User code
 // =============================================================================================
-LOCAL void ICACHE_FLASH_ATTR hello_cb(void *arg)
+LOCAL void hello_cb(void *arg)
 {
   static int counter = 0;
   ets_uart_printf("Hello World #%d!\r\n", counter++);
@@ -136,7 +136,7 @@
 }
-extern "C" void user_init(void)
+extern "C" void ICACHE_IRAM_ATTR user_init(void)
 {
   do_global_ctors();
   // Configure the UART
 

Sermus

New member
Разница между C:\Espressif\examples\hello_world_cpp и Вашим примером:
Да, пример в этом смысле не очень показательный. Вы для повышения показательности уберите ICACHE_FLASH_ATTR у hello_cb в hello_world_cpp и скомпилируйте.
Тогда в обоих примерах сигнатура будет выглядеть одинаково:
LOCAL void hello_cb(void *arg)

Но тогда hello_world_cpp Free IRam : 7232, а в hello_world_cpp_irom Free IRam : 7492.

Без этого ситуация по памяти, похоже, действительно одинаковая, только в моем примере эту функцию вo flash запихивает билдовая процедура, а в исходном примере макрос ICACHE_FLASH_ATTR.
 

x_arrange

New member
Друзья, я с с++ только знакомлюсь и не знаю многих тонкостей.
Вот у меня есть Arduino IDE прекрасно настроенная на компиляцию для esp8266 с помощью небезысвестной github.com/esp8266/Arduino.
Все было прекрасно пока я не решил использовать контейнеры с++. Вектор скомпилился, но проц постоянно перезагружался при чтении вектора, а map так вообще не линкуется
т.к. видите ли "undefined reference to std::_Rb_tree_insert_and_rebalance" и еще что-то в этом духе.

Подскажите пожалуйста что бы это могло значить и как победить сей недуг?
 

jcmvbkbc

New member
Все было прекрасно пока я не решил использовать контейнеры с++. Вектор скомпилился, но проц постоянно перезагружался при чтении вектора, а map так вообще не линкуется т.к. видите ли "undefined reference to std::_Rb_tree_insert_and_rebalance" и еще что-то в этом духе.

Подскажите пожалуйста что бы это могло значить и как победить сей недуг?
std::_Rb_tree_insert_and_rebalance находится в libstdc++.a, нужно добавить эту библиотеку в линковку.
По перезагрузкам не глядя в код сложно что-то сказать.
 
Сверху Снизу