本章では、Armadillo-610で利用できる各種機能の仕様について説明します。
Armadillo-610のシリアルは、i.MX6ULLのUART (Universal Asynchronous Receiver/Transmitter) を利用しています。Armadillo-610 開発セットの標準状態では、シリアルインターフェース(Armadillo-610 拡張ボード: CON3)が UART1 をコンソールとして利用しています。
また、Grove インターフェース(Armadillo-610 拡張ボード: CON7)にはUART5を利用しています。
-
フォーマット
-
データビット長: 7 or 8ビット
-
ストップビット長: 1 or 2ビット
-
パリティ: 偶数 or 奇数 or なし
-
フロー制御: CTS/RTS or XON/XOFF or なし
-
最大ボーレート:230.4kbps
-
関連するソースコード
-
drivers/tty/serial/imx.c
-
drivers/tty/serial/imx_earlycon.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/serial/fsl-imx-uart.yaml
-
デバイスファイル
-
カーネルコンフィギュレーション
Device Drivers --->
Character devices --->
[*] Enable TTY <TTY>
Serial drivers --->
<*> IMX serial port support <SERIAL_IMX>
<*> Console on IMX serial port <SERIAL_IMX_CONSOLE>
[*] Earlycon on IMX serial port <SERIAL_IMX_EARLYCON>
Armadillo-610の Ethernet (LAN) は、i.MX6ULLのENET(10/100-Mbps Ethernet MAC)を利用しています。
-
機能
-
通信速度: 100Mbps (100BASE-TX), 10Mbps (10BASE-T)
-
通信モード: Full-Duplex (全二重), Half-Duplex (半二重)
-
Auto Negotiationサポート
-
キャリア検知サポート
-
リンク検出サポート
-
関連するソースコード
-
drivers/net/ethernet/freescale/fec_main.c
-
drivers/net/phy/smsc.c
-
drivers/net/mdio/of_mdio.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/net/fsl-fec.txt
-
Documentation/devicetree/bindings/net/mdio-mux.txt
-
Documentation/devicetree/bindings/net/ethernet-phy.yaml
-
Documentation/devicetree/bindings/net/smsc-lan87xx.txt
-
ネットワークデバイス
-
カーネルコンフィギュレーション
Device Drivers --->
[*] Network device support ---> <NETDEVICES>
[*] Ethernet driver support ---> <ETHERNET>
[*] Freescale devices <NET_VENDOR_FREESCALE>
<*> FEC ethernet controller (of ColdFire and some i.MX CPUs)
<FEC>
-*- PHY Device support and infrastructure ---> <PHYLIB>
{*} SMSC PHYs <SMSC_PHY>
Armadillo-610 のSDホストは、i.MX6ULL の uSDHC (Ultra Secured Digital Host Controller) を利用しています。
Armadillo-610 開発セットでは、SD インターフェース(Armadillo-610: CON1) と SD インターフェース(Armadillo-610 拡張ボード: CON1)がuSDHC2を共用しています。そのため、どちらか一方しか利用することができません。Armadillo-610 開発セットの標準状態では、SD インターフェース(Armadillo-610: CON1)が有効になっています。
-
機能
-
カードタイプ: microSD/microSDHC/microSDXC/microSDIO
-
バス幅: 1bit or 4bit
-
スピードモード: Default Speed (24.75MHz), High Speed (49.5MHz)
-
カードディテクトサポート
-
デバイスファイル
-
関連するソースコード
-
drivers/mmc/host/sdhci-esdhc-imx.c
-
drivers/mmc/host/sdhci-of-esdhc.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml
-
Documentation/devicetree/bindings/mmc/mmc-controller.yaml
-
カーネルコンフィギュレーション
Device Drivers --->
<*> MMC/SD/SDIO card support ---> <MMC>
<*> MMC block device driver <MMC_BLOCK>
(8) Number of minors per block device <MMC_BLOCK_MINORS>
*** MMC/SD/SDIO Host Controller Drivers ***
<*> Secure Digital Host Controller Interface support
<MMC_SDHCI>
<*> SDHCI platform and OF driver helper <MMC_SDHCI_PLTFM>
Armadillo-610のUSBホストは、i.MX6ULLのUSB-PHY (Universal Serial Bus 2.0 Integrated PHY) および USB (Universal Serial Bus Controller) を利用しています。
Armadillo-610 開発セットでは、「USBハブ」に示す USB ハブが USB_OTG1 を利用しています。USB インターフェース(Armadillo-610 拡張ボード: CON5)にはUSB ハブが接続されています。
-
機能
-
Universal Serial Bus Specification Revision 2.0 準拠
-
Enhanced Host Controller Interface (EHCI)準拠
-
転送レート: USB2.0 High-Speed (480Mbps), Full-Speed (12Mbps), Low-Speed (1.5Mbps)
-
デバイスファイル
-
メモリデバイスの場合は、デバイスを認識した順番で/dev/sdN (Nは’a'からの連番)となります。
-
I/Oデバイスの場合は、ファンクションに応じたデバイスファイルとなります。
-
関連するソースコード
-
drivers/usb/chipidea/
-
drivers/usb/host/ehci-hcd.c
-
drivers/usb/phy/of.c
-
drivers/usb/phy/phy-generic.c
-
drivers/usb/phy/phy.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
-
Documentation/devicetree/bindings/phy/mxs-usb-phy.txt
-
カーネルコンフィギュレーション
Device Drivers --->
[*] USB support ---> <USB_SUPPORT>
<*> Support for Host-side USB <USB>
*** USB Host Controller Drivers ***
<*> EHCI HCD (USB 2.0) support <USB_EHCI_HCD>
<*> ChipIdea Highspeed Dual Role Controller <USB_CHIPIDEA>
[*] ChipIdea device controller <USB_CHIPIDEA_UDC>
[*] ChipIdea host controller <USB_CHIPIDEA_HOST>
USB Physical Layer drivers --->
<*> Freescale MXS USB PHY support <USB_MXS_PHY>
Armadillo-610のUSB OTGは、i.MX6ULLのUSB-PHY (Universal Serial Bus 2.0 Integrated PHY) および USB (Universal Serial Bus Controller) を利用しています。
Armadillo-610 開発セットでは、USB インターフェース(Armadillo-610 拡張ボード: CON6)が USB OTG2 を利用しています。
-
機能
-
Universal Serial Bus Specification Revision 2.0 準拠
-
Enhanced Host Controller Interface (EHCI)準拠
-
転送レート: USB2.0 High-Speed (480Mbps), Full-Speed (12Mbps), Low-Speed (1.5Mbps)
-
機能
-
Universal Serial Bus Specification Revision 2.0 準拠
-
Enhanced Host Controller Interface (EHCI)準拠
-
転送レート: USB2.0 High-Speed (480Mbps), Full-Speed (12Mbps), Low-Speed (1.5Mbps)
-
関連するソースコード
-
drivers/usb/chipidea/
-
drivers/usb/host/ehci-hcd.c
-
drivers/usb/phy/of.c
-
drivers/usb/phy/phy-generic.c
-
drivers/usb/phy/phy.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
-
Documentation/devicetree/bindings/phy/mxs-usb-phy.txt
-
カーネルコンフィギュレーション
Device Drivers --->
[*] USB support ---> <USB_SUPPORT>
<*> Support for Host-side USB <USB>
*** USB Host Controller Drivers ***
<*> EHCI HCD (USB 2.0) support <USB_EHCI_HCD>
<*> ChipIdea Highspeed Dual Role Controller <USB_CHIPIDEA>
[*] ChipIdea device controller <USB_CHIPIDEA_UDC>
[*] ChipIdea host controller <USB_CHIPIDEA_HOST>
USB Physical Layer drivers --->
<*> Freescale MXS USB PHY support <USB_MXS_PHY>
<*> USB Gadget Support ---> <USB_GADGET>
Armadillo-610 拡張ボードには、Microchip 製 USB2513B が搭載されています。USB2513Bには、WLAN インターフェース(Armadillo-610 拡張ボード: CON18)およびUSB インターフェース(Armadillo-610 拡張ボード: CON5)が接続されています。
-
機能
-
USB specification rev 2.0準拠
-
関連するソースコード
-
drivers/usb/misc/usb251xb.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/usb/usb251xb.txt
-
カーネルコンフィギュレーション
Device Drivers --->
[*] USB support ---> <USB_SUPPORT>
*** USB Miscellaneous drivers ***
<*> USB251XB Hub Controller Configuration Driver
<USB_HUB_USB251XB>
Armadillo-610のリアルタイムクロックは、i.MX6ULLのRTC機能を利用しています。
また、Armadillo-610 拡張ボードには、日本電波工業(NDK)製 NR3225SA が搭載されています。NR3225SA は、「I2C」に示す I2C2 (I2C ノード: 2-0032) に接続されています。
| |
---|
LCD インターフェース(Armadillo-610 拡張ボード: CON11)および拡張インターフェース(Armadillo-610 拡張ボード: CON20)には、NR3225SAに接続されたI2Cと共通の信号線が接続されています。そのため、同時に利用できない場合があります。 |
-
機能
-
デバイスファイル
-
/dev/rtc
( /dev/rtc0
へのシンボリックリンク)
-
/dev/rtc0
-
/dev/rtc1
-
関連するソースコード
-
drivers/rtc/rtc-snvs.c
-
drivers/rtc/rtc-nr3225sa.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/crypto/fsl-sec4.txt
-
カーネルコンフィギュレーション
Device Drivers --->
[*] Real Time Clock ---> <RTC_CLASS>
<*> Freescale SNVS RTC support <RTC_DRV_SNVS>
<*> NDK NR3225SA <RTC_DRV_NR3225SA>
アラーム割り込みは、デバイスファイル経由で利用することができます。
詳細な情報については、Linux カーネルのソースコードに含まれているドキュメント(Documentation/admin-guide/rtc.rst)やサンプルプログラム(tools/testing/selftests/rtc/rtctest.c)を参照してください。
Armadillo-610 および Armadillo-610 拡張ボードに搭載されているソフトウェア制御可能なLEDには、GPIOが接続されています。
Linuxでは、GPIO接続用LEDドライバ (leds-gpio) で制御することができます。
-
sysfs LEDクラスディレクトリ
-
/sys/class/leds/green
-
/sys/class/leds/yellow
-
関連するソースコード
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/leds/leds-gpio.yaml
-
カーネルコンフィギュレーション
Device Drivers --->
[*] LED Support ---> <NEW_LEDS>
<*> LED Support for GPIO connected LEDs <LEDS_GPIO>
Armadillo-610 拡張ボードに搭載されているユーザースイッチには、GPIOが接続されています。
Linuxでは、ユーザー空間でイベント(Press/Release)を検出することができます。Linuxでは、GPIO接続用キーボードドライバ(gpio-keys)で制御することができます。
ユーザースイッチと信号には、次に示すキーコードが割り当てられています。
表12.1 キーコード
ユーザースイッチ | キーコード | イベントコード | X11 キーコード |
---|
SW1 | KEY_ENTER
| 28 | Return
|
-
デバイスファイル
-
/dev/input/by-path/platform-gpio-keys-event
[]
-
関連するソースコード
-
drivers/input/keyboard/gpio_keys.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/input/gpio-keys.yaml
-
カーネルコンフィギュレーション
Device Drivers --->
Input device support --->
-*- Generic input layer (needed for keyboard, mouse, ...)
<INPUT>
[*] Keyboards ---> <INPUT_KEYBOARD>
<*> GPIO Buttons <KEYBOARD_GPIO>
Armadillo-610 の I2C インターフェースは、i.MX6ULL の I2C(I2C Controller) および GPIO を利用した I2C バスドライバ(i2c-gpio)を利用します。また、i2c-gpioを利用することで、I2C バスを追加することができます。
Armadillo-610 開発セットで利用している I2C バスと、接続される I2C デバイスを次に示します。
表12.2 I2C デバイス
I2C バス | I2C デバイス |
アドレス | デバイス名 |
0(I2C1) | 0x08 | PF3000 |
1(I2C2) | 0x32 | NR3225SA |
Armadillo-610 開発セットの標準状態では、CONFIG_I2C_CHARDEV が有効となっているためユーザードライバで I2C デバイスを制御することができます。ユーザードライバを利用する場合は、Linux カーネルで I2Cデバイスに対応するデバイスドライバを無効にする必要があります。
-
機能
-
デバイスファイル
-
/dev/i2c-0
(I2C1)
-
/dev/i2c-1
(I2C2)
-
関連するソースコード
-
drivers/i2c/busses/i2c-imx.c
-
Device Tree ドキュメント
-
Documentation/devicetree/bindings/i2c/i2c-gpio.yaml
-
Documentation/devicetree/bindings/i2c/i2c-imx.yaml
-
カーネルコンフィギュレーション
Device Drivers --->
I2C support --->
-*- I2C support <I2C>
<*> I2C device interface <I2C_CHARDEV>
I2C Hardware Bus support --->
<*> GPIO-based bitbanging I2C <I2C_GPIO>
<*> IMX I2C interface <I2C_IMX>
Armadillo-610 のアナログオーディオは、i.MX6ULL の MQS (Medium Quality Sound) を利用しています。
-
機能
-
サンプリング周波数: 48000
-
チャンネル数: 2
-
フォーマット: Signed 16 bit, Little-endian
-
再生(Playback)のみサポート
-
オーディオデバイス
-
関連するソースコード
-
sound/soc/fsl/fsl_sai.c
-
sound/soc/fsl/fsl_asrc.c
-
sound/soc/fsl/fsl_mqs.c
-
sound/soc/fsl/fsl-asoc-card.c
-
Device Tree ドキュメント
-
Documentation/devicetree/bindings/sound/fsl-sai.txt
-
Documentation/devicetree/bindings/sound/fsl,asrc.txt
-
Documentation/devicetree/bindings/sound/fsl,mqs.txt
-
Documentation/devicetree/bindings/sound/fsl-asoc-card.txt
-
カーネルコンフィギュレーション
Device Drivers --->
<*> Sound card support ---> <SOUND>
<*> Advanced Linux Sound Architecture ---> <SND>
<*> ALSA for SoC audio support ---> <SND_SOC>
SoC Audio for Freescale CPUs --->
<*> Asynchronous Sample Rate Converter (ASRC) module support
<SND_SOC_FSL_ASRC>
{M} Synchronous Audio Interface (SAI) module support
<SND_SOC_FSL_SAI>
<M> Medium Quality Sound (MQS) module support
<SND_SOC_FSL_MQS>
Armadillo-610 のADコンバーターは、i.MX6ULL の ADC (Analog-to-Digital Converter) を利用しています。
Armadillo-610 開発セットでは、Grove インターフェース(Armadillo-610 拡張ボード: CON9)とGrove インターフェース(Armadillo-610 拡張ボード: CON10)がADC1を利用しています。
| |
---|
LCD インターフェース(Armadillo-610 拡張ボード: CON11)および拡張インターフェース(Armadillo-610 拡張ボード: CON20)には、ADコンバーターと共通の信号線が接続されています。そのため、同時に利用できない場合があります。 |
-
機能
-
分解能: 最大12bit
-
サンプリングレート: 最大1MS/s
-
測定範囲: 0V ~ 3.3V
-
sysfsファイル
-
デバイスを認識した順番で /sys/bus/iio/devices/iio:deviceN (N は’0'からの連番)となります。
-
デバイスファイル
-
デバイスを認識した順番で /dev/iio:deviceN (N は’0'からの連番)となります。
-
関連するソースコード
-
drivers/iio/adc/vf610_adc.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/iio/adc/fsl,vf610-adc.yaml
-
カーネルコンフィギュレーション
Device Drivers --->
<*> Industrial I/O support ---> <IIO>
Analog to digital converters --->
<*> Freescale vf610 ADC driver <VF610_ADC>
Armadillo-610のパワーマネジメント機能は、LinuxのSPM(System Power Management)およびDPM(Device Power Management)を利用しています。パワーマネジメント状態を省電力モードに遷移させることにより、Armadillo-610の消費電力を抑えることができます。
パワーマネジメント状態を省電力モードに遷移させると、アプリケーションの実行は一時停止し、Linuxカーネルはサスペンド状態となります。起床要因が発生すると、Linuxカーネルのリジューム処理が行われた後、アプリケーションの実行を再開します。
-
sysfsファイル
-
関連するソースコード
-
カーネルコンフィギュレーション
Power management options --->
[*] Suspend to RAM and standby <SUSPEND>
-*- Device power management core functionality <PM>
Armadillo-610が対応するパワーマネジメント状態と、/sys/power/stateに書き込む文字列の対応を次に示します。
表12.3 対応するパワーマネジメント状態
パワーマネジメント状態 | 文字列 | 説明 |
---|
Suspend-to-RAM
| mem
| Suspend-to-Idleよりも消費電力を抑えることができる |
Power-On Suspend
| standby
| Suspend-to-RAMよりも短時間で復帰することができ、Suspend-to-Idleよりも消費電力を抑えることができる |
Suspend-to-Idle
| freeze
| suspend-to-ramよりも短時間で復帰することができる |
| |
---|
サスペンド状態を128秒以上継続する場合は、Suspend-to-RAM か +Power-On Suspend+を利用してください。 +Suspend-to-Idle+を利用している状態で128秒経過すると再起動してしまいます。 |
起床要因として利用可能なデバイスは次の通りです。
-
UART1 (Armadillo-610 拡張ボード: CON3)
-
起床要因
-
データ受信
-
有効化
[armadillo ~]# echo enabled > /sys/class/tty/ttymxc0/power/wakeup
-
USB OTG2 (Armadillo-610 拡張ボード: CON6)
-
起床要因
-
USBデバイスの挿抜
-
有効化
[armadillo ~]# echo enabled > /sys/bus/platform/devices/2184200.usb/power/wakeup
[armadillo ~]# echo enabled > /sys/bus/platform/drivers/ci_hdrc/ci_hdrc.1/power/wakeup
[armadillo ~]# echo enabled > /sys/bus/platform/drivers/ci_hdrc/ci_hdrc.1/usb2/power/wakeup
-
RTC(i.MX6ULL)
-
起床要因
-
アラーム割り込み
-
有効化
デフォルトで有効化されています
-
RTC(NR3225SA)
-
起床要因
-
アラーム割り込み
-
有効化
[armadillo ~]# echo enabled > /sys/bus/i2c/devices/1-0032/power/wakeup
Armadillo-610のGPIOは、i.MX6ULLのGPIO(General Purpose Input/Output)を利用しています。
-
関連するソースコード
-
Device Tree ドキュメント
-
Documentation/devicetree/bindings/gpio/fsl-imx-gpio.yaml
-
デバイスファイル
-
sysfs GPIOクラスディレクトリ
| |
---|
sysfs GPIOクラスは旧バージョンのLinuxカーネルとの互換性維持の為に残っています。新しくアプリケーションを開発する際の利用はおすすめしません。 新しくアプリケーションを開発する場合は、libgpiodパッケージに含まれるアプリケーションまたはLinux カーネルのソースコードに含まれているサンプル(tools/gpio/)を参考にしてください。 |
-
カーネルコンフィギュレーション
Device Drivers --->
[*] GPIO Support ---> <GPIOLIB>
(512) Maximum number of GPIOs for fast path
<GPIOLIB_FASTPATH_LIMIT>
Memory mapped GPIO drivers --->
-*- i.MX GPIO support <GPIO_MXC>
Armadillo-610の温度センサーは、i.MX6ULLのTEMPMON(Temperature Monitor)を利用しています。
起動直後の設定では、ARMまたはSoCの測定温度が 105°C以上になった場合、Linuxカーネルはシステムを停止します。
-
機能
-
sysfs thermalクラスディレクトリ
-
/sys/class/thermal/thermal_zone0
-
関連するソースコード
-
drivers/thermal/imx_thermal.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/thermal/imx-thermal.yaml
-
カーネルコンフィギュレーション
Device Drivers --->
-*- Thermal drivers ---> <THERMAL>
<*> Temperature sensor driver for Freescale i.MX SoCs
<IMX_THERMAL>
Armadillo-610のウォッチドッグタイマーは、i.MX6ULLのWDOG(Watchdog Timer)を利用しています。
ウォッチドッグタイマーは、U-Boot によって有効化されます。標準状態でタイムアウト時間は10秒に設定されます。
何らかの要因でウォッチドッグタイマーのキックができなくなりタイムアウトすると、システムリセットが発生します。
-
関連するソースコード
-
drivers/watchdog/imx2_wdt.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.yaml
-
カーネルコンフィギュレーション
Device Drivers --->
[*] Watchdog Timer Support ---> <WATCHDOG>
<*> IMX2+ Watchdog <IMX2_WDT>
ウォッチドッグタイマーの設定変更は、ioctlシステムコール経由で行うことができます。詳細な情報については、Linux カーネルのソースコードに含まれているドキュメント(Documentation/watchdog/watchdog-api.rst)を参照してください。
| |
---|
ウォッチドッグタイマーを停止することはできません。 |
Armadillo-610 の LCD ホストは、i.MX6ULL のeLCDIF(Enhanced LCD Interface)を利用しています。LCDインターフェース(Armadillo-610 拡張ボード: CON11) に LCD オプションセット(7 インチタッチパネル WVGA 液晶)を接続した場合に利用できます。
-
機能
,
デバイス
-
/dev/dri/card0
(DRM)
-
/dev/fb0
(フレームバッファ)
-
関連するソースコード
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/display/mxsfb.txt
-
カーネルコンフィギュレーション
Device Drivers --->
Graphics support --->
<M> i.MX (e)LCDIF LCD controller <DRM_MXSFB>
| |
---|
LCD機能を利用するには、DT overlayの設定が必要です。 [armadillo~]# vi /boot/overlays.txt
fdt_overlays=armadillo-610-onboard-usdhc2.dtbo armadillo-610-extboard-eva.dtbo armadillo-640-lcd70ext-l00.dtbo
[armadillo~]# persist_file /boot/overlays.txt
[armadillo~]# reboot |