您尚未登录。

楼主 # 2023-05-24 15:44:41

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

编译了fb-test app,下载到板子上运行后屏幕无反应。

我记得运行后,屏幕上应该是分为红蓝绿三块区域,还有交叉白线。
现在运行后屏幕倒是刷了一下,变成全黑。

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

离线

楼主 #1 2023-05-25 08:54:32

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: 编译了fb-test app,下载到板子上运行后屏幕无反应。

群里有朋友说全志显示驱动不支持,好坑啊...

离线

#2 2023-05-25 16:21:35

jkl
会员
注册时间: 2019-11-18
已发帖子: 265
积分: 148.5

Re: 编译了fb-test app,下载到板子上运行后屏幕无反应。

用全志自带的colorbar呢,效果是一样的

离线

楼主 #3 2023-05-26 09:31:18

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: 编译了fb-test app,下载到板子上运行后屏幕无反应。

jkl 说:

用全志自带的colorbar呢,效果是一样的

allwinner/libdisplay吗?感谢,知道是驱动的问题就不纠结这个了。

明白了,那天在群里看到群友说的这个命令,这个是可以的:

echo 1 > sys/class/disp/disp/attr/colorbar

最近编辑记录 Gentlepig (2023-05-26 11:08:21)

离线

#4 2023-05-26 10:03:36

哇酷小二
管理员
所在地: 你猜
注册时间: 2020-04-22
已发帖子: 3,388
积分: 1902
个人网站

Re: 编译了fb-test app,下载到板子上运行后屏幕无反应。

Gentlepig 说:

群里有朋友说全志显示驱动不支持,好坑啊...

不是不支持,可能fb默认是32bit的,但是fbtest只操作了24bit,透明通道值是0,所以就不显示了。

试一试 cat /dev/urandom > /dev/fb0





离线

楼主 #5 2023-05-26 11:04:43

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: 编译了fb-test app,下载到板子上运行后屏幕无反应。

哇酷小二 说:
Gentlepig 说:

群里有朋友说全志显示驱动不支持,好坑啊...

不是不支持,可能fb默认是32bit的,但是fbtest只操作了24bit,透明通道值是0,所以就不显示了。

试一试 cat /dev/urandom > /dev/fb0

/# cat /dev/urandom > /dev/fb0               
cat: write error: No space left on device

离线

楼主 #6 2023-05-31 11:45:30

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: 编译了fb-test app,下载到板子上运行后屏幕无反应。

哇酷小二 说:
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)

离线

页脚

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

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