Ultra96 で Julia set をぐりぐり動かせるやつをもう少し強くした

以前 Ultra96 で Julia set をぐりぐり動かせるやつ (GitHub) の紹介をしました。この時点で当初作ろうとしていたものをだいたい実現できていたのですが、満足していない箇所もいくつかありました。

今回それらの点を改善して性能をあげたり、機能を追加したりしました。どんな感じに強くなったのかを紹介していきます。

Read More »

Exit status は無視しないようにしよう

「手順に従ってコマンドを順番に実行したけどなんか動かなかった」

*nix 系のシステムを使った開発などで、何らかの目的を実現するために複数のシェルコマンドを実行する場面はよくあると思います。その操作が上手くいかなかったとき、こんな感じの質問をしてはいないでしょうか。また、このような場面で躓いているメンバーからこんな質問を受けたりすることはないでしょうか。

僕はこういった質問をたまに受けたりするのですが、これ、とても困るのです。まず実行したコマンドのうち何が失敗したのかの特定から始めることになるため、例えば互いの貴重な時間をそれなりに消費することになったりで双方にいいことがありません1

コマンドの出力をちゃんと読んでエラーを特定してから質問しろとは言いません2。でもせめて、Exit status ってやつくらいは確認してください。たった数桁の数字がゼロでないかを確認するだけです。これで、「xxx のコマンドの実行に失敗したんだけど…」と言えるようになりましょう。

Read More »

Ultra96 で Julia set をぐりぐり動かせるやつを作った

Ultra96 というデバイスがあります。Ultra96 は Xilinx 社の Zynq UltraScale+ MPSoC が載っている開発ボードで、FPGA 開発から最新の ARM 開発、Linux カーネルやそのデバイスドライバ開発なんかも学べて、しかも$249で入手できるというコスパの高い1デバイスです。

今回いろいろあって Ultra96 で遊べる環境ができたので、Julia set を表示してぐりぐり動かせるやつを作ってみました。こんな感じです。

関連するソースコードはほぼ全て GitHub のリポジトリ に公開してあります。

まだ当初予定していた機能を実装しきれていなかったりしますが、とりあえずシステム全体とその開発方法などを紹介していきたいと思います。

Read More »

Boost.Asio の posix::stream_descriptor を使う

C++熱は冷めてしまったのですが、いつか書こうと思っていたことを書かないのもアレだなぁということで、久しぶりの C++ ネタです。

Boost.Asio は、個人的に好きな C++ ライブラリの1つです。以前にもこのブログで、HTTP クライアント (Twitter API というか OAuth を叩くライブラリ) やシリアル通信をする例を紹介しました。

今回紹介するのは posix::stream_descriptor です。名前からなんとなく想像できるように、ファイルディスクリプタを渡してストリーム形式のデータをやり取りするためのものです。これを使って、open(2) したデバイスを Boost.Asio の API で操作してみたいと思います。

Read More »

Xilinx の開発ツールを Docker コンテナに閉じ込める

あまり表には出していませんでしたが、少し前から FPGA を触っています。FPGA は以前から興味があったデバイスの1つだったこともあり、苦戦しながらも今まで触れたことのない概念の連続をなんだかんだで楽しんでいる気がします。欲を言えば、FPGA ともう少し普通の出会い方をし、普通の環境で勉強したかったなぁというのがありますが…

その話は置いておき本題、FPGA の開発環境の話です。世の中で FPGA を使った開発が一般にどのように行われているかは詳しく知りませんが、その1つとして FPGA ベンダの提供する開発環境を利用するというのがあります。例えば最近の Xilinx なら Vivado Design Suite (Vivado) という感じです。さてこの Vivado、Windows 版に加えて Linux 版もあるのですが、これがこういうソフトウェアにありがちなインストーラ形式で配布されています。つまり、ディストリビューションのパッケージマネージャに管理されたインストールが困難で、おまけに動作保証されている環境が限られているわけです。(╯•﹏•╰)

また、もう1つ利用頻度がそこそこ高くなる場合のある Xilinx の開発ツールに PetaLinux Tools というのがあるのですが、これがまぁ本っっっっっっっっ当にアレなインストーラ形式で配布されており、二度と1から環境構築したくなくなるような作りになっていたりするわけです。

こうした環境汚染を平気でしてきたりするお行儀のわるいソフトウェアは Docker コンテナに閉じ込めてしまおうということで、その時の知見を書いていこうと思います。

Read More »