[RT-Thread 源码分析] 1. 内存管理1

rt-thread的小内存管理是其默认的堆内存管理算法。是采用静态链表来实现的,源文件为mem.c。
1.数据结构
=====
    struct heap_mem  
    {  
        /* magic and used flag */  
        rt_uint16_t magic;
        // 如果此内存块被分配了,则置0x1ea0,以此标志
        // 此块内存是正常分配出来的,而不是非法指针  
        rt_uint16_t used;      // 0:未分配;1:已分配  
      
        rt_size_t next, prev;  // 前一内存块,后一内存块  
    };  
    
2.初始化动态内存堆
=====
    /** 
     * @ingroup SystemInit 
     * 
     * This function will init system heap 
     * 
     * @param begin_addr the beginning address of system page 
     * @param end_addr the end address of system page 
     */  
    void rt_system_heap_init(void *begin_addr, void *end_addr)  
    {  
        struct heap_mem *mem;  
        rt_uint32_t begin_align = RT_ALIGN((rt_uint32_t)begin_addr, RT_ALIGN_SIZE);    
        // 得到对齐后的堆内存起始地址  
        // 在rtdef.h中
        // #define RT_ALIGN(size, align)           (((size) + (align) - 1) & ~((align) - 1))
        // 使得begin_align保持四字对齐,这样对于处理器寻址时比较高效
        rt_uint32_t end_align = RT_ALIGN_DOWN((rt_uint32_t)end_addr, RT_ALIGN_SIZE); 
        // 得到对齐后的堆内存末尾地址  
        // #define RT_ALIGN_DOWN(size, align)      ((size) & ~((align) - 1))
        // 使得末尾地址向后四字对齐
        RT_DEBUG_NOT_IN_INTERRUPT;          
        // 确保此函数不是运行在中断例程内  
        // 在rtdebug.h中
        // #define RT_DEBUG_NOT_IN_INTERRUPT                                             \
        //    do                                                                            \
        //    {                                                                             \
        //        rt_base_t level;                                                          \
        //        level = rt_hw_interrupt_disable();                                        \
        //        if (rt_interrupt_get_nest() != 0)                                         \
        //        {                                                                         \
        //            rt_kprintf("Function[%s] shall not used in ISR\n", __FUNCTION__);     \
        //            RT_ASSERT(0)                                                          \
        //        }                                                                        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RT-Thread API参考手册.pdf 是一本RT-Thread实时操作系统的应用程序接口参考手册。RT-Thread是一个开源的实时操作系统,适用于嵌入式设备的开发。在这个参考手册中,用户可以找到RT-Thread提供的各种API函数和它们的用法说明。 这本参考手册的主要目的是帮助开发者更好地理解和使用RT-Thread操作系统。它详细介绍了RT-Thread操作系统提供的各种功能和服务的API函数,包括线程管理、内存管理、文件系统、网络协议栈、设备驱动程序等。 通过这本参考手册,开发者可以快速地查找和了解某个特定的API函数的用法。每个API函数都有详细的说明和示例代码,开发者可以根据自己的需求来选择合适的API函数,并参考示例代码进行开发。参考手册还提供了API函数的参数说明和返回值说明,方便开发者正确地使用这些函数。 RT-Thread API参考手册的编写目的是为了提供一个全面且易于理解的文档,帮助开发者更好地使用RT-Thread操作系统进行开发。无论是初学者还是有经验的开发者,都可以通过这本参考手册获得所需的帮助。 总之,RT-Thread API参考手册是一本非常有价值的书籍,对于使用RT-Thread进行嵌入式设备开发的开发者来说是必备的参考资料。它可以帮助开发者更好地理解和使用RT-Thread操作系统的各种功能和服务,从而提高开发效率和代码质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值