嵌入式开发者社区

标题: ARM裸机开发 malloc函数测试中的问题 [打印本页]

作者: lzy9634    时间: 2018-7-27 17:00
标题: ARM裸机开发 malloc函数测试中的问题
[attach]3349[/attach]
4 s- ?  B5 B& }- h; k$ x; ^5 ~一段很简单的malloc动态内存分配测试程序,当MaxNum为600时,动态内存申请就失败,malloc返回值为NULL。当MaxNum为较小值是就可以。. ?( H" q! U" U& s
所以这是一个内存大小限制的问题。我想知道这个内存大小限制在哪里。创龙的软件硬件工程师们,能否帮我解答一下这个问题。以下是我的.cmd文件。将动态内存分配的段放在DDR2下,但是DDR2的大小并不是我上文中提到的这个”限制“所在。1 z1 h/ J, b, i/ s9 `
[attach]3350[/attach]$ w5 H1 S; G5 Y! U; C$ M1 t
[attach]3351[/attach]
. n) ]& v2 k5 q+ {0 h, x! F$ h
3 B8 ]8 d! f+ e) E' k
作者: 广州创龙莫工    时间: 2018-7-31 08:40
您好:& H: r/ y8 d9 G
        您可以在.cmd文件那里去修改堆栈的大小。
6 K" E3 k% B7 f- H9 C7 K
作者: lzy9634    时间: 2018-7-31 14:48
本帖最后由 lzy9634 于 2018-7-31 14:50 编辑
1 f" t5 W. O% O+ n8 R
广州创龙莫工 发表于 2018-7-31 08:40
" {; J+ G. [3 t3 J( a: J8 G/ B您好:
6 {9 j. P$ l, R6 `/ g4 \" t4 `        您可以在.cmd文件那里去修改堆栈的大小。
% l* N+ A% w8 ~" M4 c! ~  Z1 ?1 J2 k- d
莫工,您好!
; y' {1 a- X' D- m3 n7 C% f% B, w  f[attach]3353[/attach][attach]3354[/attach]7 H5 b$ w% {# Y- ~8 L
这是我的.cmd文件,我将malloc产生内存的区域.sysmem段放在32KB的L1DRAM下。理论上malloc 600个int也就是2400个字节才2~3KB理论上空间是足够的。但就是malloc失败,如下图,所以能否帮忙测试解答一下呢?万分感谢!
* t; a4 e4 r' F& x1 P0 V5 g. `
作者: 广州创龙廖工    时间: 2018-8-2 11:07
您好,黎工,如果您将.system定义到其他空间,例如DDR中,请问程序,是否可以正常编译通过呢?需要先排查一下,问题是出在哪个地方
作者: Yang20191013    时间: 2020-7-12 22:16
广州创龙莫工 发表于 2018-7-31 08:40& m3 t2 Q6 H+ D: ?* t' f8 e% P/ H' {
您好:5 t8 N- b$ ?  r
        您可以在.cmd文件那里去修改堆栈的大小。
0 }/ ]: Z7 E4 ]1 j: ^
我在ccs中用malloc动态分配内存也遇到了这个问题,就是查看map文件可以发现修改cmd不能改变堆栈大小,只是改变了system的MEMORY。在工程设置中Basic options中可改变堆和栈的大小。希望可以给有同样问题的朋友一个参考。




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4