可使用cat /proc/meminfo 查看内存信息

/mnt/mpp # cat /proc/meminfo 
MemTotal:         124164 kB
MemFree:          107540 kB
Buffers:               0 kB
Cached:             5992 kB
SwapCached:            0 kB
Active:             1484 kB
Inactive:           5116 kB
Active(anon):        612 kB
Inactive(anon):        0 kB
Active(file):        872 kB
Inactive(file):     5116 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:           632 kB
Mapped:              652 kB
Shmem:                 4 kB
Slab:               5212 kB
SReclaimable:        780 kB
SUnreclaim:         4432 kB
KernelStack:         336 kB
PageTables:          124 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:       62080 kB
Committed_AS:       1784 kB
VmallocTotal:     892928 kB
VmallocUsed:       10588 kB
VmallocChunk:     870824 kB

使用free查看内存使用情况

/mnt/mpp # free
             total         used         free       shared      buffers
Mem:        124164        16632       107532            0            0
-/+ buffers:              16632       107532
Swap:            0            0            0

扩展:在/proc/meminfo 显示的 MemTotal 为什么不等于cmdline 里的配置 mem=xxxM?

因为内核在启动时 reserved 了一些内存,如内核的代码段, pmem 里 reserved 的内存。我们看到的 MemTotal 的大小已经减去了内核早期保留的内存块。

load3516a脚本中的mmz模块参数:

####################Variables Definition##########################
 
SNS_TYPE=mn34220        # sensor type
 
mem_total=512;          # 512M, total mem
mem_start=0x80000000;   # phy mem start
 
os_mem_size=64;         # 64M, os mem
mmz_start=0x84000000;   # mmz start addr
mmz_size=128M;          # 128M, mmz size
 
##################################################################


“mmz =” 用来定义 media-mem 的分配池,格式为:
mmz=<name>,<gfp>,<phys_start_addr>,<size>:<name>,<gfp>,<phys_start_addr>:……
<name>:字符串,分配池的名字,例如 ddr。
<gfp>:数字,表示分配池的属性,主要用于在有多种内存的单板上指定 MMZ 位于哪种内存上(比如 DDR、 SDRAM、 DDR2、 DDR3),为 0 表示自动,目前一般都直接将该值置为 0。
<phys_start_addr>: 分配池的物理起始位置, 16 进制数, 如 0x86000000; 注意 MMZ的内存区域不能与 linux 内核的内存区域重叠, MMZ 的物理起始位置就要从“内存起始地址+linux 内核使用的内存大小”开始。 在 Hi353x 平台上,内存的起始地址固定为 0x80000000;举例说明如下:假设单板的 bootargs 为 'mem=96M console=ttyAMA0,115200 root=xxxx', 这表示 linux 内核将使用 96M 的内存空间,那么 MMZ 的起始地址应该配置为 0x80000000+96M = 0x86000000。
<size>:分配池的大小,可以使用如下两种表示方式: 0x100000、 1M。 注意分配池的大小加上 linux 内核的内存大小不能超过物理内存的实际大小。 比如单板上的物理内存是 256M 大小, linux 内核使用了 96M, MMZ 就只能使用最多 256-96=160M。
以上每一个参数都是必需的,参数之间用“ ,”号分隔,可以指定多个分配池,之间用“:”号分隔。 例如: modprobe mmz mmz =ddr,0, 0x86000000,64M:vdec,0, 0x8A000000, 64M。

 

三、如何查看和修改寄存器
在程序中可以使用 HI_SYS_ReadRegister, HI_SYS_WriteRegister 接口进行寄存器的读写操作。
在单板命令行下,使用工具。
单板/usr/sbin 目录下,有一系列寄存器操作相关的工具,分别介绍如下:

Hi3516A开发-- 常见问题FAQs

参数 address 既可以是寄存器地址,也可以是内存地址,所以以上工具也可以用于内存查看、修改。

所需寄存器在:Hi3516A/Hi3516D 专业型HD IP Camera Soc用户指南 查找

 

 

--------------------- 本文来自 聚优致成 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_29350001/article/details/52945124?utm_source=copy

--------------------- 本文来自 聚优致成 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_29350001/article/details/52945124?utm_source=copy

 

--------------------- 本文来自 聚优致成 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_29350001/article/details/52945124?utm_source=copy

 

--------------------- 本文来自 聚优致成 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_29350001/article/details/52945124?utm_source=copy

相关文章: