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

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

猜你喜欢

转载自blog.csdn.net/whereisdog/article/details/82660481