3516添加驱动时候内存分配冲突:

本文分析了海思SDK中mpp2/ko/load3518e执行时出现的内存分配冲突错误,并提供了两种解决方案:一是调整bootarg中的内存设置;二是修改SDK中的内存分配参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 执行 mpp2/ko/load3518e 出错

海思sdk:mpp2/ko/load3518e

出错信息(翻译出错信息很有用):

    Hisilicon Media Memory Zone Manager
    ERROR: Conflict MMZ:
    PHYS(0x82000000, 0x83FFFFFF), GFP=0, nBYTES=32768KB,    NAME="anonymous"
    MMZ conflict to kernel memory (0x80000000, 0x825FFFFF)
    Add MMZ failed: PHYS(0x82000000, 0x83FFFFFF), GFP=0, nBYTES=32768KB,    NAME="anonymous"
    Hisilicon UMAP device driver interface: v3.00
    load sys.ko ...OK!

出差原因:内存分配冲突:

分析:

    翻译输出信息可知:内存地址分配冲突;

    bootargs :mem=38M 指给内核分配38M内存空间,及给OS(operating system)留了38M, 就是kernel memory (0x80000000, 0x825FFFFF=0x80000000+(0x2600000-1));

    从Add MMZ failed: PHYS(0x82000000, 0x83FFFFFF), GFP=0, nBYTES=32768KB,    NAME="anonymous"
    可以看出楼主把MMZ设为 从0x82000000开始到0x83ffffff共32M
    查看mpp2/ko/load3518e 发现108行有mmz.ko的初始化信息:

      insmod mmz.ko mmz=anonymous,0,0x82000000,32M anony=1 || report_error  

    可见海思默认的mmz内存地址为:0x82000000 之后的32M内存,但是显然已经和系统内存冲突;

解决方法:

    1.直接修改bootarg中的mem 使它减小为32M(0x82000000-0x80000000),及设置(mem=32M)

    2,修改mpp2/ko/load3518e 的mmz空间设置:

    将108行:

    insmod mmz.ko mmz=anonymous,0,0x82000000,32M anony=1 || report_error 

    改为:

     insmod mmz.ko mmz=anonymous,0,0x82600000,26M anony=1 || report_error
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值