OpenHarmony开发者论坛

标题: OpenHarmony在qemu仿真运行qemu_small_system_demo 类型,系统总内存大小只有1M多,怎么扩大? [打印本页]

作者: liangzhijiang    时间: 2024-7-31 14:37
标题: OpenHarmony在qemu仿真运行qemu_small_system_demo 类型,系统总内存大小只有1M多,怎么扩大?
[md]### 【问题描述】

1. 介绍问题现象和发生的背景

   下载了源码 3.1release 版本后,hb set 选择 qemu_small_system_demo 类型编译,然后执行 hb build -f 可正常编译出镜像,并且 ./qemu-run 仿真运行。 执行free 指令发现总内存大小只有1M多。
3. 运行结果、错误截图

   ![a65551af1ccf3f7ded9c1ca6cfdb2af.png](https://forums-obs.openharmony.c ... zgiufvv9gi1euf3.png "a65551af1ccf3f7ded9c1ca6cfdb2af.png")
4. 我尝试过的解决方法和结果

   我查看了vendor/ohemu/qemu_small_system_demo/qemu_run.sh文件启动参数,默认参数是-m 1G,即内存可以使用应该是1G,为什么实际只有1M多呢? 是系统显示错误吗?

### 【运行环境】

SDK版本:OpenHarmony3.1 release版本
[/md]
作者: 润开鸿_闻飞    时间: 2024-8-8 09:05
启动参数中定义的确实是1G,你是在vmware中运行的Ubuntu还是物理机的Ubuntu?感觉像是系统解析错误
作者: fengyunrenwu    时间: 2024-9-2 10:11
OH LiteOS_a内核free命令输出数据格式为:

total  used  free  heap  Mem:

问题截图free命令打印为“total  used  free  shared  buffers”,需确认使用的是否为liteos_a内核。

free命令的实现,在文件kernel\base\misc\mempt_shellcmd.c内,要首先确认是否打开了内核虚拟内存(LOSCFG_KERNEL_VM)特性,函数OsShellCmdFreelnfo先通过接口LOS_MemTotalUsedGet和LOS_MemPoolSizeGet,获取m_aucSysMem1内存池使用大小和总大小。

内存池m_aucSysMem1,通过内核接口OsSysMemlnit完成初始化,初始化大小为宏OS_KHEAP_BLOCK_SIZE(kernel/base/include/los_vm_boot.h内定义,大小为512k)

在开了VM特性以后,device_board_hisilicon/hispark_taurus/liteos_a/board/include/board.h,device_board_hisilicon/hispark_taurus/liteos_a/board/target_config.h内定义的宏
#define SYS_MEM_SIZE_DEFAULT 0x07f00000(127M)生效。





欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5