明日にはでっかい太陽が昇るかもしれません。

「覚悟」とは!! 暗闇の荒野に!!進むべき道を切り開く事だッ!

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 を正しく展開できていない気配も出てきた。