みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

raspberrypi3 meta-raspberrypiでuartコンソール

2017/01/18修正

ラズベリーパイ3にシリアルコンソールでログインしたい。

少し古い情報だと、ラズベリーパイ3はオンボードBluetoothの影響で、すこし複雑な設定を行う必要があるとなっているが、最近のラズベリーパイ3向けのカーネルでは、config.txtenable_uart=1とすることで使用できる。

ここではYoctoProjectのmeta-raspberrypiでシリアルコンソールを使用する方法について記述する。

USB-シリアル変換モジュール

最近のPCはシリアルポートを搭載しているものが少ない。、シリアルポートがないPCを使用する場合は、USBポートをシリアルとして使用するためにUSB-シリアル変換を行う必要がある。

今回は秋月電子で購入できる、これ を使用する。

変換モジュールとラズベリーパイ3の接続

秋月の変換モジュールはUSBポートからの給電で動作することができるため、ラズベリーパイとはTXDRXDを接続するだけで使用できる。

変換モジュールのジャンパを次のようにショートさせる。

ジャンパ 接続 説明
J1(3ピン) 1-2間をショート I/O電圧を3.3V
J2(2ピン) ショート USBバスから5Vを給電

これらは購入時そのままのはず。

ラズベリーパイ3との接続を次に示す。

f:id:mickey_happygolucky:20170118001627p:plain

ラズベリーパイ3側の使用ピンを示す。

ピン GPIO 機能
8 GPIO14 UART0_TXD
10 GPIO15 UART0_RXD
14 - GND

GNDはピン14の他にも複数あり、どれに接続してもよいが、接続し忘れると悲しいことになる。

Linuxの作成

今回はmortyブランチで作業する。

ベース環境の取得

$ git clone git://git.yoctoproject.org/poky.git -b morty
$ cd poky
$ git clone git://git.yoctoproject.org/meta-raspberrypi

meta-raspberrypiはまだmortyブランチがないのでmasterを使用する。

oe-init-build-envの読み込み

下記を実行する。

$ cd ~/rpi3
$ source poky/oe-init-build-env

これにより、クロスコンパイルに必要な環境変数が設定され、ビルドディレクトリに移動される。

meta-raspberrypiをビルド対象に追加

次のコマンドを実行する。

$ bitbake-layers add-layer ../poky/meta-raspberrypi

local.confの修正

次の行をlocal.confの先頭の方に追加する。

MACHINE ?= "raspberrypi3"
DL_DIR ?= "${HOME}/work/yocto/downloads"

ENABLE_UART = "1"

ENABLE_UART = "1"でシリアルコンソールが有効になる。

bitbakeの実行

$ bitbake rpi-basic-image

SDカードの作成

$ sudo dd if=tmp/deploy/images/raspberrypi3/rpi-basic-image-raspberrypi3.rpi-sdimg of=/dev/sdb bs=40M

/dev/sdbはSDカードのデバイス。環境により変更が必要な場合がある。

動作確認

作成したSDカードをラズベリーパイ3に挿入後、PCのUSBポートと変換モジュールを接続して、PC上でminicomなどを起動する。この時フロー制御は無効にしておくこと。

この状態でラズベリーパイ3に電源を入れるとログイン画面が表示される。

f:id:mickey_happygolucky:20161218111846p:plain