Hi3531第一次调试 遇到的问题。

       最近在在海思平台上把交叉编译工具装好,然后参考着 文档,编译了u-boot, kernel,文件系统。然后继续运行sample的时候,出现下面这个问题:

./sample_vdec 0

[SAMPLE_COMM_SYS_CalcPicVbBlkSize]-215: w:384, u32AlignWidth:64
[SAMPLE_COMM_SYS_CalcPicVbBlkSize]-215: w:384, u32AlignWidth:64
System get Kernel Config failed!
Get Kernel Config failed!
[SAMPLE_COMM_SYS_Init]-385: HI_MPI_SYS_Init failed!with ffffffff
[SAMPLE_VIO_8_D1Cif]-1475: system init failed with -1!

program exit abnormally!

在《Hisi3531 SDK 安装以及升级使用说明》

1、DDR内存管理说明
    1)所有DDR内存中,一部分由操作系统管理,称为OS内存;另一部分由MMZ模块管理,供媒体业务单独使用,称为MMZ内存。
    2)OS内存起始地址为0x80000000,内存大小可通过bootargs进行配置,例如第三章中的setenv bootargs 'mem=64M ... ',表示分配给操作系统内存为64M,您可以根据实际情况进行调整。
    3)MMZ内存由MMZ内核模块管理(mpp/ko_hi35xx目录下的mmz.ko),加载mmz模块时,通过模块参数指定其起始地址及大小,例如:
    insmod mmz.ko mmz=anonymous,0,0x84000000,447M:ddr1,0,0xC0000000,511M anony=1 || report_error
    表示mmz两块区域,区域一的名称为anonymous,起始地址为0x84000000,大小为447M;区域二的名称为ddr1,起始地址为0xC0000000,大小为511M。
    您可以通过修改mpp/ko_HI35XX目录下load3531脚本中的mmz模块参数,来修改其起始地址和总大小。
    4)请注意MMZ内存地址范围不能与OS内存重叠。


后来在网上看了一些帖子,才发现自己在加载.ko驱动的时候出现了问题。mmz驱动运行不了。在文件load3531的脚本里面有这么句代码:

 insmod mmz.ko mmz=anonymous,0,0x84000000,447M:ddr1,0,0xC0000000,511M anony=1 || report_error

所以我们就知道,mmz在ddr的地址空间是从 首地址偏移 64Mbyte开始的。

所以我们给 操作系统的大小必须小于 64Mbyte。

所以我们设置:

   setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs)'

这样就可以配套使用。

然后很开心解.h264的视频出来了。

Hi3531第一次调试 遇到的问题。_第1张图片


你可能感兴趣的:(Hisi)