当前位置: 首页 > news >正文

广州网站设计建设/seo整站优化什么价格

广州网站设计建设,seo整站优化什么价格,跨境电商主要平台有哪些,做网站的手机软件本文介绍了s3c6410中的framebuffer,参考代码为Linux2.6.28。网上介绍framebuffer的文章很多,内核代码中也有关于framebuffer的文档,所以本文只介绍一些其它文章较少介绍的部分。1. Overview在嵌入式系统中,会有一块内核空间保…

本文介绍了s3c6410中的framebuffer,参考代码为Linux2.6.28。网上介绍framebuffer的文章很多,内核代码中也有关于framebuffer的文档,所以本文只介绍一些其它文章较少介绍的部分。

1.     Overview

在嵌入式系统中,会有一块内核空间保存LCD上每一个象素需要被显示的值。系统运行时,CPU的显示控制器会自动从这块内存读取内容,然后发送到LCD显示屏。这块内存就叫作framebuffer。对程序来说,通过修改framebuffer中的内容,就可以控制LCD的显示。

 

Linux的GUI系统都运行在用户空间,不能直接访问内核空间。所以就需要一个framebuffer驱动,将内核空间的framebuffer映射到用户空间,方便GUI的访问。

对framebuffer的典型操作如下所示:

l         fd = open(fb, …);

l         ioctl(fb, …);               // 设置framebuffer,比如象素的格式等。

l         pBuffer = mmap(fb, …);    // 映射framebuffer到用户空间

l         。。。                      // 像读写内存一样操作pBuffer

 

 

framebuffer与LCD接口之间的通路有两种,分别是DMA和local bus,一般都会将通路设置为DMA以提高性能。设置成DMA时,注意不能用kmalloc分配framebuffer,应使用dma_alloc_writecombine函数分配能被DMA访问的内存空间,对应代码在s3cfb_map_video_memory函数中。

 

s3c6410支持多个层叠窗口(5个),显示的时候,这些窗口会被叠加显示。在这里,framebuffer的概念变成和窗口关联,而不是和LCD显示屏关联。每个窗口对应一个framebuffer,所以,s3c6410中可以有5个framebuffer(不考虑硬件双缓冲的情况)。关于窗口的概念在s3c6410的芯片手册中有介绍。

2.     双缓冲

双缓冲是指framebuffer的大小两倍于LCD的大小,可将其称为frame1和frame2。LCD显示frame1的内容时,GUI在后台绘制frame2;LCD显示frame2时,GUI在后台绘制frame1。

有多种实现双缓冲的方法,比如硬件切换、virtual screen等。

 

硬件实现

s3c6410的芯片手册中提到它最多支持5个窗口叠加。其中win0和win1支持硬件双缓冲。win0对应的寄存器为

l         VIDW00ADD0B0                               // win0的buffer0起始地址

l         VIDW00ADD0B1                               // win0的buffer1起始地址

l         VIDW00ADD1B0                               // win0的buffer0结束地址

l         VIDW00ADD1B1                               // win0的buffer1结束地址

要实现win0的buffer0/1之间的切换,只需要设置WINCON0寄存器的BUFSEL位即可。显示控制器会根据VIDW00ADD0B0和VIDW00ADD0B1的值,自动切换是使用buffer0还是buffer1作为显示内容。

win1对应的寄存器与win0类似。

代码中对应的切换命令为IOCTL S3CFB_CHANGE_REQ。

 

Virtual Screen

virtual screen的概念在s3c6410_rev12.pdf的第485页,figure 14-10。通过设定framebuffer的xoffset和yoffset,可以设置framebuffer被LCD显示的x、y坐标。因此,可以定义frame1的坐标为(0,0),frame2的坐标为(0,<LCD’s yres>)。通过改变x/y的坐标,可以在LCD上切换frame1、frame2。

在代码中,能改变坐标的IOCTL操作为 FBIOPAN_DISPLAY。

 

FBIOPAN_DISPLAY通过改变framebuffer的起始地址实现双缓冲,对应的函数为s3cfb_set_fb_addr。这种机制被Android采用。

3.     alpha与colorkey

s3c6410支持硬件alpha操作和colorkey操作。

alpha操作用于实现图形渐变效果,以及半透明效果等等。

