第8章 Linuxカーネル仕様

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

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

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

[注記]

armadillo840_defconfigは、「ベーシックモデル」と「液晶モデル」の2つのモデルに対応したイメージを作成することができます。Armadillo-840に「Armadillo-840 拡張ボード01(Cコネクタ用)」を接続してLinuxを起動した場合は、液晶モデルで利用するデバイスの登録、ピンマルチプレクスの設定が行われ、拡張ボード01が未接続の場合はベーシックモデルに対応した設定が自動的に行われます。

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

表8.1 Linuxカーネル主要設定

コンフィグ説明
NO_HZTickless System (Dynamic Ticks)
HIGH_RES_TIMERSHigh Resolution Timer Support
PREEMPTPreemptible Kernel (Low-Latency Desktop)
AEABIUse the ARM EABI to compile the kernel
VFPVFP-format floating point maths
NEONAdvanced SIMD (NEON) Extension support
BINFMT_ELFKernel support for ELF binaries

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

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

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

起動オプション説明
console=ttySC2,115200起動ログなどが出力されるイニシャルコンソールにttySC2(Armadillo-840:CON4)を、ボーレートに 115200bps を指定します。
earlyprintk=sh-sci.2,115200可能な限り早い段階で起動ログを出力するデバイスとしてsh-sci.2(Armadillo-840:CON4)を、ボーレートに 115200bps を指定します。Linuxカーネルが起動しないような不具合のデバッグに役立ちます。

[注記]

上記は Linuxカーネル v3.4-at16 以降[17] と Hermit-Atブートローダー v3.7.0 以降[18]のデフォルト起動オプションです。

Hermit-At ブートローダー v3.6.0 以前[19]で AVコーデックミドルウェアを使用する場合には、起動オプションに「mem=384M」を設定する必要があります。

console=ttySC2,115200 earlyprintk=sh-sci.2,115200 mem=384M

8.3. Linuxドライバ一覧

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

8.3.1. Armadillo-840

Armadillo-840 の初期化手順やハードウェアの構成情報、ピンマルチプレクスの情報などが定義されています。 新規にデバイスを追加する場合などに変更を加えます。

関連するソースコード

arch/arm/mach-shmobile/Kconfig.armadillo800
arch/arm/mach-shmobile/board-armadillo840.c
arch/arm/mach-shmobile/setup-r8a7740.c
arch/arm/mach-shmobile/pfc-r8a7740.c
arch/arm/mach-shmobile/intc-r8a7740.c
arch/arm/mach-shmobile/clock-r8a7740.c

カーネルコンフィギュレーション
    System Type  --->
        ARM system type (Renesas SH-Mobile / R-Mobile)  --->         <CONFIG_ARCH_SHMOBILE>
    [*] R-Mobile A1 (R8A77400)                                        <CONFIG_ARCH_R8A7740>
        *** SH-Mobile Board Type ***
    [*] Armadillo-840 board                                      <CONFIG_MACH_ARMADILLO840>
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
            *** Extension Board select ***
            CON7 extension board (LCD)  --->               <CONFIG_ARMADILLO840_CON7EB_LCD>
            CON8 extension board (Custom)  --->         <CONFIG_ARMADILLO840_CON8EB_CUSTOM>
            *** Interface and Device select ***
        :

ユーザーオリジナルの拡張ボードを利用する場合には、「CON7/8 extension board」には「Custom」を選択します。 Customを選択した場合には、全てのピンマルチプレクスを変更することができます。

[注記]

「Armadillo-840 System Configuration --->」のメニュー内では、 Armadillo-840の拡張インターフェースで実現することができるピンマルチプレクスを選択することができます。

ピンマルチプレクスは、1つの信号に1つのファンクションを割り当てることができます。 利用しようとする信号が既に選択されている場合には、選択項目自体が表示されない場合があります。

次に示す例では、「CEU0 Upper [CLKs, SYNCs and D15-8]」を選択すると、「CEU1 [CLKs, SYNCs and D7-0]」の項目自体が非表示となっています。これは、CEU0のデータバス上位8bitとCEU1のデータバス8bitが同様の信号のため、同時利用ができないために項目が非表示となります。

  • 「use CEU0 Upper [CLKs, SYNCs and D15-8]」を選択する前の表示

        *** Interface and Device select ***
    [ ] use CEU0 Lower [CLKs, SYNCs and D7-0]
    [ ] use CEU0 Upper [CLKs, SYNCs and D15-8]
    [ ] use CEU1 [CLKs, SYNCs and D7-0]
    -*- use FSIA as Slave
    -*-   AUDIO: WM8978 codec
  • 「use CEU0 Upper [CLKs, SYNCs and D15-8]」を選択した後の表示

        *** Interface and Device select ***
    [ ] use CEU0 Lower [CLKs, SYNCs and D7-0]
    [*] use CEU0 Upper [CLKs, SYNCs and D15-8]
    [ ]   CAMERA: KBCR-iC01VG (NEW)
    -*- use FSIA as Slave
    -*-   AUDIO: WM8978 codec

8.3.2. タイマー

Armadillo-840では、カーネル内部のクロックソースに R-Mobile A1のCMT0(Compare Match Timer0) を利用しています。

関連するソースコード

drivers/clocksource/sh_cmt_simple.c

カーネルコンフィギュレーション
    System Type  --->
        *** SH-Mobile System Configuration ***
        Timer and clock configuration  --->
        [*] CMT simple timer driver                            <CONFIG_SH_TIMER_CMT_SIMPLE>

