嵌入式 Linux 板卡禁用顯示器的游標閃爍

2021-10-08 23:22:42 字數 1302 閱讀 6183

需要在 hdmi 顯示器輸出彩色條帶進行展示,採用的方法是直接往 /dev/fb0 裝置節點寫 rgb。結果效果如下圖:

有乙個游標在閃爍。這個游標其實來自於顯示終端的登入提示,在提示輸入使用者名稱進行登入。其提示符被我的彩色條帶覆蓋了,但這個游標閃爍時相當於不斷更新,和我的程式爭奪顯示裝置。

關閉該登入終端。找到 /etc/system/systemd 下有乙個引數為 tty1 的登入服務,於是把它停掉。結果登入終端沒有了,但顯示器上還有閃爍的游標,處於左上角。

未能成功。

前面只是登入終端的服務,這個服務肯定還是基於某個終端的。/lib/system/systemd 下找到乙個 autovt 服務,啟動了乙個虛擬終端。把它停掉後,現象還是一樣。

未能成功。

上網搜尋。找到幾個修改核心原始碼的方法(但傾向於從應用層解決問題。

未有驗證。

發現啟動 weston 程式顯示的畫布不會被這個游標干擾。了解到系統的顯示有多個圖層,這裡我輸出的彩色條帶與閃爍游標應該在同乙個圖層,而 weston 的畫布在更高的圖層。在不關閉 weston 的情況下啟動我的彩色條帶程式,是看不到彩色條帶顯示的。

未有進一步研究。

留意到一種關閉和開啟終端游標閃爍的方法:

隱藏游標:echo -e "\033[?25l"

顯示游標:echo -e "\033[?25h"

於是想到把這個配置配到顯示器的虛擬終端裡去。在啟動我的彩色條帶程式前執行以下命令,顯示器就可以完美顯示彩色條帶,不受閃爍游標的影響了。(基於廣州創龍的 5728 板卡測試驗證。)

echo -e "\033[?25l" > /dev/tty1
問題解決!

2023年7月22日

後面跟驅動的同事討論這個問題,提到前面的思路三和四。他好奇去研究了下,發現可以從 uboot 設定相關引數,核心讀取生效。如下設定後,顯示器輸出就沒有虛擬終端了、登入提示了,自然閃爍游標也是沒有的。

setenv bootargs console=$ $ root=partuuid=$ rw rootfstype=$ fbcon=map:3'
這裡的原理是把 framebuffer console 對映到其他顯示層裡去,原本的 /dev/fb0 就沒有了這個 virtual console。

至於說傾向從應用層解決問題,這個辦法可以通過生成 boot.scr 檔案來配置實施。

2023年7月23日

嵌入式之顯示器總結

最近學習到了顯示器一節,涉及到一些不同的顯示器。在此對其使用及其特性做一簡單總結。本篇總結以以下幾點展開 一 常見的幾種顯示器型別及其特性 二 顯示器的幾種常見介面型別 三 顯示器的訊號傳輸模式 一 常見的幾種顯示器型別及其特性 這裡直接摘取秉火的參考資料了。二 顯示器的幾種常見介面型別 哈哈,這篇...

嵌入式實驗8 網路LED矩陣顯示器

實驗八 網路 led矩陣顯示器 日期 2016 6 22 一 實驗目的 1.複習socket程式設計 網路原理課 2.實現乙個網路訪問的led矩陣顯示器 二 實驗器材硬體 linux實驗板卡一塊 5v 1a電源乙個 microusb線一根 麵包板一塊 8x8led矩陣一塊 74hc595兩個 360...

嵌入式 linux 編譯

第二次換了編譯環境編譯時又提示 make 3 drivers video console vgacon.o 錯誤 1 在網上搜尋結果 根據資訊的大概意思是關於vga的支援問題,在這裡我直接把關於vga的配置選項去掉不選,即 在執行 make menuconfig 配置時 不選vga 驅動。devic...