精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

將framebuffer保存為圖片來檢查內容正確性

STM32單片機 ? 來源:STM32單片機 ? 作者:STM32單片機 ? 2022-04-25 10:46 ? 次閱讀

1、前言

客戶在做 GUI 項目開發時,會碰到許多顯示相關的問題。

屏幕花屏是比較嚴重的問題,如果產品出現花屏,會嚴重影響使用體驗。正常的 UI 顯示,包括畫圖和將幀緩沖傳輸到屏幕兩個過程。如果畫圖過程出錯,那幀緩沖的內容就不對了,傳輸到屏幕后顯示也不可能正確。如果畫圖過程正確,而傳輸過程出錯,雖然幀緩沖的內容是對的,而屏幕接收到的數據出錯了,那屏幕顯示的內容自然也是錯誤的。因此在定位顯示錯亂、花屏等問題時,需要先判斷是畫圖出錯還是傳輸過程出錯。

本文會介紹一種方法,將幀緩沖內容導出并保存為圖片,來判斷幀緩沖內容是否正確。由于幀緩沖的內容為全部像素的 RGB 數據,在導出后需要借助其它工具將 RGB 數據轉換為圖片,方便在 PC 上直接查看。

這里可以使用 pythonpillow 包,將 RGB 轉換為JPG 圖片。而讀取幀緩沖的過程可以借助 python 的 pyswd 包來實現。

2、環境安裝

本機環境:Windows10 64bit 安裝 python 3.9.0 (測試過 3.9.6 正常),檢查系統環境變量,將 python 添加到 Path中。

下載:https://www.python.org/downloads/

ec3f427c-c3d1-11ec-bce3-dac502259ad0.png

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 文件。

ec540446-c3d1-11ec-bce3-dac502259ad0.png

4、測試及小結

在 L4R9-DK 板上進行了測試

(1) 無 GFXMMU 時,傳給腳本的參數,寬和高為實際 LCD 的寬和高將 GUI 固件燒錄到開發板后,屏幕正常顯示。在工程 map 文件中,找到 framebuffer 地址。打開 powershell,執行 pyswd_rgb2jpg.py:

ec6040f8-c3d1-11ec-bce3-dac502259ad0.png

(2)開啟 GFXMMU 時,framebuffer 對應為虛擬地址,傳給腳本的參數中,圖像的寬度要用GFXMMU 像素寬度

ec7b2332-c3d1-11ec-bce3-dac502259ad0.png

在完成環境安裝后,通過此腳本可方便查看 framebuffer 內容。如果出現屏幕花屏的問題,可導出 framebuffer 圖片查看。如果畫圖過程出錯,則導出的圖片顯示也是錯誤的。反之,如果畫圖過程正常,則 framebuffer 內容正常,導出的圖片也是正常的,這樣就需要查一下傳輸過程導致的顯示問題。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    6892

    瀏覽量

    88827
  • 圖片
    +關注

    關注

    0

    文章

    203

    瀏覽量

    15903
  • Framebuffer
    +關注

    關注

    0

    文章

    8

    瀏覽量

    8040

