“1、前言
客戶在做 GUI 項目開發時,會碰到許多顯示相關的問題。
屏幕花屏是比較嚴重的問題,如果產品出現花屏,會嚴重影響使用體驗。正常的 UI 顯示,包括畫圖和將幀緩沖傳輸到屏幕兩個過程。如果畫圖過程出錯,那幀緩沖的內容就不對了,傳輸到屏幕后顯示也不可能正確。如果畫圖過程正確,而傳輸過程出錯,雖然幀緩沖的內容是對的,而屏幕接收到的數據出錯了,那屏幕顯示的內容自然也是錯誤的。因此在定位顯示錯亂、花屏等問題時,需要先判斷是畫圖出錯還是傳輸過程出錯。
本文會介紹一種方法,將幀緩沖內容導出并保存為圖片,來判斷幀緩沖內容是否正確。由于幀緩沖的內容為全部像素的 RGB 數據,在導出后需要借助其它工具將 RGB 數據轉換為圖片,方便在 PC 上直接查看。
這里可以使用 python 的 pillow 包,將 RGB 轉換為JPG 圖片。而讀取幀緩沖的過程可以借助 python 的 pyswd 包來實現。
2、環境安裝
本機環境:Windows10 64bit 安裝 python 3.9.0 (測試過 3.9.6 正常),檢查系統環境變量,將 python 添加到 Path中。
下載:https://www.python.org/downloads/
2.1. 安裝 libusb
下載:https://github.com/libusb/libusb/releases
解壓 libusb-1.0.24.7z,將 VS2019/MS64/dll/libusb-1.0.dll 拷貝到 python 安裝目錄,與 python.exe 相同目錄
2.2. 安裝 pyusb
下載:https://pypi.org/project/pyusb/#files
打開 powershell,輸入 pip install pyusb-1.2.1-py3-none-any.whl
2.3. 安裝 Pillow
下載:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pil
打開 powershell,輸入 pip install Pillow-8.3.1-cp39-cp39-win_amd64.whl
2.4. 安裝 pyswd
下載:https://github.com/cortexm/pyswd/releases/tag/v1.0.0
解壓 pyswd-1.0.0.zip,打開 powershell,進入 pyswd-1.0.0 目錄,輸入 pythonsetup.py install
3. 將幀緩沖保存為圖片
3.1. 讀取幀緩沖
通過 pyswd,可以創建 stlink 對象連接到目標板,用read_mem 函數來讀取目標板內存。
3.2. 保存圖片
從 Pillow 包導入 Image 類,創建圖片對象,將 pyswd 讀取的 framebuffer 數據填充到 image 對象中并保存實現代碼如下,保存為 pyswd_rgb2jpg.py 文件。
4、測試及小結
在 L4R9-DK 板上進行了測試
(1) 無 GFXMMU 時,傳給腳本的參數,寬和高為實際 LCD 的寬和高將 GUI 固件燒錄到開發板后,屏幕正常顯示。在工程 map 文件中,找到 framebuffer 地址。打開 powershell,執行 pyswd_rgb2jpg.py:
(2)開啟 GFXMMU 時,framebuffer 對應為虛擬地址,傳給腳本的參數中,圖像的寬度要用GFXMMU 像素寬度
在完成環境安裝后,通過此腳本可方便查看 framebuffer 內容。如果出現屏幕花屏的問題,可導出 framebuffer 圖片查看。如果畫圖過程出錯,則導出的圖片顯示也是錯誤的。反之,如果畫圖過程正常,則 framebuffer 內容正常,導出的圖片也是正常的,這樣就需要查一下傳輸過程導致的顯示問題。
審核編輯 :李倩
-
數據
+關注
關注
8文章
6892瀏覽量
88827 -
圖片
+關注
關注
0文章
203瀏覽量
15903 -
Framebuffer
+關注
關注
0文章
8瀏覽量
8040
原文標題:工程師筆記|將 framebuffer 保存為圖片來檢查內容正確性
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論