8.3.3. フラッシュメモリ

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

関連するソースコード

drivers/mtd/mtdcore.c
drivers/mtd/mtdchar.c
drivers/mtd/mtdblock.c
drivers/mtd/chips/cfi_cmdset_0001.c
drivers/mtd/maps/physmap.c

デバイスファイル
デバイスファイルデバイスタイプ対応するパーティション名
/dev/mtd0キャラクタbootloader
/dev/flash/bootloader
/dev/mtdblock0ブロック
/dev/flashblk/bootloader
/dev/mtd1キャラクタconfig
/dev/flash/config
/dev/mtdblock1ブロック
/dev/flashblk/config
/dev/mtd2キャラクタlicense
/dev/flash/license
/dev/mtdblock2ブロック
/dev/flashblk/license
/dev/mtd3キャラクタfirmware
/dev/flash/firmware
/dev/mtdblock3ブロック
/dev/flashblk/firmware
/dev/mtd4キャラクタkernel
/dev/flash/kernel
/dev/mtdblock4ブロック
/dev/flashblk/kernel
/dev/mtd5キャラクタuserland
/dev/flash/userland
/dev/mtdblock5ブロック
/dev/flashblk/userland
カーネルコンフィギュレーション
    Device Drivers  --->
    <*> 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.4. UART

Armadillo-840のシリアルは、R-Mobile A1の SCIFA (Serial Communications Interface with FIFO A) 及び SCIFB (Serial Communications Interface with FIFO B) を利用しています。

Armadillo-840では、最大9ポートを利用することができます。 Armadillo-840の標準状態で利用可能なポートは、SCIFA2 (Armadillo-840: CON4) のみとなっています。 SCIFA2以外のポートを利用する場合には、カーネルをコンフィギュレーションする必要があります。

フォーマット

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

関連するソースコード

drivers/tty/serial/serial_core.c
drivers/tty/serial/sh-sci.c

デバイスファイル
シリアルインターフェースデバイスファイル
SCIFA0/dev/ttySC0
SCIFA1/dev/ttySC1
SCIFA2/dev/ttySC2
SCIFA3/dev/ttySC3
SCIFA4/dev/ttySC4
SCIFA5/dev/ttySC5
SCIFA6/dev/ttySC6
SCIFA7/dev/ttySC7
SCIFB/dev/ttySC8
カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Interface and Device select ***
            [ ] use SCIFA0                                     <CONFIG_ARMADILLO840_SCIFA0>
            [ ]   have RTS/CTS                     <CONFIG_ARMADILLO840_SCIFA0_HAVE_RTSCTS>
            [ ] use SCIFA1                                     <CONFIG_ARMADILLO840_SCIFA1>
            [ ]   have RTS/CTS                     <CONFIG_ARMADILLO840_SCIFA1_HAVE_RTSCTS>
            [ ] use SCIFA3                                     <CONFIG_ARMADILLO840_SCIFA3>
            [ ] use SCIFA4 [RX:PORT12, TX:PORT13]        <CONFIG_ARMADILLO840_SCIFA4_12_13>
            [ ] use SCIFA4 [RX:PORT94, TX:PORT93]        <CONFIG_ARMADILLO840_SCIFA4_94_93>
            [ ] use SCIFA5                                     <CONFIG_ARMADILLO840_SCIFA5>
            [ ] use SCIFA6                                     <CONFIG_ARMADILLO840_SCIFA6>
            [ ] use SCIFA7                                     <CONFIG_ARMADILLO840_SCIFA7>
            [ ] use SCIFB                                       <CONFIG_ARMADILLO840_SCIFB>
            [ ]   have RTS/CTS                      <CONFIG_ARMADILLO840_SCIFB_HAVE_RTSCTS>
    Device Drivers  --->
        Character devices  --->
            Serial drivers  --->
                *** Non-8250 serial port support ***
                <*> SuperH SCI(F) serial port support                <CONFIG_SERIAL_SH_SCI>
                (9)   Maximum number of SCI(F) serial ports
                [*]   Support for console on SuperH SCI(F)          <SERIAL_SH_SCI_CONSOLE>

8.3.5. Ethernet

Armadillo-840のEthernet(LAN)は、R-Mobile A1のGETHER(Gigabit Ethernet Controller)を利用しています。

機能

通信速度: 100Mbps(100BASE-TX), 10Mbps(10BASE-T)
通信モード: Full-Duplex(全二重), Half-Duplex(半二重)
Auto Negotiationサポート

関連するソースコード

drivers/net/ethernet/renesas/sh_eth.c

ネットワークデバイス

eth0

カーネルコンフィギュレーション
    Device Drivers  --->
    [*] Network device support  --->                                    <CONFIG_NETDEVICES>
        -*-   Network core driver support                                 <CONFIG_NET_CORE>
        -*-     Generic Media Independent Interface device support             <CONFIG_MII>
        [*]   Ethernet driver support  --->                               <CONFIG_ETHERNET>
            <*>   Renesas SuperH Ethernet support                           <CONFIG_SH_ETH>
        -*-   PHY Device support and infrastructure  --->                   <CONFIG_PHYLIB>
            <*>   Drivers for SMSC PHYs                                   <CONFIG_SMSC_PHY>
            -*-   Support for bitbanged MDIO buses                    <CONFIG_MDIO_BITBANG>

8.3.6. SDホスト

Armadillo-840のSDホストは、R-Mobile A1のSDHI(SD card host interface)を利用しています。

