サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Switch 2
qiita.com/ikwzm
注意(2021年12月1日追記) この記事は2019年7月26日に投稿したものであり、古い内容が含まれています。 2021年12月1日に以下の記事を投稿しましたので参照してください。 『Ultra96-V2 の WiFi で超苦労した話(v2021.1編)』 はじめに Ultra96-V2 は 2018年にリリースされた Ultra96 を更新&再構成したものです。Ultra96 の WiFi/Bluetooth モジュールは TI 社製の WL1831MOD が使われていましたが、Ultra96-V2 からは Microchip 社製の ATWILC3000 に変わりました。ATWILC3000 は比較的新しいモジュールらしく、Linux 用のデバイスドライバが Xilinx 社の提供する Linux Kernel(linux-xlnx v2019.1)には含まれていません。 この記事で
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 注意:タイトルは煽りです。この記事は筆者の主観が入っており、正確なものではありません。ネタ的な話なので軽く聞き流してください。 はじめに この話をするにあたって、まず言葉の定義をしておきます。多分、ここの認識が違っていると、以降の話で混乱します。なお、ここでの定義は記事の後の方で再定義されることがあります。 ハードウェアとソフトウェア そもそもハードウェアとソフトウェアって何でしょう? 私にとって、ハードウェアとソフトウェアは、「仮に100人にサービスを提供したい場合、100「個」作って個人個人に配る必要があれば、それはハードウェア、1
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
ファイルの説明 ZYBO tareget/zynq-zybo/ boot/ boot.bin : Stage 1 Boot Loader(U-boot-spl) design_1_wrapper.bit : FPGA configuration file (Xilinx Bitstream Format) u-boot.img : Stage 2 Boot Loader(U-boot) uEnv.txt : U-Boot environment variables for linux boot zImage-4.14.34-armv7-fpga : Linux Kernel Image (use Git LFS) devicetree-4.14.34-zynq-zybo.dtb : Linux Device Tree Blob devicetree-4.14.34-zynq-zybo.dt
はじめに 経緯 次の記事で Linux Kernel 4.4 から FPGA Manager Framework が提供されるようになったことを紹介しました。またこれらの記事で、4.4 では Higher Level Interface が提供されていないので、ユーザーがカーネルドライバを書かなくてはならないこと、簡易的かつ実験的な意味で fpgacfg ドライバを作ったこと、またその後の状況を説明しました。 「FPGA+SoC+Linux で FPGA Manager を試してみた」 @Qiita 「FPGA+SoC+Linux で FPGA Manager を試してみた(まとめ)」 @Qiita 「FPGA+SoC+Linux で FPGA Manager を試してみた(まとめ2)」 @Qiita Linux Kernel 4.10 になり、ようやく FPGA Manager Fram
はじめに Device Tree Overlay とは Linux には何時の頃からか(Version 4.0あたり?) Device Tree Overlay という機能が追加されています。 これは、Linux の動作中の Device Tree に、新たに Device Tree を追加したり削除したりする機能です。 Device Tree の問題点 通常は、ハードウェア情報を Device Tree Blob という形で用意しておいて、Linux のブート時にこの情報に従ってデバイスドライバのロードや初期化を行います。しかし、この方法では Linux を起動する前にハードウェアが決まっている場合しか使えず、FPGA のようなリコンフィギャラブルなハードウェアとは相性がよくありません。例えば、「FPGA+SoC+Linuxのブートシーケンス(ZYNQ+Vivado編)」のデザインフロー
注意(2017年9月20日追記) この記事は Linux Kernel 4.4 時点に投稿したものであり、古い内容が含まれています。Linux Kernel 4.10 以降、FPGA 関連は大きく進歩しました。詳しくは「Linux Kernel 4.10 でのFPGAのサポート事情」を参照してください。 参考(2017年11月2日追記) FPGA Region を含んだ Linux 4.12.14 のブートイメージを提供しています。詳しくは「FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(ブートイメージの提供)」を参照してください。 はじめに 「FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(ブートイメージの提供) @Qiita」で、ZYBO と DE0-Nano-SoC 用の Device Tr
はじめに PYNQ の PL 部のビルド環境一式は github で公開されていて、自分でカスタマイズすることが出来ます。github で公開されている環境は Vivado 2016.1 用のものであり、Vivado 2016.4 でビルドしようとしたら色々と問題がありました。この記事では、PYNQ の PL 部を Vivado 2016.4 で再ビルドする際に遭遇した問題への対処療法を防備録として示します。 なお、あくまでも現時点(2017/1/26)での対処療法です。こうすればエラーが出なくなったというだけで、対象方法を間違っている場合があります(私は PYNQ を持っていないので実機での確認はしていません)。また、Vivado のバージョンが変わったり、問題となった IP のバージョンが変わることで解決されるかもしれません。 この件で何か情報をお持ちの方はコメントください(これが本音
Debian8 に python3-pip をインストールしたら pip3 が "ImportError: No module named 'packaging' で動かなかった時の防備録(解決)PythonDebian8 はじめに これは 2017/2/7 に踏んでしまった python3-pip の地雷に関する単なる防備録です。現状は未解決です。解決方法がわかり次第、記事を更新する予定です どうやら解決したっぽいです。 なお、私は python 歴わずか数日、 python に関してはほとんど素人です。間違ったことしていればコメントください。 もともと、次のシステムに Jupyter をインストールしてみようとしたのが発端。 https://github.com/ikwzm/FPGA-SoC-Linux 『FPGA+SoC+Linux+Device Tree Overlay+FPGA
はじめに 前回投稿した「Linuxでユーザー空間で動作するプログラムとハードウェアがメモリを共有するためのデバイスドライバで紹介したudmabufを NumPy(Pythonの数値計算ライブラリ)で使えるようにしました。具体的には、udmabuf でカーネル内に確保したバッファ領域を NumPy の memmap でマッピングして、ndarray と同じような操作が出来るようにします。この記事では、その方法について説明します。 udmabuf の更新 残念ながら udmabuf のバージョンが version 0.5.0(2016/4/24) 以前では、次のようなエラーが出ます。 shell# python Python 2.7.9 (default, Aug 13 2016, 17:56:53) [GCC 4.9.2] on linux2 Type "help", "copyright"
Linuxでユーザー空間で動作するプログラムとハードウェアがメモリを共有するためのデバイスドライバ(x86対応?)LinuxkernelFPGAx86 はじめに 前回投稿した「Linuxでユーザー空間で動作するプログラムとハードウェアがメモリを共有するためのデバイスドライバ」で紹介したudmabufは、もともと Xilinx 社の Zynq など ARM アーキテクチャ用に作ったものでした。 今回、ちょっとしたことがあって x86 アーキテクチャ用にコンパイルしてみたのですが、その際に判かった点を防備録として残しておきます。 x86 アーキテクチャ用に修正した点 pgprot_dmacoherent() が未定義 まず x86 アーキテクチャ用にコンパイルしてみて通らなかったところがここです。pgprot_noncached()、pgprot_writecombine()、pgprot_d
はじめに 先日 twitter でちょっと触れたのですが(こちら)、もしかしたら VHDL/Verilog-HDL で論理回路の設計を始めたばかり人(特に今までコンピュータープログラムをしてきた人)はここで混乱するのかもしれないと思って、もうちょっと詳しく説明してみたいと思います。 なお、この記事では VHDL と Verilog-HDL をまとめて HDL と記述しています。 HDLの for-loop は"個数"を指定するのに対してコンピュータープログラムの for-loop は"回数"を指定する 現在のコンピューターはフォンノイマン型と言われています。 フォンノイマン型コンピューターは "固定数" の演算器を逐次的に使用することで複雑な処理を実行します。 演算機の数はハードウェアで固定なため、ソフトウェア(プログラム)で変更出来るのは演算器を使用する順番と "回数" だけです。 そし
はじめに 前回は 「FPGA+SoC+Linuxのブートシーケンスの概要」を説明しましたが、ここでは、Altera社の Altera SoCに Altera SoC Embedded Design Suite(Altera SoC EDS)で作ったブートローダを使ってLinuxをブートする際のシーケンスを説明します。 下図にAltera SoC でLinuxを動作させる時のブートシーケンスを示します。 図1 Altera SoC の Linux の起動までのブートシーケンス ・ステージ 0 (BootROM) Altera SoC のステージ0ブートローダー(BootROM)は、SD Cardの特殊パーティション(パーティションタイプ=0xa2)にあるpreloader imageを内部RAMに転送して制御を移します。 ・ステージ 1 (preloader) ステージ1ブートローダー(pr
はじめに なにやら、いまズンドコブームだそうです。 「ズンドコキヨシまとめ」 というわけで、私もFPGAとVHDLでやってみました。とは言っても、FPGAだからと言ってLEDをチカチカさせるのでは味気ないというもの。せっかくCPU付きのFPGAを使うのだから、MessagePack-RPC でサーバーを作ってみました。 MessagePack-RPCを使ってFPGAを制御する方法に関しては次の記事を参照してください。 「MessagePack-RPCを使ってFPGAを制御」 Architecture Block Diagram Fig.1 Block Diagram ZunDoko_Server ZunDoko_Serverは 今回新たに作ったZunDoko_Mainモジュールと MsgPack-RPC-VHDLを使って構築したMsgPack_RPC_Serverの二つで構成しています。
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 前回は「 FPGA+SoC+Linuxのブートシーケンスの概要」を説明しましたが、ここでは、Xilinx社のZYNQ に Vivado SDK で作った FSBL と U-Boot を使って Linux をブートする際のシーケンスとデザインフローを説明します。 また、ZYNQの場合は、FSBLを使う方法の他に U-Boot-splを使う方法もあります。U-Boot-splを使う方法は「FPGA+SoC+Linuxのブートシーケンス(ZYNQ+U-Boot-SPL編)」にあります。あわせてご覧ください。 ブートシーケンス 下図に
#Mersenne Twister Pseudo Random Number Generator ソースコード他はこちらにあります。 http://github.com/ikwzm/MT32_Rand_Gen #Overview ##Introduction このIPはMersenne Twister法による擬似乱数生成回路です。 こちらを参考に書いてみました。Mersenne Twister HomePage (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html) mt19937arを元にしています。 ##Features Mersenne Twister法による擬似乱数生成回路です。 状態テーブルの数(N)は624です。 VHDLで記述しています。 論理合成可能です。Xilinx社のVivado、Altera社のQuartus
はじめに## UIOとは### UIOはユーザー空間でデバイスドライバを作成する仕組みです。 ユーザー空間でUIOを利用する際は、/dev/uio0をopenしてmmapすると、デバイスのレジスタ空間が見えます。/dev/uio0 にライトすると割り込みを許可します。また、/dev/uio0をreadすると割り込みが起きるまでブロックします。 このプロジェクトではUIOの割り込みを使った例を示します。 プロジェクトの構成### このプロジェクトではCPUとしてXilinx社のZYNQを使用します。ZYNQはCPUにARM社のCortex-A9を搭載したFPGAです。 FPGAのPL(Programmable Logic)部には簡単なDMAコントローラをプログラムしています。このプロジェクトではDMAコントローラを動作させて、終了の割り込みが上がるのを待つようにしています。 また、ユーザー空
udmabuf(User space mappable DMA Buffer) 2020年12月5日追記 この記事の内容は古いです。現在 udmabuf は名前を u-dma-buf に変えています。詳しい内容は以下の URL を参照してください。 https://github.com/ikwzm/udmabuf/blob/master/Readme.ja.md はじめに Xilinx 社の ZYNQ や Altera 社の Cylcone V SoC 等の FPGA 部分にアクセラレータを作って試したい場合、CPU 側とアクセラレータ側でメモリを共有したいことがあります。本来ならカーネル空間で動作するデバイスドライバを作るのが良いのでしょうが、ちょっとした実験とかだと面倒です。そこでユーザー空間からもアクセスできるような DMA バッファがあれば便利だろうと思って、作ってみました。 ht
このページを最初にブックマークしてみませんか?
『@ikwzmのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く