引擎架構
歸根結底,繪圖系統就是讓某些內容顯示在顯示器上。
“嵌入式繪圖系統”一詞有許多種含義。
首先,不同的人對“嵌入式系統”一詞有不同的理解。 對某些人來說,嵌入式系統意味著十分可靠的舊式8位元微控制器,無作業系統,實際上也無RAM、ROM或GPIO。 對其他人來說,它可能意味著功能強大的現代智慧手機。
其次,“繪圖系統”一詞有許多種解釋。 對某些人來說,它表示在喜歡的繪畫程式中繪像素點。 對其他人來說,它表示遊戲機上運行的3D渲染軟體。
對TouchGFX而言,嵌入式系統表示STM32微控制器上的任意系統。 繪圖系統表示運行頻率為60幀每秒的互動式應用。
四個組成部分
為了在此類平臺上實現繪圖應用,我們探套四個直接相關的主要元件。 當然,嵌入式系統可能包含許多其他元件,但其他元件與圖形顯示的相關性較小。
簡而言之,TouchGFX使用MCU,通過對快閃記憶體中的各個部分進行組合,創建和更新RAM中的圖像。 組合圖像會被傳輸到顯示器。 系統會視需要盡可能多地重複此過程。
MCU
在這個過程中,MCU承擔了所有重要任務。 它讀取快閃記憶體中的圖像,並將它們寫入RAM。 在將半透明紅色文字融合到圖像上時,它計算得到的色彩並將其存儲到RAM。 它對圓的所有像素進行渲染並存儲到RAM。
STM32 MCU具有特定功能,能夠為繪圖系統的實現提供協助。 參見“MCU”部分瞭解不同MCU的詳細資訊。
RAM
計算後的圖像存儲在RAM中。 MCU對RAM執行讀和寫操作。 在將所得圖像傳輸給顯示器時,再次執行讀操作。
RAM通常位於MCU內部。 如果將所得圖像存儲在內部RAM中的方法不可行,可以添加外部RAM。
Flash
所有靜態資料均存儲在快閃記憶體中。 圖像、字體和文字。 快閃記憶體由MCU讀取,其內容被寫入RAM或與RAM的內容進行組合。
在大多數情況下,由於內部快閃記憶體很少能夠容納下所有圖形資產,因此設置中會增加外部快閃記憶體。
理想的做法是對快閃記憶體進行記憶體映射,以便從快閃記憶體直接讀取像素並寫入RAM。 或者,可將快閃記憶體內容存在RAM中,然後再從RAM讀取。
顯示
顯示器將圖像實際顯示出來。
RAM中儲存的圖像由MCU按固定時間間隔發送到顯示器。
性能
為了在這種設置和最終的顯示器上獲得流暢的動畫效果,在實現嵌入式繪圖系統時必須注意一些事項。
一般策略
通常務必考慮的幾點:
- 不在無變化的部分花費時間
- 從快閃記憶體傳輸到RAM的資料應盡可能少
- 從RAM傳輸到顯示器的資料應盡可能少
- 在圖形品質與動畫速度之間尋求適當平衡
- 利用硬體功能
TouchGFX Engine有助於解決所有這些問題,但開發人員也必須注意。
設置特定策略
大量可能的嵌入式設置意味著基於特定設置與基於其他設置能夠實現的效果之間可能存在巨大差異。
可能的設置概覽
- STM32 MCU
- 50至500 MHz時鐘頻率
- 圖形相關IP的可能範圍:
- RAM
- 0至1 MB(內部)
- 0至100 MB(外部)
- Flash
- 0至1 MB(內部)
- 0至1 GB(外部)
- 顯示
- 1至24位色彩
- 100x100至1000x1000像素
顯然,在一種設置上可實現的UI應用,在另一種設置上可能根本無法實現。 因此,必須注意讓需要的UI應用與實際設置保持一致。
TouchGFX是為這些設置重新設計的,側重于最大程度利用STM32 MCU的能力並盡可能減少對RAM和快閃記憶體的需求。