Научная статья на тему 'ОГЛЯД ГРАФІЧНИХ БІБЛІОТЕК ДЛЯ ВБУДОВАНИХ ПЛАТФОРМ'

ОГЛЯД ГРАФІЧНИХ БІБЛІОТЕК ДЛЯ ВБУДОВАНИХ ПЛАТФОРМ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
0
0
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
графічна бібліотека / вбудована система / інтерфейси обміну даними / способи організації обміну / процесорний вендор / дисплейні модулі / graphical library / embedded system / data transfer interface / data transferring organization / processors vendor / display modules

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Філіппенко Інна Вікторівна, Корнієнко Валентин Русланович, Кулак Георгій Костянтинович

Наводиться огляд існуючих на поточний момент графічних бібліотек для вбудованих систем для створення панелей HMI та приладів носимої електроніки. Розглядаються основні етапи, які необхідні для адаптації однієї з існуючих бібліотек на процесор Nordic. Наведено вимоги до ресурсів системи (ОЗП, ПЗП, різновидам інтерфейсів, що наявні на конкретній платформі) для проектування вбудованих систем з використанням графічних пристроїв. Вивчаються особливості SDK для одного з процесорних вендорів та рішень, що необхідно реалізувати для запуску бібліотеки.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «ОГЛЯД ГРАФІЧНИХ БІБЛІОТЕК ДЛЯ ВБУДОВАНИХ ПЛАТФОРМ»

УДК 681.326

ОГЛЯД ГРАФ1ЧНИХ Б1БЛ1ОТЕК ДЛЯ ВБУДОВАНИХ ПЛАТФОРМ

ФШШПЕНКО 1.В., КОРШеНКО В.Р., КУЛАК Г.К._

Наводиться огляд юнуючих на поточний момент графiчних бiблiотек для вбудованих систем для ство-рення панелей HMI та прилащв носимо1 електронiки. Розглядаються основнi етапи, як1 необхiднi для адап-тацiï однieï з юнуючих бiблiотек на процесор Nordic. Наведено вимоги до ресурав системи (ОЗП, ПЗП, рiзновидaм iнтерфейсiв, що наявш на конкретнiй плaтформi) для проектування вбудованих систем з використанням грaфiчних пристроïв. Вивчаються особливостi SDK для одного з процесорних вендорiв та ршень, що необхiдно реaлiзувaти для запуску бiблiотеки.

Ключовi слова: грaфiчнa бiблiотекa, вбудована система, штерфейси обмiну даними, способи оргашзацп обм^, процесорний вендор, дисплейнi модулi. Key words: graphical library, embedded system, data transfer interface, data transferring organization, processors vendor, display modules.

1. Вступ

Одним з еташв проектування вбудовано' системи е створення графiчного штерфейсу. Особливо важливим це е для област проектування HMI-пристро'в (Human-Machine Interface). З розповсюдженням на ринку 32-бiтних проце-сорiв на базi ядра ARM зростае тенденщя до до-давання графiчного iнтерфейсу та створення йо-го близьким за виглядом до вже юнуючих стандарта дизайну Material.

Змшюються тенденцп в областi шдбору цшьово-го мiкроконтролера, який буде використано у пристро'. Поступово до периферiï у процесорних вендорiв, таких як STMicroelectronics, Nordic Semiconductor, Texas Instruments, Infineon, дода-ються просунув модулi роботи з пам'яттю, графiчнi прискорювачi.

З метою забезпечення тривало' автономноï роботи системи (зазвичай це стосуеться пристро'в носимо'' електрошки) використовують просунутi режими енергоспоживання та його профшюван-ня. У випадку наявностi графiчноï складово' у системi потрiбно забезпечити коректнiсть ш-формацп, що доступна на диспле' тд час роботи у режимi зниженого енергоспоживання. Беручи до уваги постшне вдосконалення та iснуючий рiзновид дисплейних iнтерфейсiв, необхiдно враховувати можливостi бiблiотеки з боку виведення зображення, тому що iнодi по-трiбна яюсть зображення не може бути досягнута через особливостi конкретного iнтерфейсу.

2. Iснуючi iнтерфейси o6MiHy з дисплейними модулями

За типом обмшу мiж контролером та периферш-ним дисплейним модулем штерфейси подшяють

на послщовш та паралельнi. У випадку штер-фейсiв з високою швидкiстю слщ вiдмiтити па-ралельнi FSMC та LTDC [1]. Розглянемо деяю з них.

