rt thread怎么让程序运行在外部SRAM,比如新创建的线程,读写文件用到的内存等。我外部SRAM配置到内存堆上成功,可以用malloc free申请和释放,但是内部内存不足时,创建线程和读写文件就会失败,使用cat查看个文件系统就卡死,系统为什么不去使用外部内存啊,外部内存还有1M的空间
查看更多
使用 rt_xxx_init 函数创建所有内核对象,线程,信号,消息队列,定时器...
像freeRTOS的heap_5.c的内存管理方式,就可以支持多块不连续的内存快,这种设计可以支持到内部内存和外部内存配合使用,不知rt-thread的设计有没有考虑这样的使用场景?
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
那读写文件呢,我用cat查看个文件系统就卡死了

怎么配置让系统内部自动使用外部内存,系统都卡死了
@HBQ 线程栈是动态分配的,从哪个内存堆分配的,那个线程运行的函数使用的局部变量就是在那个内存上。
你这个出问题,不是在不在哪个内存引起的吧,要跟你说过你这个系统有隐患,有不稳定因素。你不觉得你添加过那么多东西每次都出莫名其妙的问题,而且多半出问题的地方是不应该出的,很奇怪吗?你也玩儿过那么多东西都没因为内存在哪儿出现问题,这次读文件就怀疑是内存问题了?
@出出啊 是内存,我是故意申请内存,把内部内存弄的不足,然后实验的,看系统能不能去使用外部内存
@HBQ 好,假设你说的是对的,是内存问题,其它存储设备驱动,文件系统都没问题。
那么,你执行 cat 命令的时候,是使用的 tshell 线程的线程栈,这个时候, tshell 内存栈从哪儿分配的?你是清楚的吧。
至于有没有使用外部内存,代码里打个断点儿,在 malloc 的时候看看走不走外部内存设备的申请代码就好了啊。
还是上面说的, init 就从堆分配,就可以用得上 SRAM