LoginSignup
3
1

More than 3 years have passed since last update.

Raspberry PiでOut-Of-Treeのドライバをクロスコンパイルする

Posted at

Raspberry PiでOut-Of-Treeのデバイスドライバをクロスコンパイルしてみたときの自分用メモです。
WAveshareのWM8960-HATのドライバを例にしてみます。
https://github.com/waveshare/WM8960-Audio-HAT

手順

クロコンパイル環境の準備

こちらのページ( https://qiita.com/mt08/items/d4e9b9e4953c8fa0abcf )やラズパイの公式ドキュメントを参考にクロスコンパイル環境を整えます。

Kernel Sourceの取得

こちら( https://github.com/raspberrypi/linux )からKernel Sourceを取得します。
たとえば現時点(2019/10/13)で最新のものは https://github.com/raspberrypi/linux/archive/raspberrypi-kernel_1.20190925-1.tar.gz から取得できます。
取得したら解凍して展開し、以下のコマンドで.configを作成しておきます。(.configがないと後のドライバのMake実行時にエラーが出ます。)

# Raspberry Pi 2/3の場合
make bcm2709_defconfig

# Raspberry Pi Zero/Zero W/B/Aの場合
make bcmrpi_defconfig

デバイスドライバのソースコード取得

こちら( https://github.com/waveshare/WM8960-Audio-HAT ) からデバイスドライバのソースコードを取得します。

Makefileの作成

クロスコンパイル用のMakefileを作成します。
ここではMakefile_crossという名前で作成します。

KERNELSRCDIR = ../linux-rpi-4.19.y
BUILD_DIR := $(shell pwd)
VERBOSE = 0

# Module name
obj-m := wm8960.o

all:
        make -C $(KERNELSRCDIR) SUBDIRS=$(BUILD_DIR) KBUILD_VERBOSE=$(VERBOSE) modules

clean:
        rm -f *.o
        rm -f *.ko

KERNELSRCDIRのディレクトリ指定はご自分で配置した構成に合わせて修正する必要があります。
作成したら、WM8960のドライバのソースコードと同じ位置に配置します。

ビルドの実行

以下のコマンドを実行し、ビルドします。

export ARCH=arm 
export CROSS_COMPILE=arm-linux-gnueabihf-
make -f Makefile_cross 

これでsnd-soc-wm8960.ko、snd-soc-wm8960-soundcard.koというモジュールができるので、
適切な場所にコピーしてロードすれば使えるようになります。

基本的には他のドライバも同じような方法で行けるはずです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1