• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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, нужно добавить эту библиотеку в линковку.
По перезагрузкам не глядя в код сложно что-то сказать.
 
Сверху Снизу