ammy413

ammy413

0个粉丝

2

问答

0

专栏

0

资料

ammy413  发布于  2015-08-06 17:33:01
采纳率 0%
2个问答
23845

关于mmz和os内存

 
主控型号:3518e 传感器:ov9712
以挂载形式 运行sample中venc 各个例程实现拍照、h26视频流没问题
现在想要使用在线调试工具查看isp参数
在运行load3518e时出现报错
insmod: can't insert 'mmz.ko': File exists
******* Error: There's something wrong, please check! *****

根据论坛以及sdk中的txt文本的说法 3518e的内存有限 需要重新分配内存 来执行load3518
查看了一些资料:
  1) 以容量为128MBytes的DDR内存为例,以下为根据本文档和SDK默认配置得到的内存管理示意图:
    -----|-------|  0x80000000   # Memory managed by OS.              
     64M  | OS    |                                                
          |       |                                                
     -----|-------|  0x84000000   # Memory managed by MMZ block anonymous.         
     64M  | MMZ   |                                                
          |       |                                                
     -----|-------|  0x88000000   # End of DDR.         
注意:
        (1)用户在配置启动参数时需要设置OS的管理内存为64M,“setenv bootargs 'mem=64M ...”。         
         (2)系统启动后,配置load3518的脚本中mmz的管理内存为64M,“insmod mmz.ko mmz=anonymous,0,0x84000000,64M”。   
目前理解:
对于我使用的64M内存的板子来说 初始配置为 os内存(系统内存)32M mmz内存为32M
现在需要修改为 os内存38m mmz内存26m
按照sdk中说法 需要进行如下修改:

1、调整OS内存和MMZ内存
    1)推荐修改OS内存为38M:OS内存大小可通过bootargs进行配置
        所有DDR内存中,一部分由操作系统管理,称为OS内存;另一部分由MMZ模块管理,供媒体业务单独使用,称为MMZ内存。工具需要调整这两块内存大小。
    配置方式:单板上电后,敲任意键进入u-boot,设置启动参数
    setenv bootargs 'mem=38M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)'
    setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
    save
    reset

    2)推荐修改MMZ内存为26M
    修改load3518e脚本,替换
        insmod mmz.ko mmz=anonymous,0,0x82000000,32M anony=1 || report_error   #for 3518E use
    为:insmod mmz.ko mmz=anonymous,0,0x82600000,26M anony=1 || report_error   #for 3518E use
               
2、打开板端工具文件根目录下的configs文件夹并找到对应sensor的配置,推荐修改其【VbCnt】字段的值为8
    如:
    [vb_conf]
    VbCnt=8
   
3、打开板端工具文件根目录下的configs文件夹并找到对应sensor的配置,推荐修改其【TargetFrmRate】字段的值为25
    如:
    [venc]
    TargetFrmRate=25
其中第一步中的sf read就有些看不懂 内存起始地址为0x80 os内存范围就应该是0x80-0x826 mmz内存为0x826-0x84 为何sf read语句中 将内核加载到了后半32M的内存空间去了?
看各种资料中 都没有说明sf read是否需要随着前面的men参数修改 不需要么?
而第二步中 只需要修改0x82 和32m这两个参数么?
这两步执行完毕后 依然会有无法load3518e
后面的板端工具文件根目录 这个文件夹应该在哪里找啊 在板端 还是在虚拟机端? 路径应该是什么样的? 并不能找到诶···
我来回答
回答13个
时间排序
认可量排序

ammy413

0个粉丝

2

问答

0

专栏

0

资料

ammy413 2015-08-06 17:47:15
认可0
为了测试各种情况 做了实验 尝试是否是 mmz内存地址在前面 os内存地址在后面 初始自启动读内核文件到0x80 到0x82(默认的) 到0x826(38M) 等情况 都不能加载
这个load3518e的报错太简单了 完全不知道是哪部分的问题 感觉内存划分应该是对的了啊
认为应该是对的几组:
boot:
setenv bootargs 'mem=38M xxxxx sf read 0x80000000 0x40000 0x100000;bootm 0x80000000';saveenv;reset
或者按照sdk中的setenv bootargs 'mem=38M xxxxx sf read 0x82000000 0x40000 0x100000;bootm 0x82000000';saveenv;reset
load3518e脚本:
insmod mmz.ko mmz=anonymous,0,0x82600000,26M anony=1 || report_error   #for 3518E use

ammy413

0个粉丝

2

问答

0

专栏

0

资料

ammy413 2015-08-06 17:49:10
认可0
哦 补充一下 我的flash只有8M 所以flash的划分是这样的:256K(boot),1M(kernel),4096K(rootfs),2816K(user)'
测试的时候没有按照sdk中那个16M 的版本写 按照那个sdk的版本写 是无法启动系统的

