U-Boot (aarch64) on Qemu を動作させたい (4)
更に処理を追いかけると、 board_init_f()
(common/board_f.c) で static に取られた変数の init_sequence_f
のデータが空になっていることがわかった。。
本来は、ボードの初期化メソッドのテーブルなので、関数ポインタが入っているべきところ。
どゆこと??
board_init_f (boot_flags=0) at common/board_f.c:1072 1072 gd->flags = boot_flags; (gdb) 1075 if (initcall_run_list(init_sequence_f)) (gdb) 1073 gd->have_console = 0; (gdb) 1075 if (initcall_run_list(init_sequence_f)) (gdb) p init_sequence_f $1 = {0x0 <repeats 37 times>}
再び、 xilinx_zcu102 で確認すると、
_start () at arch/arm/cpu/armv8/start.S:22 22 b reset Breakpoint 1 at 0x8000000: file arch/arm/cpu/armv8/start.S, line 22. Breakpoint 2 at 0x8002be8: file arch/arm/lib/crt0_64.S, line 75. (gdb) x/32 init_sequence_f 0x8072588 <init_sequence_f>: 134298688 0 134533344 0 0x8072598 <init_sequence_f+16>: 134333800 0 134298840 0 0x80725a8 <init_sequence_f+32>: 134299264 0 134299100 0 0x80725b8 <init_sequence_f+48>: 134298848 0 134299072 0 0x80725c8 <init_sequence_f+64>: 134543948 0 134307552 0 0x80725d8 <init_sequence_f+80>: 134299012 0 134413964 0 0x80725e8 <init_sequence_f+96>: 134329008 0 134532500 0 0x80725f8 <init_sequence_f+112>: 134537568 0 134299256 0
動かす前からちゃんと展開されているので、 Qemu 側が firm を正しく展開できていない気配も出てきた。