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
2 执行 sample程序无效果
原因:摄像头频率不对;问题出现在mpp2/ko/load3518e文件:第71行:himm 0x20030030 0x1; #Sensor clock 24 MHz
改为:himm 0x20030030 0x0; #Sensor clock 12 MHz
要注意摄像头的一些配置信息;