« Cosmo-Z MiniでリッチなLinuxが動くようになった | トップページ | AD360の基板実装が完了 »

2018.02.24

UIOを使う

User Space IOというデバイスドライバを使うことで、Cosmo-Z MiniのADCレジスタの内容を読み出すことができるようになりました。

自分でドライバを作るよりもずっと楽です。よくできていますね。

デバイスツリーに記述すると、/dev/uio0や/dev/uio1というのができているので、これをopenしてmmapすればFPGA内のレジスタを叩けるようになります。

Cosmo-Z Miniは、FPGA内の制御レジスタ(0xb8800000から0x1000バイト)と、波形用のバッファメモリ(0x20000000から512Mバイト)の2つのアドレスにアクセスしたかったので、どうすればよいか悩んで、自分でドライバを作ろうと思っていました。

UIOでやるには、uioを2つ入れればよかったのです。

0x20000000から0x3fffffff番地までのメモリを一気にmmapすることもできるようです。

Cszmini4

これなら波形バッファの読み出しが細切れにならないで済みます。

それから、Cosmo-Z MiniにはAD9253というADCが乗っていて、FPGAのPLからアクセスするようになっています。

Cszmini1

そのADCをSPIでたたいて、内蔵レジスタの値を読み出した結果です。

Cszmini2

ちゃんと読み出せています。

Cszmini3

どうやら問題ないようです。

詳しいUIOの使い方は別の機会に書こうと思います。

|

« Cosmo-Z MiniでリッチなLinuxが動くようになった | トップページ | AD360の基板実装が完了 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Cosmo-Z MiniでリッチなLinuxが動くようになった | トップページ | AD360の基板実装が完了 »