serial connection - kinneko/BBBB GitHub Wiki
ディスプレイまわりのドライバが最初から動作していることがあまり期待できなかったり、そもそもディスプレイ出力のない環境が多い組み込みLinuxの世界では、ブートローダーやkernel起動後の状態を知るために、シリアルコンソールが必要になります。なんらかの原因で、うまく起動しないような場合には、シリアルコンソールはかなり頼りになる情報を提供してくれます。
BeagleBone Blackの環境では、シリアルコンソールは必ずしも必要ではないのですが、この機会に使い方をおぼえておくとよいでしょう。
シリアルというと、RS-232Cを思い出す人も多いでしょうが、組み込み機器では3ピンで通信できるTTLと言われるシリアルが一般的です。パソコンで使用するRS-232Cとはレベルが異なるので、そのまま接続しても動作しません。レベルシフタと呼ばれる回路を挟んだり、専用のコンバーターICを挟んだりして使用します。近年は、シリアルポートを持ったパソコンもあまりありませんので、TTL-USB変換を行うICがたくさん出回っています。このICを実装した基板がUSBシリアル変換アダプタと呼ばれるものです。
ここでは、 Amazonから購入可能な周辺機器 で紹介した、スイッチサイエンス社製の**FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)**の使い方を解説します。
注文すると、専用の個装箱に入ってきますが、中身はモジュールだけです。
製品は基板のみで、付属品は特にないので、micro USBケーブルは通信可能なものを別に手配する必要があります。
BeagleBone Blackでは、ボード側から3.3Vが供給されるので、ジャンパスイッチを3.3Vに設定してください。USBコネクタ側の2つをショートするようにジャンパを差し込みます。出荷時には5Vになっていました。
モジュールのピン並びは、下記の通りです。
- DTR
- RX
- TX
- UCC
- CTS
- GND
BeagleBone Blackのシリアルピンは、NIC側から1番ピンになります。ピン並びの右に白い目印が付いています。
ピン並びは下記の通りです。
- GND (◯白丸のある側)
- RX
- TX
そのため、シリアルモジュールは、部品実装面が外側に向くように取り付けます。
Linuxでは、FTDIのチップは標準的に対応されていますので、ドライバのインストールなどは不要です。
Ubuntuマシンでは下記のように認識しています。
[18639.044387] usb 1-1.2: new full-speed USB device number 7 using ehci_hcd
[18639.278103] usbcore: registered new interface driver usbserial
[18639.278132] USB Serial support registered for generic
[18639.278210] usbcore: registered new interface driver usbserial_generic
[18639.278215] usbserial: USB Serial Driver core
[18639.280452] USB Serial support registered for FTDI USB Serial Device
[18639.280535] ftdi_sio 1-1.2:1.0: FTDI USB Serial Device converter detected
[18639.280557] usb 1-1.2: Detected FT232RL
[18639.280559] usb 1-1.2: Number of endpoints 2
[18639.280560] usb 1-1.2: Endpoint 1 MaxPacketSize 64
[18639.280562] usb 1-1.2: Endpoint 2 MaxPacketSize 64
[18639.280563] usb 1-1.2: Setting MaxPacketSize 64
[18639.281105] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0
[18639.281118] usbcore: registered new interface driver ftdi_sio
[18639.281120] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
端末側の設定は下記の通りです。
- Baud 115,200
- Bits 8
- Parity N
- Stop Bits 1
- Handshake None
ここでは、端末ソフトにminicomを使用します。
$ minicom --noinit --wrap -D /dev/ttyUSB0 -b 115200
Welcome to minicom 2.5
OPTIONS: I18n
Compiled on May 2 2011, 10:05:24.
Port /dev/ttyUSB0
Press CTRL-A Z for help on special keys
起動オプションの意味は下記の通りです。
-o, --noinit:モデム用の初期化コマンドを送らない -w, --wrap:行末を折り返し表示 -D, --device:通信に使用するデバイスを指定 -b, --baudrate:通信速度
minicomの終了は、Ctrl+A, z, qです。
内蔵eMMCからの起動では、画面に以下が表示されます。
U-Boot SPL 2013.04-dirty (Jun 19 2013 - 09:57:14)
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
OMAP SD/MMC: 0
mmc_send_cmd : timeout: No status update
reading u-boot.img
reading u-boot.img
U-Boot 2013.04-dirty (Jun 19 2013 - 09:57:14)
I2C: ready
DRAM: 512 MiB
WARNING: Caches not enabled
NAND: No NAND device found!!!
0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
*** Warning - readenv() failed, using default environment
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
Net: <ethaddr> not set. Validating first E-fuse MAC
cpsw, usb_ether
Hit any key to stop autoboot: 0
gpio: pin 53 (gpio 53) value is 1
mmc_send_cmd : timeout: No status update
Card did not respond to voltage select!
mmc0(part 0) is current device
mmc_send_cmd : timeout: No status update
Card did not respond to voltage select!
No micro SD card found, setting mmcdev to 1
mmc_send_cmd : timeout: No status update
mmc1(part 0) is current device
mmc_send_cmd : timeout: No status update
gpio: pin 54 (gpio 54) value is 1
SD/MMC found on device 1
reading uEnv.txt
26 bytes read in 4 ms (5.9 KiB/s)
Loaded environment from uEnv.txt
Importing environment from mmc ...
gpio: pin 55 (gpio 55) value is 1
4270840 bytes read in 751 ms (5.4 MiB/s)
gpio: pin 56 (gpio 56) value is 1
24129 bytes read in 57 ms (413.1 KiB/s)
Booting from mmc ...
## Booting kernel from Legacy Image at 80007fc0 ...
Image Name: Angstrom/3.8.13/beaglebone
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4270776 Bytes = 4.1 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 80f80000
Booting using the fdt blob at 0x80f80000
XIP Kernel Image ... OK
OK
Using Device Tree in place at 80f80000, end 80f88e40
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[ 0.193656] omap2_mbox_probe: platform not supported
[ 0.204230] tps65217-bl tps65217-bl: no platform data provided
[ 0.280830] bone-capemgr bone_capemgr.8: slot #0: No cape found
[ 0.317935] bone-capemgr bone_capemgr.8: slot #1: No cape found
[ 0.355043] bone-capemgr bone_capemgr.8: slot #2: No cape found
[ 0.392154] bone-capemgr bone_capemgr.8: slot #3: No cape found
[ 0.412137] bone-capemgr bone_capemgr.8: slot #6: BB-BONELT-HDMIN conflict P)
[ 0.421757] bone-capemgr bone_capemgr.8: slot #6: Failed verification
[ 0.428534] bone-capemgr bone_capemgr.8: loader: failed to load slot-6 BB-BO)
[ 0.451179] omap_hsmmc mmc.4: of_parse_phandle_with_args of 'reset' failed
[ 0.515680] pinctrl-single 44e10800.pinmux: pin 44e10854 already requested b7
[ 0.527429] pinctrl-single 44e10800.pinmux: pin-21 (gpio-leds.7) status -22
[ 0.534743] pinctrl-single 44e10800.pinmux: could not request pin 21 on devie
systemd-fsck[85]: Angstrom: clean, 50600/112672 files, 286946/449820 blocks
[ 11.781411] libphy: PHY 4a101000.mdio:01 not found
[ 11.786476] net eth0: phy 4a101000.mdio:01 not found on slave 1
.---O---.
| | .-. o o
| | |-----.-----.-----.| | .----..-----.-----.
| | | __ | ---'| '--.| .-'| | |
| | | | | |--- || --'| | | ' | | | |
'---'---'--'--'--. |-----''----''--' '-----'-'-'-'
-' |
'---'
The Angstrom Distribution beaglebone ttyO0
Angstrom v2012.12 - Kernel 3.8.13
beaglebone login:
このままコンソールの操作はできないので、minicomの設定を変更して、ハードウエアフロー制御をオフにしてやります。
コマンドライン設定では、ハードウエアフロー制御をオフにできないので、こちらはminicom内蔵設定から設定を行います。
Ctrl+a, z, oを順に押します。
カーソルで、"Serial port setup"を選び、リターンキーを押します。
設定画面で、fキーを押し、"F - Hardware Flow Control : No"になっていることを確認して、リターンキーで抜けます。
"Exit.."を選び、設定を抜けます。
シリアルコンソールからは、rootユーザーで、パスワードなしでログインできます。
製造時期にもよるのでしょうが、A5Cの標準出荷状態では、内蔵されているAngstromのバージョンは、beagleboard.orgで配布されている最新版になっているようです。
- U-Boot 2013.04-dirty (Jun 19 2013 - 09:57:14)
- Angstrom v2012.12 - Kernel 3.8.13