1、编译layer_demo常见问题
1)修改display_fb_request 图层属性内容,显示如下stray错误?

解决办法:代码文件存在中文的空格或者字符。去掉空格、中文字符。

2、用户空间开发显示单个图层的demo:
/***************************************************
2017.8.15  计算左上角点的坐标
s32 fb_draw_colorbar(char * base, u32 width, u32 height, struct fb_var_screeninfo *var)
{
    u32 x = 0, y = 0;
    char* addr1 = 0;
    if (!base)
        return -1;

    /*do not draw colorbar when boot sync*/
    if (g_disp_drv.para.boot_info.sync == 1)
        return 0;
    height /= 2;
    printk("var->bits_per_pixel=%d\n", var->bits_per_pixel);
    if (var -> bits_per_pixel == 24){
        for (x = width/4; x < (width * 3) / 4; x++)
            for (y = height / 4; y < (height * 3) / 4; y++) {
                addr1 = base + 3 * (width * y + x);
                *(addr1 + 0) = 0xff;
                *(addr1 + 1) = 0;
                *(addr1 + 2) = 0;
            }
            
    }
    return 0;
}

/***************************************************
2017.8.16  通过改变图层的内容来显示图层。
s32 fb_draw_colorbar(char * base, u32 width, u32 height, struct fb_var_screeninfo *var)
{
    u32 x = 0, y = 0;
    char* addr1 = 0;
    if (!base)
        return -1;

    /*do not draw colorbar when boot sync*/
    if (g_disp_drv.para.boot_info.sync == 1)
        return 0;
    height /= 2;
    printk("var->bits_per_pixel=%d\n", var->bits_per_pixel);
    //改变图层内容,计算左上角坐标并加上偏移量,填充到相应的地址(RGB)
    if (var -> bits_per_pixel == 24){
        for (x = width/4; x < width /2; x++)
            for (y = height / 4; y < height /2; y++) {
                addr1 = base + 3 * (width * y + x);
                *(addr1 + 0) = 0xff;
                *(addr1 + 1) = 0;
                *(addr1 + 2) = 0;
            }
    }
    
    if (var -> bits_per_pixel == 24){
        for (x = width / 2; x < (width * 3) /4; x++)
            for (y = height / 4; y < height /2; y++) {
                addr1 = base + 3 * (width * y + x);
                *(addr1 + 0) = 0;
                *(addr1 + 1) = 0xff;
                *(addr1 + 2) = 0;
            }
    }
    
    if (var -> bits_per_pixel == 24){
        for (x = width / 4; x < width /2; x++)
            for (y = height / 2; y < (height * 3) /4; y++) {
                addr1 = base + 3 * (width * y + x);
                *(addr1 + 0) = 0;
                *(addr1 + 1) = 0;
                *(addr1 + 2) = 0xff;
            }
    }
    
    if (var -> bits_per_pixel == 24){
        for (x = width / 2; x < (width * 3) /4; x++)
            for (y = height / 2; y < (height * 3) /4; y++) {
                addr1 = base + 3 * (width * y + x);
                *(addr1 + 0) = 0xFF;
                *(addr1 + 1) = 0xFF ;
                *(addr1 + 2) = 0xFF;
            }
    }
    
    return 0;
}

/***************************************************
2017.8.17  改变图层属性来显示图层
//通过改变图层属性来改变相应的显示区域
//output_height&output_width is the device whose size . this  is output of display 
//显示区域的位置,左上角位置
config.info.screen_win.x = fb_para->output_width;      
config.info.screen_win.y = fb_para->output_height;
//**显示区域的宽高(在屏幕上的)**//
            config.info.screen_win.width = (0 == fb_para->output_width)? src_width :(fb_para->output_width/2);   
            config.info.screen_win.height = (0 == fb_para->output_height)? src_height :(fb_para->output_height/2);

            config.info.mode = LAYER_MODE_BUFFER;
            config.info.alpha_mode = 1;
            config.info.alpha_value = 0xff;
//通过改变裁减区域来表示需要显示的内容
            //crop is what have draw in layer . src_width is source of fb
            //内存中裁减区域的左上角位置
            config.info.fb.crop.x = ((long long)(src_width/4)) << 32;     
            config.info.fb.crop.y = ((long long)(src_height/2)) << 32;
            //内存裁减区域的大小(即宽高)
            config.info.fb.crop.width = ((long long)(src_width/4)) << 32;        
            config.info.fb.crop.height = ((long long)(src_height/4)) << 32;

            var_to_disp_fb(&(config.info.fb), &(info->var), &(info->fix));
            config.info.fb.addr[0] = (unsigned long long)info->fix.smem_start;
            config.info.fb.addr[1] = 0;
            config.info.fb.addr[2] = 0;
            config.info.fb.flags = DISP_BF_NORMAL;
            config.info.fb.scan = DISP_SCAN_PROGRESSIVE;
            config.info.fb.size[0].width = fb_para->width;
            config.info.fb.size[0].height = fb_para->height;
            config.info.fb.size[1].width = fb_para->width;
            config.info.fb.size[1].height = fb_para->height;
            config.info.fb.size[2].width = fb_para->width;
            config.info.fb.size[2].height = fb_para->height; 
            config.info.fb.color_space = DISP_BT601;
显示结果:1)单个图层全屏显示(设置内容)

2)多个图层显示(设置属性)

