aster_ismの工作室

FPGAとかマイコンとか

UARTを用いたZYNQとのファイル転送

会社で使用しているZYNQボード、使える通信手段がJTAGとUARTのみという悲しいもの。せめて、ethernetが使えれば簡単にファイル転送ができるのに……

ということで、UARTを使ってZYNQとデータのやり取りする方法について調べた覚書き。 なお、結論からいうと、Petalinux に入っている lrzsz を用いる。

「UART ファイル 転送」などのキーワードでググると、「XMODEM」なるものがヒットする。もう少し調べてみると「ZMODEM」という改良版があることが分かる。 CentOSとかには「lrzsz」なるパッケージで入っているらしいので、同じ名前が Petalinux にないか探してみる、あるじゃないですか!

インストー

$ petalinux-config -c rootfs

で RootFS の設定を起動。 「Filesystem Package」> 「console」>「network」にあるので、有効にする。

f:id:aster_ism:20170711221845p:plain

後は、ビルド・パッケージしたイメージをSDカードに入れればOK。

使い方

Mobaxtermの場合ですが、TeraTermでも同じようなメニューがあるみたいなので、TeraTermユーザは「ZMODEM TeraTarm」でググってください。

PC→ZYNQ

f:id:aster_ism:20170711222327p:plain

UARTでZYNQのLinuxにログインしたあと、lrz コマンドを実行。 端末上で右クリックして「Send file using Z-modem」を選択。 あとは、転送したいファイルを選択すると、コンソール上に進捗が表示されて、転送が終わると「Transfer complete」が表示される。

f:id:aster_ism:20170711222550p:plain

ZYNQ→PC

f:id:aster_ism:20170711222656p:plain

UARTでZYNQのLinuxにログインしたあと、lsz <file> コマンドを実行。 端末上で右クリックして「Receive file using Z-modem」を選択。 PC上の保存先のディレクトリを指定すると、転送が開始される。 転送が終わると「Transfer complete」が表示される。

f:id:aster_ism:20170711223038p:plain

転送速度

UARTなのでご察しください。あまり大きなデータを転送するには向かない。でも、SDカードを抜き差しして、Linuxを毎回起動するよりは楽。転送中はお菓子を食べてます。

その他の方法

フルサイズのSDカードならFlashAirという選択肢もある。残念ながら会社の環境はマイクロSDでした。