SPI (Serial Peripheral Interface) - один з найвщомших i широко використовуваних на даний час штерфейшв зв'язку мiж рiзними мшро-схемами в електронних пристроях. Його основ-ними перевагами е простота, невелика кшьюсть сигнальних лiнiй (у багатьох випадках достатньо лише трьох лшш), достатня простота реалiзацiï друковано' плати при розробцi пристрою. Ключовою вiдмiннiстю SPI вiд паралельних ш-терфейсiв е те, що вш мае всього одну лiнiю пе-редачi даних, та швидкiсть передачi часто не пе-ревищуе 20 Мбгг/с, що значно обмежуе пропуск-ну здатнiсть, а отже i максимальний розмiр керо-ваного дисплея. Це робить практично неможли-вим створення складних динамiчних зображень. Крiм того, управлiння дисплеем вiдбуваеться за допомогою постiйного пересилання команд, а це змушуе ядро контролера виконувати безлiч зай-вих задач, що тдвищуе його завантаження i робота з зображенням виявляеться неефективною. У процесорiв вiд вендора Espressif (сiмейство ESP32) наразi доступнi процесори з модулями SPI, що працюють на частотi до 60 МГц. У випадку старших шмейств STM32H7 доступна робота з шинами SPI на швидкосп до 120МГц. Слщ зауважити, що дисплейнi контролери зазвичай тдтримують роботу з шиною SPI на частой не вище 50МГц.

FSMC (Flexible Static Memory Controller) - контролер зовшшньо' пам'яп, який дозволяе взаемодiяти з TFT-дисплеями, забезпеченими iнтерфейсами Motorola 6800 i Intel 8080. При певних умовах FSMC може використовуватися для роботи з TFT-дисплеями з RGB-штерфейсом. LTDC (LCD-TFT Display Controller) -спецiалiзований TFT-контролер, який дозволяе працювати з TFT-дисплеями з RGB-штерфейсом. Послщовний штерфейс, що набувае популяр-ност у процесорiв старших сiмейств з ядром ARM, - MIPI DSI (Display Serial Interface специфшащя Mobile Industry Processor Interface), який е спецiалiзованим штерфейсом для роботи з TFT-дисплеями, з MIPI-DSI [2]. Ц iнтерфейси доступш лише на останнiх шмей-ствах процесорiв, таких як STM32L4, STM32H7, STM32F7. На бiльш розповсюджених моделях зазвичай е у наявносп штерфейси SPI та I2C, в окремих випадках - штерфейс LTDC. У бшьшосп випадюв внутршньо' пам'ятi мшро-контролера не вистачае для збер^ання графiчних зображень i розмiщення екранно' пам'ятi. З цiеï причини дуже часто потрiбна зовнiшня Flash-пам'ять, або ОЗП. Для шдключення зовшшньо'

Flash-пам'ят доцшьно використовувати штер-фейс QuadSPI, який присутнш практично у Bcix ocTaHHix лiнiйках STM32. Для тдключення до STM32 додаткового ОЗП слщ використовувати контролер зовнiшньоï пам'ятi FSMC / FMC. Го-ловна вщмшшсть мiж FSMC i FMC полягае в тому, що FMC здатний працювати з SDRAM. До складу багатьох мiкроконтролерiв STM32 вхо-дять i iншi допомiжнi блоки, створеш для оп-тимiзацiï роботи з графшою. Вони не е обов'яз-ковими для створення графiчних додатюв, але ïx використання значно скорочуе навантаження на процесорне ядро. Це таю блоки, як: Chrom-ART - графiчний прискорювач. Являе собою особливий контролер прямого доступу до пам'ятi, створений спещально для оптимiзацiï процесiв з пересилання великих масивiв графiчниx даних з можливютю ïx потоковоï обробки;

Chrom-GRC - блок оптимiзацiï збер^ання графiчниx даних, що дозволяе економити до 20% пам'ят при робот з дисплеями округло1' форми; JPEG-кодек - спецiалiзований прискорювач, необxiдний для JPEG-кодування i декодування графiчниx зображень.

3. Огляд iснуючих пропрiетарних бiблiотек з закритим кодом

1снуе декшька рiзновидiв графiчниx бiблiотек для вбудованих систем, яю розрiзняються за системою лщензування.

