OMAP3530显示输出控制

 本文转自ericlulu2012的博客http://ericlulu.blog.163.com/blog/static/177274068201022395220877/

 

1. Kernel的启动参数可以控制显示输出的通道:

a) DVI(LCD)

set bootargs 'console=ttyS2,115200n8 root=/dev/mmcblk0p2 rootfstype=ext3 rw rootwait vram=24M omapfb.vram=0:8M,1:8M,2:8M omapfb.mode=dvi:1024x640MR-16@60 omapdss.def_disp=dvi MEM=200M'

b) 或者是输出到TV(ntsc, PAL)

set bootargs 'console=ttyS2,115200n8 root=/dev/mmcblk0p2 rootfstype=ext3 rw rootwait vram=24M omapfb.vram=0:8M,1:8M,2:8M omapfb.mode=tv:pal omapdss.def_disp=tv MEM=200M '

2. 采用DVI输出时可以指定framebuffer的分辨率(上面是1024x640)和颜色深度(16bpp);采用TV输出时不同的制式(PAL,或者NTSC)有其固定的分辨率,在程序中已经写死,颜色深度目前也采用16bpp。

3. Framebuffer的参数最终可以体现在overlay的信息中

/sys/devices/platform/omapdss/overlay0/ 该目录下有overlay0对应的framebuffer的输入图像分辨率,输出图像分辨率,屏幕宽度,对应的输出通道名称,使用的管理器等。

4. Framebuffer和显存分辨率

Framebuffer中的图形数据显示器被更新到omap3530的显示控制器的显存中,该显存可以容纳2048x2048的32bpp的数据。通常情况下我们将显存的分辨率设置和framebuffer相同,这样可以让framebuffer中的数据显示到设备上后是整屏的。但在某些情况下,我们需要将多个显示通道(GFX,VIDEO1, Video2)的数据叠加显示,达到其他显示效果,有个可能是framebuffer的分辨率与显存的分辨率不一致。这就需要分别设置framebuffer的分辨率和显存的分辨率,以及framebuffer中的数据在显存中的位置。

5. Kernel启动参数中设置的分别率分别传给了framebuffer和显存。我们可以在这个参数传给framebuffer时修改为该framebuffer需要的值。

具体可以修改:

/drivers/video/omap2/omapfb/omapfb-main.c:omapfb_fb_init, 该函数调用get_resolution来获取显存的分辨率来作为framebuffer的分辨率:

display->get_resolution(display, &w, &h);

我们直接修改为不使用获取的分辨率,而使用我们想要的分辨率即可。

另外,为了支持opengl el的双缓冲机制,虚拟framebuffer大小高度是输出高度的3三倍:

var->yres_virtual = var->yres*3; // for double buffer: opengl flip mode

6. 我们可以在系统初始化完成之后调用系统接口来设置显存的分辨率

void dispc_set_lcd_timings(struct omap_video_timings *timings)

该接口需要指定输出图形的分辨率以及时序参数。

7. 调整framebuffer中的图形输出到显存中的位置

即:输出到设备上的位置:

直接调整overlay的显示位置即可:

> cd /sys/devices/platform/omapdss/overlay1 (调整fb1的输出位置)

> ls

enabled input_size name position

global_alpha manager output_size screen_width

> cat position

0,0

> echo 30,30 > position (这就调整了视频输出到显示设备上的位置)

> cat position

30,30

> cat output_size

720,576

> cat screen_width

720

> echo 640,480>output_size (将视频缩小到640X480的分辨率,采用此方法可以对图形进行放大缩小)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值