hi3518e摄像头hifb开发指南_第1页
hi3518e摄像头hifb开发指南_第2页
hi3518e摄像头hifb开发指南_第3页
hi3518e摄像头hifb开发指南_第4页
hi3518e摄像头hifb开发指南_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

非经本公司,任何单位和个人不得擅自摘抄、本文档内容的部分或全部,并不得以任何形式。 、海思和其他海思商标均为市海思半导体的商标。做任何明示或默示的或保证。 客户服务传真客户服务邮箱 LinuxFramebufferLinuxFramebuffer基本功能的基础上,还扩展了一些图形层控制功能,如层间Alpha、设置原点等。本文档主要介绍HiFB模块加载和第一次如何开发应用。、与与

Hi3516AHi3516DHi3518EHi3518EHi3516CHi3519Hi3519

员轻微或中等。052016-05-042015-12-032015-08-022015-06-1.22.2012014-12-00B012014-09-目前 HiFB简 HiFB与LinuxFramebuffer对 图1-1HiFB体系结 图1-20buffer示意 图1-31buffer示意 图1-42buffer示意 图1-5压缩buffer示意 图3-1HiFB的开发流 表1-1Hi3516A/Hi3518EV200/Hi3519V100/Hi3519V101FB设备文件、图形层以及输出设备的对应关系2表3-1HiFB的开发阶段任务表 HiFB

