您尚未登录。

楼主 #1 2020-09-13 18:27:45

小果果
会员
注册时间: 2020-05-10
已发帖子: 61
积分: 58.5

fb0用mmap申请内存刷屏发现分辨率不对

如题
屏幕是480*272的电阻屏,刷屏为红色,但只有一大半是红色,直接用Qt的弄ui界面设置480*272运行却没问题。
参考了网上的文章,以下是我修改后的代码,不知道是何处出了问题?
-----------------------------------------------------------------------------------------------------------------

#include <QCoreApplication>
#include <QDebug>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    argc = argc;
    argv = argv;

    qint32 fd;
    quint32 *mmaped = NULL;

    fd = open("/dev/fb0",O_RDWR);
    if(fd < 0 )
    {
        qDebug()<<"open fb0 fail";
        return 1;
    }
    /* 将文件映射至进程的地址空间 */
    mmaped = (quint32 *)mmap(NULL,480*272*4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
    close(fd);
    if(mmaped == ((quint32 *)-1))
    {
        qDebug()<<"mmap fail";
        return 1;
    }
    for(quint32 i=0;i<480*272;i++)
    {
        mmaped[i] = 0x00ff0000;
    }

    msync(mmaped,480*272*4,MS_SYNC);

    return 0;
}

-----------------------------------------------------------------------------------------------------------------

离线

楼主 #3 2020-09-13 19:23:35

小果果
会员
注册时间: 2020-05-10
已发帖子: 61
积分: 58.5

Re: fb0用mmap申请内存刷屏发现分辨率不对

我思故我在 说:

用代码获取像素深度,有可能不是4个字节,或许是2个字节

用 ioctl(fd,FBIOGET_VSCREENINFO,&screen_info);读出来x,y是800*480的配置。。。。

离线

楼主 #4 2020-09-13 20:06:33

小果果
会员
注册时间: 2020-05-10
已发帖子: 61
积分: 58.5

Re: fb0用mmap申请内存刷屏发现分辨率不对

改了设备树,分辨率匹配上就好了

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn