日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

V3S中换2.0寸LCD时MINIGUI无显示的问题的解决过程

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 V3S中换2.0寸LCD时MINIGUI无显示的问题的解决过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

故障現象:minigui無法顯示界面,消息系統正常。


排查過程:

1.修改V3S初始化代碼,把代碼中通過讀配置文件獲取的參數改成固定的320*240,這樣就自動會使用320-240配套的配置文件了。發現故障依舊。

void getScreenInfo(int *w, int *h)
{
static int swidth = 0;
static int sheight =0;
if(swidth == 0 ){
char *env = NULL;
char mode[32]={0};
db_msg(" ");
if ((env=getenv("MG_DEFAULTMODE")) != NULL) {
strncpy(mode, env, strlen(env)+1);
}
db_msg(" ");
char *pW = NULL;
char *pH = NULL;
pW = strstr(mode, "x");
*pW = '\0';
swidth = atoi(mode);
*pW = 'x';
pH = strstr(mode, "-");
*pW = '\0';
sheight = atoi(pW+1);
*pW = '-';
}




//swidth = 320;
//sheight = 240;
?
*w = swidth;?
*h = sheight;


printf("\n\n..................width:%d height:%d........................\n\n", swidth, sheight);

}



2.在1的基礎上,簡化程序,只讓程序中運行minigui,且顯示一個最簡單的窗口,還是不行。


3.單獨寫了幾個測試程序,直接訪問fb文件,發現能夠正常顯示,在pc端做實驗時,要用ctrl+alt+F1切換到字符界面才行,測試完后用+F5切換回圖形界面。


4.仔細看了調試信息,發現內核驅動打印出“invallid argb format.........”的調試信息,經過查看驅動代碼和minigui的源代碼,最后定位故障在minigui的初始化函數中,發現初始化函數會讀取環境變量:MG_DEFAULTMODE,這個環境變量位于文件root/init.sun8i.rc中,配置為:export MG_DEFAULTMODE "320x480-32bpp",而不是"320x240-32bpp",導致初始化異常。

5.通過手工方式修改MG_DEFAULTMODE為"320x240-32bpp",在命令下執行:export MG_DEFAULTMODE=320x240-32bpp,顯示回復正常。

6.正式打包時,把這個文件修改為正確的參數,問題徹底結局。


總結:開始以為只要初始化時使用對應的配置文件就可以了,沒想到minigui底層還會調用這個環境變量。

總結

以上是生活随笔為你收集整理的V3S中换2.0寸LCD时MINIGUI无显示的问题的解决过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。