bitbakeコマンドによるイメージファイルの再構築
ドライバなどの追加
$ bitbake -c menuconfig virtual/kernel
Support for Google voiceHAT soundcard: <M> ---> <*>
local.confを編集した場合(local.confはsource oe-init-build-envによりコンテナ内のbuild/confディレクトリにあります)、再ビルドします。既に作成したコンテナ、または新たなコンテナを起動して以下コマンドを実行します。
$ docker run --name raspi2 -v ./build:/home/build/poky/build -ti raspberrypi2 bash
# source oe-init-build-env <--- 新規にコンテナを起動した場合
# bitbake -c cleanall core-image-sato
# bitbake -c cleanall linphone-sdk
# bitbake -f linphone-sdk
# bitbake -f core-image-sato
# exit
picamera
picamera — Picamera 1.13 Documentation
cofig.txt
https://www.raspberrypi.com/documentation/computers/config_txt.html
/boot/config.txt
gpu_mem=128
カメラがRaspberry Piで認識されているか確認するために、以下のコマンドを実行します。
# v4l2-ctl --all
Driver Info:
Driver name : bcm2835 mmal
Card type : mmal service 16.1
Bus info : platform:bcm2835_v4l2-0
Driver version : 6.6.22
Capabilities : 0x85200005
Video Capture
Video Overlay
Read/Write
Streaming
Extended Pix Format
Device Capabilities
.......
.......
テストショット
# v4l2-ctl --stream-mmap --stream-count=1 --stream-to=capture.jpeg
フォーマット確認
# v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'YU12' (Planar YUV 4:2:0)
[1]: 'YUYV' (YUYV 4:2:2)
[2]: 'RGB3' (24-bit RGB 8-8-8)
[3]: 'JPEG' (JFIF JPEG, compressed)
[4]: 'H264' (H.264, compressed)
[5]: 'MJPG' (Motion-JPEG, compressed)
[6]: 'YVYU' (YVYU 4:2:2)
[7]: 'VYUY' (VYUY 4:2:2)
[8]: 'UYVY' (UYVY 4:2:2)
[9]: 'NV12' (Y/UV 4:2:0)
[10]: 'BGR3' (24-bit BGR 8-8-8)
[11]: 'YV12' (Planar YVU 4:2:0)
[12]: 'NV21' (Y/VU 4:2:0)
[13]: 'RX24' (32-bit XBGR 8-8-8-8)
ストリームテスト
# v4l2-ctl --stream-mmap --stream-count=10
<<<<<<< 5.55 fps
<<<
サウンド関連
/boot/config.txt
# I2Sサウンドデバイスを使用する場合
#dtparam=i2s=on
#dtoverlay=hifiberry-dac
#dtoverlay=i2s-mmap
dtoverlay=googlevoicehat-soundcard
Playback, Captureデバイスの確認
# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: sndrpigooglevoi [snd_rpi_googlevoicehat_soundcar], device 0: Google voiceHAT SoundCard HiFi voicehat-hifi-0 [Google voiceHAT SoundCard HiFi voicehat-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
# arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: sndrpigooglevoi [snd_rpi_googlevoicehat_soundcar], device 0: Google voiceHAT SoundCard HiFi voicehat-hifi-0 [Google voiceHAT SoundCard HiFi voicehat-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
ユーザのホームディレクトリに作成。各dBレベルは任意。
~/.asoundrc
pcm.!default {
type asym
playback.pcm "plug:softvol"
capture.pcm "plug:capture_level"
}
ctl.!default {
type hw
card 1
}
pcm.voicehat_playback {
type hw
card 1
device 0
format S32_LE
}
pcm.voicehat_capture {
type hw
card 1
device 0
format S32_LE
}
pcm.softvol {
type softvol
slave.pcm "voicehat_playback"
control.name "Softvol Playback Volume"
control.card 1
min_dB -3.0
max_dB 30.0
}
pcm.capture_level {
type softvol
slave.pcm "voicehat_capture"
control.name "Level Capture"
control.card 1
min_dB -3.0
max_dB 30.0
}
項目 | hw:0,0 | plughw:0,0 |
---|---|---|
フォーマット変換 | なし(エラーになる場合あり) | あり(自動で変換) |
柔軟性 | デバイスが指定されたフォーマットをサポートする必要がある | フォーマットやサンプリングレートの指定が柔軟 |
パフォーマンス | 高速(直接アクセス) | 変換処理により若干遅くなる可能性がある |
I2S接続例
Adafruit I2S MEMS microphone and Raspberry Pi Zero W
https://forums.adafruit.com/viewtopic.php?t=211692
デバイスツリー
デバイスツリーは、ハードウェア構成やリソース(CPU、メモリ、周辺機器など)を記述した構造化データで、カーネルがハードウェアを初期化するために使用します。
- 形式: デバイスツリーはソースコード(DTS: Device Tree Source)で記述され、コンパイルされるとバイナリ形式(DTB: Device Tree Blob)になります。
- 役割:
- カーネルが直接ハードウェアを検出する代わりに、DTB を利用して必要なハードウェア情報を取得。
- Raspberry Pi では、SoC(System on Chip)や周辺機器の構成を記述するために使用。
デバイスツリーオーバーレイ
デバイスツリーオーバーレイ(DTO)は、デバイスツリーに対する追加設定や修正を行う仕組みです。これにより、基本のデバイスツリーをカスタマイズせずに、特定の周辺機器や拡張機能を有効化できます。
- 形式: ソースコード(DTS)を
.dtbo
(バイナリ形式)としてコンパイルして使用します。 - 役割:
- GPIO ピンに接続されたハードウェアの設定を記述。
- 特定のドライバや周辺機器を有効化。
- オリジナルのデバイスツリーを変更せずに機能を追加。
オーバーレイファイル一覧
注)googlevoicehat-soundcard.dtboは別途コンパイルが必要
googlevouicehat の dts ファイルからオーバレイファイルを手動でコンパイル(raspi2コンテナ内で実行)。
$ find . -name "*.dts" | grep googlevoicehat
./build/tmp/work-shared/raspberrypi2/kernel-source/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
$ sudo apt install device-tree-compiler
$ dtc -@ -I dts -O dtb -o googlevoicehat-soundcard.dtbo build/tmp/work-shared/raspberrypi2/kernel-source/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
注)dtc
(Device Tree Compiler)は、多くの Linux システムで利用可能なユーティリティで、デバイスツリーソース(DTS)ファイルをコンパイルしてバイナリ形式のデバイスツリーブロブ(DTB/DTBO)ファイルを生成します。
作成された googlevoicehat-soundcard-overlay.dtbo
を SDカードの /boot/ovelays
にコピーします。