Ринок пропрiетарниx бiблiотек е досить розви-неним за рахунок кросс-платформенних рiшень у цш областi. На даний момент користуеться високою популярнiстю розробка Qt for MCU, що дозволяе використовувати майже вс потужност Qt Framework для програмування пiд десктопнi платформи для запуску додатюв на базi вбудова-них платформ.

Можливост Qt Framework для мiкроконтролерiв е такi [3]:

- тдтримка Qt Quick для швидкого прото-типування графiчниx iнтерфейсiв з використан-ням теxнологiï QML та мов програмування С/С++ для написання бiзнес-логiки додатку;

- тдтримка Qt Design Studio для формуван-ня графiчного штерфейсу та його перегляду без використання цшьово1' платформи;

- тдтримка Qt Creator - штегрованого сере-довища розробки кросс-платформенних додаткiв, розробки додатюв для платформ Anroid та iOS. Додатково е пiдтримка технологи WebAssembly для створення додаткiв для Web (для додатюв зi спшьною кодовою базою).

На сайтi проекту доступт прошивки з демон-страцшним програмним забезпеченням та де-монстраци графiки на базi Qt для серш проце-сорiв з вбудованими графiчними прискорювача-

ми, такими як PxP вiд виробника NXP для сери i.MX RT, Chrom-Art Accelerator на старших ciMe^TBax процесорiв STM32 та RGL на проце-сорах Renesas RH580. Бiблiотека дозволяе використовувати таку зв'язку мов програмування: прототипування штерфейсу на базi QML + JS та розробка бiзнес-логiки додатку з використання мов програмування С/С++.

EmbeddedWizard - розробка компани Tara Systems, спрямована на спрощення створення графiчного iнтерфейсу. Спорiднюе у ra6i використання внутрiшнього середовища розробки Embedded Wizard Studio [4]. Особливють середовища - тдтримка WYSIWIG розробки штерфей-су у поеднанш з генератором коду для цшьово! платформи. Використання цього шдходу дозволяе швидко розробляти графiчний iнтерфейс без необхiдностi огляду на апаратно-залежш компо-ненти.

Архiтектура бiблiотеки заснована на роздiлi платформо-залежних компонента та проваджен-ня генераторiв коду тд цiльову платформу. Ти-пове використання бiблiотеки полягае у створен-нi прототипу у Embedded Wizard Studio, конвер-таци ресурсiв та генераци коду пiд конкретну платформу (рис. 1).

До недолшв запропоновано! бiблiотеки слiд вщ-нести недостаттсть документаци щодо створення апаратно-залежних компонентiв та !х використання [5].

Основна мова програмування - Chora, яка була побудована за мотивами С++ та Java для створення максимально подiбного синтаксису. Chora тдтримуе концепщю GC (Garbage Collector) для менеджменту ресуршв системи та об'екпв в нш. Наявна тдтримка моделi сигналiв-слотiв для взаемоди об'ектiв графiчного iнтерфейсу та бiзнес-логiки.

о,

Prototyper

И 1

Resource Converters Code Generator

Graphics Engine

ВО SQQ

Generated code . Graphics Engine

Runtime Environment

Рис. 1. Загальна iнфраструктура бiблiотеки Embedded Wizard

EasyGui - розробка компани IBIS Solutions (рис. 2). Проект не мае розвитку з 2015 року. На по-точний момент мае базову тдтримку вщжетав, тдтримку як кольорових, так i монохромних диспле!в [6]. Розробка штерфейсу проходить з

використанням програми easyGUI PC Application, що надае доступ до таких компонента:

easyGui data files - файли шрифта, зображень, згенерованого графiчного штерфейсу. При кожнiй змiнi будь-чого у програмi-дизайнерi цi файли мають бути перегенерованi; easyGui library - безпосередньо реалiзацiя бiблiотеки;

easyGui display driver - платформо-залежний драйвер дисплею, що буде використаний у проекту easyGui мае у комплект поставки набiр драйвер!в. що можуть бути використаш.

Compiler Linker

■g

Finished application

-a

Рис. 2. Генерац1я проекту при використанш б1блютеки easyGUI TouchGFX на даний час е власнiстю KOMnaHiï STMicroelectronics та пропонуе Ha6ip рiшень в област швидкого прототипування графiчного iнтерфейсу. Проект мае можливють швидко ште-груватися у iснуючi системи розробки на базi STM32. Iнтеграцiя вiдбуваеться як модуль до пакету STM32Cube. TouchGFX поставляеться як модуль X-CUBE-TOUCHGFX. Проект просу-ваеться як рiшення для створення панелей HMI. Серед особливостей проекту - просунуте середо-вище прототипування, а саме: середовище ро-зробника TouchGFX Designer з можливютю швидкого завантаження отриманого iнтерфейсу на цшьову платформу [7].

