почему u-boot 2015 может использовать глобальные переменные перед выполнением перемещения кода - PullRequest
0 голосов
/ 21 октября 2018

Я почти читаю U-boot freescale i.mx6, но я запутался.В этом файле «crt0.s (u-boot-imx\2015.04-r0\git\arch\arm\lib)» вызывается «board_init_f» до того, как «relocate_code» и «board_init_f (board_f.c u-boot-imx\2015.04-r0\git\common)» используют глобальную переменную «init_sequence_f».

В дизассемблировании

17806280 <board_init_f>:
17806280:   e92d4010    push    {r4, lr}
17806284:   e3a02000    mov r2, #0
17806288:   e5890004    str r0, [r9, #4]    //wangc gd->flags = boot_flags;
1780628c:   e5892020    str r2, [r9, #32]   //gd->have_console = 0;
17806290:   e59f000c    ldr r0, [pc, #12]   ; 178062a4 <board_init_f+0x24>
17806294:   eb00beec    bl  17835e4c <initcall_run_list>
17806298:   e3500000    cmp r0, #0
1780629c:   08bd8010    popeq   {r4, pc}
178062a0:   eb00c573    bl  17837874 <hang>
178062a4:   1784c28c    strne   ip, [r4, ip, lsl #5]

адрес 1784c28c

1784c28c <init_sequence_f>: 
1784c28c:   17805f00    
1784c290:   17806190    
1784c294:   1780603c
....

enter image description here

Где я ошибся?

...