在keil mdk6环境中使用GD32F103RCx上移植了RT-Thread nano 4.1.1(github上拉取),在使用rtconfig.h中配置了:
#define RT_USING_HEAP#define RT_USING_SMALL_MEM#define RT_USING_MEMHEAP
#define RT_USING_HEAP
#define RT_USING_SMALL_MEM
#define RT_USING_MEMHEAP
但程序无法启动,打印信息提示:
(tid != RT_NULL) assertion failed at function:rt_application_init, line number:213
根据网上资料调整主线程堆栈大小等故障依旧。。。
在其他条件相同的情况下,尝试关闭rtconfig.h中上述的三个宏定义,使用以下宏定义,程序则正常运行:
#define RT_USING_HEAP#define RT_USING_SMALL_MEM_AS_HEAP
#define RT_USING_SMALL_MEM_AS_HEAP
为什么通过rtconfig.h文件配置程序无法运行,是我哪里没有配置对吗?能否提供解决思路?
查看更多
遇到同样问题了,使用静态就没事,奇怪
因为RTT的动态内存分配需要默认使能一个内存管理算法,你这里配置的就是小内存算法,这里默认是需要使能三个宏定义的RT_USING_HEAP // 使能内存堆RT_USING_SMALL_MEM //使用小内存算法RT_USING_SMALL_MEM_AS_HEAP // 使能内存算法用于内存堆
然后RTT默认是支持静态内存分配的,这部分内存由编译阶段就确定了,只不过如果想要动态内存分配就需要使能对应的内存堆内存分配算法
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部