memheap初始化

2020-2-13 20:44 [复制链接] 0 45

rt_err_t rt_memheap_init(struct rt_memheap *memheap,
& D1 O2 V& w8 `( o' w  [5 T                         const char        *name,7 D- f: a3 P0 _6 v1 r
                         void              *start_addr,
5 `; |9 C3 [( o- }- M+ n! p; S6 z                         rt_size_t         size)
+ L- v" ]. O7 m8 C0 C" F* F9 H{8 h: j: @) x3 Z& ^0 v: Q
    struct rt_memheap_item *item;
8 _& [6 v- M0 q' ^. [5 M% I$ z6 i: o7 B, X8 S+ E
    RT_ASSERT(memheap != RT_NULL);
' I7 ]( C+ c4 x" Y$ t0 x. [/ Z! B3 Q9 g; X! N/ f9 U: m
    /* initialize pool object */
7 `+ G( g% A0 z% B9 l$ L! F* U    rt_object_init(&(memheap->parent), RT_Object_Class_MemHeap, name);2 [; C3 W: m7 m
        % |# u; @, t4 h. J1 j$ @5 O
    memheap->start_addr     = start_addr;/*heap的首地址没有(不用)执行对齐?*/
( Q4 Z% Q+ X6 C4 @4 P    memheap->pool_size      = RT_ALIGN_DOWN(size, RT_ALIGN_SIZE);
* h7 i- u" h; o7 n: h" }
* }8 L8 j, H- C! p1 m......# W6 k+ |) a! R& A3 Q; }; g
    请问一下,为什么memheap初始化的时候不对起始地址做对齐处理,4 P) `7 q) m( k: R
而在小内存算法中对起始地址和结束地址都做了对齐
7 A; f9 o2 R' U7 j+ @% i0 P8 h   void rt_system_heap_init( void *begin_addr, void *end_addr )
8 I1 r8 R# q7 i9 w7 R# u{
- z# B3 V) |7 M3 ?% i& G    struct heap_mem *mem;
# ^$ N. F* H% y1 ^9 `& z, s    rt_ubase_t  begin_align = RT_ALIGN(     (rt_ubase_t)begin_addr, RT_ALIGN_SIZE  );# f, l: z$ n9 I. P2 q+ {
    rt_ubase_t  end_align   = RT_ALIGN_DOWN((rt_ubase_t)end_addr  , RT_ALIGN_SIZE  );3 }& N7 G5 u1 B0 ]4 v5 l
: }/ V" t; v% {% u4 C: d
    RT_DEBUG_NOT_IN_INTERRUPT;8 p. m, h' O; f" U3 C

: D; a4 P& T# \( h3 c; x5 D# t" k/ K3 w
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表