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는 메모리 맵에서 스택과 힙영역을 제외한 크기다.