CH32V307 liteos-m使用外部堆内存会挂住

环境:

板子:CH32V307VCT6 risc-v

OS:liteos-m


liteos使用外部堆内存会挂住,这是为啥?

修改:

链接脚本:Link.ld .stack段之前新增:

.heap :

{

. = ALIGN(8);

__los_heap_addr_start__ = .;

. = (ORIGIN(RAM) + LENGTH(RAM) - __stack_size - 9);

. = ALIGN(8);

__los_heap_addr_end__ = .;

} >RAM


配置文件:target_config.h 内存配置部分的修改:

#define LOSCFG_SYS_EXTERNAL_HEAP 1


extern uint32_t __los_heap_addr_start__;

extern uint32_t __los_heap_addr_end__;


#define LOSCFG_SYS_HEAP_ADDR (VOID*)(&__los_heap_addr_start__)

#define LOSCFG_SYS_HEAP_END (VOID*)(&__los_heap_addr_end__)

#define LOSCFG_SYS_HEAP_SIZE (LOSCFG_SYS_HEAP_END - LOSCFG_SYS_HEAP_ADDR)


内存初始化:los_memory.c::OsMemSystemInit这个函数里面会挂住


您好,关于所说”挂住“,是指卡死在某个位置了么,可以具体定位一下挂住位置,此外,可以注意一下程序是否有进HardFault。若方便,可将程序发至我的邮箱(lzs@wch.cn)具体看一下。后续若有问题,也可通过邮箱和我进行沟通。此外需要注意下工程文件的配置是否正确。



代码已经发送到您邮箱,看了下外部堆内存SRAM的范围都是正常的,

但是会卡在内存初始化的里面memset的地方,也没有崩溃栈

image.png


只有登录才能回复,可以选择微信账号登录