第8章 Linuxカーネル仕様

本章では、工場出荷状態のArmadillo-IoT のLinuxカーネル仕様について説明します。

8.1. デフォルトコンフィギュレーション

工場出荷状態のフラッシュメモリに書き込まれているLinuxカーネルイメージには、デフォルトコンフィギュレーションが適用されています。 Armadillo-IoT ゲートウェイ スタンダードモデル用のデフォルトコンフィギュレーションが記載されているファイルは、Linux カーネルソースファイル(linux-2.6.26-[VERSION].tar.gz)に含まれるarch/arm/configs/armadillo_iotg_std_defconfigです。

armadillo_iotg_std_defconfigで有効になっている主要な設定を表8.1「Linuxカーネル主要設定」に示します。

表8.1 Linuxカーネル主要設定

コンフィグ説明
HIGH_RES_TIMERSHigh Resolution Timer Support
PREEMPTPreemptible Kernel
AEABI Use the ARM EABI to compile the kernel

8.2. デフォルト起動オプション

工場出荷状態のArmadillo-IoT のLinuxカーネルの起動オプションについて説明します。デフォルト状態では、次のように設定されています。

表8.2 Linuxカーネルのデフォルト起動オプション

起動オプション説明
console=ttymxc1,115200起動ログなどが出力されるイニシャルコンソールにttymxc1(ベースボード:CON9)を、ボーレートに 115200bps を指定します。

8.3. Linuxドライバ一覧

Armadillo-IoT で利用することができるデバイスドライバについて説明します。 各ドライバで利用しているソースコードの内主要なファイルのパスや、コンフィギュレーションに必要な情報、及びデバイスファイルなどについて記載します。

8.3.1. Armadillo-IoT ゲートウェイ スタンダードモデル

Armadillo-IoT ゲートウェイ スタンダードモデル の初期化手順やハードウェアの構成情報、ピンマルチプレクスの情報などが定義されています。ユーザーオリジナルのアドオンボードを利用する場合などに変更を加えます。

関連するソースコード

arch/arm/mach-mx25/armadillo_iotg_std.c
arch/arm/mach-mx25/armadillo_iotg_std_addon.c
arch/arm/mach-mx25/armadillo_iotg_std_gpio.c
arch/arm/mach-mx25/clock.c
arch/arm/mach-mx25/cpu.c
arch/arm/mach-mx25/devices.c
arch/arm/mach-mx25/dma.c
arch/arm/mach-mx25/gpio.c
arch/arm/mach-mx25/mm.c
arch/arm/mach-mx25/pm.c
arch/arm/mach-mx25/serial.c
arch/arm/mach-mx25/system.c
arch/arm/mach-mx25/usb_dr.c
arch/arm/mach-mx25/usb_h2.c

カーネルコンフィギュレーション
  System Type  --->
      ARM system type (Freescale MXC/iMX-based)  --->
      Freescale MXC Implementations  --->
          MXC/iMX System Type (MX25-based)  --->                              <ARCH_MX25>
          MX25 Options  --->
              [*] Support Atmark Techno Armadillo-410                 <MACH_ARMADILLO410>
              Armadillo-400 Board options  --->
                  Armadillo-410 CON2 extension board (Armadillo-IoTG Std Base board)  --->
                                                            <ARMADILLO410_CON2_AIOTG_STD>
                  [*] Addon Module Auto Delect              <AIOTG_STD_ADDON_AUTO_DETECT>
                            :

ユーザーオリジナルのアドオンボードを利用する場合には、アットマークテクノ製アドオンボードの自動検出機能を示す「Addon Module Auto Delect」の選択を外します。

「Addon Module Auto Delect」の選択を外すと、アドオンインターフェースで実現することのできる機能を選択することができます。コンフィギュレーションで機能を明示的に割り当てない全てのピンにはGPIO機能が割り当てられます。

    [ ] Addon Module Auto Delect
    [ ]   Enable UART1 at CON1/CON2 (NEW)
    [ ]   Enable UART3 at CON1/CON2 (NEW)
    [ ]   Enable UART4 at CON1/CON2 KPP Pad (NEW)
    [ ]     Enable UART4 at CON1 LCD Pad (NEW)
    [ ]   Enable UART5 at CON1/CON2 (NEW)
    [ ]   Enable I2C2 at CON1/CON2 (NEW)
    [*]   Enable I2C3 at CON1_24/CON1_25 (NEW)
    [ ]   Enable SPI2 at CON1 (NEW)
    [ ]   Enable SPI3 at CON1/CON2 (NEW)
    [ ]   Enable CAN2 at CON1/CON2 (NEW)
    [ ]   Enable one wire at CON1_6/CON2_32 (NEW)
    [ ]   Enable PWM1 at CON1_5/CON2_33 (NEW)
    [ ]   Enable PWM4 at CON1_3/CON2_24 (NEW)

