Microchip SAMA5D27上運行LVGL V7.02
LVGL簡介
LVGL - 輕量級通用圖形庫.
- 強大的構件-按鈕、圖表、列表、滑塊、圖像等。
- 先進的圖形-支持動畫,抗鋸齒,不透明度,平滑滾動。
- 同時支持各種輸入設備,如觸摸屏、鼠標、鍵盤、編碼器、按鈕等。
- 同時使用多種顯示設備,即單色和彩色顯示器。
- 支持UTF-8編碼的多語言,雙向支持和阿拉伯語文本處理。
- 完全可定製的圖形元素
- 硬件獨立,可與任何微控制器或顯示器一起使用。
- 可擴展到以較少的內存進行操作(64 kB閃存,10 kB RAM)。
- 支持操作系統、外置內存和GPU,但不是必需的。
- 即使是先進的圖形效果,也可以進行單幀緩衝操作。
- 用C語言編寫,以達到最大的兼容性(兼容C++)。
- Micropython Binding在Micropython中公開LVGL API
- 無需嵌入式硬件就能在PC上開發的模擬器
- 提供教程、例子、主題幫助快速完成開發
- 提供參考的說明文檔和API文檔
LVGL V7.0新版本特性
搶先看LVGL V7.0帶來了哪些新的特性:
新的繪圖系統
- 完全重構LVGL的繪製引擎,使用 "mask"來實現更高級、更高質量的圖形效果。
- 新系統的新引入的一個功能是可以去除圓角邊緣的溢出內容。
- 它還允許繪製完美的反鋸齒圓、線和弧。
- 在內部繪圖是通過定義mask(如圓角矩形、線條、角度)來實現的。
當繪製一些東西時,當前活動的遮罩可以使一些像素透明。(作者補充-開源2D矢量圖型引擎Cairo裏面也有用到mask概念)
例如,矩形邊框是通過使用2個矩形遮罩來繪製的:一個遮罩去除內部部分,另一個遮罩去除外部部分。
新的系統風格
- 用一種更靈活, 輕量級的系統取代舊的系統。
- 使用了一種類似於CSS的方法:支持層疊樣式,繼承屬性和每個對象的本地屬性。
- 作爲這些更新的一部分,很多對象被重新設計,API也被改變。
GPU加速
- 爲了更好地利用GPU,從這個版本開始,GPU的使用可以整合到LVGL中。在lv_conf.h中,任何支持的GPU都可以通過一個配置選項來啓用。
- 目前只支持ST’s DMA2D (Chrom-ART) , 更多GPU的支持會在後續版本中加入進來.
命名的改進
以下對象類型進行了重命名:
- sw -> switch
- ta -> textarea
- cb -> checkbox
- lmeter -> linemeter
- mbox -> msgbox
- ddlist -> dropdown
- btnm -> btnmatrix
- kb -> keyboard
- preload -> spinner
- lv_objx folder -> lv_widgets
- LV_FIT_FILL -> LV_FIT_PARENT
- LV_FIT_FLOOD -> LV_FLOOD_MAX
- LV_LAYOUT_COL_L/M/R -> LV_LAYOUT_COLUMN_LEFT/MID/RIGHT
- LV_LAYOUT_ROW_T/M/B -> LV_LAYOUT_ROW_TOP/MID/BOTTOM
重新設計和改進的對象
- dropdown: Completely reworked. Now creates a separate list when opened and can be dropped to down/up/left/right.
- label: body_draw is removed, instead, if its style has a visible background/border/shadow etc it will be drawn. Padding really makes the object larger (not just virtually as before)
- arc: can draw bacground too.
- btn: doesn’t store styles for each state because it’s done naturally in the new style system.
- calendar: highlight the pressed datum. The used styles are changed: use LV_CALENDAR_PART_DATE normal for normal dates, checked for highlighted, focused for today, pressed for the being pressed. (checked+pressed, focused+pressed also work)
chart: only has LINE and COLUMN types because with new styles all the others can be described. LV_CHART_PART_SERIES sets the style of the series. bg_opa > 0 draws an area in LINE mode. LV_CHART_PART_SERIES_BG also added to set a different style for the series area. Padding in LV_CHART_PART_BG makes the series area smaller, and it ensures space for axis labels/numbers.
linemeter, gauge: can have background if the related style properties are set. Padding makes the scale/lines smaller. scale_border_width and scale_end_border_width allow to draw an arc on the outer part of the scale lines.
gauge: lv_gauge_set_needle_img allows use image as needle
canvas: allow drawing to true color alpha and alpha only canvas, add lv_canvas_blur_hor/ver and rename lv_canvas_rotate to lv_canvas_transform - textarea: If available in the font use bullet (U+2022) character in text area password
LVGL V7.0.2初體驗
話不多說,直接上圖看官方例程效果圖。
LVGL在Microchip SAMA5D27運行效果
LVGL V7.02移植到SAMA5D27+7"LCD屏(分辨率是800*480), 核心處理器是ARM Cortex-A5架構,主頻500MHz帶NEON,用來跑LVGL足夠.
LVGL不足之處
- 目前沒有針對NEON進行優化
- 屏幕切換的時候不夠自然,能夠見到抖動(已經開了雙frame buffer)
- 不支持直接貼圖顯示