{"id":134004,"date":"2026-05-05T12:00:51","date_gmt":"2026-05-05T10:00:51","guid":{"rendered":"https:\/\/riverdi.com\/blog\/esecuzione-di-lvgl-sul-display-di-eve"},"modified":"2026-05-05T12:00:51","modified_gmt":"2026-05-05T10:00:51","slug":"esecuzione-di-lvgl-sul-display-di-eve","status":"publish","type":"post","link":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve","title":{"rendered":"Eseguire LVGL sul display di EVE"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_87_1 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #002175;color:#002175\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #002175;color:#002175\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\/#Come_eseguire_LVGL_sul_display_Riverdi_EVE\" >Come eseguire LVGL sul display Riverdi EVE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\/#Hardware_utilizzato\" >Hardware utilizzato<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\/#Requisiti_software\" >Requisiti software<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\/#Capire_larchitettura_di_rendering_di_EVE\" >Capire l&#8217;architettura di rendering di EVE<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\/#Blocchi_di_memoria_chiave_di_EVE\" >Blocchi di memoria chiave di EVE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\/#Come_si_inserisce_LVGL_nella_pipeline\" >Come si inserisce LVGL nella pipeline<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\/#Creazione_del_progetto_STM32\" >Creazione del progetto STM32<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\/#Inizializzazione_di_LVGL_e_del_driver_di_visualizzazione_EVE\" >Inizializzazione di LVGL e del driver di visualizzazione EVE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\/#Attivazione_dellinput_tattile\" >Attivazione dell&#8217;input tattile<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\/#Eseguire_la_prima_demo_LVGL\" >Eseguire la prima demo LVGL<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\/#Conclusione\" >Conclusione<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Come_eseguire_LVGL_sul_display_Riverdi_EVE\"><\/span>Come eseguire LVGL sul display Riverdi EVE<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Eseguire un&#8217;interfaccia grafica moderna su un microcontrollore di solito significa avere a che fare con framebuffer, limiti di memoria e compromessi in termini di prestazioni.<\/p>\n<p>Con EVE del nostro partner Bridgetek, il rendering della grafica HMI ad alta qualit\u00e0, l\u2019audio e la gestione delle funzioni touch vengono trasferiti alla GPU. Allo stesso tempo, LVGL, anch\u2019esso partner di Riverdi, offre un framework UI flessibile e ampiamente utilizzato. <\/p>\n<p>Il risultato: con questa configurazione puoi realizzare interfacce complesse senza spingere l&#8217;MCU al limite e permette a processori economici di gestire display a colori avanzati e dall&#8217;aspetto professionale con un carico minimo<\/p>\n<p>Questa guida spiega come eseguire LVGL su un display intelligente Riverdi EVE4 utilizzando la scheda di valutazione Riverdi basata su STM32F4.<\/p>\n<p>L&#8217;esempio utilizza il display Riverdi <a href=\"https:\/\/riverdi.com\/it\/product\/eve4-intelligent-display-rvt70hsbnwc00-b\">RVT70HSBNWC00-B<\/a> da 7 pollici collegato tramite <strong>SPI attraverso l&#8217;interfaccia RiBUS.<\/strong><\/p>\n<p>L&#8217;obiettivo di questo tutorial \u00e8 mostrarti come:<\/p>\n<ul>\n<li>inizializza LVGL sulla MCU host<\/li>\n<li>collega LVGL al motore grafico EVE<\/li>\n<li>visualizza i widget LVGL sullo schermo<\/li>\n<li>abilita l&#8217;interazione tattile<\/li>\n<\/ul>\n<p>A differenza dei display integrati tradizionali, l&#8217;architettura EVE non richiede che la MCU host esegua il rendering di un framebuffer completo. L&#8217;host invia invece i comandi di disegno alla GPU EVE, che si occupa di generare l&#8217;immagine finale. <\/p>\n<p>Questo riduce notevolmente l&#8217;utilizzo della memoria e il carico della CPU sull&#8217;MCU.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Hardware_utilizzato\"><\/span>Hardware utilizzato<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img decoding=\"async\" class=\"alignnone wp-image-129399 size-full\" src=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_Grafika_POMIEDZY-TEKSTY_1-3.png\" alt=\"\" width=\"826\" height=\"544\" srcset=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_Grafika_POMIEDZY-TEKSTY_1-3.png 826w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_Grafika_POMIEDZY-TEKSTY_1-3-300x198.png 300w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_Grafika_POMIEDZY-TEKSTY_1-3-768x506.png 768w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_Grafika_POMIEDZY-TEKSTY_1-3-600x395.png 600w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_Grafika_POMIEDZY-TEKSTY_1-3-64x42.png 64w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/p>\n<p>In questo tutorial usiamo EVE4 (BT817Q). Secondo la documentazione di LVGL, dovrebbe funzionare anche con altre versioni di EVE, ma non \u00e8 stato ancora testato. <\/p>\n<p>In questo tutorial vengono utilizzati i seguenti componenti hardware.<\/p>\n<p><strong>Riverdi RVT70HSBNWC00-B<\/strong><\/p>\n<ul>\n<li>Display intelligente EVE4 da 7\u201d<\/li>\n<li>Risoluzione: 1280 \u00d7 600<\/li>\n<li>Motore grafico integrato BT817Q<\/li>\n<li>Touch capacitivo proiettato<\/li>\n<\/ul>\n<p><strong>Scheda di valutazione Riverdi<\/strong><\/p>\n<ul>\n<li>Microcontrollore STM32F4<\/li>\n<\/ul>\n<p><strong>ST-Link<\/strong><\/p>\n<ul>\n<li>usato per la programmazione e il debug<\/li>\n<\/ul>\n<p><strong>Cavo piatto RiBUS<\/strong><\/p>\n<ul>\n<li>utilizzato per la comunicazione SPI tra l&#8217;host e il modulo EVE<\/li>\n<\/ul>\n<p><strong>Cavi micro-USB<\/strong><\/p>\n<ul>\n<li>uno per ST-Link<\/li>\n<li>uno per alimentare la scheda di valutazione<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Requisiti_software\"><\/span>Requisiti software<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Prima di iniziare il processo di integrazione, bisogna preparare diversi componenti software. Il progetto \u00e8 stato realizzato utilizzando <strong>STM32CubeIDE<\/strong> come ambiente di sviluppo, con <strong>LVGL<\/strong> che fornisce il framework per l\u2019interfaccia utente grafica. La comunicazione con il motore grafico EVE avviene tramite le librerie di supporto Riverdi EVE, che implementano l\u2019interfaccia di basso livello tra l\u2019MCU host e la GPU BT817.  <\/p>\n<p>In questa configurazione, LVGL non rende i pixel direttamente nel framebuffer. Le operazioni di disegno di LVGL vengono invece tradotte in comandi EVE che vengono inviati alla GPU tramite SPI. Il dispositivo EVE esegue poi questi comandi per visualizzare il fotogramma finale sullo schermo.  <\/p>\n<p>Sono necessari i seguenti strumenti software:<\/p>\n<p><strong>STM32CubeIDE<\/strong> (o un altro IDE)<\/p>\n<ul>\n<li>ambiente di sviluppo per progetti STM32<\/li>\n<li>serve per configurare le periferiche, compilare il progetto e programmare l&#8217;MCU<\/li>\n<\/ul>\n<p><strong>Libreria grafica LVGL<\/strong><\/p>\n<ul>\n<li>framework GUI integrato utilizzato per creare l&#8217;interfaccia utente<\/li>\n<li>offre widget, un sistema di layout e la gestione degli eventi<\/li>\n<\/ul>\n<p><strong>Librerie di supporto per Riverdi EVE<\/strong><\/p>\n<ul>\n<li>[garantire una comunicazione di basso livello con la GPU EVE]<\/li>\n<li>gestire le transazioni SPI e l&#8217;accesso al FIFO dei comandi<\/li>\n<\/ul>\n<p><strong>Git<\/strong><\/p>\n<ul>\n<li>si usa per scaricare repository e progetti di esempio<\/li>\n<\/ul>\n<p>Per trovare il progetto, vai su <a href=\"https:\/\/github.com\/riverdi\">GitHub di Riverdi<\/a> e cerca il repository <a href=\"https:\/\/github.com\/riverdi\/EVE-LVGL\">EVE-LVGL<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Capire_larchitettura_di_rendering_di_EVE\"><\/span>Capire l&#8217;architettura di rendering di EVE<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Una differenza fondamentale tra i display EVE e i display embedded tradizionali \u00e8 il modo in cui vengono generati i frame. Nella maggior parte dei sistemi embedded, l&#8217;MCU esegue il rendering dei pixel in un framebuffer, che viene poi letto continuamente dal controller del display per aggiornare lo schermo <\/p>\n<p>I dispositivi EVE seguono un approccio diverso. Invece di inviare un framebuffer, l&#8217;MCU host invia comandi di disegno alla GPU. Questi comandi descrivono ci\u00f2 che deve essere disegnato sullo schermo, mentre il motore grafico EVE genera internamente i pixel finali.  <\/p>\n<p>Questo riduce notevolmente l&#8217;utilizzo della memoria e i requisiti di larghezza di banda sul microcontrollore.<\/p>\n<p>Il fotogramma renderizzato \u00e8 definito da una struttura chiamata &#8220;Display List&#8221;. La Display List \u00e8 una sequenza di comandi GPU eseguiti ad ogni fotogramma per generare l&#8217;immagine finale. <\/p>\n<p>Una pipeline di visualizzazione semplificata si presenta quindi cos\u00ec:<\/p>\n<p>MCU \u2192 comandi di disegno \u2192 GPU EVE \u2192 pannello LCD<\/p>\n<p>\u00c8 proprio grazie a questa architettura basata su comandi che \u00e8 possibile eseguire interfacce grafiche complesse su microcontrollori relativamente piccoli.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Blocchi_di_memoria_chiave_di_EVE\"><\/span>Blocchi di memoria chiave di EVE<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A livello interno, la GPU EVE utilizza diverse aree di memoria per elaborare i comandi grafici.<\/p>\n<p><strong>RAM_DL<\/strong><\/p>\n<ul>\n<li>memorizza la Display List utilizzata per il rendering del fotogramma corrente<\/li>\n<\/ul>\n<p><strong>RAM_G<\/strong><\/p>\n<ul>\n<li>memoria grafica generica usata per immagini, caratteri e altre risorse<\/li>\n<\/ul>\n<p><strong>FIFO di comando<\/strong><\/p>\n<ul>\n<li>buffer utilizzato dal coprocessore per ricevere i comandi dall&#8217;MCU<\/li>\n<\/ul>\n<p>L&#8217;MCU host scrive i comandi nel FIFO dei comandi. Il coprocessore EVE interpreta questi comandi e crea la Display List memorizzata in RAM_DL. Durante il ciclo di aggiornamento dello schermo, la GPU esegue la Display List e genera il fotogramma finale.  <\/p>\n<h3><span class=\"ez-toc-section\" id=\"Come_si_inserisce_LVGL_nella_pipeline\"><\/span>Come si inserisce LVGL nella pipeline<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Quando si usa LVGL con i display tradizionali, i pixel vengono renderizzati in un framebuffer nella memoria della MCU. Con i display EVE il processo \u00e8 diverso. <\/p>\n<p>Le operazioni di disegno LVGL vengono tradotte in comandi GPU EVE, che vengono inviati al dispositivo tramite SPI. La GPU crea quindi la Display List e esegue il rendering del fotogramma internamente. <\/p>\n<p>Il flusso che ne risulta \u00e8 questo:<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-129407 size-full\" src=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_grafika_POMIEDZY-TEKSTY_2-2.png\" alt=\"\" width=\"826\" height=\"320\" srcset=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_grafika_POMIEDZY-TEKSTY_2-2.png 826w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_grafika_POMIEDZY-TEKSTY_2-2-300x116.png 300w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_grafika_POMIEDZY-TEKSTY_2-2-768x298.png 768w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_grafika_POMIEDZY-TEKSTY_2-2-600x232.png 600w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_grafika_POMIEDZY-TEKSTY_2-2-64x25.png 64w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/p>\n<p>Questo permette a LVGL di gestire interfacce utente complesse mantenendo molto basso l&#8217;utilizzo della memoria della MCU.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Creazione_del_progetto_STM32\"><\/span>Creazione del progetto STM32<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Il prossimo passo \u00e8 preparare il progetto di sviluppo per la scheda di valutazione Riverdi. L&#8217;MCU host eseguir\u00e0 il framework LVGL e comunicher\u00e0 con la GPU EVE tramite SPI. <\/p>\n<p>Inizia creando un nuovo progetto STM32 in STM32CubeIDE per il microcontrollore utilizzato sulla scheda di valutazione. Una volta creato il progetto, configura le periferiche necessarie per comunicare con il dispositivo EVE. <\/p>\n<p>L&#8217;interfaccia pi\u00f9 importante \u00e8 la SPI, che serve a trasmettere comandi e dati tra la MCU e il controller grafico EVE.<\/p>\n<p>Oltre all\u2019SPI, bisogna configurare diversi segnali di controllo come pin GPIO. Questi segnali servono a gestire lo stato di alimentazione del dispositivo EVE e a gestire la comunicazione con la GPU. <\/p>\n<p>I segnali tipici richiesti dall&#8217;interfaccia EVE includono:<\/p>\n<p><strong>CS<\/strong><\/p>\n<ul>\n<li>segnale di selezione chip per la comunicazione SPI<\/li>\n<\/ul>\n<p><strong>PD<\/strong><\/p>\n<ul>\n<li>pin di controllo dello spegnimento utilizzato per resettare o riavviare il dispositivo EVE<\/li>\n<\/ul>\n<p><strong>INT<\/strong><\/p>\n<ul>\n<li>linea di interruzione usata dalla GPU per segnalare eventi alla MCU host<\/li>\n<\/ul>\n<p>Una volta configurati l&#8217;interfaccia SPI e i segnali GPIO, puoi compilare il progetto e caricarlo sulla scheda per verificare che la configurazione hardware di base funzioni.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Inizializzazione_di_LVGL_e_del_driver_di_visualizzazione_EVE\"><\/span>Inizializzazione di LVGL e del driver di visualizzazione EVE<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Una volta preparato l&#8217;ambiente di progetto, bisogna inizializzare la libreria LVGL. Questo passaggio prepara le strutture interne di LVGL e attiva il framework grafico. <\/p>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">lv_init();\n<\/pre>\n<p>LVGL mette a disposizione un driver di visualizzazione dedicato per le GPU EVE. Questo driver traduce le operazioni di disegno di LVGL in comandi comprensibili dal motore grafico EVE. <\/p>\n<p>Il driver di visualizzazione viene creato usando la funzione <em>lv_draw_eve_display_create()<\/em>.<\/p>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">lv_display_t * disp = lv_draw_eve_display_create(\n  1280,\n  600,\n  LV_DISPLAY_RENDER_MODE_DIRECT\n);\n<\/pre>\n<p>I parametri definiscono la risoluzione del display. In questo esempio usiamo la risoluzione <strong>1280&#215;600<\/strong> del display Riverdi RVT70HSBNWC00-B. <\/p>\n<h3><span class=\"ez-toc-section\" id=\"Attivazione_dellinput_tattile\"><\/span>Attivazione dell&#8217;input tattile<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Il display Riverdi EVE include un controller touch capacitivo integrato a cui puoi accedere tramite l&#8217;interfaccia GPU EVE.<\/p>\n<p>LVGL mette a disposizione una funzione di supporto che crea un driver per dispositivi di input collegato al motore touch EVE.<\/p>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">lv_draw_eve_touch_create(disp);\n<\/pre>\n<p>Una volta chiamata questa funzione, le coordinate dei tocchi rilevate dal controller EVE vengono automaticamente trasmesse a LVGL e convertite in eventi di input.<\/p>\n<p>Questo permette ai widget LVGL, come pulsanti, cursori e elenchi, di reagire alle azioni dell&#8217;utente.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Eseguire_la_prima_demo_LVGL\"><\/span>Eseguire la prima demo LVGL<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Una volta inizializzati i driver di visualizzazione e di input, il sistema \u00e8 pronto per visualizzare la prima interfaccia grafica.<\/p>\n<p>Un modo semplice per verificare l&#8217;integrazione \u00e8 creare una schermata con diversi widget LVGL standard. Di seguito trovi il codice di esempio: <\/p>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">static void create_test_ui(void)\n{\n  lv_obj_t * scr = lv_screen_active();\n\n  \/* Contesto *\/\n  lv_obj_set_style_bg_color(scr, COLOR_BG, 0);\n  lv_obj_set_style_bg_opa(scr, LV_OPA_COVER, 0);\n\n  \/* Titolo *\/\n  lv_obj_t * title = lv_label_create(scr);\n  lv_label_set_text(title, \"LVGL su Riverdi EVE\");\n  lv_obj_set_style_text_font(title, &lv_font_montserrat_44, 0);\n  lv_obj_set_style_text_color(title, COLOR_TEXT, 0);\n  lv_obj_align(title, LV_ALIGN_TOP_MID, 0, 48);\n\n  \/* Sottotitolo *\/\n  lv_obj_t * subtitle = lv_label_create(scr);\n  lv_label_set_text(subtitle, \"Test di compatibilit\u00e0 di base dei widget\");\n  lv_obj_set_style_text_font(subtitle, &lv_font_montserrat_24, 0);\n  lv_obj_set_style_text_color(subtitle, COLOR_TEXT, 0);\n  lv_obj_align(subtitle, LV_ALIGN_TOP_MID, 0, 100);\n\n  \/* --- ancore di layout --- *\/\n  int start_y = 170;\n  int col_left = 180;\n  int col_right = 640;\n\n  \/* Pulsante *\/\n  lv_obj_t * btn = lv_button_create(scr);\n  lv_obj_set_size(btn, 200, 60);\n  lv_obj_align(btn, LV_ALIGN_TOP_LEFT, col_left, start_y);\n  lv_obj_set_style_bg_color(btn, COLOR_ACCENT, 0);\n\n  lv_obj_t * btn_label = lv_label_create(btn);\n  lv_label_set_text(btn_label, \"Pulsante\");\n  lv_obj_center(btn_label);\n\n  \/* Slider *\/\n  lv_obj_t * slider = lv_slider_create(scr);\n  lv_obj_set_width(slider, 260);\n  lv_obj_align(slider, LV_ALIGN_TOP_LEFT, col_right, start_y + 15);\n  lv_slider_set_value(slider, 45, LV_ANIM_OFF);\n\n  lv_obj_set_style_bg_color(slider, COLOR_WIDGET, LV_PART_MAIN);\n  lv_obj_set_style_bg_color(slider, COLOR_ACCENT, LV_PART_INDICATOR);\n\n  \/* Interruttore *\/\n  lv_obj_t * sw = lv_switch_create(scr);\n  lv_obj_align(sw, LV_ALIGN_TOP_LEFT, col_left, start_y + 120);\n\n  lv_obj_t * sw_label = lv_label_create(scr);\n  lv_label_set_text(sw_label, \"Interruttore\");\n  lv_obj_set_style_text_color(sw_label, COLOR_TEXT, 0);\n  lv_obj_align_to(sw_label, sw, LV_ALIGN_OUT_RIGHT_MID, 20, 0);\n\n  \/* Casella di selezione *\/\n  lv_obj_t * cb = lv_checkbox_create(scr);\n  lv_checkbox_set_text(cb, \"Casella di selezione\");\n  lv_obj_set_style_text_color(cb, COLOR_TEXT, 0);\n  lv_obj_align(cb, LV_ALIGN_TOP_LEFT, col_right, start_y + 120);\n\n  \/* Bar *\/\n  lv_obj_t * bar = lv_bar_create(scr);\n  lv_obj_set_size(bar, 500, 20);\n  lv_obj_align(bar, LV_ALIGN_TOP_MID, 0, start_y + 220);\n  lv_bar_set_value(bar, 70, LV_ANIM_OFF);\n\n  lv_obj_set_style_bg_color(bar, COLOR_WIDGET, LV_PART_MAIN);\n  lv_obj_set_style_bg_color(bar, COLOR_ACCENT, LV_PART_INDICATOR);\n\n  lv_obj_t * bar_label = lv_label_create(scr);\n  lv_label_set_text(bar_label, \"Bar\");\n  lv_obj_set_style_text_color(bar_label, COLOR_TEXT, 0);\n  lv_obj_align_to(bar_label, bar, LV_ALIGN_OUT_TOP_MID, 0, -8);\n}\n\n<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Conclusione\"><\/span>Conclusione<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In questa guida ti abbiamo mostrato come eseguire LVGL su un display Riverdi EVE4 utilizzando la scheda di valutazione Riverdi come piattaforma host.<\/p>\n<p>Invece di eseguire il rendering di un framebuffer tradizionale sull&#8217;MCU, il sistema usa il motore grafico EVE per generare l&#8217;immagine finale. Il microcontrollore host invia i comandi di disegno tramite SPI, mentre la GPU BT817 crea la Display List ed esegue il rendering del frame sul display. <\/p>\n<p>Questa architettura permette di eseguire interfacce grafiche complesse su microcontrollori relativamente piccoli, mantenendo bassi sia l&#8217;utilizzo della memoria che il carico della CPU.<\/p>\n<p>Una volta che il driver della scheda grafica \u00e8 stato inizializzato correttamente, puoi usare LVGL per sviluppare applicazioni grafiche complete, proprio come con gli altri driver supportati.<\/p>\n<p>A questo punto, gli sviluppatori possono iniziare a creare le proprie interfacce utilizzando i widget, i layout e i meccanismi di gestione degli eventi di LVGL.<\/p>\n<p>Altri passaggi potrebbero includere:<\/p>\n<ul>\n<li>Integrazione di schermate personalizzate e logica applicativa<\/li>\n<li>Aggiungere immagini e font salvati in EVE RAM_G<\/li>\n<li>Ottimizzazione della comunicazione SPI per migliorare le prestazioni di rendering<\/li>\n<\/ul>\n<p>Per farlo, dai un&#8217;occhiata al <a href=\"https:\/\/lvgl.io\/docs\/open\/integration\/external_display_controllers\/eve\">sito della documentazione LVGL<\/a> e esplora il nostro repository <a href=\"https:\/\/github.com\/riverdi\">Riverdi su GitHub.<\/a><\/p>\n<p><iframe style=\"aspect-ratio: 16\/9;\" title=\"\" src=\"https:\/\/www.youtube.com\/embed\/UEyqY8DMToA\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\"><\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\"><\/span><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come eseguire LVGL sul display Riverdi EVE Eseguire un&#8217;interfaccia grafica moderna su un microcontrollore di solito significa avere a che fare con framebuffer, limiti di memoria e compromessi in termini di prestazioni. Con EVE del nostro partner Bridgetek, il rendering della grafica HMI ad alta qualit\u00e0, l\u2019audio e la gestione delle funzioni touch vengono trasferiti [&hellip;]<\/p>\n","protected":false},"author":3328,"featured_media":129397,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"categories":[4710],"tags":[],"class_list":["post-134004","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-visualizza-101"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Eseguire LVGL sul display di EVE - Riverdi<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Eseguire LVGL sul display di EVE - Riverdi\" \/>\n<meta property=\"og:description\" content=\"Come eseguire LVGL sul display Riverdi EVE Eseguire un&#8217;interfaccia grafica moderna su un microcontrollore di solito significa avere a che fare con framebuffer, limiti di memoria e compromessi in termini di prestazioni. Con EVE del nostro partner Bridgetek, il rendering della grafica HMI ad alta qualit\u00e0, l\u2019audio e la gestione delle funzioni touch vengono trasferiti [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve\" \/>\n<meta property=\"og:site_name\" content=\"Riverdi\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/riverdi.displays\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-05T10:00:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_COVER_LVGL-on-EVE.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Rafa\u0142 F\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@riverdidisplays\" \/>\n<meta name=\"twitter:site\" content=\"@riverdidisplays\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rafa\u0142 F\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve\"},\"author\":{\"name\":\"Rafa\u0142 F\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#\\\/schema\\\/person\\\/dac328f88dda36bae87261c19a2e30ef\"},\"headline\":\"Eseguire LVGL sul display di EVE\",\"datePublished\":\"2026-05-05T10:00:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve\"},\"wordCount\":1527,\"image\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/BLOG_COVER_LVGL-on-EVE.jpg\",\"articleSection\":[\"Visualizza 101\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve\",\"url\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve\",\"name\":\"Eseguire LVGL sul display di EVE - Riverdi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/BLOG_COVER_LVGL-on-EVE.jpg\",\"datePublished\":\"2026-05-05T10:00:51+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#\\\/schema\\\/person\\\/dac328f88dda36bae87261c19a2e30ef\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve#primaryimage\",\"url\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/BLOG_COVER_LVGL-on-EVE.jpg\",\"contentUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/BLOG_COVER_LVGL-on-EVE.jpg\",\"width\":1280,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it\\\/blog\\\/esecuzione-di-lvgl-sul-display-di-eve#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Front Page\",\"item\":\"https:\\\/\\\/riverdi.com\\\/it\\\/prima-pagina\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Eseguire LVGL sul display di EVE\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#website\",\"url\":\"https:\\\/\\\/riverdi.com\\\/it\",\"name\":\"Riverdi\",\"description\":\"Global TFT LCD Manufacturer\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/riverdi.com\\\/it?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/it#\\\/schema\\\/person\\\/dac328f88dda36bae87261c19a2e30ef\",\"name\":\"Rafa\u0142 F\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g\",\"caption\":\"Rafa\u0142 F\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Eseguire LVGL sul display di EVE - Riverdi","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve","og_locale":"it_IT","og_type":"article","og_title":"Eseguire LVGL sul display di EVE - Riverdi","og_description":"Come eseguire LVGL sul display Riverdi EVE Eseguire un&#8217;interfaccia grafica moderna su un microcontrollore di solito significa avere a che fare con framebuffer, limiti di memoria e compromessi in termini di prestazioni. Con EVE del nostro partner Bridgetek, il rendering della grafica HMI ad alta qualit\u00e0, l\u2019audio e la gestione delle funzioni touch vengono trasferiti [&hellip;]","og_url":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve","og_site_name":"Riverdi","article_publisher":"https:\/\/www.facebook.com\/riverdi.displays\/","article_published_time":"2026-05-05T10:00:51+00:00","og_image":[{"width":1280,"height":600,"url":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_COVER_LVGL-on-EVE.jpg","type":"image\/jpeg"}],"author":"Rafa\u0142 F","twitter_card":"summary_large_image","twitter_creator":"@riverdidisplays","twitter_site":"@riverdidisplays","twitter_misc":{"Scritto da":"Rafa\u0142 F","Tempo di lettura stimato":"10 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve#article","isPartOf":{"@id":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve"},"author":{"name":"Rafa\u0142 F","@id":"https:\/\/riverdi.com\/it#\/schema\/person\/dac328f88dda36bae87261c19a2e30ef"},"headline":"Eseguire LVGL sul display di EVE","datePublished":"2026-05-05T10:00:51+00:00","mainEntityOfPage":{"@id":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve"},"wordCount":1527,"image":{"@id":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve#primaryimage"},"thumbnailUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_COVER_LVGL-on-EVE.jpg","articleSection":["Visualizza 101"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve","url":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve","name":"Eseguire LVGL sul display di EVE - Riverdi","isPartOf":{"@id":"https:\/\/riverdi.com\/it#website"},"primaryImageOfPage":{"@id":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve#primaryimage"},"image":{"@id":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve#primaryimage"},"thumbnailUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_COVER_LVGL-on-EVE.jpg","datePublished":"2026-05-05T10:00:51+00:00","author":{"@id":"https:\/\/riverdi.com\/it#\/schema\/person\/dac328f88dda36bae87261c19a2e30ef"},"breadcrumb":{"@id":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve#primaryimage","url":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_COVER_LVGL-on-EVE.jpg","contentUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/05\/BLOG_COVER_LVGL-on-EVE.jpg","width":1280,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/riverdi.com\/it\/blog\/esecuzione-di-lvgl-sul-display-di-eve#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Front Page","item":"https:\/\/riverdi.com\/it\/prima-pagina"},{"@type":"ListItem","position":2,"name":"Eseguire LVGL sul display di EVE"}]},{"@type":"WebSite","@id":"https:\/\/riverdi.com\/it#website","url":"https:\/\/riverdi.com\/it","name":"Riverdi","description":"Global TFT LCD Manufacturer","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/riverdi.com\/it?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/riverdi.com\/it#\/schema\/person\/dac328f88dda36bae87261c19a2e30ef","name":"Rafa\u0142 F","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g","caption":"Rafa\u0142 F"}}]}},"_links":{"self":[{"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/posts\/134004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/users\/3328"}],"replies":[{"embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/comments?post=134004"}],"version-history":[{"count":0,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/posts\/134004\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/media\/129397"}],"wp:attachment":[{"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/media?parent=134004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/categories?post=134004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/riverdi.com\/it\/wp-json\/wp\/v2\/tags?post=134004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}