嵌入式技术论坛
直播中

大红枣

11年用户 630经验值
私信 关注
[问答]

求助rt thread怎么让程序运行在外部SRAM呢

rt thread怎么让程序运行在外部SRAM,比如新创建的线程,读写文件用到的内存等。
我外部SRAM配置到内存堆上成功,可以用malloc free申请和释放,但是内部内存不足时,创建线程和读写文件就会失败,使用cat查看个文件系统就卡死,系统为什么不去使用外部内存啊,外部内存还有1M的空间


回帖(6)

倪love

2022-5-5 11:53:05
使用 rt_xxx_init 函数创建所有内核对象,线程,信号,消息队列,定时器...
举报

大红枣

2022-5-5 11:53:26
那读写文件呢,我用cat查看个文件系统就卡死了
怎么配置让系统内部自动使用外部内存,系统都卡死了
举报

倪love

2022-5-5 11:53:48
线程栈是动态分配的,从哪个内存堆分配的,那个线程运行的函数使用的局部变量就是在那个内存上。
你这个出问题,不是在不在哪个内存引起的吧,要跟你说过你这个系统有隐患,有不稳定因素。你不觉得你添加过那么多东西每次都出莫名其妙的问题,而且多半出问题的地方是不应该出的,很奇怪吗?你也玩儿过那么多东西都没因为内存在哪儿出现问题,这次读文件就怀疑是内存问题了?
举报

大红枣

2022-5-5 11:54:03
是内存,我是故意申请内存,把内部内存弄的不足,然后实验的,看系统能不能去使用外部内存
举报

倪love

2022-5-5 11:54:12
好,假设你说的是对的,是内存问题,其它存储设备驱动,文件系统都没问题。
那么,你执行 cat 命令的时候,是使用的 tshell 线程的线程栈,这个时候, tshell 内存栈从哪儿分配的?你是清楚的吧。
至于有没有使用外部内存,代码里打个断点儿,在 malloc 的时候看看走不走外部内存设备的申请代码就好了啊。
还是上面说的, init 就从堆分配,就可以用得上 SRAM
举报

jjll652

2022-5-5 11:54:20
像freeRTOS的heap_5.c的内存管理方式,就可以支持多块不连续的内存快,这种设计可以支持到内部内存和外部内存配合使用,不知rt-thread的设计有没有考虑这样的使用场景?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分