機能が割り当てられるピンを調べるには、各項目のヘルプを参照します。次に示す例では、「Enable UART1 at CON1/CON2」を選択した場合に、アドオンインターフェース(ベースボード:CON1) 7ピンと アドオンインターフェース(ベースボード:CON2) 41ピンに UART1のRXD信号が、アドオンインターフェース(ベースボード:CON1) 8ピンと アドオンインターフェース(ベースボード:CON2) 40ピンに UART1のTXD信号が割り当てられることが確認できます。

    ----------------------- Enable UART1 at CON1/CON2 ----------------------
    CONFIG_AIOTG_STD_UART1:

    Enable UART1 at CON1/CON2

    CON1_7/CON2_41: UART1_RXD
    CON1_8/CON2_40: UART1_TXD

    Symbol: AIOTG_STD_UART1 [=n]
    Prompt: Enable UART1 at CON1/CON2
      Defined at arch/arm/mach-mx25/Kconfig:1273
      Depends on: ARCH_MXC && ARCH_MX25 && (MACH_ARMADILLO410 || MACH_ARMAD
      Location:
        -> System Type
          -> Freescale MXC Implementations
            -> MX25 Options
              -> Armadillo-400 Board options
                -> Addon Module Auto Delect (AIOTG_STD_ADDON_AUTO_DETECT [=
      Selects: AIOTG_STD_CON1_7_CON2_41_UART1_RXD && AIOTG_STD_CON1_8_CON2_
    ------------------------------------------------------------------------
                                   < Exit >

8.3.2. フラッシュメモリ

Armadillo-IoT では、フラッシュメモリを制御するソフトウェアとして MTD(Memory Technology Device) を利用しています。MTDのキャラクタデバイスまたはブロックデバイスを経由して、ユーザーランドからアクセスすることができます。

関連するソースコード

drivers/mtd/mtdcore.c
drivers/mtd/mtdchar.c
drivers/mtd/mtdblock.c
drivers/mtd/mtdpart.c
drivers/mtd/chips/cfi_cmdset_0001.c
drivers/mtd/chips/cfi_probe.c
drivers/mtd/chips/cfi_util.c
drivers/mtd/chips/chipreg.c
drivers/mtd/chips/gen_probe.c
drivers/mtd/maps/armadillo.c

デバイスファイル
デバイスファイルデバイスタイプ対応するパーティション名
/dev/mtd0キャラクタbootloader
/dev/mtd0ro
/dev/flash/bootloader
/dev/flash/nor.bootloader
/dev/mtdblock0ブロック
/dev/mtd1キャラクタkernel
/dev/mtd1ro
/dev/flash/kernel
/dev/flash/nor.kernel
/dev/mtdblock1ブロック
/dev/mtd2キャラクタuserland
/dev/mtd2ro
/dev/flash/userland
/dev/flash/nor.userland
/dev/mtdblock2ブロック
/dev/mtd3キャラクタconfig
/dev/mtd3ro
/dev/flash/config
/dev/flash/nor.config
/dev/mtdblock3ブロック
カーネルコンフィギュレーション
Device Drivers  --->
  <*> Memory Technology Device (MTD) support  --->                                    <MTD>
      -*-   MTD partitioning support                                       <MTD_PARTITIONS>
      [*]     Command line partition table parsing                      <MTD_CMDLINE_PARTS>
            *** User Modules And Translation Layers ***
      <*>   Direct char device access to MTD devices                             <MTD_CHAR>
      -*-   Common interface to block layer for MTD 'translation layers       <MTD_BLKDEVS>
      <*>   Caching block device access to MTD devices                          <MTD_BLOCK>
      RAM/ROM/Flash chip drivers  --->
          -*- Detect flash chips by Common Flash Interface (CFI) probe            <MTD_CFI>
          <*> Support for Intel/Sharp flash chips                        <MTD_CFI_INTELEXT>
      Mapping drivers for chip access  ---> 
          <*> CFI FLash device mapped on Armadillo board                    <MTD_ARMADILLO>


    <*> Memory Technology Device (MTD) support  --->                           <CONFIG_MTD>
        [*] Command line partition table parsing                 <CONFIG_MTD_CMDLINE_PARTS>
        [*] Read-only switching user interface support                   <CONFIG_MTD_RO_IF>
            *** User Modules And Translation Layers ***
        <*> Direct char device access to MTD devices                      <CONFIG_MTD_CHAR>
        -*- Common interface to block layer for MTD 'trnslation...     <CONFIG_MTD_BLKDEVS>
        <*> Caching block device access to MTD devices                   <CONFIG_MTD_BLOCK>
            RAM/ROM/Flash chip drivers  --->
            <*> Detect flash chips by Common Flash Interface...            <CONFIG_MTD_CFI>
            <*> Support for Intel/Sharp flash chips               <CONFIG_MTD_CFI_INTELEXT>
            Mapping drivers for chip access  --->
            <*> Flash device in physical memory map                    <CONFIG_MTD_PHYSMAP>

8.3.3. UART

Armadillo-IoT のシリアルは、i.MX257 の UART(Universal Asynchronous Receiver/Transmitter) を利用しています。

Armadillo-IoT のシリアルは、最大5ポートを利用することができます。標準状態では、UART2(ベースボード:CON9)をコンソールとして利用しています。

フォーマット

データビット長: 7 or 8ビット
ストップビット長: 1 or 2ビット
パリティ: 偶数 or 奇数 or なし
フロー制御: CTS/RTS or XON/XOFF or なし
最大ボーレート: 4Mbps[13]

関連するソースコード

drivers/serial/serial_core.c
drivers/serial/mxc_uart.c

デバイスファイル
シリアルインターフェースデバイスファイル
UART1/dev/ttymxc0
UART2/dev/ttymxc1
UART3/dev/ttymxc2
UART4/dev/ttymxc3
UART5/dev/ttymxc4
カーネルコンフィギュレーション
  System Type  --->
      Freescale MXC Implementations  --->
          MX25 Options  --->
              Armadillo-400 Board options  --->
                  [ ] Addon Module Auto Delect            <AIOTG_STD_ADDON_AUTO_DETECT> 1
                  [*]   Enable UART1 at CON1/CON2                     <AIOTG_STD_UART1> 2
                  [*]     Enable UART1 HW flow control at CON1/CON2
                                                              <AIOTG_STD_UART1_HW_FLOW> 2
                  [*]   Enable UART3 at CON1/CON2                     <AIOTG_STD_UART3> 2
                  [*]     Enable UART3 HW flow control at CON1/CON2
                                                              <AIOTG_STD_UART3_HW_FLOW> 2
                  [*]   Enable UART4 at CON1/CON2 KPP Pad         <AIOTG_STD_UART4_KPP> 2
                  [*]     Enable UART4 HW flow control at CON1/CON2 KPP Pad
                                                          <AIOTG_STD_UART4_HW_FLOW_KPP> 2
                  [*]   Enable UART5 at CON1/CON2                     <AIOTG_STD_UART5> 2
                  [*]     Enable UART5 HW flow control at CON1/CON2
                                                              <AIOTG_STD_UART5_HW_FLOW> 2
  Device Drivers  --->
      Character devices  --->
          Serial drivers  --->
              <*> MXC Internal serial port support                         <SERIAL_MXC>
              [*]   Support for console on a MXC/MX27/MX21 Internal serial port
                                                                   <SERIAL_MXC_CONSOLE>

1

標準状態では有効化されています。

2

標準状態では無効化されています。

8.3.4. Ethernet

Armadillo-IoT のEthernet(LAN)は、i.MX257 の FEC(Fast Ethernet Controller)を利用しています。

機能

通信速度: 100Mbps(100BASE-TX), 10Mbps(10BASE-T)
通信モード: Full-Duplex(全二重), Half-Duplex(半二重)
Auto Negotiationサポート
キャリア検知サポート
リンク検出サポート

関連するソースコード

drivers/net/mx25_fec.c

ネットワークデバイス

eth0

カーネルコンフィギュレーション
  Device Drivers  --->
      [*] Network device support  --->                                           <NETDEVICES>
          [*]   Ethernet (10 or 100Mbit)  --->                                  <NET_ETHERNET>
              -*-   Generic Media Independent Interface device support                   <MII>
              <*>   FEC ethernet controller for i.MX25                              <MX25_FEC>

8.3.5. 3G

Armadillo-IoT には、Sierra Wireless製 MC8090 が搭載されています。MC8090は、USB Host2に接続されています。

機能

リンク検出サポート

ネットワークデバイス

usb0[14]

デバイスファイル

/dev/ttyUSB0[15]
/dev/ttyUSB1[15]
/dev/ttyUSB2[15]
/dev/ttyUSB3[15]
/dev/ttyUSB4[15]

関連するソースコード

drivers/net/usb/sierra_net.c
drivers/net/usb/usbnet.c
drivers/usb/serial/sierra.c
drivers/usb/serial/usb-serial.c

カーネルコンフィギュレーション
  Device Drivers  --->
      [*] Network device support  --->                                         <NETDEVICES>
          USB Network Adapters  --->
              <*> Multi-purpose USB Networking Framework                       <USB_USBNET>
                  <*>   USB-to-WWAN Driver for Sierra Wireless modems      <USB_SIERRA_NET>
      [*] USB support  --->                                                   <USB_SUPPORT>
          <*>   USB Serial Converter support  --->                             <USB_SERIAL>
              <*>   USB Sierra Wireless Driver                   <USB_SERIAL_SIERRAWIRELESS>

8.3.6. SDホスト

Armadillo-IoT のSDホストは、i.MX257 の eSDHC(Enhanced Secured Digital Host Controller)を利用しています。

Armadillo-IoT では、最大2ポートを利用することができます。SDインターフェース(Armadillo-410:CON1)がeSDHC1を、SDインターフェース(ベースボード:CON4)がeSDHC2を利用しています。

機能

カードタイプ(Armadillo-410:CON1): microSD/microSDHC/microSDXC
カードタイプ(ベースボード:CON4): SD/SDHC/SDXC
バス幅: 4bit
スピードモード: Default Speed(24MHz), High Speed(48MHz)
カードディテクトサポート(ベースボード:CON4のみ)
ライトプロテクトサポート(ベースボード:CON4のみ)

デバイスファイル

メモリカードの場合は、カードを認識した順番で/dev/mmcblkN (Nは'0'または'1')となります。
I/Oカードの場合は、ファンクションに応じたデバイスファイルとなります。

関連するソースコード

drivers/mmc/host/mx_sdhci.c

カーネルコンフィギュレーション
  System Type  --->
      Freescale MXC Implementations  --->
          MX25 Options  --->
              Armadillo-400 Board options  --->
                  eSDHC2 select function  (SD)  --->
                  (X) SD                                              <AIOTG_STD_ESDHC2_SD>
                  ( ) AWLAN                                     <AIOTG_STD_ESDHC2_SD_AWLAN>
  Device Drivers  --->
      <*> MMC/SD/SDIO card support  --->                                              <MMC>
          <*>   MMC block device driver                                         <MMC_BLOCK>
          [*]     Use bounce buffer for simple hosts                     <MMC_BLOCK_BOUNCE>
          <*>   Freescale i.MX enhanced Secure Digital Host Controller Interface support
                                                                           <MMC_IMX_ESDHCI>

SD インターフェース(ベースボード:CON4)とWLAN インターフェース(ベースボード:CON5)は、共通の信号が接続されています。「eSDHC2 select function」では、デフォルトでどちらの信号に接続するかを選択します。

8.3.7. USBホスト

Armadillo-IoT のUSBホストは、i.MX257 の UTMI-USB-PHY および USBOH(Universal Serial Bus OTG and Host) を利用しています。

Armadillo-IoT では、USB ホストインターフェース(ベースボード:CON7)の OTGポートのみを利用することができます。Host2ポートは「3G」に示す MC8090 に接続されています。

機能

Universal Serial Bus Specification Revision 2.0 準拠
Enhanced Host Controller Interface (EHCI)準拠
転送レート(OTG): USB2.0 High-Speed (480Mbps), Full-Speed (12Mbps), Low-Speed (1.5Mbps)
転送レート(Host2): USB2.0 Full-Speed (12Mbps), Low-Speed (1.5Mbps)

デバイスファイル

メモリデバイスの場合は、デバイスを認識した順番で/dev/sdN (Nは'a'からの連番)となります。
I/Oデバイスの場合は、ファンクションに応じたデバイスファイルとなります。

関連するソースコード

drivers/usb/host/ehci-arc.c
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ehci-hub.c
drivers/usb/host/ehci-q-iram.c
drivers/usb/host/ehci-mem-iram.c

カーネルコンフィギュレーション
  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 controller                         <USB_EHCI_ARC>
          [*]         Support for Host2 port on Freescale controller      <USB_EHCI_ARC_H2>
          [*]         Support for DR host port on Freescale controller   <USB_EHCI_ARC_OTG>
          [*]         Use IRAM for USB                                    <USB_STATIC_IRAM>
          (2048)        Size of 1 qTD's buffer                    <USB_STATIC_IRAM_TD_SIZE>

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

Armadillo-IoT には、セイコーインスツル(SII)製 S-35390Aが搭載されています。 S-35390Aは、I2C-GPIO3 (I2Cノード: 3-0030) に接続されています。

機能

アラーム割り込みサポート

デバイスファイル

/dev/rtc
/dev/rtc0

関連するソースコード

drivers/rtc/rtc-s35390a.c
drivers/rtc/class.c
drivers/rtc/rtc-dev.c
drivers/rtc/rtc-sysfs.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>
                *** RTC interfaces ***
         [*]   /sys/class/rtc/rtcN (sysfs)                                 <RTC_INTF_SYSFS>
         [*]   /proc/driver/rtc (procfs for rtc0)                           <RTC_INTF_PROC>
         [*]   /dev/rtcN (character devices)                                 <RTC_INTF_DEV>
         [*]     RTC UIE emulation on dev interface                 <RTC_INTF_DEV_UIE_EMUL>
               *** I2C RTC drivers ***
         <*>   Seiko Instruments S-35390A                                 <RTC_DRV_S35390A>

アラーム割り込みは、sysfs RTCクラスディレクトリ以下のファイルから利用できます。

wakealarmファイルにUNIXエポックからの経過秒数、または先頭に+を付けて現在時刻からの経過秒数を書き込むと、アラーム割り込み発生時刻を指定できます。アラーム割り込み発生時刻を変更するにはwakealarmファイルに"+0"を書き込み、アラーム割り込みのキャンセル後に再設定する必要があります。アラーム割り込みの利用例を次に示します。

[armadillo ~]# cat /proc/interrupts | grep rtc0 1
 79:          0    MXC_GPIO  rtc0
[armadillo ~]# echo +60 > /sys/class/rtc/rtc0/wakealarm 2
[armadillo ~]# cat /sys/class/rtc/rtc0/wakealarm 3
1418244060
[armadillo ~]# cat /sys/class/rtc/rtc0/since_epoch 4
1418244061
[armadillo ~]# cat /proc/interrupts | grep rtc0 5
 79:          1    MXC_GPIO  rtc0

1

アラーム割り込みの発生回数を確認します。この例では0回です。

2

アラーム割り込みの発生時刻を60秒後に設定します。秒単位は切り捨てられるため、アラーム発生時刻は厳密に60秒後とならない点に注意してください。

3

アラーム割り込みの発生時刻(UNIXエポックからの経過秒数)を確認します。この例では1418244060秒です。

4

現在時刻(UNIXエポックからの経過秒数)を確認します。アラーム割り込みの発生時刻を超えるまで待ちます。

5

再度アラーム割り込みの発生回数を確認します。1増えているのでアラーム割り込みが発生したことを確認できます。

[注記]

デバイスファイル(/dev/rtc0)経由でもアラーム割り込みを利用することができます。サンプルプログラムなどのより詳細な情報については、Linuxカーネルのソースコードに含まれているドキュメント(Documentation/rtc.txt)を参照してください。

8.3.9. 温度センサ

Armadillo-IoT には、NXP セミコンダクターズ製 LM75B が搭載されています。

LM75B は、I2C-GPIO3 (I2C ノード: 3-0048) に接続されています。LM75B の OS(Overtemperature Shutdown output)信号は、GPIO(GPIOディレクトリ:/sys/class/gpio/TEMP_ALERT_N/)に接続されているため、事前に指定した温度を超えたかどうか確認することができます。

機能

分解能: 0.125℃
測定範囲: -55℃ 〜 +125℃

sysfsディレクトリ

/sys/devices/platform/i2c-gpio.3/i2c-adapter/i2c-3/3-0048/

関連するソースコード

drivers/i2c/chips/lm75b.c

カーネルコンフィギュレーション
  Device Drivers  --->
      <*> I2C support  --->                                                           <I2C>
          Miscellaneous I2C Chip support  --->
              <*> NXP Semiconductors LM75B                                  <SENSORS_LM75B>

8.3.10. ADコンバーター

Armadillo-IoT には、Texas Instruments製 ADC081C021 が搭載されています。

ADC081C021 は、I2C-GPIO3 (I2C ノード: 3-0054) に接続されています。ADC081C021 の ALERT 信号は、GPIO(GPIOディレクトリ:/sys/class/gpio/VIN_ALERT_N/)に接続されているため、事前に指定した電圧を超えたかどうか確認することができます。

機能

分解能: 8bit
測定範囲: 0V 〜 3.3V(ADC081C021の電源電圧)

sysfsディレクトリ

/sys/devices/platform/i2c-gpio.3/i2c-adapter/i2c-3/3-0054/

関連するソースコード

drivers/i2c/chips/ti-adc081c.c

カーネルコンフィギュレーション
  Device Drivers  --->
      <*> I2C support  --->                                                           <I2C>
          Miscellaneous I2C Chip support  --->
              <*> Texas Instruments ADC081C021/027                             <TI_ADC081C>

8.3.11. LED

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

Armadillo-410には、LED5が実装されています。 ベースボードには、LED2〜LED5が実装されています。 Linuxカーネルでは、Armadillo-410 に実装されたLEDを色の名前(yellow)と命名して区別しています。

sysfs LEDクラスディレクトリ

/sys/class/leds/led1
/sys/class/leds/led2
/sys/class/leds/led3
/sys/class/leds/led4
/sys/class/leds/yellow

関連するソースコード

drivers/leds/led-class.c
drivers/leds/led-core.c
drivers/leds/led-triggers.c
drivers/leds/leds-gpio.c
drivers/leds/ledtrig-default-on.c
drivers/leds/ledtrig-heartbeat.c
drivers/leds/ledtrig-timer.c

カーネルコンフィギュレーション
  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 Heartbeat Trigger                             <LEDS_TRIGGER_HEARTBEAT>
          <*>     LED Default ON Trigger                           <LEDS_TRIGGER_DEFAULT_ON>

8.3.12. ユーザースイッチ

Armadillo-IoT に搭載されているユーザースイッチには、GPIOが接続されています。GPIOが接続されユーザー空間でイベント(Press/Release)を検出することができます。Linuxでは、GPIO接続用キーボードドライバ(gpio-keys, gpio-keys-polled)で制御することができます。

ユーザースイッチには、次に示すキーコードが割り当てられています。

表8.3 キーコード

ユーザースイッチキーコードイベントコード
ベースボード:SW1KEY_12
ベースボード:SW2KEY_13
ベースボード:SW3KEY_14

ユーザースイッチを制御する GPIO接続用キーボードドライバは次の通りです。

表8.4 GPIO接続用キーボードドライバ

ユーザースイッチGPIO接続用キーボードドライバ
ベースボード:SW1gpio-keys
ベースボード:SW2gpio-keys-polled
ベースボード:SW3

[注記]

SW2 と SW3は、GPIO エクスパンダーに接続されています。Armadillo-IoT では、GPIO エクスパンダーの割り込み信号を利用していないため、イベント割り込みの対応が必須である gpio-keys を利用することができません。そのため、イベントをポーリングする gpio-keys-polled を利用しています。

デバイスファイル
ユーザースイッチデバイスファイル
ベースボード:SW1/dev/input/event0[a]
ベースボード:SW2/dev/input/event1[a]
ベースボード:SW3

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

関連するソースコード

drivers/input/evdev.c
drivers/input/input.c
drivers/input/input-polldev.c
drivers/input/keyboard/gpio_keys.c
drivers/input/keyboard/gpio_keys_polled.c

カーネルコンフィギュレーション
  Device Drivers  --->
      Input device support  --->
          -*- Generic input layer (needed for keyboard, mouse, ...)                 <INPUT>
                *** Userland interfaces ***
          <*>   Event interface                                                <INPUT_EVDEV>
                *** Input Device Drivers ***
          [*]   Keyboards  --->                                            <INPUT_KEYBOARD>
              <*>   GPIO Buttons                                            <KEYBOARD_GPIO>
              <*>   Polled GPIO buttons                              <KEYBOARD_GPIO_POLLED>

8.3.13. I2C

Armadillo-IoT のI2Cインターフェースは、i.MX257 の I2C(Inter IC Module) を利用します。 また、GPIOを利用したI2Cバスドライバ(i2c-gpio)を利用することで、I2Cバスを追加することができます。

Armadillo-IoT で利用しているI2Cバスと、接続されるI2Cデバイスを次に示します。

表8.5 I2Cデバイス

I2CバスI2Cデバイス
アドレスデバイス名
0(I2C1)0x54MC34704マルチチャンネルパワーマネジメントIC
3(I2C-GPIO3)0x30 (0x31〜0x37も予約済み)S-35390Aリアルタイムクロック
0x48LM75B温度センサ
0x54ADC081C021コンバーター
0x70PCA9538 GPIO エクスパンダー
4(I2C-GPIO4)0x50M24C01-W EEPROM[a]
0x51M24C01-W EEPROM[b]

[a] アドオンインターフェース(ベースボード:CON1)にアドオンモジュールを接続した場合。

[b] アドオンインターフェース(ベースボード:CON2)にアドオンモジュールを接続した場合。


Armadillo-IoT の標準状態では、CONFIG_I2C_CHARDEVが有効となっているためユーザードライバでI2Cデバイスを制御することができます。ユーザードライバを利用する場合は、LinuxカーネルでI2Cデバイスに対応するデバイスドライバを無効にする必要があります。

機能

最大転送レート: 400kbps (I2C1, I2C2, I2C3)

デバイスファイル

/dev/i2c-0 (I2C1)
/dev/i2c-3 (I2C-GPIO3)
/dev/i2c-4 (I2C-GPIO4)

関連するソースコード

drivers/i2c/busses/i2c-gpio.c
drivers/i2c/busses/mxc_i2c.c
drivers/i2c/i2c-core.c
drivers/i2c/i2c-dev.c
drivers/i2c/i2c-boardinfo.c

カーネルコンフィギュレーション
  System Type  --->
      Freescale MXC Implementations  --->
          MX25 Options  --->
              Device options  --->
                  [*] Enable I2C1 module                              <I2C_MXC_SELECT1>
                  -*- Enable I2C2 module                              <I2C_MXC_SELECT2> 1
                  -*- Enable I2C3 module                              <I2C_MXC_SELECT3> 1
              Armadillo-400 Board options  --->
                  [ ] Addon Module Auto Delect            <AIOTG_STD_ADDON_AUTO_DETECT> 2
                  [*]   Enable I2C2 at CON1/CON2                       <AIOTG_STD_I2C2> 1
                  [ ]   Enable I2C3 at CON1_24/CON1_25      <AIOTG_STD_I2C3_CON1_24_25>
                  [*]     Enable I2C3 at CON1_51/CON1_52    <AIOTG_STD_I2C3_CON1_51_52> 1
  Device Drivers  --->
      <*> I2C support  --->                                                       <I2C>
          <*>   I2C device interface                                      <I2C_CHARDEV>
          [*]   Autoselect pertinent helper modules                   <I2C_HELPER_AUTO>
              I2C Hardware Bus support  --->
                  <*> GPIO-based bitbanging I2C                              <I2C_GPIO>
                  <*> MXC I2C support                                         <I2C_MXC>

1

標準状態では無効化されています。

2

標準状態では有効化されています。

8.3.14. SPI

Armadillo-IoT のSPIインターフェースは、i.MX257 の CSPI(Configurable Serial Peripheral Interface)を利用します。

標準状態では無効になっている CONFIG_SPI_SPIDEV を有効化すると、ユーザードライバでSPIデバイスを制御することができます。

関連するソースコード

drivers/spi/mxc_spi.c
drivers/spi/spi.c
drivers/spi/spi_bitbang.c
drivers/spi/spidev.c

カーネルコンフィギュレーション
  Device Drivers  --->
      [*] SPI support  --->                                                           <SPI>
                *** SPI Master Controller Drivers ***
          -*-   Bitbanging SPI master                                          <SPI_BITBANG>
          <*>   MXC CSPI controller as SPI Master                                  <SPI_MXC>
                *** SPI Protocol Masters ***
          < >   User mode SPI device driver support                              <SPI_SPIDEV>

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

Armadillo-IoT のウォッチドッグタイマーは、i.MX257 の WDOG(Watchdog Timer) を利用します。

ウォッチドッグタイマーは、Hermit-Atブートローダーによって有効化されます。標準状態でのタイムアウト時間は10秒です。Linuxカーネルでは、i.MX257 の GPT(General Purpose Timer)割り込みを利用してウォッチドッグタイマーをキックします。

何らかの要因でウォッチドッグタイマーのキックができなくなりタイムアウトすると、システムリセットが発生します。

関連するソースコード

arch/arm/plat-mxc/wdog.c
arch/arm/plat-mxc/time.c

8.3.16. 1-Wire

Armadillo-IoT の 1-Wire は、i.MX257 の 1-Wire(1-Wire Module) を利用します。

Armadillo-IoT の標準状態では、1-Wire を利用することができません。1-Wire を利用するには、カーネルコンフィギュレーションしカーネルイメージを変更する必要があります。

関連するソースコード

drivers/w1/masters/mxc_w1.c

カーネルコンフィギュレーション
  System Type  --->
      Freescale MXC Implementations  --->
          MX25 Options  --->
              Armadillo-400 Board options  --->
                  [ ] Addon Module Auto Delect            <AIOTG_STD_ADDON_AUTO_DETECT> 1
                  [*]   Enable one wire at CON1_6/CON2_32                <AIOTG_STD_W1> 2
  Device Drivers  --->
      <*> Dallas's 1-wire support  --->                                            <W1> 2
          1-wire Bus Masters  --->
              <*> Freescale MXC driver for 1-wire                       <W1_MASTER_MXC> 2

1

標準状態では有効化されています。

2

標準状態では無効化されています。

8.3.17. PWM

Armadillo-IoT の PWM は、i.MX257 の PWM(Pulse-Width Modulator) を利用します。

Armadillo-IoT の標準状態では、PWM を利用することができません。PWM を利用するには、カーネルコンフィギュレーションしカーネルイメージを変更する必要があります。

関連するソースコード

drivers/mxc/pwm/mxc_pwm.c
drivers/mxc/pwm/mxc_pwm_class.c

カーネルコンフィギュレーション
  System Type  --->
      Freescale MXC Implementations  --->
          MX25 Options  --->
              Armadillo-400 Board options  --->
                  [ ] Addon Module Auto Delect            <AIOTG_STD_ADDON_AUTO_DETECT> 1
                  [*]   Enable PWM1 at CON1_5/CON2_33                  <AIOTG_STD_PWM1> 2
                  [*]   Enable PWM2 at CON1_24                         <AIOTG_STD_PWM2> 2
                  [*]   Enable PWM3 at CON1_25                         <AIOTG_STD_PWM3> 2
                  [*]   Enable PWM4 at CON1_3/CON2_24                  <AIOTG_STD_PWM4> 2
  Device Drivers  --->
      MXC support drivers  --->
          MXC PWM support  --->
              [*] Enable PWM driver                                           <MXC_PWM> 2
              [*] MXC PWM class support                                 <MXC_PWM_CLASS> 2

1

標準状態では有効化されています。

2

標準状態では無効化されています。

8.3.18. CAN

Armadillo-IoT の CAN は、i.MX257 の FlexCAN(Controller Area Network) を利用します。

Armadillo-IoT の標準状態では、CAN を利用することができません。CAN を利用するには、カーネルコンフィギュレーションしカーネルイメージを変更する必要があります。

関連するソースコード

drivers/net/can/flexcan/

カーネルコンフィギュレーション
  System Type  --->
      Freescale MXC Implementations  --->
          MX25 Options  --->
              Device options  --->
                  -*- Enable FlexCAN1 module                         <FLEXCAN_SELECT1> 1
                  -*- Enable FlexCAN2 module                         <FLEXCAN_SELECT2> 1
              Armadillo-400 Board options  --->
                  [ ] Addon Module Auto Delect           <AIOTG_STD_ADDON_AUTO_DETECT> 2
                  [*]   Enable CAN1 at CON1                           <AIOTG_STD_CAN1> 1
                  [*]   Enable CAN2 at CON1/CON2                      <AIOTG_STD_CAN2> 1
  Networking  --->
      <*>   CAN bus subsystem support  --->                                      <CAN> 1
          <*>   Raw CAN Protocol (raw access with CAN-ID filtering)          <CAN_RAW> 1
          <*>   Broadcast Manager CAN Protocol (with content filtering)      <CAN_BCM> 1
          CAN Device Drivers  --->
              <*> Freescale FlexCAN                                      <CAN_FLEXCAN> 1

1

標準状態では無効化されています。

2

標準状態では有効化されています。



[13] DMA 転送を有効にした場合の最大ボーレートです。標準状態では DMA 転送は無効になっています。

[14] USB Ethernetなどを接続している場合は、番号が異なる可能性があります。

[15] USBシリアルなどを接続している場合は、番号が異なる可能性があります。