SYSBIOS在SWI中动态分配内存

来源:互联网 发布:单片机设计大赛作品 编辑:程序博客网 时间:2024/05/21 12:38
</pre>        目前在做一个工程,C6748使用SYSBIOS系统.在SWI中调用malloc函数,就出现abort错误.当然也可以通过其他方法来解决这个问题,比如将需要分配内存的代码放到task中执行.<p></p><p>不过本着探索的精神..去翻看了下HELP,发现有个组件是支持在SWI中动态分配内存的:<span class="xdoc-id">ti.sysbios.heaps.</span><span class="xdoc-id">HeapBuf</span></p><p><span class="xdoc-id">        具体过程:</span></p><p><span class="xdoc-id">                在cfg配置文件中的相关组件下添加一个实例.Block size为每次申请的内存最大尺寸,Number of blocks为内存块数(可申请的次数),Alignment为对齐数,需为0或者2的幂</span></p><p><span class="xdoc-id"><img src="http://img.blog.csdn.net/20160907103458694?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></p><p><span class="xdoc-id">           在函数中调用:</span></p><pre name="code" class="cpp">extern HeapBuf_Handle SwiHeap;void LightSlow(UArg a0,UArg a1){int i;int *a = (int *)HeapBuf_alloc(SwiHeap,5*sizeof(int),4,NULL);for(i = 0;i < 5;++i){a[i] = i;        }HeapBuf_free(SwiHeap,a,5*sizeof(int));}

         



0 0
原创粉丝点击