彼岸战士

彼岸战士

0个粉丝

34

问答

0

专栏

0

资料

彼岸战士  发布于  2013-05-09 10:14:40
采纳率 0%
34个问答
11756

无法打开3531的fb0

 
我在加载了hifb.ko后,出现了fb0-fb6,但是写程序是无法open打开fb0,请问这是为什么呢?
我来回答
回答12个
时间排序
认可量排序

david

41个粉丝

368

问答

253

专栏

229

资料

david 2013-05-09 15:13:09
认可0
dev目录下是否有对应设备?

彼岸战士

0个粉丝

34

问答

0

专栏

0

资料

彼岸战士 2013-05-09 19:15:58
认可0
[quote]david 发表于 2013-5-9 15:13 [url=forum.php?mod=redirect&goto=findpost&pid=3015&ptid=1698][img]static/image/common/back.gif[/img][/url]
dev目录下是否有对应设备?[/quote]

有,cat的时候cat: can't open 'fb0': Operation not permitted,编写程序open的时候也提示这个。

hilinux

0个粉丝

17

问答

0

专栏

0

资料

hilinux 2013-05-17 20:58:44
认可0
海思对framebuffer的操作做了限制,和15的有点不同了,系统起来要先初始化对应的VO设备,这样才能操作fb

彼岸战士

0个粉丝

34

问答

0

专栏

0

资料

彼岸战士 2013-05-21 14:08:30
认可0
[quote]hilinux 发表于 2013-5-17 20:58 [url=forum.php?mod=redirect&goto=findpost&pid=3060&ptid=1698][img]static/image/common/back.gif[/img][/url]
海思对framebuffer的操作做了限制,和15的有点不同了,系统起来要先初始化对应的VO设备,这样才能操作fb[/quote]

恩,我现在能打开了,也初始化了framebuffer,是按照sample里的hifb例程中第二个线程初始化的framebuffer,但是我写了个qt程序,把初始化和qt界面写在了一起,但是vga屏上还是不能显示qt的界面,是不是还需要设置一些参数呢?

shensifeng2011

0个粉丝

2

问答

0

专栏

0

资料

shensifeng2011 2014-01-15 14:43:32
认可0
我单写了一个程序就是在framebuffer上显示一张图片 我这个程序哪有问题吗  帮忙看下

#include
#include
#include
#include
#include
#include "inc/hifb.h"
#define IMAGE_WIDTH 362
#define IMAGE_HEIGHT 254
#define IMAGE_SIZE (362 * 254 * 2)
#define IMAGE_NUM 14
//#define IMAGE_PATH "/0705-yinxr/%d.bmp"
#define IMAGE_PATH                "/0705-yinxr/blui_update.bmp"

static struct fb_bitfield g_r16 = {10, 5, 0};
static struct fb_bitfield g_g16 = {5, 5, 0};
static struct fb_bitfield g_b16 = {0, 5, 0};
static struct fb_bitfield g_a16 = {15, 1, 0};

/*bit area for argb 8888*/
static struct fb_bitfield g_r32 = {16, 8, 0};
static struct fb_bitfield g_g32 = {8, 8, 0};
static struct fb_bitfield g_b32 = {0, 8, 0};
static struct fb_bitfield g_a32 = {24, 8, 0};

