【ROC-RK3568-PC开发板试用体验】HDMI刷屏测试

描述

本文来源电子发烧友社区,作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2303741_1_1.html


准备

参考https://bbs.elecfans.com/jishu_2303737_1_1.html的ssh登录配置等。

apt install lrzsz安装sz rz工具

rz是导入文件到开发板

sz相反

安装后,crt中ssh登录开发板后,就可以输入rz回车

自动弹出选择文件对话框选择文件,点击Add点击Ok就可发送到开发板
开发板试用

sz 文件名

则从开发板下载到本地

输出的路径可以配置

右键点击连接->Session Options...
开发板试用

配置上传下载路径如下

开发板试用

Framebuffer测试代码

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

int main(int argc, char *argv[])

{

int fd = -1;

int ret = -1;

uint8_t *p_fb = 0;

struct fb_fix_screeninfo finfo;

struct fb_var_screeninfo vinfo;

memset(&finfo,0,sizeof(finfo));

memset(&vinfo,0,sizeof(vinfo));

fd = open(argv[1],O_RDWR);

if(fd < 0)

{

fprintf(stderr,"open %s err, %sn",argv[1],strerror(errno));

return -1;


}

ret = ioctl(fd, FBIOGET_FSCREENINFO, &finfo);

if(ret < 0)

{

fprintf(stderr,"ioctl finfo err, %sn",strerror(errno));

close(fd);

return -1;



}

ret = ioctl(fd, FBIOGET_VSCREENINFO, &vinfo);

if(ret < 0)

{

fprintf(stderr,"ioctl vinfo err, %sn",strerror(errno));

close(fd);

return -1;

}

unsigned long len = vinfo.xres_virtual  * vinfo.yres_virtual * vinfo.bits_per_pixel / 8;

p_fb = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

if(p_fb == NULL)

{

fprintf(stderr,"mmap len %ld errn",len);

close(fd);

return -1;

}

fprintf(stderr,"x = %d y = %d bits = %d len = %ldn",vinfo.xres_virtual,vinfo.yres_virtual,vinfo.bits_per_pixel,len);

volatile int times = 30;

while(times--)

{

if(vinfo.bits_per_pixel == 16)

{

for(unsigned int i=0; i< len/2; )

{

*((uint16_t*)(p_fb + i)) = 0xF800;

i+=2;


}

usleep(atoi(argv[2])*1000);

for(unsigned int i=0; i< len/2;)

{

*((uint16_t*)(p_fb + i)) = 0x07E0;

i+=2;


}

usleep(atoi(argv[2])*1000);

for(unsigned int i=0; i< len/2;)

{

*((uint16_t*)(p_fb + i)) = 0x001F;

i+=2;

}

usleep(atoi(argv[2])*1000);


}

else

{

for(unsigned int i=0; i< len/4; )

{


*((uint32_t*)(p_fb + i)) = 0xFF0000;

i+=4;

}

usleep(atoi(argv[2])*1000);

for(unsigned int i=0; i< len/4;)

{

*((uint32_t*)(p_fb + i)) = 0x00FF00;

i+=4;


}

usleep(atoi(argv[2])*1000);

for(unsigned int i=0; i< len/4;)

{

*((uint32_t*)(p_fb + i)) = 0x0000FF;

i+=4;


}

usleep(atoi(argv[2])*1000);


}


}

munmap(p_fb,len);

close(fd);

return 0;


}

rz导入到开发板

编译

gcc framebuffer.c -o framebuffer

运行

./framebuffer /dev/fb0 200

可以看到以200ms间隔 rgb刷屏 30次。

开发板试用
开发板试用
开发板试用

总结

测试framebuffer和hdmi显示ok,后续就可以基于此进行相应的图形程序的开发。

比如移植lvgl等。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分