Android编译移植memtester,内存压测试工具

1 场景描述

公司需要使用memtester压测DDR。

2 下载memtester源码

memtester 版本 4

3 添加Android.mk编译脚本及源码

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= \
	memtester.c \
	tests.c

LOCAL_C_INCLUDES += \
		$(LOCAL_PATH)/include 	



LOCAL_MODULE:= memtester
LOCAL_MODULE_TAGS := optional
#LOCAL_MULTILIB := 32
include $(BUILD_EXECUTABLE)

4 编译

source build/envsetup.sh && export OUT_DIR=out_sys && lunch sys_mssi_t_64_cn_armv82_datasms-next-userdebug

mm

编译完成 memtester 后,应检查生成的可执行文件的架构,以确保与目标设备的 CPU 架构一致,避免运行错误。

file ./target/product/mssi_t_64_cn_armv82_datasms/symbols/system/bin/memtester
./target/product/mssi_t_64_cn_armv82_datasms/symbols/system/bin/memtester: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /system/bin/linker64, BuildID[md5/uuid]=232d133b1053b84186e19b8bc3b47cf7, with debug_info, not stripped

要求是ARM aarch64的,不能是x86-64的,要与目标运行机器架构一致

Android.mk写好后, cd进目录, mm编译即可,生成的文件在out/xxxx/xxx/system/bin/目录下,

adb root
adb remount
adb push memtester /system/bin/
adb shell
memtester 100M 1 

device.mk 中加入:

PRODUCT_PACKAGES += memtester

即可将 memtester 工具加入系统工程进行编译和打包。

如果需要在应用中运行,只需通过命令行执行,例如:

memtester 100M 1

表示测试 100MB 内存,循环 1 次。

注意:由于 memtester 需要直接访问内存,应用必须修改对应的 SEPolicy 权限,否则普通应用没有权限运行。

4 退出码

 0:正常退出

 x01:内存分配或者锁定失败

 x02:stuck Address测试失败

 x04:其他测试失败

5 例子

1)首先查看本机内存

free -g,

2)分配10g内存用于memtest,循环十次

memtester 1g 10

文中打印了很多测试信息,可以看出来memtester对内存的逻辑操作进行了正确性验证。

3) 查看实际内存使用情况

输入: top 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值