2015年5月31日日曜日

zynqのブートお勉強 u-bootってなに?

zynqのブートは多段ローダーを使いさらにその上でLinuxのブートもあるので、ただチュートリアルをやってるだけだとどのレベルで何をやってるか勘違いしやすいです。

とりあえずFSBLやu-bootがなぜ必要で何をやってるのかお勉強ちゅう

参考ページ

http://nahitafu.cocolog-nifty.com/nahitafu/2014/08/zynqfsbl-5f71.html FSBL奮闘記

http://masahir0y.blogspot.jp/2014/01/zynq-2.html zynqのブート

http://blog.kmckk.com/archives/4414137.html u-bootの初心者向け説明

http://www.embeddedworld.jp/2014/12/u-boot%E3%81%AE%E3%83%96%E3%83%BC%E3%83%88%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9/ u-bootの説明


2015年5月29日金曜日

XSDKでBOOT.imgのパック

FSBLのビルドまではすんなり行きますが、最後にBoot.imgをパックして作るツールのところで、
指定するファイルのパスが2014.1と2015.1はわりと違います。

  1. 最初のが、直前にeclipseでビルドしたFSBL。
  2. 二番目が、vivadoで動作確認してexportしたはずのPLのbitファイル
  3. 三番目はlinux環境でビルドしてきたu-bootなので間違えようがない

よくわかっていませんが、うちの環境では下のように指定したら一応ブートしました

いちおうこれでできたBoot.imgをSDに置いてブートしたら自作のロジックが動きました。

Linuxのイメージはまだ作ってないので、PS側はFSBLからu-bootに制御が移った後linuxが見つからない、という愚痴を垂れてu-bootプロンプトらしき個所で止まります。

ちなみにFSBLの設定?かなにかで、起動時のログはuart0→USBシリアルに吐かれるようになっているので、PROG UARTポートにteratermを繋いでおいてリセットすれば起動ログが見えます。なんて楽ちん。

ZYBOのlinuxチュートリアル ハードウェアのエクスポートとSDK起動

Zynqの始め方はいろいろありますが、digilentのZYBO用資料(Embbeded linux hands on tutorial)がかなり丁寧なのでこれを追いかけることにします。

だいたい先頭からやっていくだけですが、いくつかはまるポイントがあるので順不同でメモしておきます。


FPGA(PL)側のサンプルをビルドして動いた後、それをエクスポートしてXSDK(という名のeclipse)で読み込んでBOOT.imgを作ろう、というところで、現在の2015.1はExportメニューが2014.1より簡略化されています。

まあ、そこで困る人はいないと思いますが、その後XSDKを起動してハードウェアプロファイルを選ぶところで、ZYBOという選択肢は無いので、どのファイルをハードウェアプロファイルとして食べさせれば良いのか困ってしまいます。

実は上のvivadoのメニューでExportのいっこ下にあるLaunch SDKでXSDKを起動すると、VivadoでExportしたばかりのハードウェア情報をXSDKがインポートしながら起動します。

そうすると、Application Projectを作ろうとした時もvivadoでさっきまでいじっていたハードウェアが見えていてPSにcortexa9_0も選べます。


2015年5月28日木曜日

VirtualBox内のubuntuに見せる共有フォルダの権限とシンボリックリンク

windows側から見せてる共有フォルダにプロジェクトを置いて、仮想linuxからは本当にmakeするだけ、とかやりたい。

makeの過程でどうしてもシンボリックリンクを作ったりするものがあるので、ただ読み書きできるだけでなくそれも許可しておく。



読み書き権限はlinux内でグループ追加するだけ
シンボリックリンク許可はホスト側でVirtualBoxに設定をしてやるらしいです

https://gist.github.com/m-nori/4507653


VirtualBoxの仮想HDDサイズ縮小

ネットで検索すると見つかる情報をメモ


Linuxでどのフォルダが容量を食っているか調べるのはduコマンド
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230748/


仮想HDDを縮小するのに、0埋めしてホスト側でツールを使う手順
http://freefielder.jp/blog/2014/05/virtualbox-hdd-size.html


0埋めする方法がかっこいいですね。

Zynqの開発環境 windows? linux?

Zynqの開発環境を作ってるのですが、とにかくサイズが大きい!
Vivadoで5~10G、さらにXSDKで5Gくらい食います。

しかも母艦がWindowsの人は、Linux版を仮想マシンで使うかWindows版で行くか、と悩むことになります。

どこのチュートリアルを見ても、Zynq内でLinux使う予定なら素直に開発環境もLinuxにすれ、と書かれていますが、実際両方試してみてその通りでした。。。

コンパイラやmakeツールなんかはwindows版でもそれなりに揃うのですが、具体的に困るのは

  • 拾ってきたソースをビルドするときに、設定スクリプトを一度実行してからmakeしなきゃいけない
  • 拾ってきたソースでLinux環境の標準的なライブラリをincludeしまくっている
という場面です。

上記の問題がスタートアップ時に遭遇する程度ならいいんですが、LinuxをZynq内で使ってると日々こういう苦労をすることになるので、armのクロスコンパイルはLinux母艦でやるのがよさそうです。



最近の仮想マシンは共有フォルダがかなり自然に使えるので、Vivadoはwindows側、armコンパイルは仮想Linux側、パッキングなんかの作業はwindowsのXSDK、という分業もありじゃないかと思いますが、残念ながらLinux側にarmコンパイラだけ入れるという方法が見つかりません。

xilinuxの説明 http://xilinx.wikidot.com/zynq-tools では、
「SDKインストーラの中の*arm-xilinx-linux-gnueabi.bin を使えばコンパイラだけ入れられるよ」と書いてありますが、SDKインストーラはパスワードxzで固められていて、中のファイルを自由に取り出す方法がわかりませんでした。

というわけで、現状ではホスト、ゲスト両方のOSにVivado + XSDKをインストールする羽目になっています。使っているThinkpad X1 carbonのSSDがたった100Gしかないのですぐに溢れます。。。


だれかコンパイラのインストーラだけ取り出す方法を知っていたら教えてください(泣)

ぶろぐ開設

もともと別にちびヘリRC情報という日記を書いていて、ヘリには関係ないんだけど組み込み系の作業メモを残したいなーと思うことが多かったのでやっと作りました。

日々の組み込み関係で遊んだときのメモを残していこうと思います。
扱いそうなキーワードは
  • STM32
  • Zynq
  • arduino
  • Linux
  • FreeRTOS
  • 唐突に電源とかアナログの入門
といったところです。

当面はZynq入門中なのでいきなりですがそっち関係が多いと思います。