
Xilinx-Zynq-Arm-Linux
ZedBoard
マニュアル
Avnet HPより
ZedBoard_HW_UG_v1_6.pdf
Hardware User’s Guide
C01600100_Zed_Board_revC.ashx
はじめてのZed Board キット入門
日本語が出ました
PB-AES-Z7EV-7Z020-G-V1d.pdf
Product Brief ZedBoard
2013/4に追加されていた
Embedded Linux Hands-on Tutorial - ZedBoard
j_ug821-zynq-7000-swdev.pdf 日本語
Zynq-7000 All Programmable SoC ソ フ ト ウ ェ ア開発者向けガイ ド
かなり詳しく書かれている
Xilinx HPより
Zynq ZC702が対象だがZedとほぼ同じ
ug925-zynq-zc702-base-trd.pdf
Zynq-7000 EPP ZC702 Base Targeted Reference Design User Guide
ug873_zynq_ctt.pdf
Zynq-7000 EPP Concepts, Tools, and Technique
digilent HPより
um.pdf
Zed Hardware User’s Guide
sch.pdf
Zed回路図
当社の別ページです、こちらから来た人は元に戻ります
ZedBoard Linux を探検する
MaximのHP
電源ICの回路と資料
サンプルももらえる
新規構築
SDKを立ち上げ、Buildすると
arm-xilinx-eabi-gcc: not found
http://japan.xilinx.com/support/answers/46961.htm
14.1 EDK - パスにスペースが含まれるディレクトリにインストーラーがあると ARM
ツールチェーンがインストールされない
14.2でも修正されていない上記ページを見て解決する。
ARMクロスコンパイルにMingwを使う
Linuxで動作するのでXilinxツールを使う必要はない。
Sourcery CodeBench Liteのソースをダウンロードしてコンパイルする。
簡単なテストプログラムならXPでやった方がマシンが1台で済むのでよい、
カーネルなど大物は、Mingwは超低速なのでLinuxの方でやった方がいいようだ。
最近はLinuxでの開発環境が整ってきた、XPでの開発環境のほとんどがUNIXから移植された物のようでもとに戻っただけである。
Windows用バイナリならちょっと古いが、アプリケーションでスタティックリンクなら問題ない。
Sourcery G++ Lite 2009q3-67 for ARM GNU/Linux
https://sourcery.mentor.com/GNUToolchain/package5386/public/arm-none-linux-gnueabi/arm-2009q3-67-arm-none-linux-gnueabi.exe
バイナリを展開するだけです。
ZedBoard Linux を探検する
に書いたようにフレームバッファは動作しているので当座はドライバーなど書かないで済みそうだ、パフォーマンスが必要になってからでOK、
LinuxにinatallしたEDKでも
Sourcery G++ Liteでgccのバージョンも同じだった。
これでカーネルのコンパイルができるのかな?LiteバージョンはARMアーキテクチャの制限があってcortexA9の機能は使えなさそうである。
ユーザーランドでなにかやってみよう。
フレームバッファの実験
ls -R>/dev/fb0
画面が砂嵐になる
cat /tmp/img.raw >/dev/fb0
もとに戻る
/tmp/img.rawが初期化時のペンギンの絵のデータだ。
このフォーマットが解れば画面が出せる。
32Bit/pixsel
8Bit/Color RGBαの順
α=0で良い
で画面サイズで配列すれば良い。
当然左上のデータから書き込む。
フレームバッファの実験(その2)
ここ
を参考に少し簡単な変更でフレームバッファ直書きの実験をしてみた。okgnzさんありがとうございます。
LCD表示が対象なので16Bit/pixselの仕様、これを32Bit/pixsel仕様にする
変更は下記の所
//#include <sys/mman.h>
#include <linux/mman.h>
#define COLOR_RED 0x00ff0000
#define COLOR_GREEN 0x0000ff00
#define COLOR_BLUE 0x000000ff
#define COLOR_WHITE 0x00ffffff
#define COLOR_BLACK 0x00000000
#define COLOR_YELLOW 0xffff0000
//unsigned short tcolor ;
unsigned int tcolor ; 32Bit
32Bit/pixselなので、デバッグはPCで出来る、
ところがフレームバッファfb0は起動時に見えるだけのようだ、sleep状態から復帰する時一瞬見えるのでこれで何とかデバッグ。
動画は無理、この辺は起動スクリプトをいじってXが起動しないようにするしか無いのかな?
→ knoppixの場合 Ctrl+Alt+F3でシングルユーザーになれる ー> Ctrl+Alt+F5で元に戻る
但しコンソールの文字が上書きされる
ARMはリトルエンディアンが基本なので再コンパイルのみでZedに移植出来た、std i/oと比べれば超高速。
JPEG画像の表示
FBV
frame buffer vewreを使う方法
libjpegを呼ぶのでまずこれをインストールする。
fbset コマンドを叩くと
mode "800x600-60"
# D: 40.000 MHz, H: 37.879 kHz, V: 60.317 Hz
geometry 800 600 800 32767 8
timings 25000 88 40 23 1 128 4
hsync high
vsync high
accel true
rgba 8/0,8/0,8/0,0/0
endmode
fbset は、設定ファイル中に格納されているビデオモードのデータベースを使う
なにもオプションが無いとfb0の設定を表示する
アプリの拡張
十字(UP/DN/L/R/Select)キーを読む
GPIOセットアップスクリプトを拡張すればOK
起動スクリプトサンプル
rcS
読み込みスクリプトサンプル
readsw13
デバッグ
Zed_BoardのLinuxにはgdbserverがデフォルトでインストールされている
使い方
JTAGを使う
JP7〜11をGNDにする
ZedBoardのデバッグポートUSB(電源コネクターの隣)をXpパソコンに繫ぐ
デバイスマネージャでは、usb Sirial Converterが追加される、メーカーFTDI
COMポートは増えない
SDイメージ
ブートイメージの作成
[bootloader]<fsbl_name>.elf
<pl_bitstream_name>.bit
<u-boot_name>.elf
をマージするらしい
第一段ブート [bootloader]<fsbl_name>.elf
ハードコンフィギレーション <pl_bitstream_name>.bit
第二段ブート <u-boot_name>.elf
の順で実施されるようだ
ハードコンフィギレーションが二番目にくるのはARMからFPGAのコンフィギレーションをしているためだ。
この後Linuxがブートされる
作成はSDKを使う他コマンドラインからでも可能。
C:\Xilinx\14.2\SDK\SDK\bin\nt\bootgen -image <bootimage>.bif -split bin -o i BOOT.BIN
bootimageの例
"linux_bootimage.bif"
the_ROM_image:
{
zynq_fsbl.elf
system.bit
u-boot.elf
}
alsa
MIC,LINE-IN,LINE-OUT,HedPhoneのAUDIOI/Fがある。
チップはADAU1761だ
どんなドライバーが有るか見ると
zynq> find / -name *snd* -print
/proc/device-tree/axi@0/adv7511_hdmi_snd
/proc/driver/snd-page-alloc
/sys/devices/platform/snd-soc-dummy
/sys/devices/axi.0/adv7511_hdmi_snd.2
/sys/bus/platform/devices/adv7511_hdmi_snd.2
/sys/bus/platform/devices/snd-soc-dummy
/sys/bus/platform/drivers/snd-soc-dummy
/sys/bus/platform/drivers/snd-soc-dummy/snd-soc-dummy
/sys/bus/platform/drivers/adv7511-hdmi-snd
/sys/bus/platform/drivers/adv7511-hdmi-snd/adv7511_hdmi_snd.2
/sys/module/snd
/sys/module/snd_timer
/sys/module/snd_pcm
hdmi関連だけのようである。
ADAU1761自体内部にDSPを持っていて、ADからEDKがダウンロードできる。
つまりADAU1761にプログラムをダウンロードしないと動かない。
Digilentの最新のソースツリーには入っているらしいが未確認。
dmesgでは
[ 0.570000] Advanced Linux Sound Architecture Driver Version 1.0.24.
zynq> cat /proc/asound/cards
0 [monitor ]: HDMI_monitor - HDMI monitor
HDMI monitor
cardsとしてHDMIだけしかないので、音をだすのはHDMI以外は難しい。
ユーザーカスタムIPの変更
ここのユーザーカスタムIPの変更を参考に
LOGOが左右にしか動かないVGA画面にして見た。
..\ZedBoard_OOB_Design\hw\xps_proj\pcores\vga_flyinglogo_v1_00_a\hdl\vhdl\video_merge.vhd
を変更、単にdeltayに関連する記述を削除しただけです。
ソースvideo_merge.vhd
OLED
製品名 UG-2832HSWEG04
SSD1306=こっちがバネルでUG-xxはフレキ付きのユニットらしい。
中身はかなり複雑でインターフェースも、パラレル、I2C,SPIが使えピンで切り替える
表示した、パターンのスクロールも出来る
書き込み方法も変えられそうだ。