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

ESP8266 проблема с IRAM

nikolz

Well-known member
Добрый день,
вопрос к знатокам.
собрал пакет flite на ESP8266
В итоге получил
Free IRAM: -17514 (минус)
-----------------------
Есть ли способы решить проблему ?
 

nikolz

Well-known member
спасибо, но не влияет.
--------------------
Вот какая появилась проблема.
При сборке пакета вылетает такое сообщение об отсутствие функций, которые я не вызываю но которые вызывает libc:

**** Build of configuration Default for project flite ****

mingw32-make.exe -f C:/Espressif/examples/ESP8266/flite/Makefile all
CC user/user_main.c
AR build/app_app.a
LD build/app.out
c:/Espressif/ESP8266_SDK/lib\libc.a(lib_a-svfprintf.o):(.literal+0x10): undefined reference to `_malloc_r'
c:/Espressif/ESP8266_SDK/lib\libc.a(lib_a-svfprintf.o): In function `_svfprintf_r':
/home/wjg/Repo/esp-open-sdk-20170622/crosstool-NG/.build/src/newlib-2.0.0/newlib/libc/stdio/vfprintf.c:733: undefined reference to `_malloc_r'
c:/Espressif/ESP8266_SDK/lib\libc.a(lib_a-mprec.o):(.literal+0x0): undefined reference to `_calloc_r'
c:/Espressif/ESP8266_SDK/lib\libc.a(lib_a-mprec.o): In function `_Balloc':
/home/wjg/Repo/esp-open-sdk-20170622/crosstool-NG/.build/src/newlib-2.0.0/newlib/libc/stdlib/mprec.c:106: undefined reference to `_calloc_r'
/home/wjg/Repo/esp-open-sdk-20170622/crosstool-NG/.build/src/newlib-2.0.0/newlib/libc/stdlib/mprec.c:123: undefined reference to `_calloc_r'
c:/Espressif/ESP8266_SDK/lib\libc.a(lib_a-svfiprintf.o):(.literal+0x0): undefined reference to `_realloc_r'
c:/Espressif/ESP8266_SDK/lib\libc.a(lib_a-svfiprintf.o):(.literal+0x4): undefined reference to `_free_r'
c:/Espressif/ESP8266_SDK/lib\libc.a(lib_a-svfiprintf.o): In function `__ssprint_r':
/home/wjg/Repo/esp-open-sdk-20170622/crosstool-NG/.build/src/newlib-2.0.0/newlib/libc/stdio/vfprintf.c:234: undefined reference to `_malloc_r'
/home/wjg/Repo/esp-open-sdk-20170622/crosstool-NG/.build/src/newlib-2.0.0/newlib/libc/stdio/vfprintf.c:245: undefined reference to `_realloc_r'
/home/wjg/Repo/esp-open-sdk-20170622/crosstool-NG/.build/src/newlib-2.0.0/newlib/libc/stdio/vfprintf.c:249: undefined reference to `_free_r'
c:/Espressif/ESP8266_SDK/lib\libc.a(lib_a-svfiprintf.o): In function `_svfiprintf_r':
/home/wjg/Repo/esp-open-sdk-20170622/crosstool-NG/.build/src/newlib-2.0.0/newlib/libc/stdio/vfprintf.c:733: undefined reference to `_malloc_r'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe: *** [build/app.out] Error 1
--------------------
ставлю такие заглушки:
char* _svfprintf_r(){};
int _calloc_r(){};
и все нормально собирается:
-----------------
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000a76 3ffe8000 3ffe8000 000000e0 2**4
CONTENTS, ALLOC, LOAD, DATA
1 .rodata 0000a2e0 3ffe8a80 3ffe8a80 00000b60 2**4
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .bss 00006628 3fff2d60 3fff2d60 0000ae40 2**4
ALLOC
3 .irom0.text 00227593 40210000 40210000 00014610 2**4
CONTENTS, ALLOC, LOAD, CODE
4 .text 000097c3 40100000 40100000 0000ae40 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
Section| Description| Start (hex)| End (hex)|Used space
------------------------------------------------------------------------------
data| Initialized Data (RAM)| 3FFE8000| 3FFE8A76| 2678
rodata| ReadOnly Data (RAM)| 3FFE8A80| 3FFF2D60| 41696
bss| Uninitialized Data (RAM)| 3FFF2D60| 3FFF9388| 26152
text| Cached Code (IRAM)| 40100000| 401097C3| 38851
irom0_text| Uncached Code (SPI)| 40210000| 40437593| 2258323
Total Used RAM : 70526
Free RAM : 11394
Free IRam : -6065
Run objcopy, please wait...
objcopy done
Run gen_appbin.exe
No boot needed.
Generate eagle.flash.bin and eagle.irom0text.bin successully in folder firmware
eagle.flash.bin-------->0x00000
eagle.irom0text.bin---->0x10000
Done
------------------------------
На других проектах такого не бывает.
Кто знает, почему так и что делать?
 

nikolz

Well-known member
кто-нибудь знает как посмотреть сколько места занимает функция в iRAM,
 

enjoynering

Well-known member
мы даже не знаем, что за пакет такой "flite" вы собрали. ни ссылок на исходники пакета, ни на ваш код. читать мысли мы еще не научились или вы похвастаться?
 

nikolz

Well-known member
мы даже не знаем, что за пакет такой "flite" вы собрали. ни ссылок на исходники пакета, ни на ваш код. читать мысли мы еще не научились или вы похвастаться?
я раньше об этом пакете писал.
Вы в интернет пробовали посмотреть?
введите в браузере flite и увидите
это пакет TTS
=================
сначала собрал на ПК и проверил скорость работы
получил ускорение 380 раз по сравнению с реальным временем
теперь собрал для ESP
очевидно придется собрать на голом железе, тогда IRam хватит
 

nikolz

Well-known member
собрал на голом железе.
прикольно, что iRAM еще свободно аж 20369.
----------------------------------
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000580 3ffe8000 3ffe8000 000000d8 2**3
CONTENTS, ALLOC, LOAD, DATA
1 .rodata 00009ecc 3ffe8580 3ffe8580 00000658 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .bss 00000270 3fff2450 3fff2450 0000a524 2**2
ALLOC
3 .irom0.text 001f4690 40210000 40210000 0000d5a8 2**2
CONTENTS, ALLOC, LOAD, CODE
4 .text 00003081 40100000 40100000 0000a524 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
Section| Description| Start (hex)| End (hex)|Used space
------------------------------------------------------------------------------
data| Initialized Data (RAM)| 3FFE8000| 3FFE8580| 1408
rodata| ReadOnly Data (RAM)| 3FFE8580| 3FFF244C| 40652
bss| Uninitialized Data (RAM)| 3FFF2450| 3FFF26C0| 624
text| Cached Code (IRAM)| 40100000| 40103081| 12417
irom0_text| Uncached Code (SPI)| 40210000| 40404690| 2049680
Total Used RAM : 42684
Free RAM : 39236
Free IRam : 20369
Run objcopy, please wait...
objcopy done
Run gen_appbin.exe
No boot needed.
Generate eagle.flash.bin and eagle.irom0text.bin successully in folder firmware
eagle.flash.bin-------->0x00000
eagle.irom0text.bin---->0x10000
Done
 
Сверху Снизу