Бiблiотека пiдтримуе наступнi роботи з дисплей-ними буферами:

SingleBuffer - використовуеться буфер розмiром з цiльовий дисплей. Для оптишзацн рисування може бути використаний функщонал, що дозво-ляе визначити ту частину областi буфера, яка вщрисована на дисплей, та помiтити ïï як вiльну; Double Buffer - подвшна буферизацiя; Partial buffer - дозволяе використовувати необ-хiдну кшьюсть блокiв, що задаються користува-чем. Для iнiцiалiзацiï необхiдно задати кшьюсть блокiв, що використовуються, та розмiр одного блока. Приклад наведено у Лютингу 1. Приклади використання бiблiотеки у рiзних режимах передачi зображення на дисплей наведет у [8], а саме приклади передачi даних з використанням штерфейшв MIPI DSI для плати на базi STM32L4R9 та SPI для плати налагодження на базi STM32G081.

Використання бiблiотеки можливо як з на-явнiстю операцiйноi системи реального часу, так i без ii використання. Бiблiотека потребуе перюдичного виклику функцii void MX_TouchGFX_Process(void); для обробки циклу повщомлень.

Лiстинг 1

Приклад встановлення CTpaTerii' використання дисплейного буфера кадав у грaфiчнiй 6i6moTeKi

Touch GFX

/2 або бтше блокiв розмiром 10*390 пiкселiв ManyBlockAllocator<10*390*3, 2, 3> frameBufferAllocator;

void touchgfx_init() {

HAL& hal = touchgfx_generic_init(dma, display, tc, GUI_DISPLAY_WIDTH,

GUI_DISPLAY_HEIGHT, 0, 0, 0); hal.setFrameBufferStartAddress((uint16_t*)0, GUI_DISPLAY_BPP, false, false); hal. setFrameBufferAllocator(&frameBufferAllocator);

hal.setFrameRefreshStrategy(HAL::REFRESH_STRATE

GY_PARTIAL_FRAMEBUFFER); }

4. Огляд iснуючих бiблiотек з вщкритим кодом

EmWin е розробкою компанп Segger, яка на даний час е одним з найбшьших виробниюв облад-нання для налагодження та проектування при-строiв на базi процесорiв архiтектури ARM. Бiблiотека е частково платною - за комерцшною лiцензiею надаеться доступ до додаткових мо-дулiв. В концепщю бiблiотеки покладена iдея, схожа на мехашзм роботи вiконноi пiдсистеми операцiйноi системи Windows. У деяких випадках схожють е навiть у типах повщомлень, структурi та мехашзмах обробки. В основу проектування покладено базовий прим^ив - вiкно. У додаткових програмних модулях, що доступш за комерцiйною лiцензiею, слщ вiдмiтити компоненти emVNC клiент, emWinSPY та emWinView [9] (рис. 3, 4). Компонент emVNC дозволяе розташувати на цiльовому пристро1' клiента Virtual Network Computing, що дозволяе виконувати дистанцшне керування пристроем, передачу файлiв та ди-станцiйне налагодження пристрою. EmWinSpy дозволяе виконувати профiлювання споживання оперативно!' пам'ятi на цiльовому пристро1', спостерiгати за контентом, що вщобра-жуеться на користувацькому дисплей та робити скршшоти з цiльового пристрою. Можливо також виконувати логування даних користувацького введення, наприклад, з клавiатури, тачскрiна або пiдтримку MultiTouch введення.

еемутт

PC application

3

easyGUI data Tiles

easyGUI library

easyGUI display driver

User С source code

Рис. 3. Середовище налагодження emWinSpy

Компонент emWinView дозволяе переглядати контент дисплею в окремому процес при вико-ристаннi симулятора для десктопних платформ [10]. Зазвичай при паузi потоку, що знахо-диться у режимi налагодження, виконуеться зупинка вшх потокiв, якi належать до запущено-го процесу. EmWinView вирiшуе цю проблему шляхом переносу вiдображення контенту дисплею в окремий процес. Утилга може бути запущена як до, так i шд час налагодження.

