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」にあるので、有効にする。
後は、ビルド・パッケージしたイメージをSDカードに入れればOK。
使い方
Mobaxtermの場合ですが、TeraTermでも同じようなメニューがあるみたいなので、TeraTermユーザは「ZMODEM TeraTarm」でググってください。
PC→ZYNQ
UARTでZYNQのLinuxにログインしたあと、lrz
コマンドを実行。
端末上で右クリックして「Send file using Z-modem」を選択。
あとは、転送したいファイルを選択すると、コンソール上に進捗が表示されて、転送が終わると「Transfer complete」が表示される。
ZYNQ→PC
UARTでZYNQのLinuxにログインしたあと、lsz <file>
コマンドを実行。
端末上で右クリックして「Receive file using Z-modem」を選択。
PC上の保存先のディレクトリを指定すると、転送が開始される。
転送が終わると「Transfer complete」が表示される。
転送速度
UARTなのでご察しください。あまり大きなデータを転送するには向かない。でも、SDカードを抜き差しして、Linuxを毎回起動するよりは楽。転送中はお菓子を食べてます。
その他の方法
そういうZYNQにはFlashAirを使うといいですよ。
— なひたふ (@nahitafu) 2017年7月10日
フルサイズのSDカードならFlashAirという選択肢もある。残念ながら会社の環境はマイクロSDでした。