色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

將framebuffer保存為圖片來檢查內(nèi)容正確性

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

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 上直接查看。

這里可以使用 pythonpillow 包,將 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/

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,進(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 文件。

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

4、測試及小結(jié)

在 L4R9-DK 板上進(jìn)行了測試

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

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

(2)開啟 GFXMMU 時(shí),framebuffer 對(duì)應(yīng)為虛擬地址,傳給腳本的參數(shù)中,圖像的寬度要用GFXMMU 像素寬度

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

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

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bà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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    根據(jù)ADS1292R Data sheet組了一個(gè)前端電路,請(qǐng)問要如何測試電路的正確性?

    我根據(jù)ADS1292R Data sheet 自己組了一個(gè)前端電路,請(qǐng)問要如何測試電路的正確性?
    發(fā)表于 12-16 06:27

    ADS1278EVM-PDK連續(xù)采集方式保存數(shù)據(jù)時(shí),能否保存為單個(gè)文件?

    ADS1278EVM-PDK請(qǐng)問連續(xù)采集方式保存數(shù)據(jù)時(shí),Ready按后只能保存一系列文件(是不是不斷刷新只保存最后一次數(shù)據(jù)),不能保存單個(gè)文件。能否
    發(fā)表于 12-02 07:19

    ADCPROADS1278EVM-PDK用ADCPro在連續(xù)采集模式下能否保存為1個(gè)文件?

    ADCPROADS1278EVM-PDK用ADCPro在連續(xù)采集模式下能否保存為1個(gè)文件。現(xiàn)在不點(diǎn)亮Ready按鈕就只保存最后刷新的數(shù)據(jù),如果點(diǎn)亮Ready按鈕就保存一系列文件比如以下所示,同樣大小系列文件。請(qǐng)問在ADCPr
    發(fā)表于 12-02 06:26

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

    Framebuffer 字面意思就是幀緩存的意思,即顯存,里面保存著一幀圖像。事實(shí)上,對(duì)于嵌入式系統(tǒng)而言。沒有真正意義上的顯存,Framebuffer 是通過內(nèi)存模擬出來的。一、LCD
    發(fā)表于 11-21 09:00

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

    Framebuffer 字面意思就是幀緩存的意思,即顯存,里面保存著一幀圖像。事實(shí)上,對(duì)于嵌入式系統(tǒng)而言。沒有真正意義上的顯存,Framebuffer 是通過內(nèi)存模擬出來的。 一、LCD
    發(fā)表于 11-20 08:50

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

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

    如何評(píng)估AIGC內(nèi)容的質(zhì)量和效果

    : 準(zhǔn)確 : 事實(shí)核查 :確保AIGC生成的內(nèi)容與已知的事實(shí)和數(shù)據(jù)相符。 引用來源 :檢查內(nèi)容是否引用了可靠的來源,并且這些引用是否正確
    的頭像 發(fā)表于 10-25 16:02 ?701次閱讀

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

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

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

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

    在SimpleCentral_processGATTDiscEvent里面,根據(jù)UUID發(fā)現(xiàn)charHandle,這個(gè)charHandle在UUID改為128bit后是否還是保存為8字節(jié)?

    SimpleCentral_processGATTDiscEvent里面,根據(jù)UUID發(fā)現(xiàn)charHandle,這個(gè)charHandle在UUID改為128bit后是否還是保存為8字節(jié)?還是要保存16字節(jié)?若還是保存8字節(jié)應(yīng)該
    發(fā)表于 05-30 07:55

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

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

    labview屏幕找圖,返回找到的位置XY坐標(biāo)

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

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

    1、我們?yōu)榱嗽O(shè)備兼容俄語,就需要使用到unicode編碼,字符串保存文件保存為unicode編碼,但是編譯之后出現(xiàn)一大堆錯(cuò)誤。 2、編譯器使用的是rtthread_studio. 3、我們的編譯器不支持unicode編碼嗎?
    發(fā)表于 03-27 08:01

    怎么編寫Framebuffer驅(qū)動(dòng)程序

    Framebuffer 驅(qū)動(dòng)程序框架 分為上下兩層: fbmem.c:承上啟下 實(shí)現(xiàn)、注冊 file_operations 結(jié)構(gòu)體 把 APP 的調(diào)用向下轉(zhuǎn)發(fā)到具體的硬件驅(qū)動(dòng)程序
    的頭像 發(fā)表于 03-22 09:13 ?555次閱讀
    怎么編寫<b class='flag-5'>Framebuffer</b>驅(qū)動(dòng)程序

    如何讀取TC397中所有必要的內(nèi)存區(qū)域并將內(nèi)容保存為十六進(jìn)制文件?

    我正在使用三板上的 TC397 控制器。 控制器已經(jīng)用一些軟件刷新了,但是,不幸的是,該軟件的十六進(jìn)制文件丟失了。 我需要讀取TC397中所有必要的內(nèi)存區(qū)域并將內(nèi)容保存為十六進(jìn)制文件,以便將來
    發(fā)表于 01-25 06:40
    主站蜘蛛池模板: 一受n攻高h全肉np| 欧美日韩久久久精品A片| 动漫H片在线播放免费高清| 99精品热视频30在线热视频| 一级特黄视频| 一本道久在线综合色姐| 亚洲无人区码二码三码区别图| 亚洲AV 中文字幕 国产 欧美| 玩高中女同桌肉色短丝袜脚文| 日日碰狠狠躁久久躁综合网| 日操夜操天天操| 三级网址在线| 桃色窝| 色怕怕| 午夜深情在线观看免费| 亚婷婷洲AV久久蜜臀无码| 亚洲AV一宅男色影视| 亚洲欧美中文在线一区| 一本道久在线综合道| 中文字幕va一区二区三区| 18禁无遮挡羞羞污污污污免费| 91蜜桃视频| ppypp午夜限制不卡影院私人| 成a人片亚洲日本久久| 国产99久久九九免费精品无码| 国产成人精品亚洲线观看| 国产九九熟女在线视频| 黄得让人湿的片段| 快播h网站| 日本精品久久久久中文字幕| 天美麻豆成人AV精品| 亚洲国产在线综合018| 在线 亚洲 日韩 欧洲视频| 97成人在线| 国产成人a一在线观看| 国产精品视频在线自在线| 九九热只有精品| 欧美成人无码A区在线观看免费| 色www永久免费| 亚洲欧洲日产国码中学| 99re久久免费热在线视频手机|