Armadillo-840では、最大2ポートを利用することができます。 Armadillo-840の標準状態で利用可能なポートは、SDHI0 (Armadillo-840: CON1) 及び、 拡張ボード01を接続している場合には、 SDHI1 (拡張ボード01: CON9 または 拡張ボード01: CON10)となっています。

機能

カードタイプ: SD / SDHC / SDXC / SDIO
バス幅: 1bit or 4bit
スピードモード[20]: Default Speed (25MHz), High Speed (50MHz)
カードディテクトサポート
ライトプロテクトサポート

デバイスファイル

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

関連するソースコード

drivers/mmc/host/sh_mobile_sdhi.c
drivers/mmc/host/tmio_mmc_dma.c
drivers/mmc/host/tmio_mmc_pio.c

カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Interface and Device select ***
            [ ] use SDHI1                                       <CONFIG_ARMADILLO840_SDHI1>
            [ ]   have CD/WP [CD:PORT72...      <CONFIG_ARMADILLO840_SDHI1_HAVE_CDWP_72_73>
            [ ]   have Power-Switch [EN...    <CONFIG_ARMADILLO840_SDHI1_HAVE_PWRSW_PORT74>
    Device Drivers  --->
    [*] Voltage and Current Regulator Support  --->                      <CONFIG_REGULATOR>
        <*>   Fixed voltage regulator support              <CONFIG_REGULATOR_FIXED_VOLTAGE>
    <*> MMC/SD/SDIO card support  --->                                         <CONFIG_MMC>
              *** MMC/SD/SDIO Card Drivers ***
        <*>   MMC block device driver                                    <CONFIG_MMC_BLOCK>
        (8)     Number of minors per block device                 <CONFIG_MMC_BLOCK_MINORS>
        [*]     Use bounce buffer for simple hosts                <CONFIG_MMC_BLOCK_BOUNCE>
              *** MMC/SD/SDIO Host Controller Drivers ***
        <*>   SH-Mobile SDHI SD/SDIO controller support                   <CONFIG_MMC_SDHI>

8.3.7. USBホスト

Armadillo-840のUSBホストは、R-Mobile A1のUSB 2.0 Host Controllerを利用しています。

Armadillo-840では、USBホストを2ポートまたは、USBホストを1ポートとUSBファンクションを 1ポートの2つの組み合わせから利用形態に応じて構成を選択することができます。 Armadillo-840の標準状態では、USBホスト2ポートをUSB Type-Aコネクタ(Armadillo-840: CON5) で利用することができます。拡張ボード01でUSBホストまたはUSBファンクションを利用する場合は、 カーネルをコンフィギュレーションする必要があります。 その場合には、USB Type-Aコネクタ(Armadillo-840: CON5)の上段は利用不可となります。

機能

Universal Serial Bus Specification Revision 2.0 準拠
Open Host Controller Interface (OHCI) Specification for USB Rev 1.0a 準拠
Enhanced Host Controller Interface (EHCI) Specification for USB Rev 1.0a 準拠
転送レート: USB2.0 High-Speed (480Mbps), Full-Speed (12Mbps), Low-Speed (1.5Mbps)

デバイスファイル

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

関連するソースコード

drivers/usb/host/ehci-rmobile.c
drivers/usb/host/ohci-rmobile.c
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ohci-hcd.c

カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Interface and Device select ***
                USB1 selection (CON5 - Host)  --->
                (X) CON5 - Host                        <CONFIG_ARMADILLO840_USB1_CON5_HOST>
                ( ) CON7 - Host                        <CONFIG_ARMADILLO840_USB1_CON7_HOST>
    Device Drivers  --->
    [*] USB support  --->                                              <CONFIG_USB_SUPPORT>
        <*>   Support for Host-side USB                                        <CONFIG_USB>
                *** Miscellaneous USB options ***
        [*]     USB device filesystem                                 <CONFIG_USB_DEVICEFS>
        [*]     USB device class-devices                          <CONFIG_USB_DEVICE_CLASS>
              *** USB Host Controller Drivers ***
        <*>   EHCI HCD (USB 2.0) support                              <CONFIG_USB_EHCI_HCD>
        [*]     Improved Transaction Translator scheduling    <CONFIG_USB_EHCI_TT_NEWSCHED>
        <*>   OHCI HCD support                                        <CONFIG_USB_OHCI_HCD>

8.3.8. USBファンクション

Armadillo-840のUSBファンクションは、R-Mobile A1のUSBF(USB 2.0 Function Module)及びUSBHSF0-DMAC(Dedicated DMAC for High-Speed USB Function Operation)を利用しています。

Armadillo-840の標準状態では、USBファンクションを利用することができません。 USBファンクションを利用するには、カーネルコンフィギュレーションしカーネルイメージを変更する必要があります。 USBインターフェースの接続変更、USBFドライバを有効化、ガジェットドライバの選択などです。 詳しい手順については、「USBガジェットを使用する を参照してください。

Armadillo-840とホスト機器を接続する場合は、USB Mini-Bコネクタ(拡張ボード01: CON14)にUSBケーブルを接続して利用します。

Linuxカーネルに用意されている代表的なガジェットドライバを次に示します。

表8.3 代表的なガジェットドライバ

ガジェット機能
Ethernet Gadget接続されるとホスト機器間でネットワーク通信させることができます
Mass Storage Gadget接続されるとホスト機器上でUSBメモリとして扱うことができます
Serial Gadget接続されるとホスト機器間でシリアル通信させることができます

関連するソースコード

drivers/usb/renesas_usbhs/mod.c
drivers/usb/renesas_usbhs/mod_host.c
drivers/usb/renesas_usbhs/mod_gadget.c
drivers/usb/renesas_usbhs/pipe.c
drivers/usb/renesas_usbhs/fifo.c
drivers/usb/renesas_usbhs/common.c

カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Interface and Device select ***
                USB1 selection (CON7 - Device)  --->
                (X) CON7 - Device                    <CONFIG_ARMADILLO840_USB1_CON7_DEVICE>
    Device Drivers  --->
    [*] USB support  --->                                              <CONFIG_USB_SUPPORT>
        <*>   Renesas USBHS controller                           <CONFIG_USB_RENESAS_USBHS>
              *** USB Miscellaneous drivers ***
        <*>   USB Gadget Support  --->                                  <CONFIG_USB_GADGET>
            <*>   USB Peripheral Controller (Renesas USBHS controller)  --->
                (X) Renesas USBHS controller                 <CONFIG_USB_RENESAS_USBHS_UDC>
            <*>   USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet support)
                (X) Ethernet Gadget (with CDC Ethernet support)            <CONFIG_USB_ETH>
                ( ) Mass Storage Gadget                           <CONFIG_USB_MASS_STORAGE>
                ( ) Serial Gadget (with CDC ACM and CDC OBEX support) <CONFIG_USB_G_SERIAL>
                    :

8.3.9. HDMI

Armadillo-840のHDMIは、R-Mobile A1のLCDC1(LCD Controller 1)及びHDMI(High-Definition Multimedia Interface)、FSI2(FIFO-Buffered Serial Interface 2)を利用しています。

Armadillo-840では、HDMI対応ディスプレイへの画像出力及び、音声出力をサポートしています。 Linuxでは、それぞれフレームバッファデバイス、オーディオデバイスとして利用することができます。

機能(フレームバッファ)

最大解像度[21]: 1920 x 1080 px
カラーフォーマット: ARGB8888 (32bit) or RGB565 (16bit)
ダブルバッファサポート

機能(オーディオ)

サンプリング周波数: 48000
チャンネル数: 2
フォーマット: Signed 16/24 bit, Little-endian

デバイスファイル

フレームバッファデバイス: /dev/fb0
オーディオデバイス: hw:0

関連するソースコード

drivers/video/sh_mobile_lcdcfb.c
drivers/video/sh_mobile_hdmi.c
sound/soc/sh/fsi.c
sound/soc/generic/simple-card.c

カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Interface and Device select ***
                Primary framebuffer (LCDC1)  --->
                ( ) LCDC0                                <ARMADILLO840_PRIMARY_FB_LCDC0>
                (X) LCDC1                                <ARMADILLO840_PRIMARY_FB_LCDC1>
    Device Drivers  --->
        Graphics support  --->
            <*> Support for frame buffer devices  --->                       <CONFIG_FB>
            -*-   Enable Video Mode Handling Helpers            <CONFIG_FB_MODE_HELPERS>
                  *** Frame buffer hardware drivers ***
            <*>   SuperH Mobile LCDC framebuffer support      <CONFIG_FB_SH_MOBILE_LCDC>
            <*>     SuperH Mobile HDMI controller support     <CONFIG_FB_SH_MOBILE_HDMI>
[注記]

"Primary framebuffer"の選択は、Linuxカーネル v3.4-at6で対応しました。Linux カーネル v3.4-at5以前では選択することができません。

8.3.9.1. ビデオモードの変更

Armadillo-840では、sysfs経由でHDMIのビデオモードを変更することができます。 関連するsysfsファイルを次に示します。

表8.4 ビデオモード変更に利用するsysfsファイル

ファイル機能
/sys/class/graphics/fb0/modes利用可能なビデオモードの一覧を取得することができます
/sys/class/graphics/fb0/mode現在のビデオモードの取得、及びビデオモードの変更するする場合に利用します

利用可能なビデオモードは、HDMI対応ディスプレイから取得したビデオモードの内、 Armadillo-840で設定可能なビデオモードを抽出した[22]リストとなっています。 設定可能なビデオモードを取得するには、次のように/sys/class/graphics/fb0/modesファイルから読み出します。

[armadillo ~]# cat /sys/class/graphics/fb0/modes
D:720x480p-59
D:1280x720p-60
D:1920x1080i-60
V:640x480p-75
V:640x480p-72
U:640x480p-67
V:640x480p-60
D:1920x1080p-60 1

1

ドットクロックが75MHzを超えてしまうため設定不可

ビデオモードを変更する場合は、/sys/class/graphics/fb0/modeファイルに設定したいビデオモードを書き込みます。 ここでは「D:1280x720p-60」を設定する例を示します。

[armadillo ~]# echo D:1280x720p-60 > /sys/class/graphics/fb0/mode

8.3.9.2. ビデオモード自動調整機能

Armadillo-840の標準状態では、ディスプレイの接続時に自動的に最適なビデオモードとなる機能 (以降、本書ではビデオモード自動調整機能と称します)が組み込まれています。

[注記]ビデオモード自動調整機能の仕組み

HDMIはディスプレイから取得できるEDIDの情報から、設定可能なビデオモードを自動生成しています。 EDIDを取得してビデオモードのリストが更新された場合、ueventにより更新されたことをユーザー空間に通知します。 Armadillo-840では、対応するueventを受信した場合に /etc/config/configure-fbmode.sh を実行して、 適切なビデオモードに設定されるように実装されています。

8.3.9.3. ビデオモード自動調整機能の無効化

任意のビデオモードに固定して利用する場合は、ビデオモード自動調整機能を無効にする必要があります。 無効化するには次のように/etc/config/configure-fbmode.shのパーミッションを変更します。

[armadillo ~]# chmod -x /etc/config/configure-fbmode.sh

次回起動時にもビデオモード自動調整機能を無効化したい場合は、コンフィグ領域を保存しておきます。

[armadillo ~]# flatfsd -s

8.3.10. LCD

Armadillo-840のLCDインターフェースは、R-Mobile A1のLCDC0(LCD Controller 0)を利用しています。拡張ボード01のタッチパネルLCDでは、バックライトの輝度調整及び、タッチスクリーンに対応しています。Linuxでは、それぞれPWM制御用バックライトドライバ(pwm_bl)、ST1232タッチスクリーンドライバを利用しています。

機能

対応可能LCD: TFTカラー液晶 (最大解像度: WXGA+)
カラーフォーマット: ARGB8888 (32bit) or RGB565 (16bit)
ダブルバッファサポート
256段階バックライト輝度調整
マルチタッチサポート (ST1232)

デバイスファイル

フレームバッファデバイス: /dev/fb1
タッチスクリーンデバイス: /dev/input/event0[23]
バックライト輝度調整用sysfsファイル: /sys/class/backlight/pwm-backlight.0/brightness

関連するソースコード

drivers/video/sh_mobile_lcdcfb.c
drivers/video/backlight/backlight.c
drivers/video/backlight/pwm_bl.c
drivers/misc/rmob-tpu-pwm.c
drivers/input/touchscreen/st1232.c

カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Interface and Device select ***
            [*] TOUCHSCREEN: ST1232                <CONFIG_ARMADILLO840_I2C0_DEVICE_ST1232>
            [*] use LCDC0                                       <CONFIG_ARMADILLO840_LCDC0>
            [*]   have 24bit width [D23-18]        <CONFIG_ARMADILLO840_LCDC0_HAVE_D18_D23>
            [ ]   have LCLK0 [PORT165]       <CONFIG_ARMADILLO840_LCDC0_HAVE_LCLK0_PORT165>
                  LCD (LCD: SCF0500)  --->
                (X) LCD: SCF0500                 <CONFIG_ARMADILLO840_LCDC0_DEVICE_SCF0500>
              Primary framebuffer (LCDC1)  --->
              ( ) LCDC0                                     <ARMADILLO840_PRIMARY_FB_LCDC0>
              (X) LCDC1                                     <ARMADILLO840_PRIMARY_FB_LCDC1>
            [*] use LED-Driver TB62752             <CONFIG_ARMADILLO840_LED_DRIVER_TB62752>
            [*] use TPU0 Output2 [PORT202]            <CONFIG_ARMADILLO840_TPU0TO2_PORT202>
            [*]   PWM: Generic PWM based Backlight
                                 <CONFIG_ARMADILLO840_TPU0TO2_PORT202_DEVICE_PWM_BACKLIGHT>
    Device Drivers  --->
        Misc devices  --->
            <*> R-Mobile TPU PWM driver                               <CONFIG_RMOB_TPU_PWM>
        Input device support  --->
            -*- Generic input layer (needed for keyboard, mouse, ...)        <CONFIG_INPUT>
            <*>   Event interface                                      <CONFIG_INPUT_EVDEV>
                  *** Input Device Drivers ***
            [*]   Touchscreens  --->                             <CONFIG_INPUT_TOUCHSCREEN>
                <*>   Sitronix ST1232 touchscreen controllers   <CONFIG_TOUCHSCREEN_ST1232>
                [ ]     Enable single touch event for ST1232
                                                    <CONFIG_TOUCHSCREEN_ST1232_SINGLETOUCH>
        Graphics support  --->
            <*> Support for frame buffer devices  --->                          <CONFIG_FB>
            -*-   Enable Video Mode Handling Helpers               <CONFIG_FB_MODE_HELPERS>
                  *** Frame buffer hardware drivers ***
            <*>   SuperH Mobile LCDC framebuffer support         <CONFIG_FB_SH_MOBILE_LCDC>
            -*- Backlight & LCD device support  --->         <CONFIG_BACKLIGHT_LCD_SUPPORT>
                -*-   Lowlevel Backlight controls           <CONFIG_BACKLIGHT_CLASS_DEVICE>
                <*>     Generic PWM based Backlight Driver           <CONFIG_BACKLIGHT_PWM>
[注記]

"Primary framebuffer"の選択は、Linux カーネル v3.4-at6で対応しました。Linux カーネル v3.4-at5以前では選択することができません。

8.3.11. アナログオーディオ

Armadillo-840のアナログオーディオは、R-Mobile A1のFSI2(FIFO-Buffered Serial Interface 2)を利用しています。拡張ボード01のオーディオコーデックには、Wolfson WM8978が採用されています。WM8978はI2C0 (I2Cノード: 0-001a) に接続されています。

機能

サンプリング周波数: 8000, 11025, 16000, 22050, 32000, 44100, 48000
チャンネル数: 1 or 2
フォーマット: Signed 16/24 bit, Little-endian
再生(Playback), 録音(Capture)サポート
ミキサーサポート

オーディオデバイス

hw:1

関連するソースコード

sound/soc/sh/fsi.c
sound/soc/generic/simple-card.c
sound/soc/codecs/wm8978.c

カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Interface and Device select ***
            [*] use FSIA as Slave                          <CONFIG_ARMADILLO840_FSIA_SLAVE>
            [*]   AUDIO: WM8978 codec        <CONFIG_ARMADILLO840_FSIA_SLAVE_DEVICE_WM8978>
    Device Drivers  --->
        -*- Sound card support  --->                                         <CONFIG_SOUND>
            -*-   Advanced Linux Sound Architecture  --->                      <CONFIG_SND>
                [*]   Support old ALSA API                     <CONFIG_SND_SUPPORT_OLD_API>
                [*]   Verbose procfs contents                   <CONFIG_SND_VERBOSE_PROCFS>
                -*-   ALSA for SoC audio support  --->                     <CONFIG_SND_SOC>
                          SoC Audio support for SuperH  --->
                        <*> SH4 FSI support                        <CONFIG_SND_SOC_SH4_FSI>
                    -*-   ASoC Simple sound card support           <CONFIG_SND_SIMPLE_CARD>

8.3.12. カメラ

Armadillo-840のカメラインターフェースは、R-Mobile A1のCEU(Capture Engine Unit)を利用しています。

拡張インターフェース2(Armadillo-840: CON8)及び、カメラインターフェース(拡張ボード01: CON12)は、 Armadillo-810 カメラモジュール01 (Bコネクタ用)(以降、カメラモジュール01と記載します)を接続して利用することができます。 標準状態ではカメラ機能が無効のため、利用する場合はカーネルをコンフィギュレーションする必要があります。

表8.5 カメラモジュール01を利用する場合のカーネルコンフィギュレーション(ピンマルチプレクス)

コネクタ対応するピンマルチプレクス設定
Armadillo-840: CON8
CONFIG_ARMADILLO840_CEU0_UPPER
CONFIG_ARMADILLO840_CEU0_DEVICE_KBCRIC01VG
又は
CONFIG_ARMADILLO840_CON8EB_KBCRIC01VG
拡張ボード01: CON12
CONFIG_ARMADILLO840_CEU1
CONFIG_ARMADILLO840_CEU1_DEVICE_KBCRIC01VG

Armadillo-810 カメラモジュール01 (Bコネクタ用) (KBCR-iC01VG)に搭載されているCMOSイメージセンサーは、OmniVision製 OV7725です。

関連するソースコード

drivers/media/video/sh_mobile_ceu_camera.c
drivers/media/video/soc_camera.c
drivers/media/video/videobuf-core.c
drivers/media/video/v4l2-device.c

カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Extension Board select ***
                CON8 extension board (KBCR-iC01VG)  --->
                (X) KBCR-iC01VG                   <CONFIG_ARMADILLO840_CON8EB_KBCRIC01VG>
                *** Interface and Device select ***
            [ ] use CEU0 Lower [CLKs, SYNCs and D7-0]    <CONFIG_ARMADILLO840_CEU0_LOWER>
            [ ] use CEU0 Upper [CLKs, SYNCs and D15-8]   <CONFIG_ARMADILLO840_CEU0_UPPER>
            [ ]   CAMERA: KBCR-iC01VG        <CONFIG_ARMADILLO840_CEU0_DEVICE_KBCRIC01VG>
            [ ] use CEU1 [CLKs, SYNCs and D7-0]                <CONFIG_ARMADILLO840_CEU1>
            [ ]   CAMERA: KBCR-iC01VG        <CONFIG_ARMADILLO840_CEU1_DEVICE_KBCRIC01VG>
            [*] use I2C-GPIO3 [SCL:PORT194, SDA:PORT193]
                                                  <CONFIG_ARMADILLO840_I2C_GPIO3_194_193>
    Device Drivers  --->
    <*> Multimedia support  --->                                   <CONFIG_MEDIA_SUPPORT>
                *** Multimedia core support ***
        <*>   Video For Linux                                          <CONFIG_VIDEO_DEV>
                *** Multimedia drivers ***
        [*]   Video capture adapters  --->                 <CONFIG_VIDEO_CAPTURE_DRIVERS>
            [*]   V4L platform devices  --->                <CONFIG_V4L_PLATFORM_DRIVERS>
                <*>   SoC camera support                              <CONFIG_SOC_CAMERA>
                <*>     ov772x camera support                  <CONFIG_SOC_CAMERA_OV772X>
                <*>   SuperH Mobile CEU Interface driver     <CONFIG_VIDEO_SH_MOBILE_CEU>

8.3.13. GPU

Armadillo-840をLinuxで利用する場合、R-Mobile A1のGPU(PowerVR SGX540)を利用することができます。 GPU用のドライバは、Linuxカーネルのソースコードにマージされています。

関連するソースコード

drivers/gpu/eurasia_km/

カーネルコンフィギュレーション
    Device Drivers  --->
    [*] GPU Support  --->
        <*>   SGX540 driver support for R8A7740                 <CONFIG_GPU_EURASIA_SGX540>

8.3.14. AVコーデックミドルウェア

Armadillo-840のマルチメディア機能(H.264/AVC動画、AAC音声、JPEG画像の変換機能)は、SH-4Aとの通信によって実現しています。

次のR-Mobile A1に搭載されたマルチメディア処理専用プロセッサは、SH-4Aから制御するため、AVコーデックミドルウェアドライバでは直接制御しません。

  • VCP1(Video Multi Codec)

  • VIO6(Video I/O 6)

  • SPU2(Sound Processing Unit2)

  • JPU(JPEG Processing Unit)

対応フォーマット

デコーダー: H.264/AVC, AAC
エンコーダー: H.264/AVC, AAC, JPEG

デバイスファイル(デコーダー)
デバイスファイル機能(デコーダー有効時)機能(エンコーダー有効時)
/dev/video0[a]H.264/AVC デコードH.264/AVC エンコード
/dev/video1[a]AAC デコードAAC エンコード
/dev/video2[a]-JPEG エンコード

[a] UVCカメラなどを接続してV4L2デバイスを追加している場合は、番号が異なる可能性があります

関連するソースコード

drivers/media/video/acm/acm_aacdec.c
drivers/media/video/acm/acm_aacenc.c
drivers/media/video/acm/acm_cert.c
drivers/media/video/acm/acm_drv.c
drivers/media/video/acm/acm_fw.c
drivers/media/video/acm/acm_h264dec.c
drivers/media/video/acm/acm_h264enc.c
drivers/media/video/acm/acm_jpegenc.c
drivers/media/video/acm/rto.c
drivers/media/video/v4l2-mem2mem-async.c

カーネルコンフィギュレーション
    Device Drivers  --->
    <*> Multimedia support  --->                                         <CONFIG_MEDIA_SUPPORT>
        [*]   Video capture adapters  --->                       <CONFIG_VIDEO_CAPTURE_DRIVERS>
            Encoders, decoders, sensors and other helper chips  --->
                <*> Armadillo AV Codec Middleware Driver                     <CONFIG_VIDEO_ACM>

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

Armadillo-840には、セイコーインスツル(SII)製 S-35390Aが搭載されています。 S-35390Aは、I2C-GPIO2 (I2Cノード: 2-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  --->                                            <CONFIG_RTC_CLASS>
        [*]   Set system time from RTC on startup and resume           <CONFIG_RTC_HCTOSYS>
        (rtc0)  RTC used to set the system time                 <CONFIG_RTC_HCTOSYS_DEVICE>
              *** RTC interfaces ***
        [*]   /sys/class/rtc/rtcN (sysfs)                           <CONFIG_RTC_INTF_SYSFS>
        [*]   /proc/driver/rtc (procfs for rtc0)                     <CONFIG_RTC_INTF_PROC>
        [*]   /dev/rtcN (character devices)                           <CONFIG_RTC_INTF_DEV>
              *** I2C RTC drivers ***
        <*>   Seiko Instruments S-35390A                           <CONFIG_RTC_DRV_S35390A>

8.3.16. LED

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

Armadillo-840には、LED1 及び LED2が実装されています。 拡張ボード01には、LED1〜LED6が実装されています。 Linuxカーネルでは、拡張ボード01に実装されたLEDを「EXTn」(nは1〜6となります)のように命名して区別しています。

sysfs LEDクラスディレクトリ

/sys/class/leds/LED1
/sys/class/leds/LED2
/sys/class/leds/EXT1
/sys/class/leds/EXT2
/sys/class/leds/EXT3
/sys/class/leds/EXT4
/sys/class/leds/EXT5
/sys/class/leds/EXT6

関連するソースコード

drivers/leds/leds-gpio.c
drivers/leds/led-class.c
drivers/leds/led-triggers.c
drivers/leds/ledtrig-timer.c

カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Interface and Device select ***
            [*] use External LED                              <CONFIG_ARMADILLO840_LED_EXT>
            [*]   LED: EXT1 [LED:102]                <CONFIG_ARMADILLO840_LED_EXT1_PORT102>
            [*]   LED: EXT2 [LED:59]                  <CONFIG_ARMADILLO840_LED_EXT2_PORT59>
            [*]   LED: EXT3 [LED:60]                  <CONFIG_ARMADILLO840_LED_EXT3_PORT60>
            [*]   LED: EXT4 [LED:10]                  <CONFIG_ARMADILLO840_LED_EXT4_PORT10>
            [*]   LED: EXT5 [LED:8]                    <CONFIG_ARMADILLO840_LED_EXT5_PORT8>
            [*]   LED: EXT6 [LED:7]                    <CONFIG_ARMADILLO840_LED_EXT6_PORT7>
    Device Drivers  --->
    [*] LED Support  --->                                                 <CONFIG_NEW_LEDS>
        <*>   LED Class Support                                         <CONFIG_LEDS_CLASS>
              *** LED drivers ***
        <*>   LED Support for GPIO connected LEDs                        <CONFIG_LEDS_GPIO>
        [*]   LED Trigger support                                    <CONFIG_LEDS_TRIGGERS>
              *** LED Triggers ***
        <*>   LED Timer Trigger                                 <CONFIG_LEDS_TRIGGER_TIMER>

8.3.17. ユーザースイッチ

Armadillo-840に拡張ボード01を接続すると、ユーザースイッチを利用することができます。 各ユーザースイッチは、GPIOが接続されユーザー空間でイベント(Press/Release)を検出することができます。 Linuxでは、GPIO接続用キーボードドライバ(gpio_keys)で制御されます。

拡張ボード01に搭載されたユーザースイッチには、それぞれにキーコードが割り当てられています。

表8.6 キーコード

ユーザースイッチキーコードイベントコード
SW1KEY_POWER116
SW2KEY_BACK158
SW3KEY_MENU139
SW4KEY_HOME102

デバイスファイル

/dev/input/event1[24]

関連するソースコード

drivers/input/keyboard/gpio_keys.c
drivers/input/input.c
drivers/input/evdev.c

カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Interface and Device select ***
            [*] use GPIO-KEY                                 <CONFIG_ARMADILLO840_GPIO_KEY>
            [*]   KEY: Power [KEY:PORT97]       <CONFIG_ARMADILLO840_GPIO_KEY_POWER_PORT97>
            [*]   KEY: Back [KEY:PORT98]         <CONFIG_ARMADILLO840_GPIO_KEY_BACK_PORT98>
            [*]   KEY: Menu [KEY:PORT99]         <CONFIG_ARMADILLO840_GPIO_KEY_MENU_PORT99>
            [*]   KEY: Home [KEY:PORT100]       <CONFIG_ARMADILLO840_GPIO_KEY_HOME_PORT100>
        Input device support  --->
            -*- Generic input layer (needed for keyboard, mouse, ...)        <CONFIG_INPUT>
            <*>   Event interface                                      <CONFIG_INPUT_EVDEV>
                  *** Input Device Drivers ***
            [*]   Keyboards  --->                                   <CONFIG_INPUT_KEYBOARD>
                <*>   GPIO Buttons                                   <CONFIG_KEYBOARD_GPIO>

8.3.18. I2C

Armadillo-840のI2Cインターフェースは、R-Mobile A1のIIC (I2C Bus Interface)を利用します。 また、GPIOを利用したI2Cバスドライバ(i2c-gpio)を利用することで、I2Cバスを追加することができます。

Armadillo-840及び拡張ボード01で利用しているI2Cバスと、接続されるI2Cデバイスを次に示します。

表8.7 I2Cデバイス

I2CバスI2Cデバイス
アドレスデバイス名
I2C00x1aWM8978オーディオコーデック[a]
I2C00x55ST1232タッチスクリーンコントローラ[a]
I2C10x21OV7725 COMSイメージセンサー[b]
I2C-GPIO20x30 (0x31〜0x37も予約済み)S-35390Aリアルタイムクロック
I2C-GPIO30x21OV7725 COMSイメージセンサー[c]

[a] 拡張ボード01を接続した場合

[b] 拡張インターフェース 2(Armadillo-840: CON8)にArmadillo-810 カメラモジュール01 (Bコネクタ用)を接続した場合

[c] カメラインターフェース(拡張ボード01: CON12)にArmadillo-810 カメラモジュール01 (Bコネクタ用)を接続した場合


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

機能

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

デバイスファイル

/dev/i2c-0 (I2C0)
/dev/i2c-1 (I2C1)
/dev/i2c-2 (I2C-GPIO2)
/dev/i2c-3 (I2C-GPIO3)

関連するソースコード

drivers/i2c/busses/i2c-sh_mobile.c
drivers/i2c/busses/i2c-gpio.c
drivers/i2c/i2c-core.c
drivers/i2c/i2c-dev.c

カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Interface and Device select ***
            [ ] use I2C-GPIO3 [SCL:PORT194, SDA:PORT193]
                                                    <CONFIG_ARMADILLO840_I2C_GPIO3_194_193>
    Device Drivers  --->
    <*> I2C support  --->                                                      <CONFIG_I2C>
        <*>   I2C device interface                                     <CONFIG_I2C_CHARDEV>
        [*]   Autoselect pertinent helper modules                  <CONFIG_I2C_HELPER_AUTO>
              I2C Hardware Bus support  --->
            <*> GPIO-based bitbanging I2C                                 <CONFIG_I2C_GPIO>
            <*> SuperH Mobile I2C Controller                         <CONFIG_I2C_SH_MOBILE>

8.3.19. SPI

Armadillo-840のSPIインターフェースは、R-Mobile A1のMSIOF (Clock-Synchronized Serial Interface with FIFO)を利用します。

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

また、CONFIG_SPI_SPIDEVを有効にすると、ユーザードライバでSPIデバイスを制御することができます。

関連するソースコード

drivers/spi/spi-sh-msiof.c
drivers/spi/spi.c
drivers/spi/spi-bitbang.c
drivers/spi/spidev.c

カーネルコンフィギュレーション
    System Type  --->
        *** Armadillo System Configuration ***
        Armadillo-840 System Configuration  --->
                *** Interface and Device select ***
            [ ] use MSIOF1                                     <CONFIG_ARMADILLO840_MSIOF1>
            [ ]   SPI: User mode SPI device [CS:PORT73]
                                          <CONFIG_ARMADILLO840_MSIOF1_DEVICE_SPIDEV_PORT73>
    Device Drivers  --->
    [ ] SPI support  --->                                                      <CONFIG_SPI>
              *** SPI Master Controller Drivers ***
        < >   Utilities for Bitbanging SPI masters                        <CONFIG_SPI_GPIO>
        < >   SuperH MSIOF SPI controller                             <CONFIG_SPI_SH_MSIOF>
              *** SPI Protocol Masters ***
        < >   User mode SPI device driver support                       <CONFIG_SPI_SPIDEV>


[17] イメージファイル linux-a840-v1.12.bin.gz 以降

[18] loader-armadillo840-nor-v3.7.0.bin 以降

[19] loader-armadillo840-nor-v3.6.0.bin 以前

[20] Ultra High Speed (UHS)には対応していません

[21] ドットクロックが75MHzを超えるビデオモードには対応できません

[22] ドットクロックが75MHzを越えるビデオモードもリストアップされます

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

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