ammy413

0个粉丝

2

问答

0

专栏

0

资料

ammy413 2015-08-06 18:00:15
认可0
另外这种修改内存分配的方式 是将os内存加大 mmz内存减小 是吧?

ammy413

0个粉丝

2

问答

0

专栏

0

资料

ammy413 2015-08-06 18:06:05
认可0
看了好几份的uboot烧录过程 自启动那一段都是这样的:
1M boot 3M 内核 4M 文件系统的:
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000';saveenv;
为啥都这么喜欢0x82这个地址撒?
也对这个地址的格式做了测试 还是不行··

fancong

0个粉丝

15

问答

0

专栏

2

资料

fancong 2015-08-07 08:11:21
认可0
首先,你要知道3518E都是自带DDR的,大小为64M,这个不可更改,也就是OS+MMZ一共64M, 对于MMZ来说,主要用于VI,VPSS和VENC,OS一般用于linux操作系统即malloc分配,一般情况下,MMZ分配在20到25M左右,OS分配剩下的,在修改的时候,OS的大小是在u-boot的bootargs启动参数里面指定的,mmz的大小是在驱动脚本load3518e里面指定的,指定的时候要注意不光要制定大小,还要修改对应的地址。
至于为什么下载的时候指定的内存地址为0x82000000这个是有海思自己定义的,就像一般的arm9 2440的烧写地址为0x30008000一样,不可修改!

ammy413

0个粉丝

2

问答

0

专栏

0

资料

ammy413 2015-08-07 11:27:10
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=18940&ptid=8346]fancong 发表于 2015-8-7 08:11[/url]
首先,你要知道3518E都是自带DDR的,大小为64M,这个不可更改,也就是OS+MMZ一共64M, 对于MMZ来说,主要用 ...[/quote]

mmz 20M os 44M
自启动代码:
setenv bootargs 'mem=44M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:256K(boot),1M(kernel),4096K(rootfs),2816K(user)';   
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x40000 0x100000;bootm 0x82000000';saveenv;reset
load3518e代码:
insmod mmz.ko mmz=anonymous,0,0x82C00000,20M anony=1 || report_error
这样是对的吧?同理 MMZ 25M OS 39M
setenv bootargs 'mem=39M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:256K(boot),1M(kernel),4096K(rootfs),2816K(user)';
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x40000 0x100000;bootm 0x82000000';saveenv;reset  
       
insmod mmz.ko mmz=anonymous,0,0x82700000,25M anony=1 || report_error
同理还测试了41M-23M
结果都还是一样的报错
# ./load3518e
insmod: can't insert 'mmz.ko': File exists
******* Error: There's something wrong, please check! *****
现在可以开始考虑内核、ko文件等的原因了?

ammy413

0个粉丝

2

问答

0

专栏

0

资料

ammy413 2015-08-07 20:53:08
认可0
今天调好了一部分:
文件系统原来用的是一个精简版的 换成海思提供的原版 即可正常加载load3518e文件 一切ok正常执行时:
# ./load3518e
Hisilicon Media Memory Zone Manager
ERROR: Conflict MMZ:
PHYS(0x81D00000, 0x839FFFFF), GFP=0, nBYTES=29696KB,    NAME="anonymous"
MMZ conflict to kernel memory (0x80000000, 0x822FFFFF)
Add MMZ failed: PHYS(0x81D00000, 0x839FFFFF), GFP=0, nBYTES=29696KB,    NAME="anonymous"
hi3518_base: module license 'Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
Hisilicon UMAP device driver interface: v3.00
load sys.ko for Hi3518...OK!
insmod: can't insert 'hi3518_tde.ko': Operation not permitted
hi3518_dsu: Unknown symbol TdeOsiMbBlit (err 0)
hi3518_dsu: Unknown symbol TdeOsiMb2Mb (err 0)
hi3518_dsu: Unknown symbol TdeOsiCancelJob (err 0)
hi3518_dsu: Unknown symbol TdeOsiOpen (err 0)
hi3518_dsu: Unknown symbol TdeOsiOsd2Mb (err 0)
hi3518_dsu: Unknown symbol TdeOsiEndJob (err 0)
hi3518_dsu: Unknown symbol TdeOsiClose (err 0)
hi3518_dsu: Unknown symbol TdeOsiMbFill (err 0)
hi3518_dsu: Unknown symbol TdeOsiGetFiltParam (err 0)
hi3518_dsu: Unknown symbol TdeOsiMbRotate (err 0)
hi3518_dsu: Unknown symbol TdeOsiBeginJobEx (err 0)
hi3518_dsu: Unknown symbol TdeOsiSetFiltParam (err 0)
hi3518_dsu: Unknown symbol TdeOsiMemRequest (err 0)
hi3518_dsu: Unknown symbol TdeOsiRegisterMemManage (err 0)
hi3518_dsu: Unknown symbol TdeOsiGetJobNumInFifo (err 0)
hi3518_dsu: Unknown symbol TdeOsiMbLDC (err 0)
insmod: can't insert 'hi3518_dsu.ko': unknown symbol in module, or unknown parameter
load viu.ko for Hi3518...OK!
ISP Mod init!
load vpss.ko ....OK!
load vou.ko ....OK!
hifb: Unknown symbol TdeOsiCancelJob (err 0)
hifb: Unknown symbol TdeOsiOpen (err 0)
hifb: Unknown symbol TdeOsiEndJob (err 0)
hifb: Unknown symbol TdeOsiClose (err 0)
hifb: Unknown symbol tde_get_procentry (err 0)
hifb: Unknown symbol TdeOsiBlit (err 0)
hifb: Unknown symbol TdeOsiBeginJob (err 0)
hifb: Unknown symbol TdeOsiEnableRegionDeflicker (err 0)
insmod: can't insert 'hifb.ko': unknown symbol in module, or unknown parameter
load venc.ko for Hi3518...OK!
load group.ko for Hi3518...OK!
load chnl.ko for Hi3518...OK!
load h264e.ko for Hi3518...OK!
load jpege.ko for Hi3518...OK!
load rc.ko for Hi3518...OK!
load region.ko ....OK!
load vda.ko ....OK!
hi_i2c init is ok!
insmod: can't insert 'extdrv/ssp_ad9020.ko': No such file or directory
Hisilicon Gpio Driver OK
acodec inited!
insert audio
==== Your input Sensor type is ov9712 ====
之后运行./HiIspTool.sh发现还是报错 根据内存分配不同 有两种
41M-23M:
# ./HiIspTool.sh ov9712 720p line
killall: ittb_stream: no process killed
# Hello Linux Control....$$$$$$$$$
*********before for:******************
search section [ov9712_720p]
wdr mode = 0
VBR mode!

