本文來源電子發(fā)燒友社區(qū),作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2303741_1_1.html
準(zhǔn)備
參考https://bbs.elecfans.com/jishu_2303737_1_1.html的ssh登錄配置等。
apt install lrzsz安裝sz rz工具
rz是導(dǎo)入文件到開發(fā)板
sz相反
安裝后,crt中ssh登錄開發(fā)板后,就可以輸入rz回車
自動彈出選擇文件對話框選擇文件,點(diǎn)擊Add點(diǎn)擊Ok就可發(fā)送到開發(fā)板
sz 文件名
則從開發(fā)板下載到本地
輸出的路徑可以配置
右鍵點(diǎn)擊連接->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導(dǎo)入到開發(fā)板
編譯
gcc framebuffer.c -o framebuffer
運(yùn)行
./framebuffer /dev/fb0 200
可以看到以200ms間隔 rgb刷屏 30次。
總結(jié)
測試framebuffer和hdmi顯示ok,后續(xù)就可以基于此進(jìn)行相應(yīng)的圖形程序的開發(fā)。
比如移植lvgl等。
-
HDMI
+關(guān)注
關(guān)注
32文章
1742瀏覽量
152407 -
RK3568
+關(guān)注
關(guān)注
4文章
526瀏覽量
5238 -
開發(fā)板試用
+關(guān)注
關(guān)注
3文章
301瀏覽量
2152
發(fā)布評論請先 登錄
相關(guān)推薦
評論