海思3559:MMZ内存、OS内存配置

文章详细介绍了海思3559AV100芯片的内存地址范围,内存被划分为OS内存和MMZ内存,其中OS内存用于Linux内核及应用,而MMZ内存专用于多媒体处理。MMZ内存由海思驱动底层管理,不归Linux内核控制。内存分配需平衡OS和MMZ的需求,以优化性能。设置示例包括MMZ内存的匿名分配和OS内存的bootargs配置。

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

前言

  海思3559的DDR最大支持到8GB

hi3559av100芯片的内存地址范围


在这里插入图片描述
  (1)通过查阅数据手册可知《Hi3559AV100 专业型 Smart IP Camera SoC 用户指南》,芯片的内存地址范围是0x4000_0000-0x23FFF_FFFF,最大能支持8G内存;
  (2)海思芯片把内存分为mmz内存和os内存,最终linux系统能管理的内存是小于实际接的内存大小,因为要分一部分内存作为mmz;

内存管理

在海思芯片中,将内存划分为OS内存和MMZ内存,板子上的8G内存一部分做OS内存,一部分做MMZ内存;

OS内存:

  就是分配给linux内核管理的内存,分配给内核和应用程序使用;也就是cat /proc/cmdline看到的
mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=yaffs2 mtdparts=hinand:1M(boot),9M(kernel),128M(rootfs)操作系统内存512MB

MMZ(Media Memory Zone,多媒体内存区域):

  是海思芯片独有的,因为海思芯片是专门用来做音视频编解码的芯片,需要使用大量内存,为了编解码的速度,海思驱动底层会管理一部分内存,专门用于音视频编解码;
  (1)mmz: Media-Memory-Zone,媒体内存域,也就是分配池;
  (2)mmb: Media-Memory-Block,媒体内存块;
  (3)MMZ管理的物理内存区域不属于linux内核控制,是单独给媒体驱动(如解码器、DEMUX)使用的物理内存区域。 MMB是指从MMZ中分配的内存块;
  (4)MMZ驱动管理用户创建的分配池,用户程序分配内存的时候可以指定要在哪个分配池中分配内存,分配器将查找满足要求的分配池并从中分配合适的内存块给程序使用;
  (5)MMZ是可以存在多个分配池的,用户申请内存块时可以指定从哪个分配池获取,也可以不指定分配池,分配器自动分配一个满足条件的内存块;
  (6)分配池的配置是在加载hi_osal.ko驱动时指定的,不同的SDK可能驱动的名字不一样;

总结

  (1)分配的OS内存和MMZ内存加起来的总大小不能超过实际物理内存的大小;
  (2)OS内存和MMZ内存互相之间的内存地址不能重合,否则会产生内存踩踏;
  (3)总的物理内存大小不变的情况下,OS内存和MMZ内存之间的分配是此消彼长,两者之间分配的份额需要取得平衡,以达到最优性能;
  也就是说将实际物理内存分成两部分——OS内存和MMZ内存,两部分内存的管理是彼此独立的;

设置MMZ内存

驱动参数

mmz=<name>,<gfp>,<phys_start_addr>,<size>:<name>,<gfp>,<phys_start_addr>:

在这里插入图片描述

驱动加载

  SDK2.0.3.1版本ko目录下load3559av100_multicore

mmz_start=0x64000000;         # mmz start addr
mmz_size=1472M;               # 3520M, mmz size
insmod hi_osal.ko anony=1 mmz_allocator=hisi mmz=anonymous,0,$mmz_start,$mmz_size || report_error

  mmz=anonymous表示第一块MMZ内存的名字是anonymous
  mmz_start表示起始地址是0x64000000
  mmz_size表示内存大小分配了1472M;

查看MMZ内存:/proc/media-mem

在这里插入图片描述
  MMZ内存有名字是anonymous,大小是1507328KB,和我们设置的一致

设置OS内存

bootargs

uboot加载是setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=yaffs2 mtdparts=hinand:1M(boot),9M(kernel),128M(rootfs)'

查看OS内存 free

在这里插入图片描述

最终内存分配

-----|----------------|  0x40000000   # DDR起始地址                                                          
64M	 |      DSP       |                                                 
-----|----------------|  0x44000000   #kernel起始地址                                                      
512M |    kernel      |                                                 
-----|----------------|  0x64000000   #MMZ起始地址     
1472M| MMZ:anonymous  | 
-----|----------------|  0x13FFFFFFF  # End of memory managed by MMZ.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快跑bug来啦

创作不易,来点动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值