圖形用戶界面 (GUI)
在嵌入式系統(tǒng)中變得越來越流行??纱┐骷夹g(shù)、工業(yè)設(shè)備、商用廚房甚至家用電器都需要方便且連接的界面,在設(shè)備上使用具有現(xiàn)代和復(fù)雜用戶體驗(yàn) (UX) 的 GUI
為許多企業(yè)的用例打開了大門,但如果嵌入式開發(fā)團(tuán)隊(duì)沒有合適的技能組合,它也會(huì)給設(shè)計(jì)帶來意想不到的挑戰(zhàn)。
今天的文章將探討每個(gè)嵌入式 GUI 開發(fā)人員成功所需的五項(xiàng)基本技能。
技能 #1 – 圖形驅(qū)動(dòng)技能
任何團(tuán)隊(duì)在設(shè)計(jì)嵌入式 GUI 時(shí)都會(huì)考慮的最后一項(xiàng)技能,但也許是最重要的技能之一,那就是圖形驅(qū)動(dòng)程序技能。
圖形驅(qū)動(dòng)程序是直接與微控制器或微處理器圖形外設(shè)接口的軟件,負(fù)責(zé)在 LCD
上繪制用戶看到并與之交互的圖像。圖形驅(qū)動(dòng)程序是從渲染引擎獲取圖像數(shù)據(jù)并告訴處理器它正在繪制什么的代碼。
今天一個(gè)好的嵌入式 GUI
工具通常會(huì)為開發(fā)人員處理圖形驅(qū)動(dòng)程序,開發(fā)人員需要一個(gè)與硬件無關(guān)的渲染引擎,大部分繁重的工作都是為他們完成的。今天的嵌入式行業(yè)有幾個(gè)示例,比如
Storyboard ,Storyboard 的渲染引擎 90% 與硬件無關(guān),并且獨(dú)立于硬件板支持包
(BSP)。有一小部分是為特定硬件編寫的,用于優(yōu)化渲染并利用特定硬件目標(biāo)中的加速器。引擎本身為開發(fā)人員處理圖形驅(qū)動(dòng)程序。
既然 Storyboard 處理開發(fā)人員的繪圖和圖形,為什么具有圖形驅(qū)動(dòng)技能仍然很重要? GUI
嵌入式開發(fā)人員應(yīng)該了解幕后發(fā)生的事情,以便他們能夠解決實(shí)施過程中出現(xiàn)的任何問題,利用任何額外的優(yōu)化,并熟悉渲染引擎的工作原理。
技能 #2 – 跟蹤和調(diào)試
今天的嵌入式系統(tǒng)很復(fù)雜,某些事情無法按預(yù)期工作的可能性相對(duì)較高,因此,擁有跟蹤和調(diào)試技能至關(guān)重要,一個(gè)好的調(diào)試器可以提取數(shù)據(jù)、觀察行為、假設(shè)并最終改進(jìn)系統(tǒng)行為。
為了最大限度地減少調(diào)試時(shí)間,開發(fā)人員還應(yīng)該熟練掌握跟蹤技術(shù)。GUI
開發(fā)人員可以使用幾種不同類型的跟蹤技術(shù)。首先,微控制器上提供通用跟蹤工具,例如 Arm 微控制器上提供的串行線輸出 (SWO) 和串行線調(diào)試 (SWD)
接口。這些提供高級(jí)用戶可配置的跟蹤功能。接下來,可以使用軟件跟蹤技術(shù),例如儀器跟蹤宏單元 (ITM) 和嵌入式跟蹤宏 (ETM)。 ITM 允許開發(fā)人員使用
printf 語句自定義跟蹤數(shù)據(jù),而 ETM 為 CPU 執(zhí)行的每條指令提供指令跟蹤。到目前為止,這些都是通用的嵌入式軟件跟蹤技術(shù)。
嵌入式 GUI 引擎應(yīng)該具有內(nèi)置的日志記錄和跟蹤功能,以幫助開發(fā)人員。 日志和跟蹤通常通過插件添加到 GUI
引擎,以配置接收跟蹤數(shù)據(jù)的方式。 開發(fā)人員通常可以通過調(diào)試工具將數(shù)據(jù)記錄到文件、內(nèi)存地址等。
一般來說,開發(fā)人員需要成功訪問兩種類型的數(shù)據(jù):性能和指標(biāo)。通過訪問這些數(shù)據(jù),嵌入式開發(fā)人員可以了解重要信息,例如:
渲染引擎性能
圖像加載時(shí)間
每秒幀數(shù)
CPU使用率
內(nèi)存使用情況
然后,開發(fā)人員可以使用此信息來解決問題或通過優(yōu)化提高系統(tǒng)性能。
技能 #3 - 優(yōu)化
今天的嵌入式系統(tǒng)已經(jīng)變得非常強(qiáng)大,但它們?nèi)匀皇琴Y源受限的系統(tǒng)。 它們可能在處理能力、內(nèi)存或電池壽命方面受到資源限制。
許多系統(tǒng)都需要優(yōu)化,而 GUI 可以在確保系統(tǒng)高效、優(yōu)化并適合其最終目的方面發(fā)揮巨大作用。
在優(yōu)化用戶體驗(yàn)方面,可以做很多事情。第一個(gè)優(yōu)化是利用事件驅(qū)動(dòng)的軟件架構(gòu),事件驅(qū)動(dòng)的架構(gòu)只在必要時(shí)才做一些事情!例如,我見過許多系統(tǒng)嘗試將特定幀速率推送到顯示器,例如
60 或 120 Hz。但是,如果顯示器不需要更新,為什么還要推動(dòng)幀速率呢?如果不需要更改顯示,則可以無所事事地節(jié)省 CPU
時(shí)鐘周期和電池壽命!
另一個(gè)可以應(yīng)用的有用優(yōu)化是使用未壓縮的 TGA
直接從閃存中繪制圖像。沒有壓縮的PNG,嵌入式開發(fā)人員可以直接從閃存中提取到他們的渲染緩沖區(qū),從而降低內(nèi)存成本并節(jié)省大量時(shí)鐘周期。
優(yōu)化用戶體驗(yàn)和驅(qū)動(dòng)它的軟件/硬件系統(tǒng)可能會(huì)對(duì)系統(tǒng)產(chǎn)生深遠(yuǎn)的影響。此外,考慮到可穿戴設(shè)備甚至需要滿足特定能耗要求的家用電器的能耗最小化至關(guān)重要,優(yōu)化技能也至關(guān)重要。
技能#4——管理期望
開發(fā)人員幾乎總是忽略的一項(xiàng)簡(jiǎn)單技能是正確管理期望。如果我們不能正確地管理期望,原本被認(rèn)為是成功的項(xiàng)目可能會(huì)突然被用戶或項(xiàng)目利益相關(guān)者視為失敗。
開發(fā)人員需要小心地正確管理其利益相關(guān)者的期望!這些利益相關(guān)者可能是項(xiàng)目經(jīng)理、高層管理人員,甚至是最終客戶,這是一項(xiàng)微妙但必要的技能。
開發(fā)人員需要這種管理期望的能力。設(shè)定一個(gè)可以滿足的合理期望,然后如果時(shí)間允許,讓利益相關(guān)者驚嘆并讓他們感到興奮!
技能 #5 - 平面設(shè)計(jì)
最終的技能組合無疑是許多讀者期望的第一技能! GUI
開發(fā)人員需要具備圖形設(shè)計(jì)技能。他們需要了解哪些顏色效果好,不僅在視網(wǎng)膜顯示器上,而且在資源受限、微控制器驅(qū)動(dòng)的面板上!
開發(fā)人員需要能夠設(shè)計(jì)和構(gòu)建美觀且用戶友好的圖形界面,平面設(shè)計(jì)是一項(xiàng)有時(shí)必須從平面設(shè)計(jì)專家那里借來的技能,但是,開發(fā)人員通常仍需要根據(jù)嵌入式系統(tǒng)的運(yùn)行方式來調(diào)整和調(diào)整藝術(shù)品。
要成功開發(fā)具有用戶界面的嵌入式系統(tǒng),嵌入式開發(fā)人員和/或團(tuán)隊(duì)必須具備這五項(xiàng)基本技能。
找到一名具備所有這些技能的工程師通常具有挑戰(zhàn)性,但利用隊(duì)友和外部資源可以極大地幫助提高成功的機(jī)會(huì)。