U-Boot (aarch64) on Qemu を動作させたい (7)
なんとか、 DDR の SDP も実装し、 board_f.c の init_sequence_f の初期化シーケンスについては抜けられるようになった。
だが、どこかでハングが発生して、プロンプトまでは到達していない。
u-boot の処理では、プログラムのリロケーションが実行されており、ブレイクポイントは張れなくなっている。
調べると、 gdb ではリロケーション後のシンボル読み込みにも対応していることがわかった。
### リロケーション後のアドレスを確認する (gdb) p/x gd->relocaddr $1 = 0xffcfb000 ### 現在のシンボルの破棄 (gdb) symbol-file Discard symbol table from `/path/to/u-boot-qoriq-2016.09+fslgit-r0/build_ls1046ardb_emmc/u-boot'? (y or n) y No symbol file now. ### リロケーション後アドレスにシンボルを読み込み (gdb) add-symbol-file u-boot 0xffcfb000 add symbol table from file "u-boot" at .text_addr = 0xffcfb000 (y or n) y Reading symbols from u-boot...done. ### ブレイクポイントの貼り直し (gdb) b ../arch/arm/lib/crt0_64.S:110 Breakpoint 6 at 0xffd00c90: file ../arch/arm/lib/crt0_64.S, line 110. ### ブレイクポイントの動作確認 (gdb) c Continuing. Breakpoint 6, _main () at ../arch/arm/lib/crt0_64.S:110 110 bl c_runtime_cpu_setup /* still call old routine */