diff --git a/src/memheap.c b/src/memheap.c index 9c3f570f2949eb251ae821dc01ce546479c1564c..e96b402bcf64a6da33c8b5a414d8c11402cb44c5 100644 --- a/src/memheap.c +++ b/src/memheap.c @@ -832,13 +832,16 @@ static struct rt_memheap _heap; */ void rt_system_heap_init(void *begin_addr, void *end_addr) { - RT_ASSERT((rt_uint32_t)end_addr > (rt_uint32_t)begin_addr); + RT_ASSERT((rt_size_t)end_addr > (rt_size_t)begin_addr); + + rt_size_t begin_align = RT_ALIGN((rt_size_t)begin_addr, RT_ALIGN_SIZE); + rt_size_t end_align = RT_ALIGN_DOWN((rt_size_t)end_addr, RT_ALIGN_SIZE); /* initialize a default heap in the system */ rt_memheap_init(&_heap, "heap", - begin_addr, - (rt_uint32_t)end_addr - (rt_uint32_t)begin_addr); + (void *)begin_align, + end_align - begin_align); } /**