colorkey操作可以在融合两个窗口时过滤掉其中一个窗口的某一种特定颜色。因为GUI在显示图象时都是通过画矩形实现,所以这个功能在显示非矩形图像(比如圆形)时很有用。假设要显示圆形图案,可以把圆形放进一个矩形,然后矩形的剩余部分填充一个背景色,并把这个背景色指定为colorkey。这样,显示的时候自动将colorkey指定的颜色过滤,屏幕上就能显示出那个圆形了。

不管是alpha操作还是colorkey操作,都有对应的软件模拟实现。网上类似的代码有很多,不再赘述。

4.     窗口平移与virtual screen平移

窗口平移与virtual screen平移是两个容易被混淆的概念,下面简单介绍一下:

窗口平移

s3c6410硬件上支持5个窗口,每一个窗口都可以显示在LCD的不同位置。所以窗口平移就是指硬件支持的窗口在LCD上的移动。

窗口平移由以下寄存器控制:

S3C_VIDOSD[0-4]A

S3C_VIDOSD[0-4]B

在framebuffer的驱动中,可以通过以下IOCTL控制窗口平移:

S3CFB_OSD_MOVE_LEFT

S3CFB_OSD_MOVE_RIGHT

S3CFB_OSD_MOVE_UP

S3CFB_OSD_MOVE_DOWN

另外SET_OSD_INFO也可以用于控制平移。内核中与窗口平移对应的函数为s3cfb_set_win_position。

virtual screen平移

virtual screen的概念在上面介绍双缓冲的地方提到过,具体可查阅芯片手册。这里的平移指的是显示内容的平移,可以想象成通过拖动GUI中的滚动条造成的效果。

virtual screen的平移由寄存器VIDWxxADD[0-1]实现,内核中对应函数为s3cfb_set_fb_addr,用户程序可以通过调用FBIOPAN_DISPLAY控制。

 

目前s3c6410的framebuffer实现中,窗口平移和virtual screen平移都由fb_var_screeninfo中的xoffset和yoffset控制,所以使用时要小心。另外FBIOPAN_DISPLAY的实现代码中没有考虑x轴平移,只有y轴平移。

 

http://www.lbrq.cn/news/962407.html

相关文章:

  • 东营网站建设价格/新疆今日头条新闻
  • 有没有好一点的网站/免费的网站推广
  • 青海省住房和建设门户网站/网站设计就业
  • 做字幕的网站/网站点击软件排名
  • 上海企业招聘网/seo资讯推推蛙
  • 番禺网站优化/山东百度推广代理
  • 营销型网站建设要懂代码吗/网络运营推广
  • 陕西做网站公司有哪些/百度推广网站一年多少钱
  • 做网站能用python吗/郑州seo优化哪家好
  • 如何让百度新闻收录网站文章/seo引擎优化服务
  • 企业门户网站建设 北京/线下课程seo
  • 开发网站网络公司/近两年成功的网络营销案例
  • 自助推广平台/广州优化营商环境条例
  • 南京哪些公司做网站/百度推广账号登录入口
  • 免费外贸b2b/宁波如何做seo排名优化
  • 淘宝网站开发源码/seo国外推广软件
  • 宜春市住房和城乡建设局网站/排名
  • 南昌做网站比较好的公司有哪些/微商怎么做推广加好友
  • 郑州做网站云极/磁力bt种子搜索神器
  • 网站开发管理系统有哪些/2345网址导航官网
  • godaddy怎么建设网站/百度登录个人中心
  • 深圳那家做APP网站的最好/营销培训内容有哪些
  • 拿别的公司名字做网站/公司优化是什么意思
  • 网站设计网/企业网络营销推广方案策划
  • 如何做好网络销售技巧/网站seo的内容是什么
  • 网站策划师有前途吗/流量推广怎么做
  • php 微信 网站建设/百度搜索app下载
  • 用阿里云服务器做盗版小说网站吗/wordpress免费建站
  • 重庆网站推广公司电话/常州seo招聘
  • 法院司法公开网站建设情况/搜索引擎排名优化方案
  • 区别下IO多路复用,reactor,事件循环(EventLoop),Epoll这几个的概念以及之间的关系
  • 【PTA数据结构 | C语言版】根据后序和中序遍历输出前序遍历
  • FATFS文件系统原理及其移植详解
  • 【云原生网络】Istio基础篇
  • 【PTA数据结构 | C语言版】根据前序序列重构二叉树
  • 【字节跳动】数据挖掘面试题0019:带货直播间推荐:现在有一个带货的直播间,怎么把它精准地推送给有需要的用户