工場出荷時の Armadillo-IoT ゲートウェイ A6に書き込まれている Linuxカーネルは、デフォルトコンフィギュレーションが適用されています。Armadillo-IoT ゲートウェイ A6用のデフォルトコンフィギュレーションが記載されているファイルは、Linuxカーネルソースファイル (linux-v4.14-at[VERSION].tar.gz
)に含まれる arch/arm/configs/armadillo-iotg-a6_defconfig
です。
armadillo-iotg-a6_defconfig
で有効になっている主要な設定を表8.1「Linuxカーネル主要設定」に示します。
表8.1 Linuxカーネル主要設定
コンフィグ | 説明 |
---|
VMSPLIT_3G
| 3G/1G user/kernel split |
AEABI
| Use the ARM EABI to compile the kernel |
COMPACTION
| Allow for memory compaction |
MIGRATION
| Page migration |
THALES_LTE_MULTIPLEX
| Thales LTE module multiplex driver |
| |
---|
出荷時期等により、異なるデフォルトコンフィギュレーションが適用されている場合があります。Armadillo-IoT ゲートウェイ A6用のデフォルトコンフィギュレーションはLinux カーネルのバージョンが at43 以降の場合のみ適用されています。 |
Armadillo-IoT ゲートウェイ A6で利用することができるデバイスドライバについて説明します。各ドライバで利用しているソースコードのうち主要なファイルのパスや、コンフィギュレーションに必要な情報、及びデバイスファイルなどについて記載します。
8.3.1. Armadillo-IoT ゲートウェイ A6
Armadillo-IoT ゲートウェイ A6のハードウェアの構成情報やピンのマルチプレクス情報、i.MX6ULLの初期化手順などが定義されています。
-
関連するソースコード
-
arch/arm/mach-imx/
-
arch/arm/boot/dts/armadillo-640.dts
-
arch/arm/boot/dts/armadillo-iotg-a6.dts
-
arch/arm/boot/dts/imx6ull.dtsi
-
arch/arm/boot/dts/imx6ul.dtsi
-
カーネルコンフィギュレーション
System Type --->
[*] Freescale i.MX family ---> <ARCH_MXC>
[*] i.MX6 UltraLite support <SOC_IMX6UL>
Armadillo-IoT ゲートウェイ A6のシリアルは、i.MX6ULLのUART (Universal Asynchronous Receiver/Transmitter) を利用しています。Armadillo-IoT ゲートウェイ A6の標準状態では、UART3 (CON3 / CON4) をコンソールとして利用しています。
-
フォーマット
-
データビット長: 7 or 8ビット
-
ストップビット長: 1 or 2ビット
-
パリティ: 偶数 or 奇数 or なし
-
フロー制御: CTS/RTS or XON/XOFF or なし
-
最大ボーレート:230.4kbps
-
関連するソースコード
-
drivers/tty/n_null.c
-
drivers/tty/n_tty.c
-
drivers/tty/pty.c
-
drivers/tty/tty_baudrate.c
-
drivers/tty/tty_buffer.c
-
drivers/tty/tty_io.c
-
drivers/tty/tty_ioctl.c
-
drivers/tty/tty_jobctrl.c
-
drivers/tty/tty_ldisc.c
-
drivers/tty/tty_ldsem.c
-
drivers/tty/tty_mutex.c
-
drivers/tty/tty_port.c
-
drivers/tty/serial/earlycon.c
-
drivers/tty/serial/serial_core.c
-
drivers/tty/serial/serial_mctrl_gpio.c
-
drivers/tty/serial/imx.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
-
Documentation/devicetree/bindings/serial/serial.txt
-
デバイスファイル
-
カーネルコンフィギュレーション
Device Drivers --->
Character devices --->
[*] Enable TTY <TTY>
Serial drivers --->
[*] IMX serial port support <SERIAL_IMX>
[*] Console on IMX serial port <SERIAL_IMX_CONSOLE>
Armadillo-IoT ゲートウェイ A6の Ethernet (LAN) は、i.MX6ULLのENET(10/100-Mbps Ethernet MAC)を利用しています。
-
機能
-
通信速度: 100Mbps (100BASE-TX), 10Mbps (10BASE-T)
-
通信モード: Full-Duplex (全二重), Half-Duplex (半二重)
-
Auto Negotiationサポート
-
キャリア検知サポート
-
リンク検出サポート
-
関連するソースコード
-
drivers/net/Space.c
-
drivers/net/loopback.c
-
drivers/net/ethernet/freescale/fec_main.c
-
drivers/net/ethernet/freescale/fec_ptp.c
-
drivers/net/phy/fixed_phy.c
-
drivers/net/phy/mdio-boardinfo.c
-
drivers/net/phy/mdio_bus.c
-
drivers/net/phy/mdio_device.c
-
drivers/net/phy/phy-core.c
-
drivers/net/phy/phy.c
-
drivers/net/phy/phy_device.c
-
drivers/net/phy/smsc.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/net/fsl-fec.txt
-
Documentation/devicetree/bindings/net/phy.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-IoT ゲートウェイ A6 は LTE モデム EMS31-J を利用しています。
またネットワークコネクション確立に ppp を利用しています。
-
デバイス
-
関連するソースコード
-
drivers/reset/reset-ems31.c
-
drivers/net/ppp/ppp_generic.c
-
drivers/net/ppp/ppp_async.c
-
カーネルコンフィギュレーション
Device Drivers --->
[*] Network device support ---> <NETDEVICES>
[*] PPP (point-to-point protocol) support <PPP>
[*] PPP support for async serial ports <PPP_ASYNC>
-*- Reset Controller Support ---> <RESET_CONTROLLER>
[*] GPIO-based Reset Driver for Tales EMS31 <RESET_EMS31>
Armadillo-IoT ゲートウェイ A6 のSDホストは、i.MX6ULL の uSDHC (Ultra Secured Digital Host Controller) を利用しています。
Armadillo-IoT ゲートウェイ A6 では、オンボードmicroSDコネクタ (CON1) がuSDHC2を利用しています。
-
機能
-
カードタイプ: SD/SDHC/SDXC/SDIO
-
バス幅: 1bit or 4bit
-
スピードモード: Default Speed (24.75MHz), High Speed (49.5MHz)
-
カードディテクトサポート
-
デバイスファイル
-
関連するソースコード
-
drivers/mmc/core/
-
drivers/mmc/host/sdhci-esdhc-imx.c
-
drivers/mmc/host/sdhci-pltfm.c
-
drivers/mmc/host/sdhci.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
-
Documentation/devicetree/bindings/mmc/mmc.txt
-
Documentation/devicetree/bindings/regulator/fixed-regulator.txt
-
カーネルコンフィギュレーション
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>
[*] SDHCI support for the Freescale eSDHC/uSDHC i.MX controller support
<MMC_SDHCI_ESDHC_IMX>
Armadillo-IoT ゲートウェイ A6のUSBホストは、i.MX6ULLのUSB-PHY (Universal Serial Bus 2.0 Integrated PHY) および USB (Universal Serial Bus Controller) を利用しています。Armadillo-IoT ゲートウェイ A6 では、USBホストインターフェース (CON5) が OTG1 (下段) と OTG2 (上段) を利用しています。OTG2は CON5 と CON9 と排他利用になっており、外部からの信号で切り替えることができるようになっています。詳しくは「メインユニット 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/usb/usbmisc-imx.txt
-
Documentation/devicetree/bindings/regulator/fixed-regulator.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>
[*] Support for Freescale i.MX on-chip EHCI USB controller
<USB_EHCI_MXC>
[*] ChipIdea Highspeed Dual Role Controller <USB_CHIPIDEA>
[*] ChipIdea host controller <USB_CHIPIDEA_HOST>
USB Physical Layer drivers --->
[*] NOP USB Transceiver Driver <NOP_USB_XCEIV>
Armadillo-IoT ゲートウェイ A6のリアルタイムクロックは、Micro Crystal製 RV-8803-C7 が搭載されておりこれを利用しています。
RV-8803-C7 は、「I2C」に示す I2C-GPIO1 (I2C ノード: 4-0032) に接続されています。
i.MX6ULL の RTC 機能も存在します。
-
機能
-
デバイスファイル
-
/dev/rtc
-
/dev/rtc0
-
/dev/rtc1
| |
---|
Armadillo-IoT ゲートウェイ A6 のサブユニットのリビジョンが rev 4 以前の場合、搭載されているリアルタイムクロックは、日本電波工業(NDK)製 NR3225SA となります。 インストールしているカーネルのバージョンが at41 以降の場合は、以下コマンドでサブユニットのリビジョンを確認することができます。 [armadillo]# grep "Revision" /proc/cpuinfo
Revision : 0005 |
| |
---|
RTCが /dev/rtc0 となるよう、Device Treeでエイリアスを設定しています。そのため、i.MX6ULLのRTC機能は /dev/rtc1 となります。 エイリアスの設定は、 linux-4.14-at[VERSION]/arch/arm/boot/dts/armadillo-iotg-a6.dts で行っています。 |
-
関連するソースコード
-
drivers/rtc/rtc-lib.c
-
drivers/rtc/rtc-core.c
-
drivers/rtc/hctosys.c
-
drivers/rtc/systohc.c
-
drivers/rtc/nvmem.c
-
drivers/rtc/rtc-sysfs.c
-
drivers/rtc/rtc-proc.c
-
drivers/rtc/rtc-dev.c
-
drivers/rtc/rtc-nr3225sa.c
-
drivers/rtc/rtc-rv8803.c
-
drivers/rtc/rtc-snvs.c
-
カーネルコンフィギュレーション
Device Drivers --->
[*] Real Time Clock <RTC_CLASS>
[*] Set system time from RTC on startup and resume <RTC_HCTOSYS>
(rtc0) RTC used to set the system time <RTC_HCTOSYS_DEVICE>
[*] Set the RTC time based on NTP synchronization <RTC_SYSTOHC>
(rtc0) RTC used to synchronize NTP adjustment <RTC_SYSTOHC_DEVICE>
[*] RTC non volatile storage support <RTC_NVMEM>
*** RTC interfaces ***
[*] /sys/class/rtc/rtcN (sysfs) <RTC_INTF_SYSFS>
[*] /proc/driver/rtc (procfs for rtcN) <RTC_INTF_PROC>
[*] /dev/rtcN (character devices) <RTC_INTF_DEV>
*** I2C RTC drivers ***
[*] NDK NR3225SA <RTC_DRV_NR3225SA>
[*] Micro Crystal RV8803, Epson RX8900 <RTC_DRV_RV8803>
*** on-CPU RTC drivers ***
[*] Freescale SNVS RTC support <RTC_DRV_SNVS>
アラーム割り込みは、デバイスファイル経由で利用することができます。
詳細な情報については、Linux カーネルのソースコードに含まれているドキュメント(Documentation/rtc.txt)やサンプルプログラム(tools/testing/selftests/timers/rtctest.c)を参照してください。
Armadillo-IoT ゲートウェイ A6 に搭載されているソフトウェア制御可能なLEDには、GPIOが接続されています。
Linuxでは、GPIO接続用LEDドライバ (leds-gpio) で制御することができます。
-
sysfs LEDクラスディレクトリ
-
/sys/class/leds/red
-
/sys/class/leds/green
-
関連するソースコード
-
drivers/leds/led-class.c
-
drivers/leds/led-core.c
-
drivers/leds/led-triggers.c
-
drivers/leds/leds-gpio.c
-
drivers/leds/trigger/
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/leds/leds-gpio.txt
-
カーネルコンフィギュレーション
Device Drivers --->
[*] LED Support ---> <NEW_LEDS>
[*] LED Class Support <LEDS_CLASS>
*** LED drivers ***
[*] LED Support for GPIO connected LEDs <LEDS_GPIO>
*** LED Triggers ***
[*] LED Trigger support ---> <LEDS_TRIGGERS>
[*] LED Timer Trigger <LEDS_TRIGGER_TIMER>
[*] LED One-shot Trigger <LEDS_TRIGGER_ONESHOT>
[*] LED Heartbeat Trigger <LEDS_TRIGGER_HEARTBEAT>
[*] LED Default ON Trigger <LEDS_TRIGGER_DEFAULT_ON>
Armadillo-IoT ゲートウェイ A6 に搭載されているユーザースイッチには、GPIOが接続されています。
GPIOが接続されユーザー空間でイベント (Press/Release) を検出することができます。Linuxでは、GPIO接続用キーボードドライバ (gpio-keys) で制御することができます。
ユーザースイッチには、次に示すキーコードが割り当てられています。
表8.3 キーコード
ユーザースイッチ | キーコード | イベントコード |
---|
SW1 | KEY_ENTER
| 28 |
-
デバイスファイル
-
関連するソースコード
-
drivers/input/evdev.c
-
drivers/input/input-compat.c
-
drivers/input/input.c
-
drivers/input/keyboard/gpio_keys.c
-
Device Treeドキュメント
-
Documentation/devicetree/bindings/input/gpio-keys.txt
-
カーネルコンフィギュレーション
Device Drivers --->
Input device support --->
-*- Generic input layer (needed for keyboard, mouse, ...)
<INPUT>
[*] Event interface <INPUT_EVDEV>
*** Input Device Drivers ***
[*] Keyboards ---> <INPUT_KEYBOARD>
[*] GPIO Buttons <KEYBOARD_GPIO>
Armadillo-IoT ゲートウェイ A6 の I2C インターフェースは、GPIO を利用した I2C バスドライバ(i2c-gpio)を利用します。また、i2c-gpioを利用することで、I2C バスを追加することができます。
Armadillo-IoT ゲートウェイ A6 で利用している I2C バスと、接続される I2C デバイスを次に示します。
表8.4 I2C デバイス
I2C バス | I2C デバイス |
アドレス | デバイス名 |
4(I2C-GPIO1) | 0x32 | RV8803 |
4(I2C-GPIO1) | 0x48 | SE050 |
| |
---|
Armadillo-IoT ゲートウェイ A6 のサブユニットのリビジョンが rev 4 以前の場合、I2C デバイスアドレス 0x32 の I2C デバイス名は、NR3225SA となります。 インストールしているカーネルのバージョンが at41 以降の場合は、以下コマンドでサブユニットのリビジョンを確認することができます。 [armadillo]# grep "Revision" /proc/cpuinfo
Revision : 0005 |
Armadillo-IoT ゲートウェイ A6 の標準状態では、CONFIG_I2C_CHARDEV が有効となっているためユーザードライバで I2C デバイスを制御することができます。ユーザードライバを利用する場合は、Linux カーネルで I2Cデバイスに対応するデバイスドライバを無効にする必要があります。
-
機能
-
デバイスファイル
-
関連するソースコード
-
drivers/i2c/i2c-core.c
-
drivers/i2c/i2c-boardinfo.c
-
drivers/i2c/i2c-dev.c
-
drivers/i2c/algos/i2c-algo-bit.c
-
drivers/i2c/busses/i2c-gpio.c
-
drivers/i2c/busses/i2c-imx.c
-
Device Tree ドキュメント
-
Documentation/devicetree/bindings/i2c/i2c-imx.txt
-
Documentation/devicetree/bindings/i2c/i2c-gpio.txt
-
カーネルコンフィギュレーション
Device Drivers --->
I2C support --->
[*] I2C support <I2C>
[*] Enable compatibility bits for old user-space <I2C_COMPAT>
[*] I2C device interface <I2C_CHARDEV>
I2C Algorithms --->
-*- I2C bit-banging interfaces <I2C_ALGOBIT>
I2C Hardware Bus support --->
[*] GPIO-based bitbanging I2C <I2C_GPIO>
[*] IMX I2C interface <I2C_IMX>
Armadillo-IoT ゲートウェイ A6 のパワーマネジメント機能は、LinuxのSPM(System Power Management)およびDPM(Device Power Management)を利用しています。パワーマネジメント状態を省電力モードに遷移させることにより、Armadillo-IoT ゲートウェイ A6 の消費電力を抑えることができます。
パワーマネジメント状態を省電力モードに遷移させると、アプリケーションの実行は一時停止し、Linuxカーネルはサスペンド状態となります。起床要因が発生すると、Linuxカーネルのリジューム処理が行われた後、アプリケーションの実行を再開します。
-
sysfsファイル
-
関連するソースコード
-
カーネルコンフィギュレーション
Power management options --->
[*] Suspend to RAM and standby <SUSPEND>
-*- Device power management core functionality <PM>
Armadillo-IoT ゲートウェイ A6 が対応するパワーマネジメント状態と、/sys/power/stateに書き込む文字列の対応を次に示します。
表8.5 対応するパワーマネジメント状態
パワーマネジメント状態 | 文字列 | 説明 |
---|
Suspend-to-RAM
| mem
| 最も消費電力を抑えることができる |
Power-On Suspend
| standby
| Suspend-to-RAMよりも短時間で復帰することができ、Suspend-to-Idleよりも消費電力を抑えることができる |
Suspend-to-Idle
| freeze
| 最も短時間で復帰することができる |
起床要因として利用可能なデバイスは次の通りです。
-
UART2 (LTE モデムと接続)
-
起床要因
-
データ受信
-
有効化
[armadillo ~]# echo enabled > /sys/bus/platform/drivers/imx-uart/21e8000.serial/tty/ttymxc1/power/wakeup
-
UART3 (CON3 / CON4)
-
起床要因
-
データ受信
-
有効化
[armadillo ~]# echo enabled > /sys/bus/platform/drivers/imx-uart/21ec000.serial/tty/ttymxc2/power/wakeup
-
USB OTG1 (下段)
-
起床要因
-
USBデバイスの挿抜
-
有効化
[armadillo ~]# echo enabled > /sys/bus/platform/devices/2184000.usb/power/wakeup
[armadillo ~]# echo enabled > /sys/bus/platform/drivers/ci_hdrc/ci_hdrc.0/power/wakeup
[armadillo ~]# echo enabled > /sys/bus/platform/drivers/ci_hdrc/ci_hdrc.0/usb1/power/wakeup
-
USB OTG2 (上段)
-
起床要因
-
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)
-
起床要因
-
アラーム割り込み
-
有効化
[armadillo ~]# echo enabled > /sys/bus/platform/devices/20cc000.snvs\:snvs-rtc-lp/power/wakeup
-
RTC(RV8803)
-
起床要因
-
アラーム割り込み
-
有効化
[armadillo ~]# echo enabled > /sys/devices/soc0/i2c-gpio1/i2c-4/4-0032/power/wakeup
| |
---|
Armadillo-IoT ゲートウェイ A6 のサブユニットのリビジョンが rev 4 以前の場合、RTC デバイスは、NR3225SA となります。 インストールしているカーネルのバージョンが at41 以降の場合は、以下コマンドでサブユニットのリビジョンを確認することができます。 [armadillo]# grep "Revision" /proc/cpuinfo
Revision : 0005 |