Dmitry Orlov
Member
ESP должен получать через UART0 пакеты данных (40 байт), сохранять их в некотором массиве, и посылать по MQTT протоколу на сервер. И наоборот, получать по MQTT команды и отсылать их в UART0. На основе c:\Espressif\examples\ESP8266\blinky2\ и доработанного модуля uart.c я написал часть, которая работает с моим устройством. Принимает пакеты, заполняет массив данными, выдает на терминал (UART1) содержимое массива. Пример MQTT c:\Espressif\examples\ESP8266\esp_mqtt\ отдельно тоже работает. Когда я собираю все вместе, программа в ESP падает (illegal instruction) в самом начале. Когда я убрал и из своей программы и из esp_mqtt весь код, связанный с выводом в терминал (у меня он был довольно сложный, выводил такого вида строки с отображением float):
0 ; 0x00ad:A; 45 'C:N; 0x09:N Normal ; 3.007A :N; 85.76V :N; 268.9W :N; 45.65kWh :A; 7:d 2:h 4:m 41:s :A; 0x00000000:A; 77 %:A;
Код, кажется, заработал, но все равно иногда падает. Ощущение такое, что результирующий код просто куда-то не влазит, но я не знаю как к этому подступиться. Использую Unofficial Development Kit for Espressif ESP8266 v2.2.2 (23.04.2017) (с другими картина та же). В проектах с использованием Sming при сборке программы печатается табличка, но я так и не нашел как добавить в makefile код для этого.
Section| Description| Start (hex)| End (hex)|Used space
------------------------------------------------------------------------------
data| Initialized Data (RAM)| 3FFE8000| 3FFE838A| 906
rodata| ReadOnly Data (RAM)| 3FFE8390| 3FFE9714| 4996
bss| Uninitialized Data (RAM)| 3FFE9718| 3FFF0218| 27392
text| Cached Code (IRAM)| 40100000| 4010757E| 30078
irom0_text| Uncached Code (SPI)| 40209000| 4023E2EE| 217838
Total Used RAM : 33294
Free RAM : 48626
Free IRam : 2708
В проекте uart.zip - работающий код, принимающий пакеты в UART0 и печатающий их содержимое в UART1. В проекте mqtt.zip - попытка соединить вместе пример и этот код.
Вопросы следующие:
1. В чем может быть проблема
2. Что делать
3. Есть ли возможность включить оптимизацию компилятору, если проблема в размере?
4. Что и куда добавить в makefile для вывода таблички о памяти.
0 ; 0x00ad:A; 45 'C:N; 0x09:N Normal ; 3.007A :N; 85.76V :N; 268.9W :N; 45.65kWh :A; 7:d 2:h 4:m 41:s :A; 0x00000000:A; 77 %:A;
Код, кажется, заработал, но все равно иногда падает. Ощущение такое, что результирующий код просто куда-то не влазит, но я не знаю как к этому подступиться. Использую Unofficial Development Kit for Espressif ESP8266 v2.2.2 (23.04.2017) (с другими картина та же). В проектах с использованием Sming при сборке программы печатается табличка, но я так и не нашел как добавить в makefile код для этого.
Section| Description| Start (hex)| End (hex)|Used space
------------------------------------------------------------------------------
data| Initialized Data (RAM)| 3FFE8000| 3FFE838A| 906
rodata| ReadOnly Data (RAM)| 3FFE8390| 3FFE9714| 4996
bss| Uninitialized Data (RAM)| 3FFE9718| 3FFF0218| 27392
text| Cached Code (IRAM)| 40100000| 4010757E| 30078
irom0_text| Uncached Code (SPI)| 40209000| 4023E2EE| 217838
Total Used RAM : 33294
Free RAM : 48626
Free IRam : 2708
В проекте uart.zip - работающий код, принимающий пакеты в UART0 и печатающий их содержимое в UART1. В проекте mqtt.zip - попытка соединить вместе пример и этот код.
Вопросы следующие:
1. В чем может быть проблема
2. Что делать
3. Есть ли возможность включить оптимизацию компилятору, если проблема в размере?
4. Что и куда добавить в makefile для вывода таблички о памяти.
Вложения
-
726.6 KB Просмотры: 17
-
548.8 KB Просмотры: 21