微信用户

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户  发布于  2019-08-07 16:35:15
采纳率 0%
87个问答
4869

程序运行一段时间后崩溃

 
程序运行一段时间后 崩溃, 提示和mmap 的问题。 尝试加大内存分配了 ,还是出现这个问题。大概20分钟会出现。

mmap error: Cannot allocate memory
mmap error: Cannot allocatsample_vio[1676]: unhandled level 2 translation fault (11) at 0x000003c0, esr 0x92000006
e memory
pgd = ffffffc022797000
[000003c0] *pgd=000000005f51c003, *pud=000000005f51c003
, *pmd=0000000000000000

CPU: 0 PID: 1676 Comm: sample_vio Tainted: P           O    4.9.37 #2
Hardware name: Hisilicon HI3559AV100 DEMO Board (DT)
task: ffffffc021a65400 task.stack: ffffffc0227d8000
PC is at 0x7faed07ff8
LR is at 0x52a34c
pc : [<0000007faed07ff8>] lr : [<000000000052a34c>] pstate: 20000000
sp : 0000007fc7311120
x29: 0000007fc7311120 x28: 0000000000000002
x27: 0000007fc7311228 x26: 0000000000531c30
x25: 0000007fc7311200 x24: 0000007fc73111b8
x23: 0000000000531000 x22: 0000007fc73111a8
x21: 0000007fc7311878 x20: 000000000002000f
x19: 0000007fc7311590 x18: 0000000000000000
x17: 0000007faed07f10 x16: 0000000000574010
x15: 0000000000000000 x14: 0000000000000000
x13: 0000000000000000 x12: 0000000000000000
x11: 0000000000401f3c x10: 00000000005740c0
x9 : 8020080280200802 x8 : 000000000000001d
x7 : 0000000000000000 x6 : 0000000000000000
x5 : 00000060039fcf40 x4 : 0000000000000780
x3 : 00000060039fcb80 x2 : 00000000000003c0
x1 : 00000000000003c0 x0 : 00000060039fcb80

我来回答
回答14个
时间排序
认可量排序

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-07 16:52:09
认可0
本帖最后由 alaode 于 2020-5-7 20:39 编辑

"HI_MPI_VI_GetChnFrame failed, s32Ret:0x%x\n",s32Ret);
                                goto EXIT;
                        }
       
                        /************************************************
                        Create VGS job
                        *************************************************/
                        stVBBaseInfo

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-07 16:53:43
认可0
print  os的内存是512m
不确定ddr 的大小, 所以把load 里面的内存修改成1024M了。

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-07 17:09:40
认可0
依然是崩溃。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2019-08-07 17:17:19
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=146307&ptid=75410]alaode 发表于 2019-8-7 16:52[/url]
程序如下,单摄像头的画中画效果。 还没有弄ive 的dma。 3559a 不是很熟, 一步步来。

while(1)
[/quote]

stTask.stImgIn.stVFrame.u64VirAddr[0]  = (HI_U64)HI_MPI_SYS_Mmap(stTask.stImgIn.stVFrame.u64PhyAddr[0],1920*1080*3/2);
stTask.stImgIn.stVFrame.u64VirAddr[1]   = (HI_U64)HI_MPI_SYS_Mmap(stTask.stImgIn.stVFrame.u64PhyAddr[1],1920*1080/2);

为什么没有对应的unmap ?

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-07 17:24:47
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=146312&ptid=75410]zhuangweiye 发表于 2019-8-7 17:17[/url]
stTask.stImgIn.stVFrame.u64VirAddr[0]  = (HI_U64)HI_MPI_SYS_Mmap(stTask.stImgIn.stVFrame.u64PhyAdd ...[/quote]

不好意思哈, 本来是对应了。 为了验证 是不是mmap 的问题, 注释掉了。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2019-08-07 17:26:08
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=146313&ptid=75410]alaode 发表于 2019-8-7 17:24[/url]
不好意思哈, 本来是对应了。 为了验证 是不是mmap 的问题, 注释掉了。[/quote]

      //        s32Ret = HI_MPI_SYS_Munmap(stTask.stImgIn.stVFrame.u64PhyAddr[1],1920*1080/2);
