您好!
最近在使用CC3235芯片,基于OOB工程开发,需要在OOB里面新建两个线程,分配的空间大小分别为4096字节和2048字节。可是运行线程后,provisioningTask线程会卡死在sl_start(),请问这是怎么回事呢?是由于动态分配的内存超量了嘛?
Kevin Qiu1:
你在map文件中看下flash等使用情况,看下有没有超出
Kevin Qiu1:
回复 Kevin Qiu1:
应该没有超出,超出一般会报错
user4696099:
回复 Kevin Qiu1:
刚刚看了map文件,有段说明是这样的MEMORY CONFIGURATIONnameoriginlengthusedunusedattrfill -------------------------------------------------------------------SRAM2200000000000400000003f0c000000f4RW XSRAM200040000003c0000002fd550000c2abRW X
Kevin Qiu1:
回复 user4696099:
这部分是SRAM的,都有剩余,你分配的空间是分配到哪里了?
另外flash的使用情况呢
user4696099:
回复 Kevin Qiu1:
空间分配给了线程堆栈
另外,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:
回复 Kevin Qiu1:
OOB工程里面原本有的provisioningTask分配了2048;linklocalTask3072;controlTask2048;otaTask2048;然后我在这个工程里面加了两个线程,分配的空间分别是20484096
Kevin Qiu1:
回复 user4696099:
不是这个,OBB例程中原始的map文件应该是这样的:
应该是你程序的问题
user4696099:
回复 Kevin Qiu1:
刚刚打开了一个例程,编译过后生成的.map文件是这样的
user4696099:
回复 Kevin Qiu1:
没有flash_hdr和flash的说明
user4696099:
回复 Kevin Qiu1:
我们用的是CC3235S不是CC3235SF