製品機能

本章では、Armadillo-610で利用できる各種機能の仕様について説明します。

12.1. UART

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
デバイスファイル
シリアルインターフェース デバイスファイル

UART1

/dev/ttymxc0

UART3

/dev/ttymxc2

UART5

/dev/ttymxc4

カーネルコンフィギュレーション
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>

12.2. Ethernet

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
ネットワークデバイス
  • eth0
カーネルコンフィギュレーション
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>

12.3. SDホスト

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)
  • カードディテクトサポート
デバイスファイル
  • /dev/mmcblk1
関連するソースコード
  • 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>

12.4. USBホスト

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>

12.5. USB OTG

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>

12.6. USBハブ

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>

12.7. リアルタイムクロック

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)を参照してください。

12.8. LED

Armadillo-610 および Armadillo-610 拡張ボードに搭載されているソフトウェア制御可能なLEDには、GPIOが接続されています。 Linuxでは、GPIO接続用LEDドライバ (leds-gpio) で制御することができます。

sysfs LEDクラスディレクトリ
  • /sys/class/leds/green
  • /sys/class/leds/yellow
関連するソースコード
  • drivers/leds/leds-gpio.c
Device Treeドキュメント
  • Documentation/devicetree/bindings/leds/leds-gpio.yaml
カーネルコンフィギュレーション
Device Drivers  --->
  [*] LED Support  --->                                  <NEW_LEDS>
    <*>   LED Support for GPIO connected LEDs           <LEDS_GPIO>

12.9. ユーザースイッチとイベント信号

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 [8]
関連するソースコード
  • 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>

12.10. I2C

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デバイスに対応するデバイスドライバを無効にする必要があります。

機能
  • 最大転送レート: 400kbps
デバイスファイル
  • /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>

12.11. アナログオーディオ

Armadillo-610 のアナログオーディオは、i.MX6ULL の MQS (Medium Quality Sound) を利用しています。

機能
  • サンプリング周波数: 48000
  • チャンネル数: 2
  • フォーマット: Signed 16 bit, Little-endian
  • 再生(Playback)のみサポート
オーディオデバイス
  • hw:0
関連するソースコード
  • 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>

12.12. ADコンバーター

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>

12.13. パワーマネジメント

Armadillo-610のパワーマネジメント機能は、LinuxのSPM(System Power Management)およびDPM(Device Power Management)を利用しています。パワーマネジメント状態を省電力モードに遷移させることにより、Armadillo-610の消費電力を抑えることができます。

パワーマネジメント状態を省電力モードに遷移させると、アプリケーションの実行は一時停止し、Linuxカーネルはサスペンド状態となります。起床要因が発生すると、Linuxカーネルのリジューム処理が行われた後、アプリケーションの実行を再開します。

sysfsファイル
  • /sys/power/state
関連するソースコード
  • kernel/power/
カーネルコンフィギュレーション
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

12.14. GPIO

Armadillo-610のGPIOは、i.MX6ULLのGPIO(General Purpose Input/Output)を利用しています。

関連するソースコード
  • drivers/gpio/gpio-mxc.c
Device Tree ドキュメント
  • Documentation/devicetree/bindings/gpio/fsl-imx-gpio.yaml
デバイスファイル
デバイスファイル GPIO番号

/dev/gpiochip0

0〜31(GPIO1_IO00〜GPIO1_IO31)

/dev/gpiochip1

32〜63(GPIO2_IO00〜GPIO2_IO31)

/dev/gpiochip2

64〜95(GPIO3_IO00〜GPIO3_IO31)

/dev/gpiochip3

96〜127(GPIO4_IO00〜GPIO4_IO31)

/dev/gpiochip4

128〜159(GPIO5_IO00〜GPIO5_IO31)

sysfs GPIOクラスディレクトリ
  • /sys/class/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>

12.15. 温度センサー

Armadillo-610の温度センサーは、i.MX6ULLのTEMPMON(Temperature Monitor)を利用しています。

起動直後の設定では、ARMまたはSoCの測定温度が 105°C以上になった場合、Linuxカーネルはシステムを停止します。

機能
  • 測定温度範囲: -40〜+105°C
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>

12.16. ウォッチドッグタイマー

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)を参照してください。

[ティップ]

ウォッチドッグタイマーを停止することはできません。

12.17. LCD

Armadillo-610 の LCD ホストは、i.MX6ULL のeLCDIF(Enhanced LCD Interface)を利用しています。LCDインターフェース(Armadillo-610 拡張ボード: CON11) に LCD オプションセット(7 インチタッチパネル WVGA 液晶)を接続した場合に利用できます。

機能 , デバイス
  • /dev/dri/card0 (DRM)
  • /dev/fb0 (フレームバッファ)
関連するソースコード
  • drivers/gpu/drm/mxsfb/
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


[8] USBキーボードなどを接続してインプットデバイスを追加している場合は、番号が異なる可能性があります