我记得运行后,屏幕上应该是分为红蓝绿三块区域,还有交叉白线。
现在运行后屏幕倒是刷了一下,变成全黑。
https://github.com/ponty/fb-test-app
fb-test 1.1.0 (rosetta)
Failed to set graphics mode on tty1
fb res 800x480 virtual 800x480, line_len 3200, bpp 32
离线
群里有朋友说全志显示驱动不支持,好坑啊...
离线
用全志自带的colorbar呢,效果是一样的
离线
用全志自带的colorbar呢,效果是一样的
allwinner/libdisplay吗?感谢,知道是驱动的问题就不纠结这个了。
明白了,那天在群里看到群友说的这个命令,这个是可以的:
echo 1 > sys/class/disp/disp/attr/colorbar
最近编辑记录 Gentlepig (2023-05-26 11:08:21)
离线
离线
Gentlepig 说:群里有朋友说全志显示驱动不支持,好坑啊...
不是不支持,可能fb默认是32bit的,但是fbtest只操作了24bit,透明通道值是0,所以就不显示了。
试一试 cat /dev/urandom > /dev/fb0
/# cat /dev/urandom > /dev/fb0
cat: write error: No space left on device
离线
Gentlepig 说:群里有朋友说全志显示驱动不支持,好坑啊...
不是不支持,可能fb默认是32bit的,但是fbtest只操作了24bit,透明通道值是0,所以就不显示了。
试一试 cat /dev/urandom > /dev/fb0
请问,该如何修改透明通道值呢?
-------------------------------------------------------------
尝试论坛里帖子里讨论的那个nes模拟器,编译后运行也是黑屏,看源码,也是操作/dev/fb0。
网上找来个通过/dev/fb0在屏幕上画圆的程序,编译后在板子上运行,同样是黑屏。
在全志群里问了,群友说是有多个图层的问题。
通过cat /sys/class/disp/disp/attr/sys,可以看到有4个图层,我将前三个enable改为disable,则重启后那些disable对应的行消失了。
但是,运行画圆程序或nes模拟器程序,屏幕仍是黑屏,qt例程正常。
screen 0:
de_rate 300000000 hz, ref_fps:60
mgr0: 800x480 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_sync[0] unblank direct_show[false] iommu[1]
dmabuf: cache[0] cache max[0] umap skip[0] umap skip max[12]
lcd output backlight( 50) fps:60.2 800x 480
err:0 skip:104 irq:106539 vsync:0 vsync_skip:0
BUF enable ch[1] lyr[0] z[16] prem[N] a[pixel 255] fmt[ 0] fb[ 800, 480; 800, 480; 800, 480] crop[ 0, 0, 800, 480] frame[ 0depth[ 0]
-----------------------------
确实,写像素点时,抄的程序只有后24bit有数据,前8bit是0x00,现在改为0xffxxxxxx,则屏幕上就有输出了。感谢。
*(mem_p + 800*y + x) = 0xFFFFFFFF;
附完整代码:
#include <stdio.h>
#include <math.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <linux/input.h>
#define LCD_PATH "/dev/fb0"
int main()
{
int midlex = 400;
int midley = 240;
int R = 50;
unsigned int *mem_p;
int x = 0;
int y = 0;
int i = 0;
int lcd_fd;
int biaozhix = 1;
int biaozhiy = 1;
lcd_fd = open(LCD_PATH, O_RDWR);
mem_p = (unsigned int*)mmap(NULL, 800*480*480*4,
PROT_READ | PROT_WRITE,
MAP_SHARED, lcd_fd, 0);
while (1)
{
for (y = 0; y < 480; y++)
{
for (x = 0; x < 800; x++)
{
i = ((x - midlex) * (x - midlex)) + ((y - midley) * (y - midley));
if ((i < R * R))
{
*(mem_p + 800*y + x) = 0x00FFFF00;
}
else
{
*(mem_p + 800*y + x) = 0xFFFFFFFF;
}
}
}
if ((midley + R) > 479)
{
biaozhiy = 2;
}
if ((midlex + R) > 779)
{
biaozhix = 2;
}
if ((midley - R) < 0)
{
biaozhiy = 1;
}
if ((midlex - R) < 0)
{
biaozhix= 1;
}
if (biaozhix == 1)
{
midlex++;
}
if (biaozhix == 22)
{
midlex--;
}
if (biaozhiy == 1)
{
midley++;
}
if (biaozhiy == 2)
{
midley--;
}
}
munmap(mem_p, 800*480*4);
close(lcd_fd);
return 0;
}
最近编辑记录 Gentlepig (2023-05-31 14:02:29)
离线