Zynq+PyCoRAM(+Debian)入門
Zynq + Vivado HLS入門とZynq + Synthesijer入門に引き続き,ARMを搭載するFPGAのXilinx Zynqの上でPyCoRAMを用いて生成したIPコアを利用するためのチュートリアルを作成しました.
Zynq上でLinuxを動作させることでおなじみのソフトウェアを利用できて便利なので,今回はLinuxとの連携方法についても合わせてまとめてみました.Pythonコントロールスレッド部のみを用いた設計も可能ですので,Python-Verilog HDLな高位合成としても使えます.
流れとしては,まずPyCoRAMのみでシミュレーションで動作検証し,その後VivadoでZynqに組み込みます.PyCoRAMは自動的にAXI4/AvalonのIPコアを生成するだけではなく,テストベンチなどの生成も行うため,機能検証がスムーズに行えます. ビットストリームができあがったら,U-Bootと呼ばれるブートローダを生成し,SDKでFSBLを作成します.ここで,前2つのチュートリアルと同様に,ベアメタルのアプリケーションを作成して動作させることもできます. あとは,Linuxカーネルのビルド・デバイスツリーの構築・ファイルシステムの構築を経て,最後にプログラムを書けば完成です.
なお,PyCoRAMは完全にGitHubベースのオープンソース開発に移行しました.何か提案・修正箇所等があれば,お知らせいただけますと助かります.
www.slideshare.net
ディスクイメージの大きさを変えるには
まずディスクイメージ一覧を確認する.
VBoxManage list hdds
サイズを変更する.MB単位で大きさを指定する.例の場合では80GB.
VBoxManage modifyhd "/Users/username/VM/Ubuntu/Ubuntu.vdi" --resize 81920
githubでpull requestが来たときの対処法
まず自分の現状のコミットIDを調べておく.
git log
新しいブランチを作成して,相手のブランチを持ってくる.
git checkout -b pull-request master
git pull https://github.com/hishername/project.git branchname
最初に調べたコミットIDを使って,差分をチェックする(もしかしてコミットIDなしでもできる?)
git diff -r 80deaed24b328140c9181050a1536754eedfa8cd --ignore-all-space
masterにマージする.
git checkout master
git merge --no-ff pull-request
git push origin master
Ubuntu Desktop 14.04 Memo
とりあえずメモ
sudo rm -r /etc/ssh/ssh*key sudo dpkg-reconfigure openssh-server
sudo apt-get install nvidia-current
screenでタイトルを,コマンド実行中はコマンド名に,でなければ現在のディレクトリ名に自動で設定する
以前にscreenのhardstatusに表示されるウィンドウタイトルを現在実行中のコマンドに設定する方法の記事を書いたが,今回はその更新版.
screenの各ウィンドウのタイトルを,コマンド実行中はそのコマンド名に自動で設定し,そうでなければ現在の作業ディレクトリ名に自動で設定する.
bashとtcshの2つのシェルについてその方法は以下の通り.
zshの場合にはおそらく,tcshの場合と同じようにprecmdを設定すれば,同様のことができるはず(未確認).
設定するとこんな感じで,screenのtitleが自動で設定される.
ウィンドウ1ではemacsを,2ではtopをそれぞれ実行中.3では現在workディレクトリにいて,コマンドは実行していない.
bashの場合,PS1とPROMPT_COMMAND変数を設定する.
## .bashrc if [ $TERM == 'screen' ]; then export PS1='\u@\h:\W\$ ' export PROMPT_COMMAND='echo -ne "\033k\033\0134\033k$(basename $(pwd))\033\\"' else export PS1='\u@\h:\W\$ ' fi
tcshの場合,promptとprecmd変数を設定する.
echo_styleをbothに設定しないとMacなどのBSD系の環境で正しく動作しないため注意.
## .cshrc if ( $TERM == 'screen' ) then set echo_style=both set prompt="%n@%m:%c1$ " alias precmd 'echo -n "\033k\033\0134\033k`basename ${cwd}`\033\\"' else set prompt="%n@%m:%c1$ " endif
ちなみに.screenrcはこんな感じ.
## .screenrc startup_message off ## current command name as window name shelltitle "$ |bash" #hardstatus alwayslastline "%-w%{= ck}%n %t%{-}%+w %=%H [%Y-%m-%d %02c:%s]" hardstatus alwayslastline "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %Y %m/%d %C:%s%a" hardstatus off escape ^z^z termcap * 'G0:S0=\E(%.:E0=\E(B:TY=iso2022' termcapinfo xterm* ti@:te@ autodetach on defflow off crlf off vbell off vbell_msg "Bell" defutf8 on defkanji utf-8 encoding utf-8 utf-8 defencoding utf-8 bind o focus bind k kill bind s split screen 0 scrollback 4000 screen 1 scrollback 4000
ログインシェルをtcshのままbashを普段使いシェルとして使う
通常はypchsh/chshをすれば良いのだが,ログインシェルを変更ができない場合やしない方が良い場合には,.cshrcを以下の様に設定して,ログイン時にbashを起動する.
Non-interactiveの場合(scpやsshfs)の場合にも正しく動作するようにpromptのチェックを行う.
if ( ! $?prompt ) then exit 0 endif setenv OLDSHELL $SHELL setenv SHELL /bin/bash exec /bin/bash --login