morning.call 发表于 2019-3-8 16:06:25

RTX5内存管理的疑问

// Dynamic Memory
#if (OS_DYNAMIC_MEM_SIZE != 0)
#if ((OS_DYNAMIC_MEM_SIZE % 8) != 0)
#error "Invalid Dynamic Memory size!"
#endif
static uint64_t os_mem \
__attribute__((section(".bss.os")));
#endif

===========================
动态内存的空间是编译器确定的,那我想把这部分内存分配在外部SRAM中,该怎么办呢?有谁整过,可否分享下方案,谢谢!

eric2013 发表于 2019-3-8 16:11:39

直接将static uint64_t os_mem __attribute__((section(".bss.os")));

定义到外部
uint64_t os_mem] __attribute__((at(0xC0000000)));

morning.call 发表于 2019-3-8 16:26:57

还是大神经验丰富,另外问下硬汉,RTX5在V7开发板的应用范例,有这方面的需求吗? 比如把os_mem定义到外部SDRAM中。

eric2013 发表于 2019-3-8 16:29:15

morning.call 发表于 2019-3-8 16:26
还是大神经验丰富,另外问下硬汉,RTX5在V7开发板的应用范例,有这方面的需求吗? 比如把os_mem定义到外 ...

不建议,内核的动态内存还是推荐用TCM,400MHz,发挥最大性能。

morning.call 发表于 2019-3-8 16:33:36

定义到外部
uint64_t os_mem] __attribute__((at(0xC0000000)));

硬汉大神, 这么指定一下,会不会让MDK在调试的时候,输出OS信息的时候,显示错误呢?比如,它可能固定去.bss.os段中去拉变量显示,结果这个变量在外部RAM中。谢谢!

eric2013 发表于 2019-3-8 16:35:40

morning.call 发表于 2019-3-8 16:33
定义到外部
uint64_t os_mem] __attribute__((at(0xC0000000)));



会,估计会影响调试组件的表现。

你可以创建任务的时候,单独给任务栈使用外部RAM。毕竟任务栈是需求最大的。

morning.call 发表于 2019-3-8 17:14:18

谢谢大神的分享!

zjf4611 发表于 2021-9-28 09:29:58

动态内存的地址按照该方法是可以分配到其它空间,但是其它数据地址比如thread_cb等还是以.bss.os开始的,如何改变其它数据的地址呢

eric2013 发表于 2021-9-28 11:21:06

zjf4611 发表于 2021-9-28 09:29
动态内存的地址按照该方法是可以分配到其它空间,但是其它数据地址比如thread_cb等还是以.bss.os开始的,如 ...

可以考虑自己手动修改。
页: [1]
查看完整版本: RTX5内存管理的疑问