Boot Loader/U-BOOT

static int setup_mon_len(void)

최재국 2019. 9. 25. 22:36

/common/board_f.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static int setup_mon_len(void)
{
#if defined(__ARM__) || defined(__MICROBLAZE__)
    gd->mon_len = (ulong)&__bss_end - (ulong)_start;
#elif defined(CONFIG_SANDBOX) || defined(CONFIG_EFI_APP)
    gd->mon_len = (ulong)&_end - (ulong)_init;
#elif defined(CONFIG_NIOS2) || defined(CONFIG_XTENSA)
    gd->mon_len = CONFIG_SYS_MONITOR_LEN;
#elif defined(CONFIG_NDS32) || defined(CONFIG_SH)
    gd->mon_len = (ulong)(&__bss_end) - (ulong)(&_start);
#elif defined(CONFIG_SYS_MONITOR_BASE)
    /* TODO: use (ulong)&__bss_end - (ulong)&__text_start; ? */
    gd->mon_len = (ulong)&__bss_end - CONFIG_SYS_MONITOR_BASE;
#endif
    return 0;
}
 

 

__ARM__은 C 및 C++에서 ARM 컴파일러가 사전 정의하는 매크로다.

그래서 실행되어야하는데

 

CONFIG_SYS_MONITOR_BASE=0x00000000으로 정의되어있어서

13번라인도 실행되어질수있으나

 

if와 else if 우선순위가 3번라인이므로 4번라인이 실행되는것 같다.

__bss_end-_start는 메모리 맵에서 스택과 힙영역을 제외한 크기다.