以下は、Blade 3 にドライバをコンパイルしてインストールする手順です。
- カーネルのソースコードは以下からダウンロードできる。 Githubリンク のフォルダに入れる。
git clone --single-branch --branch mixtile/blade3/debian11/kernel5.10 https://github.com/mixtile/linux.git
2.Blade 3コンソールを使用し、/lib/modulesディレクトリのビルドリンクを、新しくダウンロードしたカーネルファイルのフォルダディレクトリに変更します。
rm /lib/modules/5.10.66/build
ln -snf xxx/kernel /lib/modules/5.10.66/build
(注: "xxx"をカーネル・フォルダーの絶対パスに置き換えてください)
- 以下のコマンドでコンパイルツールをインストールする:
apt-get update
apt-get install -y git ssh make gcc libssl-dev liblz4-tool expect g++ patchelf chrpath gawk texinfo chrpath diffstat software-properties-common bison flex fakeroot cmake unzip device-tree-compiler libncurses-dev python3-pip python3-pyelftools bc make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev python rsync
apt-get install gcc-aarch64-linux-gnu
4.カーネルの設定
4.1 カーネル・ディレクトリに移動し、カーネルを設定する。
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- blade3_linux_defconfig
4.2 カーネルのコンパイル
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- rk3588-blade3-v101-linux.img
5.ドライバファイルのコンパイル
5.1 ドライバファイルの書き込み、以下は簡単な例です:
(a) ドライバファイル hello.c を書く
#include
#include
#include
MODULE_AUTHOR("fengyc");
MODULE_DESCRIPTION("This is a demo.");
MODULE_VERSION("0.0.1");
MODULE_LICENSE("GPL");
static int __init hello_init(void)
{
printk(KERN_INFO "Hello, world!\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_INFO "Goodbye, world!\n");
}
module_init(hello_init);
module_exit(hello_exit);
(b) Makefileを書く
obj-m += hello.o
all:
make -C "/lib/modules/$(shell uname -r)/build" M=$(PWD) modules
clean:
make -C "/lib/modules/$(shell uname -r)/build" M=$(PWD) clean
5.2 ドライバのコンパイル
そのディレクトリでmakeを実行する
make
すると次のようなファイルができる:
Makefile hello.c hello.mod hello.mod.o modules.order Module.symvers hello.ko hello.mod.c hello.o
5.3 ドライバのインストール
insmod hello.ko
5.4 ドライバのアンインストール
rmmod hello.ko