“1、前言
客戶在做 GUI 項(xiàng)目開發(fā)時(shí),會(huì)碰到許多顯示相關(guān)的問題。
屏幕花屏是比較嚴(yán)重的問題,如果產(chǎn)品出現(xiàn)花屏,會(huì)嚴(yán)重影響使用體驗(yàn)。正常的 UI 顯示,包括畫圖和將幀緩沖傳輸?shù)狡聊粌蓚€(gè)過程。如果畫圖過程出錯(cuò),那幀緩沖的內(nèi)容就不對(duì)了,傳輸?shù)狡聊缓箫@示也不可能正確。如果畫圖過程正確,而傳輸過程出錯(cuò),雖然幀緩沖的內(nèi)容是對(duì)的,而屏幕接收到的數(shù)據(jù)出錯(cuò)了,那屏幕顯示的內(nèi)容自然也是錯(cuò)誤的。因此在定位顯示錯(cuò)亂、花屏等問題時(shí),需要先判斷是畫圖出錯(cuò)還是傳輸過程出錯(cuò)。
本文會(huì)介紹一種方法,將幀緩沖內(nèi)容導(dǎo)出并保存為圖片,來判斷幀緩沖內(nèi)容是否正確。由于幀緩沖的內(nèi)容為全部像素的 RGB 數(shù)據(jù),在導(dǎo)出后需要借助其它工具將 RGB 數(shù)據(jù)轉(zhuǎn)換為圖片,方便在 PC 上直接查看。
這里可以使用 python 的 pillow 包,將 RGB 轉(zhuǎn)換為JPG 圖片。而讀取幀緩沖的過程可以借助 python 的 pyswd 包來實(shí)現(xiàn)。
2、環(huán)境安裝
本機(jī)環(huán)境:Windows10 64bit 安裝 python 3.9.0 (測試過 3.9.6 正常),檢查系統(tǒng)環(huán)境變量,將 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,進(jìn)入 pyswd-1.0.0 目錄,輸入 pythonsetup.py install
3. 將幀緩沖保存為圖片
3.1. 讀取幀緩沖
通過 pyswd,可以創(chuàng)建 stlink 對(duì)象連接到目標(biāo)板,用read_mem 函數(shù)來讀取目標(biāo)板內(nèi)存。
3.2. 保存圖片
從 Pillow 包導(dǎo)入 Image 類,創(chuàng)建圖片對(duì)象,將 pyswd 讀取的 framebuffer 數(shù)據(jù)填充到 image 對(duì)象中并保存實(shí)現(xiàn)代碼如下,保存為 pyswd_rgb2jpg.py 文件。
4、測試及小結(jié)
在 L4R9-DK 板上進(jìn)行了測試
(1) 無 GFXMMU 時(shí),傳給腳本的參數(shù),寬和高為實(shí)際 LCD 的寬和高將 GUI 固件燒錄到開發(fā)板后,屏幕正常顯示。在工程 map 文件中,找到 framebuffer 地址。打開 powershell,執(zhí)行 pyswd_rgb2jpg.py:
(2)開啟 GFXMMU 時(shí),framebuffer 對(duì)應(yīng)為虛擬地址,傳給腳本的參數(shù)中,圖像的寬度要用GFXMMU 像素寬度
在完成環(huán)境安裝后,通過此腳本可方便查看 framebuffer 內(nèi)容。如果出現(xiàn)屏幕花屏的問題,可導(dǎo)出 framebuffer 圖片查看。如果畫圖過程出錯(cuò),則導(dǎo)出的圖片顯示也是錯(cuò)誤的。反之,如果畫圖過程正常,則 framebuffer 內(nèi)容正常,導(dǎo)出的圖片也是正常的,這樣就需要查一下傳輸過程導(dǎo)致的顯示問題。
審核編輯 :李倩
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7002瀏覽量
88942 -
圖片
+關(guān)注
關(guān)注
0文章
203瀏覽量
15923 -
Framebuffer
+關(guān)注
關(guān)注
0文章
8瀏覽量
8054
原文標(biāo)題:工程師筆記|將 framebuffer 保存為圖片來檢查內(nèi)容正確性
文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論