u-boot で外部の elf を実行する

fatls で確認

zynq-uboot> fatls mmc 0:1
    40687   hello_world

fatload で使ってなさそうなアドレスへロード

zynq-uboot> fatload mmc 0:1 0x3000000 hello_world
reading hello_world
40687 bytes read in 21 ms (1.8 MiB/s)

bootelf で実行

zynq-uboot> bootelf 0x3000000
## Starting application at 0x0c100000 ...
Example expects ABI version 6
Actual U-Boot ABI version 6
Hello World
argc = 1
argv[0] = "0x3000000"
argv[1] = "<NULL>"
Hit any key to exit ...

## Application terminated, rc = 0x0

理由はわからないが go コマンドだと暴走する。簡単に u-boot を追ってみると r9 が壊れていた。どうも、r9 に何かを入れる前提があるようだ。おそらく elf の load で解決される何か。