ZYBOでのu-Bootのカーネル読み込み先
ずっと DOS系+ITRONだったのでLinuxに免疫が無い WebMaster です(苦笑)。
Zybo で本格的に開発する前に勉強することが多すぎてパンクしていますが、今回は u-Boot の起動を調べて見たので、自分用備忘録です。
Digilent のgit から clone した u-boot-Digilent-Dev (U-Boot 2014.01-00005-gc29bed9)使っています。
PL側のRTLを開発するときには、JTAG から次々回路を入れ替えて行きたいのですが、その度にLinuxカーネル含めてPS側JTAG転送していたらやってられません。
uBoot に TFTPサーバーから送るようにしたりいろいろ出来るようなのですが、今回はSDカードにカーネルその他が一式があるわけなので、そちらに切り替えればきっと幸せになれるはずです。なのでその下調べ。
u-Boot の各種設定は include/configs 以下にあり、Zybo の場合は zynq_zybo.h というのがありますね。
また、zynq_zybo.h の中から zynq-common.h が include されていました。
どうやら、uBoot には環境変数がちゃんとあって、bootcmd という変数が自動起動先を決定しているようです。
include/env_default.h
に
#ifdef CONFIG_BOOTCOMMAND
"bootcmd=" CONFIG_BOOTCOMMAND "\0"
#endif
があり。
CONFIG_BOOTCOMMAND を追いかけると
zynq_zybo.h に
#if defined(CONFIG_CMD_ZYNQ_RSA)
#define CONFIG_BOOTCOMMAND "run rsa_$modeboot"
#else
#define CONFIG_BOOTCOMMAND "run $modeboot"
#endif
という記述があり
$modeboot を追いかけると
board/xilinx/zynq/board.h に
int board_late_init(void)
{
switch ((zynq_slcr_get_boot_mode()) & ZYNQ_BM_MASK) {
case ZYNQ_BM_QSPI:
setenv("modeboot", "qspiboot");
break;
case ZYNQ_BM_NAND:
setenv("modeboot", "nandboot");
break;
case ZYNQ_BM_NOR:
setenv("modeboot", "norboot");
break;
case ZYNQ_BM_SD:
setenv("modeboot", "sdboot");
break;
case ZYNQ_BM_JTAG:
setenv("modeboot", "jtagboot");
break;
default:
setenv("modeboot", "");
break;
}
return 0;
}
とあり、ちゃんとブートモードに応じて切り替えていたのですね。
逆に言うとこのままでは jtag ブートしたときに SDカードには読みに行ってくれないことになります。
いずれにせよ、JTAG起動時でも bootcmd 環境変数に sdboot が入るように、どこかを書き換えれば解決しそうな予感です。
ちなみに sd_boot は zynq_zybo.h にて
"sdboot=if mmcinfo; then " \
"run uenvboot; " \
"echo Copying Linux from SD to RAM... && " \
"fatload mmc 0 0x3000000 ${kernel_image} && " \
"fatload mmc 0 0x2A00000 ${devicetree_image} && " \
"fatload mmc 0 0x2000000 ${ramdisk_image} && " \
"bootm 0x3000000 0x2000000 0x2A00000; " \
"fi\0" \
と、設定されています。
SDカードの3つのファイルが、それぞれのアドレスに置かれるのが見えてきました。
ついでに 上記の uenvboot を追いかけていくと、zynq_common.h にて
"bootenv=uEnv.txt\0" \
"loadbootenv=fatload mmc 0 ${loadbootenv_addr} ${bootenv}\0" \
となっているのを発見。
なるほど、SDカードの場合 uEnv.txt でもいろいろ設定できるのですね。
いろいろと勉強せねば...
« ZyboでLinux | トップページ | Zybo+linaro用のクロスコンパイルメモ »
「FPGA」カテゴリの記事
- LUT-Networkの蒸留とMobileNet風構成とセマンティックセグメンテーション(2020.03.09)
- LUT-Networkの蒸留(Distillation)について(2019.12.29)
- FPGAでのDNN(Deep Neural Network)の整理(LUT-Netまとめ)(2019.12.15)
- LUT-NetのFPGAリソースについて(2019.12.08)
- MNIST認識のリアルタイム動作環境更新(2019.09.02)
この記事へのコメントは終了しました。
コメント