необхщно реалiзувати функщю, що буде викли-кана у lv_mdev_drv_t.read_cb, та встановити тип пристрою - джерело подш. Всього у бiблiотецi на момент верси 6.0 юнуе чотири джерела подiй, а саме:

LV_INDEV_TYPE_POINTER - контролер TouchScreen або мишi;

LV_INDEV_TYPE_KEYPAD - клаиатура або

кейпад;

LV_INDEV_TYPE_ENCODER - енкодер з оп-цiональною кнопкою;

LV_INDEV_TYPE_BUTTON - зовнiшня кори-стувацька кнопка, що може бути прив'язана до конкретного вщжету.

Приклад реатзацл роботи з енкодером наведено у Лютингу 2.

Лютинг 2

Приклад обробки енкодера у LittlevGL

indev_drv.type = LV_INDEV_TYPE_ENCODER; indev_drv.read_cb = my_input_read;

bool encoder_read(lv_indev_drv_t * drv, lv_indev_data_t*data){ data->enc_diff = enc_get_new_moves();

0 emWinView V5 48 УЕН

file yiew Options tfindow Help

И Vis.Layer «0.480*272. 32Ьрр © 0.0 oca®

emWin

WM.MOUSEMOVE («=115, y=89. BGR=FF FF FF) Single display mode

Рис. 4. Утилгга emWinView

LittlevGL - бiблiотека з вiдкритим програмним кодом, що зараз набувае популярност завдяки програмним ршенням та особливостям. Вона е актуальною для малих вбудованих систем [11]. Як i TouchGFX, бiблiотека тдтримуе три стра-тегiï роботи з вщеобуферами для виводу шфор-маци на дисплей. Головними особливостями бiблiотеки е гнучкiсть конфiгурування та мож-ливiсть роботи на декiлькоx дисплеях одночасно, що може бути необхщним для iмплементацiï TileView на вбудованш платформi. Опцiï конфiгурування у бiблiотецi дозволяють гнучко сконфiгурувати необxiдний функщонал, вiдключаючи непотрiбнi опцiï для зображення та вiджети, що не будуть використаш у xодi роботи з бiблiотекою. Бiблiотека пiдтримуе можливiсть змшювати зовнiшнiй вигляд компонентiв шляхом використання вбудованих тем або створення користувацьких. G можливють iнтеграцiï з Touch-Screen контролерами, енкодерами та кори-стувацькими кнопками. 1нтегращя проходить шляком реалiзацiï iнтерфейса lv_indev_drv_t. Наприклад, для iнiцiалiзацiï пiдтримки енкодера

if(enc_pressed()) data->state = LV_INDEV_STATE_PR; else data->state = LV_INDEV_STATE_REL;

return false; /*No buffering now so no more data read*/

}

Бiблiотека тдтримуе роботу з задачами, а саме можливють перюдичного або однокразового виклику.

5. Фрагменти адаптацп бiблiотеки Little VGL для плати на 6a3i процесора NRF52832

Як приклад реалiзащl адаптаци вщкрито! бiблiотеки LVGL було розроблено стенд на базi модуля E73NRF52832 з популярним дисплеем на базi контролера Sitronix. Для реалiзацil дисплейного драйвера було обрано мову програмування С++17, з боку SDK вщ Nordic було обрано використання верси 15.3. На даний момент актуальною е вершя SDK-16. З вимог до бiблiотеки LVGL необхщно виконати таю ди. Спочатку обрати тип буфера, що буде використаний, далi провести iнiцiалiзацiю драйвера дисплею та призначити функцiю, що ре-алiзуе заповнення областi дисплею зазначеного розмiру зазначеним кольором. Опцiонально ре-алiзувати заповнення за допомогою GPU, режи-ми змiшування кольорiв на GPU метод округ-лення розмiрiв областi, що потребуе оновлення

(для диспле1в з особливими режимами роботи з зонами рисування). Опщонально реалiзувати метод виведення пiкселя на дисплей у задаш коор-динати. Для профшювання виведення на дисплей додати monitor-метод, у якому виконувати виведення часу оновлення зони на диспле! та кшь-юсть пiкселiв, що була оновлена. З боку драйвера для дисплею потрiбно реалiзува-ти вiдправлення команд управлшня та даних на дисплей. У випадку вiдправлення команди по-трiбно встановлювати порт керування D/C (Data/Command) у необхщний стан залежно вщ типу даних, що будуть передаш [12]. Для розвантаження процесора та досягнення бшьшо! ефективностi при передачi даних слiд використати модуль EasyDMA у процесора Nordic.

