TI中文支持网
TI专业的中文技术问题搜集分享网站

CC3235的内存分配问题

Other Parts Discussed in Thread:CC3235S, CC3235SF, UNIFLASH

您好!

最近在使用CC3235芯片,基于OOB工程开发,需要在OOB里面新建两个线程,分配的空间大小分别为4096字节和2048字节。可是运行线程后,provisioningTask线程会卡死在sl_start(),请问这是怎么回事呢?是由于动态分配的内存超量了嘛?

Kevin Qiu1:

你在map文件中看下flash等使用情况,看下有没有超出

,

Kevin Qiu1:

应该没有超出,超出一般会报错

,

user4696099:

刚刚看了map文件,有段说明是这样的MEMORY CONFIGURATIONnameoriginlengthusedunusedattrfill
-------------------------------------------------------------------SRAM2200000000000400000003f0c000000f4RW XSRAM200040000003c0000002fd550000c2abRW X

,

Kevin Qiu1:

这部分是SRAM的,都有剩余,你分配的空间是分配到哪里了?
另外flash的使用情况呢

,

user4696099:

空间分配给了线程堆栈

另外,flash的分配是看这个嘛?

SEGMENT ALLOCATION MAPrun originload originlengthinit length attrs members
--------------------- ---------- ----------- ----- -------
200004002000040000003c0000000000rw-200004002000040000003c0000000000rw- .stack
20004000200040000001f20a0001f20ar-x20004000200040000000004000000040r-- .resetVecs20004040200040400001f1ca0001f1car-x .text
20023400200234000000f3e000000000rw-20023400200234000000db3d00000000rw- .bss20030f4020030f40000018a000000000rw- .data
200327e0200327e00000168800001688r--200327e0200327e00000136600001366r-- .const20033b4820033b480000032000000320r-- .cinit

,

user4696099:

OOB工程里面原本有的provisioningTask分配了2048;linklocalTask3072;controlTask2048;otaTask2048;然后我在这个工程里面加了两个线程,分配的空间分别是20484096

,

Kevin Qiu1:

不是这个,OBB例程中原始的map文件应该是这样的:

应该是你程序的问题

,

user4696099:

刚刚打开了一个例程,编译过后生成的.map文件是这样的

,

user4696099:

没有flash_hdr和flash的说明

,

user4696099:

我们用的是CC3235S不是CC3235SF

,

Kevin Qiu1:

CC3232S map文件中确实没有flash部分,你单步运行试了吗?确定是卡到sl_start()这里了?

,

user4696099:

试过了,就是单步运行发现会卡死在provisioningTask线程中的sl_start()中。

,

Kevin Qiu1:

你用uniflash烧录下ServicePack,然后重新下载程序试试

,

user4696099:

在UNiflash中重新加载了ServicePack包,运行代码,没有卡死在sl_start()了,谢谢

赞(0)
未经允许不得转载:TI中文支持网 » CC3235的内存分配问题
分享到: 更多 (0)