注释掉的代码也有问题, 用物理地址是什么操作 ?

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-07 17:26:31
认可0
发现了个问题, 就是原来映射 vir[0]  的小大是1920*1080*3/2  ,已经修改成1920*1080 了。

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-07 17:30:29
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=146314&ptid=75410]zhuangweiye 发表于 2019-8-7 17:26[/url]
//        s32Ret = HI_MPI_SYS_Munmap(stTask.stImgIn.stVFrame.u64PhyAddr[1],1920*1080/2);
...[/quote]

欸呀吗呀。   我这智商。

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-07 17:33:09
认可0
修改成下面这样哈
s32Ret = HI_MPI_SYS_Munmap(stTask.stImgIn.stVFrame.u64VirAddr[0],1920*1080);
                        if(HI_SUCCESS != s32Ret)
                        {
                                SAMPLE_PRT("HI_MPI_SYS_Munmap failed, s32Ret:0x%x\n",s32Ret);
                                goto EXIT1;
                        }
       
                        s32Ret = HI_MPI_SYS_Munmap(stTask.stImgIn.stVFrame.u64VirAddr[1],1920*1080/2);
                        if(HI_SUCCESS != s32Ret)
                        {
                                SAMPLE_PRT("HI_MPI_SYS_Munmap failed, s32Ret:0x%x\n",s32Ret);
                                goto EXIT1;
                        }


再次测试 ,应该是问题了。 明天  dma 一下就可以了。

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-08 09:15:23
认可0
本帖最后由 alaode 于 2020-5-7 20:39 编辑

继续dma 。 遇到了问题

{
    HI_S32                  s32Ret              = HI_SUCCESS;
    VI_DEV                  ViDev0              = 0;
    VI_PIPE                 ViPipe0             = 0;
    VI_CHN                  ViChn               = 0;
    HI_S32                  s32ViCnt            = 1;
    VPSS_GRP               

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-08 09:16:28
认可0
打印如下:!!


stSrcData.u32Width  : 960
stSrcData.u32Height  : 540
stSrcData.u32Stride : 960

stDstData.u32Width  : 1920
stDstData.u32Height  : 1080
stDstData.u32Stride : 1920
HI_MPI_IVE_DMA!!!!


dma报错。

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-08 09:23:14
认可0
打印了一下 两个的格式等  都是一样的。 很奇怪。
stDstData.enPixelFormat : 25
stSrcData.enPixelFormat : 25

stDstData.enCompressMode : 0
stSrcData.enCompressMode : 0

stDstData.enVideoFormat : 0
stSrcData.enVideoFormat : 0

stDstData.enDynamicRange : 0
stSrcData.enDynamicRange : 0

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-08 09:24:32
认可0
本帖最后由 alaode 于 2019-8-8 09:29 编辑

    stSrcData.u64VirAddr =  stTask.stImgOut.stVFrame.u64VirAddr[0];
                          stSrcData.u64PhyAddr =  stTask.stImgOut.stVFrame.u64PhyAddr[0];
                          stSrcData.u32Width   =  stTask.stImgOut.stVFrame.u32Width;
                          stSrcData.u32Height  =  stTask.stImgOut.stVFrame.u32Height;
                          stSrcData.u32Stride  =  stTask.stImgOut.stVFrame.u32Stride[0];
                        
                          //fill dst

                          printf("  stDstData.u32Width  : %d ",stTask.stImgIn.stVFrame.u32Width);
                          printf("stDstData.u32Height  : %d ",stTask.stImgIn.stVFrame.u32Height);
                          printf("stDstData.u32Stride : %d ",stTask.stImgIn.stVFrame.u32Stride[0]);
                          
                          stDstData.u64VirAddr = stTask.stImgIn.stVFrame.u64VirAddr[0];
                          stDstData.u64PhyAddr = stTask.stImgIn.stVFrame.u64PhyAddr[0];
                          stDstData.u32Width    stTask.stImgOut.stVFrame.u32Width;
                          stDstData.u32Height  =  stTask.stImgOut.stVFrame.u32Height;
                          stDstData.u32Stride  = stTask.stImgIn.stVFrame.u32Stride[0];

这样 就ok 了。 好长时间不用, 都忘记了。

微信用户

1个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-08-08 09:43:39
认可0
ok了ok了ok了ok了ok了ok了ok了ok了ok了ok了ok了ok了ok了ok了ok了
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区