EasyDMA - це простий у використанш модуль прямого доступу до пам'ян, який реалiзуe взаемозв'язок мiж периферiйними пристроями та оперативною пам'яттю даних. EasyDMA е май-стром шини AHB, подiбно ядру контролера вiн пщключений до багатошарового з'еднання AHB. Однак при цьому EasyDMA не може отримати доступ до Flash [13].

Перифершний пристрш може надати декiлька каналiв за допомогою EasyDMA одночасно, наприклад, при забезпеченш видiленого каналу для зчитування даних з ОЗП в перифершний пристрш одночасно, коли другий канал призна-чений для запису даних в ОЗП з перифери. Ця концепщя прошюстрована на рис. 5.

AMD MumMyer

HAU

Рис. 5. Структурна схема EasyDMA SDK-сигнатура передачi даних шиною SPI за допомогою EasyDMA мае вигляд:

nrfx_err_t nrfx_spim_xfer(nrfx_spim_t const * const p_instance, nrfx_spim_xfer_desc_t const * p_xfer_desc, uint32_t flags);

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

де структура дескриптора передачi виглядае так:

typedef struct

{

uint8_t const * p_tx_buffer; ///< Pointer to TX buffer. size_t tx_length; ///< TX buffer length. uint8_t * p_rx_buffer; ///< Pointer to RX buffer. size_t rx_length; ///< RX buffer length. } nrfx_spim_xfer_desc_t;

Залежно вiд структури дескриптора, розмiр блока передачi даних вщповщае типу size_t, що на 32 платформi дорiвнюе 2А32 елементам. У ходi роботи з логiчним аналiзатором було визна-чено, що за одну транзакщю на шинi передача бшьше, нiж 255 байт, неможлива. З використан-ням тестового прикладу передачi даних була ви-конана передача транзакцн розмiром 255 байпв. Запис з логiчного аналiзатора наведено на рис. 6, тсля чого розмiр транзакцiï було розширено до 257 байпв.

Отриманий запис передачi наведено на рис. 7. З цього можна зробити висновок про необхщшсть реалiзацiï транзакцiйноï системи передачi даних за шиною SPI [14]. Для цього можна використо-вувати або SPI transaction manager, що входить у NordicSDK, або власну реалiзацiю на базi ре-алiзацiï TrasnsactionItem.

Рис. 6. Запис трафжа з шини SPI при виконанш

транзакцп

мшиишишишм

В' и

ЯЯЯВЯЯЯВ

Рис. 7. Запис нсповно1 передач! буфера при нев1рному використанш ЫогсНсВЭК.

Для портування б1блютеки необхщно з драйвера дисплейного модуля надати метод йИИеСа^к, що заповнюе прямокутник заданого розмiру за-даним буфером кольору. Пюля повно! передачi буфера потрiбно викликати lv_disp_flush_ready. Як приклад було реалiзовано передачу буфера фрагментами по 255 байпв (щоб забезпечити повну транзакщю) та неповним буфером. Якщо розмiр не вкладаеться у 255 байпв, для цього у компонент драйвера розроблена лопка на базi компонента TransactionItem [15]. При цьому необхщно врахувати розмiр буфера у байтах, що буде переданий. Необхщно також ро-зрахувати кшькють повних транзакцiй та кшь-кють неповних блокiв. У Лiстингу 3 наведено фрагмент реатазаци передачi повного блока да-них на дисплей.

REAOÉR Е»|ОМА

Речхжа)

Can

WRITER

Лютинг 3

Фрагмент реалтци повно! передачi даних на дисплей if( FullDmaTransactionsCount > 0 )

{

Interface::Spi::Transaction fullTransaction{}; fullTransactionbeforeTransaction =

[ this ]

{

setDcPin();

};

fullTransactiontransactionAction =

[this, _colorToFill]

{

std: :uint32_t addrOffset = Interface::Spi::SpiBus::DmaBufferSize

* getTransitionOffset();

m_pBusPtr->sendChunk(

reinterpret_cast<const std::uint8_t*>( _colorToFill ) + addrOffset

, Interface ::Spi::SpiBus ::DmaBufferSize

);

};

if( FullDmaTransactionsCount > 1 ) fullTransactionrepeatsCount =

FullDmaTransactionsCount - 1;

if( ChunkedTransactionsCount == 0 ) fullTransactionafterTransaction =

[this]

{

onRectArreaFilled. emit(); resetDcPin();

};

m_pBusPtr->addTransaction( std: :move(

fullTransaction ) ); }