LinuxFramebufferLinuxFramebuffer的colorkeycolorkeymaskAlpha、原点偏移等扩展功能。态态HiFBLinuxFramebufferLinuxFramebuffer是一个子设备号对应一个显卡,HiFB则是一个子设备号对应一个叠加图形层,HiFB可以管理多个叠加图形层,具体个数和相关。对于Hi3516A/Hi3518EV200/Hi3519V100/Hi3519V101,HiFB最多可以管理1个叠加图形层:图形层10(简称SD0)。图形层与输出设备的关系如表1-1所示。FB上LinuxFramebuffer提供同步时序、扫描方式、同步信号组织等控制方式(需要硬件支持,将物理显存的内容显示在不同的输出设备(PC显示器、TV、LCD等)上。目前HiFB不支持同步时序、扫描方式、同步信号组织等控制方式。设置当前叠加图形层的起始位置(相对于屏幕原点的偏移设置和获取当前叠加图形层的显示状态(显示/隐藏bufferHiFBFB的扩展模式。在对系统性能、0buffer(快,但是用户会看到图形的绘制过程。示意如图1-2所示。1buffer(需求的一种折中考虑。但是会有锯齿。示意如图1-3所示。2效果最好。示意如图1-4所示。包含以下:−−两者的区别在于后面的每次刷新操作都要等待到绘制的内容真正显示后才返回 用 上文提到的三个分辨率:画布分辨率(即用户绘制buffer的分辩率、显存分辨率、屏幕显示分辨率。绘图内容从用户绘制buffer到显示buffer的过程支持缩放,也支持抗闪烁;而从显示buffer到显示设备的过程不支持缩放,也不支持抗闪,所以显存分辨率与屏幕显示分辨率总是相

buffer进行压缩,生成压缩数据,然后基于压缩数buffer数据不发生变化时,图形层每次都会载入压缩之后

内存侦测功能,即图形层对显示buffer数据是否发生变化进行侦测。该功能只能0到时,压缩功能被启动,对压缩数据进行更新,避免用户进行显示的refresh操作。

LinuxFramebuffer驱动(versa)不支持在运行期间更改分辨率、颜色深度、时序等显示属性。对此,Linux系统提供一种机制,允许在内核启动或模块加载时,通过参数将相应选项传递给LinuxFramebuffer。可以在内核加载器中配置内核启动参数。HiFB驱动在加载时只能设置物理显存的大小,不允许设置其它选项。如果没有加载,可以先用“modprobefb”加载fb.ko,然后再加载hifb.ko。HiFBHiFB可使用参数选项之间用逗号“,选项和选项值之间用冒号“:vram0_size~vram3_size0~3其中,vramn_size:xxxn配置xxxKVramn_size*1024>=xres_virtual*yres_virtual*其中:xres_virtual*yres_virtual是虚拟分辨率,bppvramn_size*1024>= ywidth* yHeight*bpp*vram0_size1280*720*4*27200Kvramn_size必须是PAGE_SIZE(4Kbyte)的倍数,否则HiFB驱动强制将其设为PAGE_SIZE的参数存将在无名的mmz上分配。

哪个mmz上分配,并且为每个叠加图形层分配适当的显存。HiFB驱动的模块文件为hifb.koARGB15550720x576x2=829440=insmodhifb.ko="hifb:vram0_size:810,vram2_size:0"。如果采用的是doublebuffer的方式,则需要乘以2,即:720x576ARGB1555,则两个叠加层需要的最小显存都为720x576x2=829440=810K,配置参数如下:insmod ="hifb:vram0_size:810,vram1_size:

HiFB3-1步骤2.调用ioctl函数设置HiFB的象素格式以及屏幕等参数(详细内容请参见《HiFBAPI参考》)。3.ioctlHiFBioctl函数也4.mmap5.HiFB提供的双缓冲页翻转等6.munmap7.close程序能够正确执行,推荐先设置HiFB的可变信息fb_var_screeninfo,再获取HiFB的固定信息HiFB3-1本实例利用PAN_DIS #include<stdio.h>#include#include<sys/ioctl.h>#include<sys/mman.h>#include<linux/fb.h>#include"hifb.h"#define #define #defineIMAGE_SIZE #defineIMAGE_NUM #define staticstructfb_bitfieldg_r16={10,5,staticstructfb_bitfieldg_g16={5,5,staticstructfb_bitfieldg_b16={0,5,staticstructfb_bitfieldg_a16={15,1,int{intfd;inti;structfb_fix_screeninfofix;structfb_var_screeninfovar;unsignedchar*pShowScreen;unsignedchar*pHideScreen;HIFB_POINT_SstPoint={40,112};FILEVO_PUB_ATTR_SstPubAttr={0};charimage_name[128];/*0.openVOdevice0/*……initializetheattributesforstPubAttr*/HI_MPI_VO_SetPubAttr(0,&stPubAttr);/*1.openFramebufferdeviceoverlay0*/fd=open("/dev/fb0",O_RDWR);if(fd<{printf("openfb0failed!\n");return-1;}/*2.setthescreenoriginal{printf("setscreenoriginalshowpositionfailed!\n");return-1;}/*3.getthevariablescreenif(ioctl(fd,FBIOGET_VSCREENINFO,&var)<{printf("Getvariablescreeninfofailed!\n");return-}/*4.modifythevariablescreenthescreensize:thevirtualscreensize:IMAGE_WIDTH*(IMAGE_HEIGHT*2)thepixelformat:ARGB1555var.xres=var.xres_virtual=IMAGE_WIDTH;var.yres=IMAGE_HEIGHT;var.yres_virtual=var.transp=g_a16;var.red=g_r16;var.green=g_g16;var.blue=g_b16;var.bits_per_pixel=16;/*5.setthevariableif(ioctl(fd,FBIOPUT_VSCREENINFO,&var)<{printf("Putvariablescreeninfofailed!\n");return-}/*6.getthefixscreenif(ioctl(fd,FBIOGET_FSCREENINFO,&fix)<{printf("Getfixscreeninfofailed!\n");return-}/*7.mapthephysical memoryforuseruse*/pShowScreen=mmap(NULL,fix.smem_len,PROT_READ|PROT_WRITE,MAP_SHARED,fd,pHideScreen=pShowScreen+IMAGE_SIZE;memset(pShowScreen,0,IMAGE_SIZE);/*8.loadthebitmapsfromfiletohidescreenandsetpandis ythehidescreen*/for(i=0;i<IMAGE_NUM;{sprintf(image_name,IMAGE_PATH,i);fp=fopen(image_name,"rb");if(NULL==fp){printf("Load%sfailed!\n",image_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论