Description
I’m using the latest version of the lv_port_esp32.
My Project uses multiple Tasks for WiFi, BLE, MQTT and more. On top of that i have lvgl with the tick_hook, lv_task and an helper task, which changes the for the content on the screen.
Everything works for the first two screens and then the lv_task just stops without error. The lvgl widgets are created, but never displayed after that.
Later the watchdog is triggered, because the lv_task is IDLE.
I tried using lv_tasks instead of freeRTOS tasks, but that didn’t helped and i also tried to use Semaphores around every lv operation, but that didn’t helped either.
What MCU/Processor/Board and compiler are you using?
ESP32-WROVER-B
esp-idf 4.0.1
Code to reproduce
The project is divided in multiple classes. I just give you the important stuff for my problem, but i can also give you the complete code if necessary.
The display_init
function is called from app_main.
#define LINE_MAX_LEN 24
static const char *TAG = "Display";
static message_types screen_before = 0;
static display_modes display_mode = MODE_NONE;
static gesture_directions gesture_direction = GES_NONE;
static int first_move = 1;
//Loading Task handle
//static TaskHandle_t loading_task;
static void display_qrcode()
{
static int first = 1;
if (first)
{
screen_init_tabs();
first = 0;
}
else
{
screen_switch_qrcode();
}
}
static void display_screen_next(int *position)
{
if (buffer_has_next(position))
{
char *rev = buffer_next(position);
printf("Dump at adress: %.20s\n", rev);
ESP_LOGI(TAG, "Change left to rev: %s", rev);
display_revenue(rev);
}
else
{
ESP_LOGI(TAG, "No Revenue next");
ESP_LOGI(TAG, "Position %d", *position);
}
}
static void display_screen_before(int *position)
{
if (buffer_has_before(position))
{
char *rev = buffer_before(position);
ESP_LOGI(TAG, "Change right to rev: %s", rev);
display_revenue(rev);
}
else
{
ESP_LOGI(TAG, "No Revenue before");
}
}
static void display_rev_save(char *new_rev)
{
#if GESTURE_ENABLE
buffer_put(new_rev);
first_move = 1;
#endif
display_revenue(new_rev);
}
static void display_connect()
{
screen_connect();
}
static void display_config()
{
screen_config();
vTaskDelay(3000 / portTICK_PERIOD_MS);
}
static void display_bluetooth(char *passkey)
{
screen_bluetooth(passkey);
vTaskDelay(3000 / portTICK_PERIOD_MS);
}
static void display_start_screen()
{
//Print Device id and Firmware version
uint8_t chipid[6];
esp_efuse_mac_get_default(chipid);
char output[23];
int j = 0;
for (int i = 0; i < 6; i++)
{ // Print chipid to readable hex characters
if (i == 5)
sprintf(output + j, "%02X", chipid[i]);
else
sprintf(output + j, "%02X:", chipid[i]);
j = j + 3;
}
ESP_LOGI(TAG, "MAC Address: %s", output);
screen_start(output, app_version);
vTaskDelay(3000 / portTICK_PERIOD_MS);
}
static void display_logo()
{
screen_logo();
}
static void display_controller(lv_task_t * task)
{
ESP_LOGE(TAG, "Controller task");
while (1)
{
struct display_message msg;
if (xQueueReceive(display_evt_queue, &msg, portMAX_DELAY))
{
ESP_LOGI(TAG, "Event: %d", msg.type);
if (msg.type != MSG_RESET)
screen_before = msg.type;
switch (msg.type)
{
case MSG_BLEPAIR:
display_bluetooth(msg.message);
break;
case MSG_CONNECT:
display_connect();
break;
case MSG_REVENUE:
display_rev_save(msg.message);
break;
case MSG_QRCODE:
display_mode = MODE_PAY;
display_qrcode();
break;
case MSG_LOGO:
display_logo();
break;
case MSG_CONFIG:
display_config();
break;
case MSG_OTAUPDATE:
display_update();
break;
case MSG_RESET:
display_reset();
break;
case MSG_RESTART:
vTaskDelay(200 / portTICK_PERIOD_MS);
esp_restart();
case MSG_ERROR:
display_mode = MODE_NONE;
ESP_LOGI(TAG, "Restart: %d", msg.restart);
display_error(msg.message, msg.restart);
break;
case MSG_GESTURE_LEFT:
case MSG_GESTURE_UP:
case MSG_GESTURE_DOWN:
case MSG_GESTURE_RIGHT:
display_gesture(msg.type & 0x0F);
break;
}
}
vTaskDelay(100 / portTICK_PERIOD_MS);
}
}
static void lv_task(void *arg)
{
while (1)
{
lv_task_handler();
vTaskDelay(5);
}
}
static void IRAM_ATTR lv_tick_task(void)
{
lv_tick_inc(portTICK_RATE_MS);
}
static lv_color_t *buf1;
static lv_color_t *buf2;
void display_init()
{
esp_err_t ret;
#if GESTURE_ENABLE
gesture_init();
buffer_init();
#endif
lv_init();
esp_register_freertos_tick_hook(lv_tick_task);
lvgl_driver_init();
spiffs_driver_init();
vTaskDelay(100);
// Save buffers in heap, stack is to small
buf1 = calloc(1, DISP_BUF_SIZE);
buf2 = calloc(1, DISP_BUF_SIZE);
//__NOINIT_ATTR static lv_color_t buf1[DISP_BUF_SIZE];
//__NOINIT_ATTR static lv_color_t buf2[DISP_BUF_SIZE];
static lv_disp_buf_t disp_buf;
lv_disp_buf_init(&disp_buf, buf1, buf2, DISP_BUF_SIZE);
lv_disp_drv_t disp_drv;
lv_disp_drv_init(&disp_drv);
disp_drv.flush_cb = disp_driver_flush;
disp_drv.buffer = &disp_buf;
lv_disp_drv_register(&disp_drv);
xTaskCreate(lv_task, "lv_task", 4096, NULL, 1, NULL);
vTaskDelay(20 / portTICK_PERIOD_MS);
//Trigger start seq
display_start_screen();
xTaskCreate(display_controller, "display_controller", 8192, NULL, 9, NULL);
//lv_task_t * task = lv_task_create(display_controller, 500, LV_TASK_PRIO_MID, NULL);
}
In this functions the content of the screen is changed. The display_controller
from the code above calls the screen functions. When screen_init_tabs
is called, the lv_task stops running.
LV_FONT_DECLARE(circular_black34);
LV_FONT_DECLARE(circular_black25);
LV_FONT_DECLARE(circular_bold22);
LV_FONT_DECLARE(circular_medium14);
LV_FONT_DECLARE(circular_medium17);
LV_IMG_DECLARE(shopdevice_vimpay);
LV_IMG_DECLARE(shopdevice_payment);
LV_IMG_DECLARE(shopdevice_qrcode);
static lv_obj_t *tabview;
static lv_obj_t *tabrev;
static lv_obj_t *tabqr;
static lv_obj_t *rev_amount;
static lv_obj_t *rev_consumer;
static lv_style_t style_black_25;
static lv_style_t style_bold_22;
static lv_style_t style_black_34;
static lv_style_t style_medium_17_light_grey;
static lv_style_t style_medium_17_dark_grey;
static lv_style_t style_medium_14;
//static const char *TAG = "Screens";
static void screen_qrcode(lv_obj_t *parent)
{
lv_obj_t *scan_mich = lv_label_create(parent, NULL);
lv_obj_add_style(scan_mich, LV_BTN_PART_MAIN, &style_black_25);
lv_label_set_text(scan_mich, "SCAN MICH");
lv_label_set_align(scan_mich, LV_LABEL_ALIGN_CENTER);
lv_obj_align(scan_mich, NULL, LV_ALIGN_IN_TOP_MID, 0, 23);
lv_obj_t *qrcode = lv_img_create(parent, NULL);
lv_img_set_src(qrcode, &shopdevice_qrcode);
//lv_obj_set_pos(qrcode, 25, 70);
lv_obj_t *vimpay = lv_img_create(parent, NULL);
lv_img_set_src(vimpay, &shopdevice_vimpay);
}
void screen_switch_payment(char *amount, char *consumer)
{
char amount_final[strlen(amount) + 5];
strcpy(amount_final, amount);
strcat(amount_final, " \xE2\x82\xAC");
lv_label_set_text(rev_amount, amount_final);
lv_obj_align(rev_amount, NULL, LV_ALIGN_IN_TOP_MID, 0, 223);
lv_label_set_text(rev_consumer, consumer);
lv_obj_align(rev_consumer, NULL, LV_ALIGN_IN_TOP_MID, 0, 255);
lv_tabview_set_tab_act(tabview, 1, LV_ANIM_ON);
}
void screen_switch_qrcode()
{
printf("Switch to qrcode\n");
lv_tabview_set_tab_act(tabview, 0, LV_ANIM_ON);
}
void screen_init_tabs()
{
/*Create a Tab view object*/
lv_obj_t *tabview;
tabview = lv_tabview_create(lv_scr_act(), NULL);
/*Add 3 tabs (the tabs are page (lv_page) and can be scrolled*/
lv_obj_t *tab1 = lv_tabview_add_tab(tabview, "Tab 1");
lv_obj_t *tab2 = lv_tabview_add_tab(tabview, "Tab 2");
lv_obj_t *tab3 = lv_tabview_add_tab(tabview, "Tab 3");
lv_obj_t *tabscreen = lv_obj_create(NULL, NULL);
lv_obj_set_style_local_bg_color(tabscreen, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE);
tabview = lv_tabview_create(lv_scr_act(), NULL);
tabqr = lv_tabview_add_tab(tabview, "QR Code"); // No text needed for tabs
tabrev = lv_tabview_add_tab(tabview, "Revenue");
lv_tabview_set_btns_pos(tabview, LV_TABVIEW_TAB_POS_NONE);
lv_page_set_scrollbar_mode(tabqr, LV_SCROLLBAR_MODE_OFF);
lv_page_set_scrollbar_mode(tabrev, LV_SCROLLBAR_MODE_OFF);
screen_qrcode(tabqr);
lv_obj_t *rev_heading = lv_label_create(tabrev, NULL);
lv_obj_add_style(rev_heading, LV_LABEL_PART_MAIN, &style_bold_22);
lv_label_set_text(rev_heading, "Erfolgreich bezahlt!");
lv_label_set_align(rev_heading, LV_LABEL_ALIGN_CENTER);
lv_obj_align(rev_heading, NULL, LV_ALIGN_IN_TOP_MID, 0, 64);
lv_obj_t *vimpay = lv_img_create(tabrev, NULL);
lv_img_set_src(vimpay, &shopdevice_payment);
lv_obj_set_pos(vimpay, 80, 110);
rev_amount = lv_label_create(tabrev, NULL);
lv_obj_add_style(rev_amount, LV_LABEL_PART_MAIN, &style_black_34);
lv_label_set_align(rev_amount, LV_LABEL_ALIGN_CENTER);
lv_obj_set_width(rev_amount, 240);
lv_obj_align(rev_amount, NULL, LV_ALIGN_IN_TOP_MID, 0, 223);
lv_label_set_text(rev_amount, "");
rev_consumer = lv_label_create(tabrev, NULL);
lv_obj_add_style(rev_consumer, LV_LABEL_PART_MAIN, &style_medium_17_dark_grey);
lv_label_set_align(rev_consumer, LV_LABEL_ALIGN_CENTER);
lv_label_set_long_mode(rev_consumer, LV_LABEL_LONG_BREAK);
lv_obj_set_width(rev_consumer, 230);
lv_obj_align(rev_consumer, NULL, LV_ALIGN_IN_TOP_MID, 0, 255);
lv_disp_load_scr(tabscreen);
}
void screen_connect()
{
lv_obj_t *connect_screen = lv_obj_create(NULL, NULL);
lv_obj_set_style_local_bg_color(connect_screen, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE);
lv_obj_t *gleich_bereit = lv_label_create(connect_screen, NULL);
lv_obj_add_style(gleich_bereit, LV_LABEL_PART_MAIN, &style_medium_14);
lv_label_set_text(gleich_bereit, "bin gleich bereit...");
lv_obj_align(gleich_bereit, NULL, LV_ALIGN_IN_TOP_MID, 0, 109);
lv_obj_t *wird_aufgebaut = lv_label_create(connect_screen, NULL);
lv_obj_add_style(wird_aufgebaut, LV_LABEL_PART_MAIN, &style_medium_17_dark_grey);
lv_label_set_text(wird_aufgebaut, "Verbindung zum VIMpay\nServer wird aufgebaut...");
lv_label_set_align(wird_aufgebaut, LV_LABEL_ALIGN_CENTER);
lv_obj_align(wird_aufgebaut, NULL, LV_ALIGN_IN_TOP_MID, 0, 163);
lv_obj_t *img_vimpay = lv_img_create(connect_screen, NULL);
lv_img_set_src(img_vimpay, &shopdevice_vimpay);
lv_obj_set_pos(img_vimpay, 94, 275);
lv_scr_load(connect_screen);
}
void screen_start(char *mac, char *app_version)
{
init_styles();
lv_obj_t *start_screen = lv_obj_create(NULL, NULL);
lv_obj_set_style_local_bg_color(start_screen, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE);
lv_obj_t *img_vimpay_big = lv_img_create(start_screen, NULL);
lv_img_set_src(img_vimpay_big, IMG_VIMPAY_BIG);
lv_obj_set_pos(img_vimpay_big, 38, 46);
lv_obj_t *device_id = lv_label_create(start_screen, NULL);
lv_obj_add_style(device_id, LV_LABEL_PART_MAIN, &style_medium_14);
lv_label_set_text(device_id, mac);
lv_obj_align(device_id, NULL, LV_ALIGN_CENTER, 0, 98);
lv_obj_t *firmware_version = lv_label_create(start_screen, NULL);
lv_obj_add_style(firmware_version, LV_LABEL_PART_MAIN, &style_medium_14);
lv_obj_set_y(firmware_version, 290);
lv_label_set_align(firmware_version, LV_LABEL_ALIGN_CENTER);
lv_label_set_text(firmware_version, app_version);
lv_obj_align(firmware_version, NULL, LV_ALIGN_CENTER, 0, 110);
lv_scr_load(start_screen);
}
void screen_logo()
{
...
}
Output log of esp32 monitor with enabled lvgl tracing.
I (78) boot: Chip Revision: 1
I (32) boot: ESP-IDF v4.0.1-197-g94d97499a 2nd stage bootloader
I (32) boot: compile time 08:50:23
I (65) boot: Enabling RNG early entropy source...
I (65) boot: SPI Speed : 40MHz
I (65) boot: SPI Mode : DIO
I (67) boot: SPI Flash Size : 4MB
I (72) boot: Partition Table:
I (75) boot: ## Label Usage Type ST Offset Length
I (82) boot: 0 nvs WiFi data 01 02 0000b000 00006000
I (90) boot: 1 otadata OTA data 01 00 00011000 00002000
I (97) boot: 2 phy_init RF data 01 01 00013000 00001000
I (105) boot: 3 ota_0 OTA app 00 10 00020000 00190000
I (112) boot: 4 ota_1 OTA app 00 11 001b0000 00190000
I (120) boot: 5 spiffs Unknown data 01 82 00340000 0007d000
I (127) boot: 6 nvs_key NVS keys 01 04 003ff000 00001000
I (135) boot: End of partition table
I (139) esp_image: segment 0: paddr=0x00020020 vaddr=0x3f400020 size=0x42340 (271168) map
I (263) esp_image: segment 1: paddr=0x00062368 vaddr=0x3ffbdb60 size=0x03e28 ( 15912) load
I (270) esp_image: segment 2: paddr=0x00066198 vaddr=0x40080000 size=0x00400 ( 1024) load
0x40080000: _WindowOverflow4 at /home/tobiaskuch/esp/esp-idf/components/freertos/xtensa_vectors.S:1778
I (271) esp_image: segment 3: paddr=0x000665a0 vaddr=0x40080400 size=0x09a70 ( 39536) load
I (297) esp_image: segment 4: paddr=0x00070018 vaddr=0x400d0018 size=0x10bbec (1096684) map
0x400d0018: _stext at ??:?
I (759) esp_image: segment 5: paddr=0x0017bc0c vaddr=0x40089e70 size=0x11c10 ( 72720) load
0x40089e70: btdm_rf_bb_init_phase1 at ??:?
I (811) boot: Loaded app from partition at offset 0x20000
I (812) boot: Checking flash encryption...
I (812) flash_encrypt: flash encryption is enabled (0 plaintext flashes left)
I (819) boot: Disabling RNG early entropy source...
I (825) psram: This chip is ESP32-D0WD
I (829) spiram: Found 32MBit SPI RAM device
I (834) spiram: SPI RAM mode: flash 40m sram 40m
I (839) spiram: PSRAM initialized, cache is in low/high (2-core) mode.
I (846) cpu_start: Pro cpu up.
I (850) cpu_start: Application information:
I (855) cpu_start: Project name: shop_device
I (860) cpu_start: App version: v0.4-7-g0608a62-dirty
I (866) cpu_start: Compile time: Aug 6 2020 16:37:29
I (872) cpu_start: ELF file SHA256: 9b208da06c6354cf...
I (878) cpu_start: ESP-IDF: v4.0.1-197-g94d97499a
I (885) cpu_start: Starting app cpu, entry point is 0x40081620
0x40081620: call_start_cpu1 at /home/tobiaskuch/esp/esp-idf/components/esp32/cpu_start.c:271
W (891) flash_encrypt: Flash encryption mode is DEVELOPMENT (not secure)
I (882) cpu_start: App cpu up.
I (1790) spiram: SPI SRAM memory test OK
I (1791) heap_init: Initializing. RAM available for dynamic allocation:
I (1791) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM
I (1797) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM
I (1803) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM
I (1809) heap_init: At 3FFBDB5C len 00000004 (0 KiB): DRAM
I (1815) heap_init: At 3FFD10F0 len 0000EF10 (59 KiB): DRAM
I (1822) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (1828) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (1835) heap_init: At 4009BA80 len 00004580 (17 KiB): IRAM
I (1841) cpu_start: Pro cpu start user code
I (1846) spiram: Adding pool of 4096K of external SPI memory to heap allocator
I (1868) spi_flash: detected chip: gd
I (1868) spi_flash: flash io: dio
I (1868) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (1876) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations
I (2001) ShopDevice: App version: v0.4-7-g0608a62-dirty
I (2006) ShopDevice: Version numeric 47
Trace: lv_init started (lv_obj.c #124 lv_init())
Info: lv_init ready (lv_obj.c #162 lv_init())
Timer 5 portTICK_PERIOD, period 2
I (2016) lvgl_helpers: Display hor size: 320, ver size: 240
I (2021) lvgl_helpers: Display buffer size: 20480
I (2026) lvgl_helpers: Initializing SPI master for display
I (2031) lvgl_helpers: Configuring SPI host HSPI_HOST (1)
I (2041) lvgl_helpers: MISO pin: -1, MOSI pin: 23, SCLK pin: 19
I (2046) lvgl_helpers: Max transfer size: 40960 (bytes)
I (2051) lvgl_helpers: Initializing SPI bus...
I (2056) disp_spi: Adding SPI device
I (2061) disp_spi: Clock speed: 40000000Hz, mode: 0, CS pin: 22
I (2266) ILI9341: Initialization.
I (2466) ILI9341: Enabling backlight.
I (2466) ILI9341: Display orientation: LANDSCAPE
I (2466) ILI9341: 0x36 command value: 0x28
I (2516) SPIFFS-DRIVER: Partition size: total: 463346, used: 73543
Trace: Screen create started (lv_obj.c #204 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Trace: Screen create started (lv_obj.c #204 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Trace: Screen create started (lv_obj.c #204 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: still running 1 (lv_task.c #396 lv_task_exec())
Trace: lv_refr_task: started (lv_refr.c #177 _lv_disp_refr_task())
I (3061) Display: MAC Address: 30:AE:A4:EF:4B:58
Trace: Screen create started (lv_obj.c #204 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Trace: image create started (lv_img.c #62 lv_img_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: image created (lv_img.c #127 lv_img_create())
Trace: label create started (lv_label.c #79 lv_label_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Trace: lv_refr_task: ready (lv_refr.c #305 _lv_disp_refr_task())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Trace: still running 2 (lv_task.c #398 lv_task_exec())
Info: label created (lv_label.c #167 lv_label_create())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: label create started (lv_label.c #79 lv_label_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: label created (lv_label.c #167 lv_label_create())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: still running 1 (lv_task.c #396 lv_task_exec())
Trace: lv_refr_task: started (lv_refr.c #177 _lv_disp_refr_task())
Trace: lv_img_design: start to draw image (lv_img.c #660 lv_img_design())
Info: image draw: cache miss, cached to an empty entry (lv_img_cache.c #122 _lv_img_cache_open())
Trace: lv_img_design: start to draw image (lv_img.c #660 lv_img_design())
Trace: image draw: image found in the cache (lv_img_cache.c #101 _lv_img_cache_open())
Trace: lv_img_design: start to draw image (lv_img.c #660 lv_img_design())
Trace: image draw: image found in the cache (lv_img_cache.c #101 _lv_img_cache_open())
Trace: lv_refr_task: ready (lv_refr.c #305 _lv_disp_refr_task())
Trace: still running 2 (lv_task.c #398 lv_task_exec())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
E (6151) Display: Controller task
I (6156) Display: Event: 3
Trace: Screen create started (lv_obj.c #204 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Trace: label create started (lv_label.c #79 lv_label_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Info: label created (lv_label.c #167 lv_label_create())
Trace: label create started (lv_label.c #79 lv_label_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: label created (lv_label.c #167 lv_label_create())
Trace: image create started (lv_img.c #62 lv_img_create())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: image created (lv_img.c #127 lv_img_create())
Info: lv_img_set_src: `LV_IMG_SRC_VARIABLE` type found (lv_img.c #180 lv_img_set_src())
I (6266) wifi:wifi driver task: 3ffe3568, prio:23, stack:6656, core=0
I (6266) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
I (6276) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
Trace: still running 1 (lv_task.c #396 lv_task_exec())
Trace: lv_refr_task: started (lv_refr.c #177 _lv_disp_refr_task())
Trace: lv_refr_task: ready (lv_refr.c #305 _lv_disp_refr_task())
Trace: still running 2 (lv_task.c #398 lv_task_exec())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
I (6366) wifi:wifi firmware version: d74ef33
I (6366) wifi:config NVS flash: enabled
I (6371) wifi:config nano formating: disabled
I (6376) wifi:Init dynamic tx buffer num: 32
I (6376) wifi:Init data frame dynamic rx buffer num: 32
I (6381) wifi:Init management frame dynamic rx buffer num: 32
I (6386) wifi:Init management short buffer num: 32
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
I (6391) wifi:Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Init static tx buffer num: 16
I (6411) wifi:Init static rx buffer size: 1600
I (6411) wifi:Init static rx buffer num: 10
I (6416) wifi:Init dynamic rx buffer num: 32
I (6426) ShopDevice WiFi: start the WIFI SSID:[muenchen.freifunk.net/freising]
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
I (6541) phy: phy_version: 4180, cb3948e, Sep 12 2019, 16:39:13, 0, 0
I (6541) wifi:mode : sta (30:ae:a4:ef:4b:58)
I (6546) ShopDevice WiFi: Waiting for wifi
I (6546) ShopDevice WiFi: SYSTEM_EVENT_STA_START
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler()
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
I (7281) wifi:new:<6,0>, old:<1,0>, ap:<255,255>, sta:<6,0>, prof:1
I (7281) wifi:state: init -> auth (b0)
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
I (7291) wifi:state: auth -> assoc (0)
I (7301) wifi:state: assoc -> run (10)
I (7301) wifi:connected with muenchen.freifunk.net/freising, aid = 11, channel 6, BW20, bssid = 18:e8:29:e1:13:ea
I (7306) wifi:security: Open Auth, phy: bgn, rssi: -74
I (7311) wifi:pm start, type: 1
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
I (8186) tcpip_adapter: sta ip: 10.80.216.58, mask: 255.255.248.0, gw: 10.80.216.3
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
I (9186) ShopDevice MQTT: User: 30aea4d80490, Password: ZsfT1ouazgxr0UNqObIw8oAuDIBI3PvpnHBUUMMqbjm6KKn0zz4oFdyT8mmQsBFL, Topic: shopdevice/30aea4d80490
I (9191) ShopDevice MQTT: Fill all topics with: shopdevice/30aea4d80490
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
I (9206) ShopDevice MQTT: Topics set: shopdevice/30aea4d80490 shopdevice/30aea4d80490/ota shopdevice/30aea4d80490/version
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
I (9221) ShopDevice MQTT: [APP] Free memory: 4220904 bytes
I (9231) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
I (11191) ShopDevice MQTT: MQTT_EVENT_CONNECTED
I (11191) ShopDevice MQTT: Subscribe: shopdevice/30aea4d80490
I (11196) ShopDevice MQTT: subscribe successful, msg_id=49945
I (11201) ShopDevice MQTT: Subscribe: shopdevice/30aea4d80490/ota
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
I (11211) ShopDevice MQTT: subscribe successful, msg_id=28816
Trace: lv_task_handler ready (lv_task.c #190 lv_task_handler())
I (11231) Display: Event: 2
Trace: tab view create started (lv_tabview.c #74 lv_tabview_create())
I (11236) ShopDevice MQTT: MQTT_EVENT_SUBSCRIBED, msg_id=49945
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Trace: page create started (lv_page.c #82 lv_page_create())
Trace: container create started (lv_cont.c #70 lv_cont_create())
Trace: lv_task_handler started (lv_task.c #74 lv_task_handler())
I (11271) ShopDevice MQTT: MQTT_EVENT_SUBSCRIBED, msg_id=28816
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Trace: still running 1 (lv_task.c #396 lv_task_exec())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Trace: lv_refr_task: started (lv_refr.c #177 _lv_disp_refr_task())
Info: container created (lv_cont.c #118 lv_cont_create())
Trace: container create started (lv_cont.c #70 lv_cont_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: container created (lv_cont.c #118 lv_cont_create())
Info: page created (lv_page.c #160 lv_page_create())
Trace: button matrix create started (lv_btnmatrix.c #73 lv_btnmatrix_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: button matrix created (lv_btnmatrix.c #121 lv_btnmatrix_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: tab view created (lv_tabview.c #192 lv_tabview_create())
Trace: page create started (lv_page.c #82 lv_page_create())
Trace: container create started (lv_cont.c #70 lv_cont_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: container created (lv_cont.c #118 lv_cont_create())
Trace: container create started (lv_cont.c #70 lv_cont_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: container created (lv_cont.c #118 lv_cont_create())
Info: page created (lv_page.c #160 lv_page_create())
Trace: page create started (lv_page.c #82 lv_page_create())
Trace: container create started (lv_cont.c #70 lv_cont_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: container created (lv_cont.c #118 lv_cont_create())
Trace: container create started (lv_cont.c #70 lv_cont_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: container created (lv_cont.c #118 lv_cont_create())
Info: page created (lv_page.c #160 lv_page_create())
Trace: page create started (lv_page.c #82 lv_page_create())
Trace: container create started (lv_cont.c #70 lv_cont_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: container created (lv_cont.c #118 lv_cont_create())
Trace: container create started (lv_cont.c #70 lv_cont_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: container created (lv_cont.c #118 lv_cont_create())
Info: page created (lv_page.c #160 lv_page_create())
Trace: label create started (lv_label.c #79 lv_label_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: label created (lv_label.c #167 lv_label_create())
Trace: label create started (lv_label.c #79 lv_label_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: label created (lv_label.c #167 lv_label_create())
Trace: label create started (lv_label.c #79 lv_label_create())
Trace: Object create started (lv_obj.c #236 lv_obj_create())
Info: Object create ready (lv_obj.c #391 lv_obj_create())
Info: label created (lv_label.c #167 lv_label_create())
E (1285441) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (1285441) task_wdt: - IDLE1 (CPU 1)
E (1285441) task_wdt: Tasks currently running:
E (1285441) task_wdt: CPU 0: IDLE0
E (1285441) task_wdt: CPU 1: lv_task