原文標題:工程師筆記|將 framebuffer 保存為圖片來檢查內容正確性

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-LCD顯示圖片編程示例之介紹framebuffer

    Framebuffer 字面意思就是幀緩存的意思,即顯存,里面保存著一幀圖像。事實上,對于嵌入式系統而言。沒有真正意義上的顯存,Framebuffer 是通過內存模擬出來的。一、LCD
    發表于 11-21 09:00

    飛凌嵌入式ElfBoard ELF 1板卡-LCD顯示圖片編程示例之介紹framebuffer

    Framebuffer 字面意思就是幀緩存的意思,即顯存,里面保存著一幀圖像。事實上,對于嵌入式系統而言。沒有真正意義上的顯存,Framebuffer 是通過內存模擬出來的。 一、LCD
    發表于 11-20 08:50

    ADS5282如何通過其他方式驗證寄存器寫入的正確性

    word. 測試結果: (1)差分數據對N端無變化 (2)差分P端輸出300多mv電壓,差分N端輸出100多mv電壓 另外,ADS5282是只寫芯片,如何通過其他方式驗證寄存器寫入的正確性
    發表于 11-18 08:33

    如何評估 ChatGPT 輸出內容的準確

    內容準確的方法和步驟: 數據質量和多樣 : 確保訓練數據覆蓋了廣泛的主題和領域,以便模型能夠理解和生成各種類型的內容檢查數據是否包含
    的頭像 發表于 10-25 17:48 ?503次閱讀

    如何評估AIGC內容的質量和效果

    : 準確 : 事實核查 :確保AIGC生成的內容與已知的事實和數據相符。 引用來源 :檢查內容是否引用了可靠的來源,并且這些引用是否正確
    的頭像 發表于 10-25 16:02 ?397次閱讀

    電腦如何直接使用rs232串口控制PGA460?如何檢測回復的數據的正確性

    電腦直接使用rs232串口控制PGA460,該怎么連接?怎樣檢測回復的數據的正確性
    發表于 10-11 06:12

    使用CY521 EVAL配置CYPD2122,如何文件保存為HEX格式?

    我正在使用 CY521 EVAL 配置 CYPD2122。 一切運行正常,我現在希望文件保存為 HEX 格式,以便通過 MiniProg4 進行編程。但是,當我進入\"保存到固件文件
    發表于 08-12 08:19

    在SimpleCentral_processGATTDiscEvent里面,根據UUID發現charHandle,這個charHandle在UUID改為128bit后是否還是保存為8字節?

    SimpleCentral_processGATTDiscEvent里面,根據UUID發現charHandle,這個charHandle在UUID改為128bit后是否還是保存為8字節?還是要保存16字節?若還是保存8字節應該
    發表于 05-30 07:55

    STM32MP135如何使用opencv-python或v4l2-ctl打開攝像頭,并保存為圖片

    行。 但是官方的例程中,直接用v4l推送到media上,直接顯示的又是可以的。 請問我該如何使用opencv-python 或v4l2-ctl打開攝像頭,并保存為圖片
    發表于 05-30 06:16

    labview屏幕找圖,返回找到的位置XY坐標

    CheckSUM值。 圖中的截圖按鈕點擊后可截取屏幕上你需要的任意位置,盡量只選擇感興趣的區域,保存為.bmp格式的圖片到路徑。選擇路徑后點擊找圖按鈕即可實現找圖。也有屏幕找色,OCR,窗口句柄等子vi,感興趣的私聊。
    發表于 05-11 08:59

    RTT使用unicode編碼,編譯不通過是為什么?

    1、我們為了設備兼容俄語,就需要使用到unicode編碼,字符串保存文件保存為unicode編碼,但是編譯之后出現一大堆錯誤。 2、編譯器使用的是rtthread_studio. 3、我們的編譯器不支持unicode編碼嗎?
    發表于 03-27 08:01

    怎么編寫Framebuffer驅動程序

    Framebuffer 驅動程序框架 分為上下兩層: fbmem.c:承上啟下 實現、注冊 file_operations 結構體 把 APP 的調用向下轉發到具體的硬件驅動程序
    的頭像 發表于 03-22 09:13 ?517次閱讀
    怎么編寫<b class='flag-5'>Framebuffer</b>驅動程序

    如何讀取TC397中所有必要的內存區域并將內容保存為十六進制文件?

    我正在使用三板上的 TC397 控制器。 控制器已經用一些軟件刷新了,但是,不幸的是,該軟件的十六進制文件丟失了。 我需要讀取TC397中所有必要的內存區域并將內容保存為十六進制文件,以便將來
    發表于 01-25 06:40

    從AD7712讀取的數據在C語言中是保存為什么數據類型?

    誰用過AD7712嗎,從AD7712讀取的數據在C語言中是保存為什么數據類型啊,long int 嗎?我用AD7712對波形進行數字化,AD7712輸出的數據應該是有正有負的對吧?
    發表于 12-13 09:33

    js文件流轉化文件保存

    Blob對象可以存儲不包含任何特定文件格式的數據。 一般情況下,我們需要將文件流轉化為Blob對象,然后再將Blob對象保存為文件。我們可以通過以下方法創建Blob對象: var myBlob = new
    的頭像 發表于 11-27 16:07 ?3495次閱讀