可使用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 目录下,有一系列寄存器操作相关的工具,分别介绍如下:
参数 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