I like fpga

change the world by fpga
2020/12/30

add driver on petalinux

ZYNQ   

新しいHWを追加した場合など、Driverを自分で作らなければ行けない時があると思う。FPGAだしー。

最初に環境変数を設定する。

source /opt/pkg/petalinux/2020.2/settings.sh

ドライバー単独では追加できないのかも、事前にpetalinuxをビルドしてある環境で実行する。

petalinuxのビルドは、前回のブログを参照する

プロジェクトのディレクトリに移動する。buildとかcomponentsとかのディレクトリがある場所だ。

ドライバーを追加する。testmymymoduleはドライバーの名称だ。適当にドライバー名をつけよう。

petalinux-create -t modules --name testmymymodule --enable

これで、testmymymoduleのテンプレートコードができているみたい。ドライバーのコードを確認してみる。

cd project-spec/meta-user/recipes-modules/testmymymodule/files/

filesの下にあるtestmymymodule.cがドライバーのソースコードになる。

起動時に呼ばれる関数を確認しておく。

static int __init testmymymodule_init(void)
{
	printk("<1>Hello module world.\n");
	printk("<1>Module parameters were (0x%08x) and \"%s\"\n", myint,
	       mystr);

	return platform_driver_register(&testmymymodule_driver);
}

追加したドライバーを含めて、ビルドする。プロジェクトディレクトリでコマンドを入力する

petalinux-build

BOOT.binを作成する。すでに、BOOT.BINがあるので、–forceをつけた。

petalinux-package --boot --u-boot --format BIN --force

次に、bitファイルを含めた。。。

petalinux-package --prebuilt --fpga ../../project/ultra96_2020/ultra96_2020.runs/impl_1/design_1_wrapper.bit --force

そして、pre-built/linux/images/にできたboot.scr、BOOT.BIN、image.ubをSDカードにコピーして、起動する。

起動後に、実機上で、追加したドライバーをインストールする。

insmod /lib/modules/5.4.0-xilinx-v2020.2/extra/testmymymodule.ko

そうすると、インストールされる。また追加したドライバーのprint文が表示されている。

本当は、Kernelに組み込まれるようにしたかったのですが、できなかっった。。。

« »