新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

Zynq + Yocto

http://www.sweetcafe.jp/wiki/doku.php?id=zynq

この手順でやってもうまくいかない。
どうみても ramdisk の image がでかすぎ。56M。

ここをよくみると

bootm 0x3000000 - 0x2A00000

なるほど。きっと FAT のあとにパーティション切ってるんだな。さもありなん。image を mount すると gcc なんかもある。ん?

usr/bin/arm-poky-linux-gnueabi-gcc

どうも EXTRA_IMAGE_FEATURES で tools-sdk を入れているのが元凶。

EXTRA_IMAGE_FEATURES = "debug-tweaks" 

debug-tweaks はデバッグ用にセキュリティを弱くするみたい。login 時に root でパスワードがないなど。これは必要なのでそのままとする。

でもって rootfs を作り直して image をいれて、などなど、きまりきったことをする。rootfs は激減しておおよそ 2.3M。なんと 1/10。これならデフォルトの設定で入ります。

Poky (Yocto Project Reference Distro) 1.7 zc702-zynq7 /dev/ttyPS0

zc702-zynq7 login: root
root@zc702-zynq7:~#

うまくいきましたとさ。

なお、RAMDISK は最大で 32M の模様。むりやり 56M を超える image を RAMDISK として u-boot で boot させたらしっぱいした。

zynq-uboot> fatload mmc 0 0x2000000 uramdisk.image.gz
reading uramdisk.image.gz
56034175 bytes read in 4645 ms (11.5 MiB/s)
zynq-uboot> fatload mmc 0 0x5600000 devicetree.dtb
reading devicetree.dtb
24840 bytes read in 15 ms (1.6 MiB/s)
zynq-uboot> fatload mmc 0 0x5700000 uImage
reading uImage
3598240 bytes read in 314 ms (10.9 MiB/s)
zynq-uboot> bootm 0x5700000 0x2000000 0x5600000

一見うまくいくかに見えるが、kernel 立ち上げ時にエラー。

[    3.832647] RAMDISK: gzip image found at block 0
[    4.231783] RAMDISK: incomplete write (6147 != 32768)
[    4.236763] write error

そもそももとの、u-boot の設定が、

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

となっていて、10M しか RAMDISK 用に空きがない。まぁ uimage になったために、image のサイズを気にしなくてよくなったのは◎。

あとは freescale みたいに SDimage を作るべきだね。> 自分か、、、