Результат запуску бiблiотеки LittlevGL наведено на рис.8:

Рис. 8. Спроектований графiчний iнтерфейс з використанням бiблiотеки LittlevGL

6. Висновки

Розглянуто бiблiотеки, якi використовуються для роботи з графiчними пристроями. Розглянуто бiблiотеку TouchGFX, яка е зручною у викори-станнi в областi Wearable devices. Показано, що iнструменти на базi Qt Framework використовуються для побудови ршень в област Automotive solutions. LittlevGL project е альтернативою ко-мерцiйним компонентам, що надае доступний та необхщний функщонал пiд лiцензiею розповсюдження MIT. Iншi розглянутi бiблiотеки (emWin, easyGUI, Embedded Wizard) е активними у використанш HMI та прототипуваннi вбудова-них пристро1в.

Лiтература: 1. Компел. Розробляемо пристрiй з графiкою на STM32. Основнi можливостi периферп [Електронний ресурс] / Компел - Режим доступу: https://www.compel.ru/lib/90626.. 2018. 2. Компел. STM32 + сучасний TFT-дисплей: варiанти на будь-який смак [Електронний ресурс] / Компел - Режим доступу: https://www.compel.ru/lib/88474. 3. Holländer P. Announcing Qt for MCUs - A comprehensive toolkit [Електронний ресурс] / Petteri Holländer - Режим доступу: https://www.qt.io/blog/2019/08/21/announcing-qt-mcus. 4. Embedded Wizard. Simplify Your GUI Devel-opmentSimplify Your GUI Development [Електронний ресурс] / Embedded Wizard - Режим доступу до ресурсу: https://www.embedded-wizard.de/. 5. GitHub. Microgui Description [Електронний ресурс] / GitHub -Режим доступу: https://github.com/ryankurte/micro-gui. 6. ЕasyGUI. easyGUI information downloads [Електронний ресурс] / easyGUI - Режим доступу: https://www.easygui.com/easygui-downloads. 7.

TouchGFX. The TouchGFX Abstraction Layer (AL) [Електронний ресурс] / TouchGFX - Режим доступу: https://support.touchgfx.com/docs/development/touchgfx-hal-development/touchgfx-al-development-Introduction. 8. TouchGFX. Lowering Memory Usage with Partial Framebuffer [Електронний ресурс] / TouchGFX -: https://support.touchgfx.com/docs/development/ui-development/scenarios/lowering-memory-usage-with-partial-framebuffer/. 9. SEGGER. emWin - The professional GUI for embedded devices enables the creation of highly efficient and high quality graphical [Електронний ресурс] / SEGGER - Режим доступу: https://www.segger.com/products/user-interface/emwin/. 10. ЕmWinView [Електронний ресурс] // SEGGER. 2019. https://www.segger. com/products/user-

interface/emwin/tools/tools-overview/. 11. LittlevGL. Open-source Embedded GUI Library [Електронний ресурс] / LittlevGL - https://littlevgl.com/. 12. Джозеф Ю. Ядро Cortex-M3 компанп ARM. Повне керiвництво / Ю. Джозеф., 2012. 552 с. 13. Nordic Semiconductor Infocenter. EasyDMA [Електронний ресурс] / Nordic Semiconductor Infocenter - Режим доступу до ресурсу: https://infocenter.nordicsemi.com/index.jsp?topic=%2Fco m.nordic.infocenter.nrf52832.ps.v1.1%2Feasydma.html. 14. Kormanyos C. Real-Time C++: Efficient Object-Oriented and Template Microcontroller Programming / Christopher Kormanyos., 2018. 426 с. 15. Arobenko A. Practical Guide to Bare Metal C++ [Електронний

ресурс] / Alexander Arobenko - Режим доступу: https://arobenko.gitbooks.io/bare_metal_cpp/content/. Transliterated bibliography:

1. Kompel. Rozrobljaemo pristrij z grafikoju na STM32. Osnovni mozhlivosti periferiï [Elektronnij resurs] / Kompel Rezhim dostupu do resursu: https://www.compel.ru/lib/90626.. 2018

2. Kompel. STM32 + suchasnij TFT-displej: varianti na bud'-jakij smak [Elektronnij resurs] / Kompel - Rezhim dostupu do resursu: https://www.compel.ru/lib/88474.

