关于FR800x os_get_free_heap_size



  • uint32_t er_zi_limit = (uint32_t)&Image$$ER_ZI$$Limit;
    uint32_t heap_base = (uint32_t)&Image$$RAM_CHECK$$Base;
    uint32_t free_space  = heap_base  - er_zi_limit;  
    
    printf("%s os_get_free_heap_size = %d (~%dKB)\r\n",__FUNCTION__,os_get_free_heap_size(),os_get_free_heap_size()/1024);  
    printf("Sct config Heap Base[%X] size = %d (~%dKB)\r\n", heap_base-1, free_space, free_space/1024);    
    
    printf("%-20s 0x%08X   %-12u %-12u\r\n", "ER_ZI",            (uint32_t)&Image$$ER_ZI$$Base,            (uint32_t)&Image$$ER_ZI$$Length,            ((uint32_t)&Image$$HEAP_KE$$Base  - (uint32_t)&Image$$ER_ZI$$Base));
    printf("%-20s 0x%08X   %-12u %-12u\r\n", "HEAP_KE",          (uint32_t)&Image$$HEAP_KE$$Base,          (uint32_t)&Image$$HEAP_KE$$Length,          (0x1100C000  - (uint32_t)&Image$$HEAP_KE$$Base));
    

    17:24:21<-[S49]: proj_init os_get_free_heap_size = 26676 (~26KB)
    17:24:21<-[S53]: Sct config Heap Base[1100BFFF] size = 27980 (~27KB)

    17:24:21<-[S63]: Region Name Base Addr Size (Bytes) Span (Bytes)
    17:24:21<-[S63]: ER_ZI 0x110052B4 0 6860
    17:24:21<-[S63]: HEAP_KE 0x11006D80 4 21120

    请问SDK中os_get_free_heap_size 的大小,是与(uint32_t)&Image$$ER_ZI$$Limit 关联还是 (uint32_t)&Image$$HEAP_KE$$Base 关联? 按照打印出来的数据,我的理解是最大不超过21120 ,但是os_get_free_heap_size = 26676 ,是否包含ER_ZI的空间了,还是我的理解有误?