int main()
{
    int fd;
    int i = 0;
    struct fb_fix_screeninfo fix;
    struct fb_var_screeninfo var;
    unsigned char *pShowScreen;
    unsigned char *pHideScreen;
    HIFB_POINT_S stPoint = {100, 0};
    HIFB_ALPHA_S stAlpha;
   
    FILE *fp;
    char image_name[128];

    /*1. open Framebuffer device overlay 0*/
    fd = open("/dev/fb0", O_RDWR);
    if(fd < 0)
    {
        printf("open fb0 failed!\n");
        return -1;
    }

    /*2. set the screen original position*/
    stPoint.s32XPos = 0;
    stPoint.s32YPos = 0;
    if (ioctl(fd, FBIOPUT_SCREEN_ORIGIN_HIFB, &stPoint) < 0)
    {
        printf("set screen original show position failed!\n");
        return -1;
    }

#if 1
    stAlpha.bAlphaEnable = HI_TRUE;
    stAlpha.bAlphaChannel = HI_TRUE;
    stAlpha.u8Alpha0 = 0xff;
    stAlpha.u8Alpha1 = 0xff;
    stAlpha.u8GlobalAlpha = 0xff;
#endif
    if (ioctl(fd, FBIOPUT_ALPHA_HIFB,  &stAlpha) < 0)
    {
        printf("Set alpha failed!\n");
                close(fd);
        return HI_NULL;
    }   
    /*3. get the variable screen info*/
    if (ioctl(fd, FBIOGET_VSCREENINFO, &var) < 0)
    {
        printf("Get variable screen info failed!\n");
        close(fd);
        return -1;
    }
    /*4. modify the variable screen info
            the screen size: IMAGE_WIDTH*IMAGE_HEIGHT
            the virtual screen size: IMAGE_WIDTH*(IMAGE_HEIGHT*2)
            the pixel format: ARGB1555
            */
#if 1
    var.xres = 1920;
    var.yres = 1080;
    var.xres_virtual = 1920;   
    var.yres_virtual = 1080 * 2;
    var.transp= g_a16;
    var.red = g_r16;
    var.green = g_g16;
    var.blue = g_b16;
    var.bits_per_pixel = 16;   

#else
    var.xres_virtual = 1920;
    var.yres_virtual = 960;
    var.xres = 1920;
    var.yres = 960;
    var.transp= g_a32;
    var.red = g_r32;
    var.green = g_g32;
    var.blue = g_b32;
    var.bits_per_pixel = 32;
    var.activate = FB_ACTIVATE_NOW;
#endif

    /*5. set the variable screeninfo*/
    if (ioctl(fd, FBIOPUT_VSCREENINFO, &var) < 0)
    {
        printf("Put variable screen info failed!\n");
        close(fd);
        return -1;
    }
   
    /*6. get the fix screen info*/
    if (ioctl(fd, FBIOGET_FSCREENINFO, &fix) < 0)
    {
        printf("Get fix screen info failed!\n");
        close(fd);
        return -1;
    }
   
    /*7. map the physical video memory for user use*/
    pShowScreen = mmap(NULL, fix.smem_len, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
    pHideScreen = pShowScreen + IMAGE_SIZE;
    memset(pShowScreen, 0, IMAGE_SIZE);


    /*8. load the bitmaps from file to hide screen and set pan display the
            hide screen*/
    //for(i = 0; i < IMAGE_NUM; i++)
    {
        sprintf(image_name, IMAGE_PATH);
        fp = fopen(image_name, "rb");
        if(NULL == fp)
        {
            printf("Load %s failed!\n", image_name);
            close(fd);
            return -1;
        }
        fread(pHideScreen, 1, IMAGE_SIZE, fp);
        fclose(fp);
#if 1
        if(1 % 2)
        {
            var.yoffset = 0;
            pHideScreen = pShowScreen + IMAGE_SIZE;
        }
        else
        {
            var.yoffset = IMAGE_HEIGHT;
            pHideScreen = pShowScreen;
        }
#endif

        if (ioctl(fd, FBIOPAN_DISPLAY, &var) < 0)
        {
            printf("FBIOPAN_DISPLAY failed!\n");
            close(fd);
            return -1;
        }
    }

    printf("Enter to quit!\n");
    getchar();
   
    /*9. close the Framebuffer device*/
    close(fd);
    return 0;
}

彼岸战士

0个粉丝

34

问答

0

专栏

0

资料

彼岸战士 2014-01-16 13:10:00
认可0
    stAlpha.bAlphaEnable  = HI_TRUE;
    stAlpha.bAlphaChannel = HI_FALSE;
    stAlpha.u8Alpha0      = 0xff;
    stAlpha.u8Alpha1      = 0xff;
    stAlpha.u8GlobalAlpha = 0x80;
试试?

shensifeng2011

0个粉丝

2

问答

0

专栏

0

资料

shensifeng2011 2014-01-20 11:08:09
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=3098&ptid=1698]彼岸战士 发表于 2013-5-21 14:08[/url]
恩,我现在能打开了,也初始化了framebuffer,是按照sample里的hifb例程中第二个线程初始化的framebuffer ...[/quote]

你程序里面是不是要读取图片显示什么的, 图片显示有头信息,还有图片信息两部分,我写的是c程序,显示不出来是图片的位不对,头信息没读,主要原因还是对例子程序没读透。

weltion

1个粉丝

10

问答

0

专栏

0

资料

weltion 2014-09-28 15:03:40
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=3098&ptid=1698]彼岸战士 发表于 2013-5-21 14:08[/url]
恩,我现在能打开了,也初始化了framebuffer,是按照sample里的hifb例程中第二个线程初始化的framebuffer ...[/quote]

我也是同样的做法,但Qt的窗口就是没有显示,是不是操作不正确?

lbc2100

0个粉丝

0

问答

0

专栏

0

资料

lbc2100 2014-10-10 17:18:38
认可0
不要用ARGB1555 更改为 ARGB8888

ruizhi

0个粉丝

1

问答

0

专栏

0

资料

ruizhi 2015-03-19 09:19:46
认可0
楼主,怎么解决这个问题的?

sywh

0个粉丝

6

问答

0

专栏

0

资料

sywh 2014-09-29 14:04:43
认可0
路过,帮顶。

mustang

0个粉丝

7

问答

0

专栏

2

资料

mustang 2014-09-29 15:46:53
认可0
来挖坟。:):):)
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区