3. Holländer P. Announcing Qt for MCUs - A comprehensive toolkit [Elektronnij resurs] / Petteri Holländer -Rezhim dostupu do resursu: https://www.qt.io/blog/2019/08/21/announcing-qt-mcus.

4. Embedded Wizard. Simplify Your GUI Develop-mentSimplify Your GUI Development [Elektronnij resurs] / Embedded Wizard - Rezhim dostupu do resursu: https://www.embedded-wizard.de/.

5. GitHub. Microgui Description [Elektronnij resurs] / GitHub - Rezhim dostupu do resursu: https://github. com/ryankurte/micro-gui.

6. EasyGUI. easyGUI information downloads [Elektronnij resurs] / easyGUI - Rezhim dostupu do resursu: https://www.easygui.com/easygui-downloads.

7. TouchGFX. The TouchGFX Abstraction Layer (AL) [Elektronnij resurs] / TouchGFX - Rezhim dostupu do resursu:

https://support.touchgfx.com/docs/development/touchgfx-hal-development/touchgfx-al-development-Introduction.

8. TouchGFX. Lowering Memory Usage with Partial Framebuffer [Elektronnij resurs] / TouchGFX -: https ://support.touchgfx. com/docs/development/ui-development/scenarios/lowering-memory-usage-with-partial-framebuffer/.

9. SEGGER. emWin - The professional GUI for embedded devices enables the creation of highly efficient and high quality graphical [Elektronnij resurs] / SEGGER -https://www.segger.com/products/user-interface/emwin/. 10 emWinView [Elektronnij resurs] // SEGGER. 2019. https://www.segger.com/products/user-interface/emwin/tools/tools-overview/.

11. LittlevGL. Open-source Embedded GUI Library [Elektronnij resurs] / LittlevGL - https://littlevgl.com/.

12. Dzhozef Ju. Jadro Cortex-M3 kompanii' ARM. Povne kerivnictvo / Ju. Dzhozef., 2012. 552 s.

13. Nordic Semiconductor Infocenter. EasyDMA [Elektronnij resurs] / Nordic Semiconductor Infocenter -https://infocenter.nordicsemi.com/index.jsp?topic=%2Fco m.nordic.infocenter.nrf52832.ps.v1.1%2Feasydma.html. 14 Kormanyos C. Real-Time C++: Efficient Object-Oriented and Template Microcontroller Programming / Christopher Kormanyos. 2018. 426 s.

15. Arobenko A. Practical Guide to Bare Metal C++ [Elektronnij resurs] / Alexander Arobenko -https://arobenko.gitbooks.io/bare_metal_cpp/content/.

Поступила в редколлегию 29.11.2019 Рецензент: д-р техн. наук, проф. Кривуля Г.Ф. Фшшпенко 1нна BiKTopiBHa, канд. техн. наук, доцент кафедри АПОТ ХНУРЕ. Науковi штереси: вбудоваш системи, цифровi фшьтри. Адреса: Украша, 61166, Харшв, пр. Науки, 14, тел. 702-13-26. Коршенко Валентин Русланович, студент ХНУРЕ. Науковi штереси: HMI-системи, вбудоваш системи, Embedded C++. Адреса: Украша, 61166, Харшв, пр. Науки, 14, тел. 702-13-26, e-mail: valentyn.korniienko1@nure.ua.

Кулак Георгш Костянтинович, студент ХНУРЕ. Науковi штереси: вбудоваш системи, цифровi автомата. Адреса: Украша, 61166, Харшв, пр. Науки, 14, тел. 702-13-26, e-mail heorhii.kulak@nure.ua. Filippenko Inna Victorovna, PhD, Associate Professor, Design Automation Department, NURE. Scientific interests: embedded systems, digital filters. Address: Ukraine, 61166, Kharkiv, Nauky Ave. 14, tel. 702-13-26. Korniienko Valentyn Ruslanovich, student, NURE. Scientific interests: HMI systems, embedded systems, Embedded C++. Address: Ukraine, 61166, Kharkiv, Nauky Ave. 14, tel. 702-13-26, e-mail: valentyn.korniienko1@nure.ua.

Kulak Georgiy Konstantinovich, student, NURE. Scientific interests: HMI systems, embedded systems, finite state machine. Address: Ukraine, 61166, Kharkiv, Nauky Ave. 14, tel. 702-13-26, e-mail: heorhii.kulak@nure.ua.

i Надоели баннеры? Вы всегда можете отключить рекламу.