[]-(484)INIT WEB SERVER error: -1
[]-
(1903)StartWebServer ERR
一种:
35-29M
# ./HiIspTool.sh ov9712 720p line
killall: ittb_stream: no process killed
killall: ittb_control: no process killed
# Hello Linux Control....$$$$$$$$$
*********before for:******************
search section [ov9712_720p]
wdr mode = 0
VBR mode!

[]-(417)HI_MPI_VB_Init fail err :-1610514420
[]-
(1894)Ittb_InitMppSys ERR
这个内存部分的问题算是结贴了吧 下面是海思工具的调试问题了
附:一组可用的启动代码和load3518
setenv bootargs 'mem=41M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:256K(boot),1M(kernel),4096K(rootfs),2816K(user)';
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x40000 0x100000;bootm 0x82000000';saveenv;reset

insmod mmz.ko mmz=anonymous,0,0x82900000,23M anony=1 || report_error  
41M-23M(os-mmz)

fancong

0个粉丝

15

问答

0

专栏

2

资料

fancong 2015-08-07 22:09:37
认可0
记住,你的驱动加载不能有一个错误,找到出错误的地方,改掉,或者去掉,不加在该驱动,否则你的程序会有问题。

zyy6569

0个粉丝

3

问答

0

专栏

0

资料

zyy6569 2015-08-09 00:05:35
认可0
看下datasheet,mmz是不能太小的

Benz

0个粉丝

29

问答

0

专栏

0

资料

Benz 2016-11-09 10:32:01
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=19000&ptid=8346]fancong 发表于 2015-8-7 22:09[/url]
记住,你的驱动加载不能有一个错误,找到出错误的地方,改掉,或者去掉,不加在该驱动,否则你的程序会有问 ...[/quote]

你好, 我加载驱动的时候,有两个驱动加载不上 (已加载系统就卡死) insmod hi3518_tde.ko  和  insmod hi3518_dsu.ko,  大概是什么原因???

Benz

0个粉丝

29

问答

0

专栏

0

资料

Benz 2016-11-09 11:10:52
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=18996&ptid=8346]ammy413 发表于 2015-8-7 20:53[/url]
今天调好了一部分:
文件系统原来用的是一个精简版的 换成海思提供的原版 即可正常加载load3518e文件 一切 ...[/quote]

楼主, 你的帖子我认真看了,解决了一些问题。  但是我在加载例程的时候,系统会卡死或者加载没反应。  这种情况是什么原因??

zfqddd

0个粉丝

0

问答

0

专栏

0

资料

zfqddd 2016-11-26 12:00:57
认可0
热心人很多,学习一下

zltkf

0个粉丝

1

问答

0

专栏

0

资料

zltkf 2017-01-10 23:06:36
认可0
我在加载的时候,也是就死了.还在调试.谢谢楼主的分享.
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区