pandaboard 安装_linux fb设备(pandaboard) | 学步园
fb設(shè)備主要作用是獲取幀buffer, 并設(shè)置,用于顯示。
fbmem是主要的框架層和抽象層。 每個具體的平臺的幀設(shè)備是在調(diào)用platform_driver_register注冊之后,由其probe函數(shù)調(diào)用create framebuffer將fbinfo設(shè)置給registered_fb(數(shù)組, 不同的fb設(shè)備有不同 的index)的, 在pandaboard中, 這個注冊函數(shù) 是omapfb_create_framebuffer。
一些平臺的幀設(shè)備比較復(fù)雜, 可以支持眾多的顯示設(shè)備。比如pandaboard, 支持dsi/lcd/hdmi等等。所有這些顯示設(shè)備都被掛在dss上(有這個linux的總線)。
這些具體的設(shè)備通過omap的dipc的dma傳送顯示數(shù)據(jù)。至于hdmi另外還有專門的audio的dma。這些dma從sram或者sdram中搬數(shù)據(jù)到最終的顯示設(shè)備。 而這些sram或者sdram就是所謂的幀buffer(幀緩沖區(qū))。 顯示設(shè)備保存在omapfb2_device的displays數(shù)組中(display all)。 最大10個。這個包括了omapfb_info中返回的display ys(ofbi->overlays[i]->manager->device, 亂取的名字, 為了和displa
all區(qū)別). display ys在display設(shè)備的driver注冊的時候被設(shè)置( dss_recheck_connections). 這里似乎發(fā)現(xiàn)如果同時連接lcd, hdmi, 將有一個會被覆蓋!!!在fb操作時, 操作的就是這個display ys, 比如hdmi。
fb設(shè)備通常有兩個幀緩沖區(qū)(由CONFIG_FB_OMAP2_NUM_FBS決定). 幀緩沖的size和物理首地址由def_vram參數(shù)在具體幀設(shè)備模塊加載的時候決定。從代碼看, 有幾個幀緩沖區(qū)就有幾個fb設(shè)備(device_create創(chuàng)建的設(shè)備節(jié)點)。
不同的fbinfo對應(yīng)不同的fb設(shè)備, 與設(shè)備文件的minor節(jié)點對應(yīng)。他們都在同一個omapfb2_device結(jié)構(gòu)下。 pandaboard最多有10個fbinfo.盡管有幾個不同的fbinfo, 但是從fb2display代碼來看, 所有的都應(yīng)該指向相同的display ys。
中斷都被加進dispc的中斷數(shù)組。這些中斷在dispc硬件中斷時被處理。
其中有個中斷就是vsync, 這個會被android4.2的surfaceflinger的hwcomposer使用。 vsync中斷處理函數(shù)調(diào)用vsync_work, 這個work會發(fā)kobject_uevent_env。 這樣用戶空間將知道這個vsync。
所有顯示設(shè)備(hdmi/lcd等)掛在omapdss總線。
omap_dss_init時, 注冊omapdss總線。并注冊omap_dss_driver驅(qū)動, 這個驅(qū)動的probe函數(shù)omap_dss_probe將調(diào)用omap_dss_register_device注冊所有相關(guān)的設(shè)備, 包括顯示設(shè)備。這些設(shè)備是在平臺初始化的時候加到omap_dss_board_info的(arch/arm下), omap_dss_register_driver注冊相關(guān)的driver。這些設(shè)備將在omapfb_probe時加到omapfb2_device的display數(shù)組。
ofbi->num_overlays = 1;: 僅有一個overlay
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的pandaboard 安装_linux fb设备(pandaboard) | 学步园的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lokijs可以用mysql_JavaS
- 下一篇: linux 查看文件哈希码,使用linu