前一陣子,由於專案需求,需要把tft屏的輸出方案改為dlp,這樣能提高螢幕亮度。原來看tft屏的輸出使用的是lvds,發現dlp的輸入hdmi,本來imx6是有hdmi介面的,可是damo板上這個介面並沒有引出了,沒辦法無奈之下只能尋求其他辦法,於是買了個轉接板,把lvds訊號轉為hdmi訊號。這個板可不是那麼好找的,**上找了好久,發現不能用,說到hdmi的適配,中間又有一些坑,現在的顯示器基本上都帶有edid適配的,然而一些老的顯示器或者顯示裝置就沒有edid,起碼這款dlp-dlp1200就沒有,**上買的轉接板不是不行,是它的預設轉換出的格式不支援dlp,然而我們接顯示器確實好的,在接回dlp後也是好的,說明它適配了edid設為預設輸出。由於是**上買的板子,我們又拿不到原始碼,所以沒法修改hdmi的預設輸出,總不能給客戶演示時還帶個顯示器去適配後再接回dlp吧,因此我們又聯絡轉換晶元原廠,好不容易才忽悠到一塊可以用的damo轉接板(預設就支援了dlp),說多了,言歸正傳。
在拿到轉換板後,我們按照標準的vesa格式設定了lvds的輸出,imx6裝置樹原始碼如下:
「` mxcfb1: fb@0 ;
display-timings ;
}; };
「` 然後我們在kernel_comline裡面設定video=mxcfb0:dev=ldb,bpp=32
這樣我們就可以在lvds介面中輸出了。
然後我們連線在dlp發現任然不能顯示,但是我們接顯示器就能顯示,而且我們電腦的hdmi輸出給dlp也是可以的,這是神馬?之後我們修改了各種引數,發現還是不行。這肯定是訊號不對啊,但是hdmi資料是經過編碼的,而且是差分訊號,我們沒有裝置測量啊,不經意之間我們發現顯示器的輸出頻率莫名其妙的被改掉了,不在是31.5mhz,用示波器測量時鐘訊號發現是38.8mhz。我們繼續修改引數,看時鐘設定是否能正常,經過設定幾個引數後我們發現,高於38.8mhz的都能正常設定,低於38.8mhz的都被預設設為38.8mhz,時鐘沒有將下來,這是為什麼?
幾番周折,我們終於發現問題所在,在ldb的時鐘訊號上之前用的是pll2,這個時鐘源沒有做更多的分頻,所以需要乙個更低的分頻時鐘源-pll5
pll5在晶元手冊中的說明:
修改裝置樹檔案:
&clks ;
這樣修改後:lvds輸出設定就可以生效了,直接連線dlp也能正常顯示。
imx6 移植人臉識別
最近接到任務要移植人臉檢測,其他步驟網上都有,一步步做就好了,就是在載入haarcascade frontalface alt2.xml的時候,出現 root dchip linux qt opencv 2.4.13.1 modules core src persistence.cpp 5008 e...
IMX6清空framebuffer操作
static void fb clear int fb unsigned char fb mem fb open dev fb0 o rdwr fb mem mmap null,1920 720,prot read prot write,map shared,fb,0 memset fb mem,0...
socat 交叉編譯 imx6
1,為了使用linux虛擬串列埠的功能,選擇移植乙個socat工具。2,設定交叉編譯工具路徑 export path path usr local arm gcc linaro arm linux gnueabihf 4.9 2014.07 linux bin 3,解壓,配置 tar xzvf so...