LED显示驱动(八):显示驱动调试问题相关推荐

  1. 永嘉原*厂-VK1Q68D 是低功耗LED显示/数码管显示驱动IC,带键盘扫描电路,4~7 位,10~13 段 显示,QFN24 4*4MM超小体积封装

    型号:VK1Q68D 品牌:VINKA/永嘉微电 封装:QFN24L(4*4MM) 概述 VK1Q68D 是1/5-1/8 占空比的 LED 显示控制驱动电路.由 10 根段输出.4 根栅输出.3 根 ...

  2. zlg72128数码管驱动管理显示芯片

    数码管驱动管理显示芯片框图 数码管驱动管理显示芯片概述 ZLG72128 是广州周立功单片机科技有限公司自行设计的数码管显示驱动键盘扫描管理芯片.能够直接驱动 12 位共阴式数码管(或 96 只独立的 ...

  3. USB摄像头驱动--LCD显示摄像头图像(附Makefile分析)

    对于一个应用程序,最重要的是明白目的是什么:将摄像头的数据解析出来,按一帧一个图片的方式将数据传到LCD的Framebuffer中去(如果LCD没有自动将Framebuffer中的数据刷到LCD上还需 ...

  4. Arduino 驱动TM1638显示十位的共阳数码管

    Arduino 驱动TM1638显示十位的共阳数码管 二话不说先上图: 这个是电路图,下面我在上传TM1638的手册 哈哈太乱了先凑合着看吧!效果是实现了,画了板还没有发过来. 我也不多说什么了上代码 ...

  5. [SPI+DMA] 驱动WS2812B显示时钟

    [SPI+DMA] 驱动WS2812B显示时钟 实现原理 本人一个大学萌新,偶然间发现RGB时钟这神奇的玩意,就想试试.目前初步实现时钟显示,第一次写博客,只是为了记录自己的学习成果方便以后查看,大家 ...

  6. 安装ST LINK驱动后显示成功,但无法识别问题的解决办法之一

    如果你遇到:STM32安装ST LINK驱动后显示成功,但会显示各种"NO ST-LINK detected",或者用XCOM显示没有搜到接口以及设备管理器没有显示驱动的情况,而且 ...

  7. 计算机没有安装显卡驱动能显示桌面吗,电脑安装了显卡驱动后显示不了怎么处理...

    有时候电脑久了没有使用了,就给电脑更新了一些电脑驱动,结果更新显卡驱动时出现问题了.电脑屏幕不行怎么办呢?下面小编给大家讲解一下关于电脑安装了显卡驱动后显示不了的解决方法,希望大家喜欢! 电脑安装了显 ...

  8. windows7系统无法开机显示丢失volmgrx.sys驱动文件

    windows7断电后,显示丢失volmgrx.sys驱动文件,只需要下载该文件,通过pe替换文件,可以开机. 第一步.获取丢失文件,在下面链接中,可以下载到相应文件.要根据自己的系统版本,下载对应的 ...

  9. stm32驱动点阵屏显示图片

    这次分享一个stm32驱动点阵屏显示图片 只要能显示字符就能显示图片. 用到的函数有 取模软件配置 取模软件和我一样的配置就行,记得选择图形模式 因为我需要动态显示,所以定义了一个数组指针,里面的成员 ...

  10. 重装window7系统显示找不到驱动、装完系统后不显示网卡、USB没反应

    重装win7系统,可以参考该文 使用该文中方法1,制作了Upan系统,通过Upan中系统重装系统. 问题1:重装的过程中显示找不到驱动? //原因是找不到插入的U盘的驱动???----原因待研究. 解 ...

最新文章

  1. 元素的   is_enable()、is_displayed()和is_selected()
  2. CopyCat 代码克隆检测发布,剑指开源软件抄袭
  3. python 装饰器 参数-python函数装饰器之带参数的函数和带参数的装饰器用法示例...
  4. linux学习(2)——文件和目录管理
  5. [HOW TO]-centos环境搭建opengrok笔记
  6. 如何在Slack里连接微软One Drive
  7. 机器学习入门学习视频和书籍(笔记保存)
  8. php计时器每过24小时结果加一倍,单片机时钟24小时慢了21.5秒 如何修改初值校正呢?...
  9. 12000.PAC19XX电源监测芯片
  10. Git异常:fatal: V1.0 cannot be resolved to branch.
  11. 已解决:home目录下ubuntu文件夹被误删。。。。
  12. NHibernate3.0里各个dll的用处和简单说明【转】
  13. 16 分频 32 分频是啥意思_一天一个设计实例任意分频器设计
  14. php实现读写ic卡,diy用PIC单片机实现的IC卡读写器
  15. js 获取屏幕高宽_js获取屏幕高度宽度
  16. h5打开麦克风权限录音_HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能...
  17. 信鸽推送(Android和iOS):详细流程+问题解决
  18. Geoserver——矢量切片1
  19. Beyond Compare实现Class文件对比
  20. springboot+thymeleaf实现邮件群发

热门文章

  1. network-opt 优化网络拓扑结构
  2. javaWeb企业分布式、互联网、云开发平台-Jeesz
  3. 在Visual Studio 2015中使用Grunt、Bowe
  4. Progressive Web App:模仿原生应用的Web应用
  5. Java 接口中使用数组缺点的理由
  6. 2016二级c语言成绩查询,2016年12月计算机二级C语言测试及答案
  7. sql alwayson群集 registerallprovidersip改为0_技术分享 | 从 MySQL 8.0 复制到 MySQL 5.7
  8. matlab聚合矩阵,c#和ILNumerics与Matlab中最有效的矩阵聚合方式
  9. 排序之快速排序(递归)
  10. 【Linux】文件描述符与重定向