CSR8670如何加大堆栈stack size到1k words?
1. 芯片:CSR86702. 开发环境:
ADK4.0
3. 开发工程:
Sink -> Headset
4. 遇到问题:
手动配置Properties里面手动设定stack size,如果超过160,烧进去程序就会运行不了了。错误提示:烧进去的程序和Disk上的程序mismatch。(英文原文忘记了);如果只是把stack size改回155,代码一点都不改,程序就运行正常。
5. 我为何想加大堆栈?
自己写的程序里用了function pointer,发现编译器自动计算堆栈会失败,然后编译器就用了一个大小为82的默认大小的堆栈(编译器编译后有提示),烧进去以后,程序就会异常停止。改成手动设置堆栈为155,155是加function pointer之前,compiler自己计算出来的,我照用,程序即刻正常。好明显,是stack溢出造成的。手动设置155 stack大小虽然暂时能用,但我怕之后程序写多了,变量多了,stack又会溢出,stack肯定是越大越好啦,自己试到最大只能设定到160,再大程序烧进去就会停止!
6. 有问题当然是去找文档看,然后找到了CS-110364-AN.pdf这个文档,找到了很多答案。看了CS-110364-AN.pdf VM Memory Mapping and Memory Usage这篇应用文档,感觉如果开发8670还是很有必要的。
文档里明确说:用了函数指针或迭代算法,堆栈计算就会失败。
文档里面讲的stack空间地址为0x00FF~0x04FF,即共有4个256 words的slot,合计共1k words的stack空间。那么为何工程只能设置160的堆栈空间呢???我想把它全部用掉啊!反正留着也不能另作他用。难道我理解有误?
想问各位坛友如果全部用掉1k words的stack空间该怎样做?
本帖最后由 fmancylee 于 2016-11-5 03:37 编辑
怎麼會放不進去?!?!?
确定是1k的字,区域,木有包含其他的。
yang1 发表于 2016-11-5 08:44
确定是1k的字,区域,木有包含其他的。
那该如何在Properties里面设定呢?
找fae解决吧
楼主这个问题解决了吗?
页:
[1]