STM32f769上的noMMU UcLinux中的内存不足

问题描述

我正在尝试在具有16MB RAM的STM32F769(cortex m7)平台上运行基于noMMU UcLinux buildroot的发行版。

最后,似乎有超过4MB的可用内存,但似乎分成了许多较小的块,而不是一些较大的块。

当我以平面格式运行一些较大的已编译二进制文件时,由于无法分配内存来启动应用程序,我会遇到段错误

我在strace,openssl,蚊子上遇到类似的错误(而且似乎在任何更大的应用程序上):

~ # strace
strace: page allocation failure: order:8,mode:0xcc0(GFP_KERNEL),nodemask=(null)
nommu: Allocation of length 839680 from process 83 (strace) Failed
binfmt_flat: Unable to allocate RAM for process text/data,errno -12
SEGV

和dmesg显示

nommu: Allocation of length 839680 from process 81 (strace) Failed
active_anon:0 inactive_anon:0 isolated_anon:0
active_file:14 inactive_file:21 isolated_file:0
unevictable:202 dirty:3 writeback:0 unstable:0
slab_reclaimable:0 slab_unreclaimable:808
mapped:0 shmem:0 pagetables:0 bounce:0
free:1128 free_pcp:0 free_cma:0
Node 0 active_anon:0kB inactive_anon:0kB active_file:56kB inactive_file:84kB unevictable:808kB isolated(anon):0kB isolated(file):0kB mapped:0kB dirty:12kB writeback:0kB shmem:0kB writeback_tmp:0kB unstable:0kB all_unreclaimable? no
normal free:4512kB min:432kB low:540kB high:648kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:56kB inactive_file:84kB unevictable:808kB writepending:12kB present:15296kB managed:11864kB mlocked:0kB kernel_stack:264kB pagetables:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
lowmem_reserve[]: 0 0
normal: 28*4kB (UM) 24*8kB (UM) 13*16kB (UM) 11*32kB (UM) 13*64kB (UM) 8*128kB (UM) 3*256kB (UM) 2*512kB (M) 0*1024kB 0*2048kB 0*4096kB = 4512kB
237 total pagecache pages
binfmt_flat: Unable to allocate RAM for process text/data,errno -12

我不确定我是否理解正确,但是最后一行解释了可用的分配可能性。

normal: 28*4kB (UM) 24*8kB (UM) 13*16kB (UM) 11*32kB (UM) 13*64kB (UM) 8*128kB (UM) 3*256kB (UM) 2*512kB (M) 0*1024kB 0*2048kB 0*4096kB = 4512kB
237 total pagecache pages

似乎总体上有足够的内存,但是我不明白为什么它如此分散并分成许多较小的块。

这是否是内存碎片的结果,无法改善?

或者是否有可能获得更大的可用内存块,因此我的二进制文件将能够进入内存以执行而不会出现段错误?我记得较早的内核具有BIgalLOCS config选项,但似乎不再存在。

是否有任何建议,经验,示例或文档可供学习?

预先感谢

致谢

Rob。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)