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 |
ユーザーオリジナルの拡張ボードを利用する場合には、「CON7/8 extension board」には「Custom」を選択します。
Customを選択した場合には、全てのピンマルチプレクスを変更することができます。
Armadillo-840m A840mベーシックモデル開発セット拡張基板を利用している場合は、「CON7/8 extension board」を選択した場合、CON8に関するコンフィグ項目はそのままA840mベーシックモデル開発セット拡張基板のCON8に対応します。それ以外のコンフィグ項目は、A840と同一の機能を持った各コネクタに対応します。「CON7/8 extension board」で「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]」を選択する前の表示
「use CEU0 Upper [CLKs, SYNCs and D15-8]」を選択した後の表示
|
Armadillo-840では、カーネル内部のクロックソースに R-Mobile A1のCMT0(Compare Match Timer0) を利用しています。
- 関連するソースコード
drivers/clocksource/sh_cmt_simple.c |
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 |
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, A840mベーシックモデル開発セット拡張基板: 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 |
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 |
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)となっています。
A840mベーシックモデル開発セット拡張基板における対応するポートとコネクタの関係は、
SDHI0 (A840mベーシックモデル開発セット拡張基板: CON1)及び、
SDHI1 (A840mベーシックモデル開発セット拡張基板: CON20 または CON21) となっています。
- 機能
カードタイプ: SD / SDHC / SDXC / SDIO |
バス幅: 1bit or 4bit |
スピードモード[]:
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 |
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, A840mベーシックモデル開発セット拡張基板: CON5)
で利用することができます。拡張ボード01でUSBホストまたはUSBファンクションを利用する場合は、
カーネルをコンフィギュレーションする必要があります。
その場合には、USB Type-Aコネクタ(Armadillo-840: CON5, A840mベーシックモデル開発セット拡張基板: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 |
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, A840mベーシックモデル開発セット拡張基板: CON25)にUSBケーブルを接続して利用します。
Linuxカーネルに用意されている代表的なガジェットドライバを次に示します。
表8.4 代表的なガジェットドライバ
ガジェット | 機能 |
---|
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 |
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では、それぞれフレームバッファデバイス、オーディオデバイスとして利用することができます。
- 機能(フレームバッファ)
最大解像度[]: 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 |
- カーネルコンフィギュレーション
| |
---|
"Primary framebuffer"の選択は、Linuxカーネル v3.4-at6で対応しました。Linux カーネル v3.4-at5以前では選択することができません。
|
Armadillo-840では、sysfs経由でHDMIのビデオモードを変更することができます。
関連するsysfsファイルを次に示します。
表8.5 ビデオモード変更に利用するsysfsファイル
ファイル | 機能 |
---|
/sys/class/graphics/fb0/modes | 利用可能なビデオモードの一覧を取得することができます |
/sys/class/graphics/fb0/mode | 現在のビデオモードの取得、及びビデオモードの変更するする場合に利用します |
利用可能なビデオモードは、HDMI対応ディスプレイから取得したビデオモードの内、
Armadillo-840で設定可能なビデオモードを抽出した[]リストとなっています。
設定可能なビデオモードを取得するには、次のように/sys/class/graphics/fb0/modesファイルから読み出します。
ビデオモードを変更する場合は、/sys/class/graphics/fb0/modeファイルに設定したいビデオモードを書き込みます。
ここでは「D:1280x720p-60」を設定する例を示します。
Armadillo-840の標準状態では、ディスプレイの接続時に自動的に最適なビデオモードとなる機能
(以降、本書ではビデオモード自動調整機能と称します)が組み込まれています。
| ビデオモード自動調整機能の仕組み |
---|
HDMIはディスプレイから取得できるEDIDの情報から、設定可能なビデオモードを自動生成しています。
EDIDを取得してビデオモードのリストが更新された場合、ueventにより更新されたことをユーザー空間に通知します。
Armadillo-840では、対応するueventを受信した場合に /etc/config/configure-fbmode.sh を実行して、
適切なビデオモードに設定されるように実装されています。
|
8.3.9.3. ビデオモード自動調整機能の無効化
任意のビデオモードに固定して利用する場合は、ビデオモード自動調整機能を無効にする必要があります。
無効化するには次のように/etc/config/configure-fbmode.shのパーミッションを変更します。
次回起動時にもビデオモード自動調整機能を無効化したい場合は、コンフィグ領域を保存しておきます。
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[] |
バックライト輝度調整用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 |
- カーネルコンフィギュレーション
| |
---|
"Primary framebuffer"の選択は、Linux カーネル v3.4-at6で対応しました。Linux カーネル v3.4-at5以前では選択することができません。
|
Armadillo-840のアナログオーディオは、R-Mobile A1のFSI2(FIFO-Buffered Serial Interface 2)を利用しています。拡張ボード01およびA840mベーシックモデル開発セット拡張基板のオーディオコーデックには、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)サポート |
ミキサーサポート |
- 関連するソースコード
sound/soc/sh/fsi.c |
sound/soc/generic/simple-card.c |
sound/soc/codecs/wm8978.c |
Armadillo-840のカメラインターフェースは、R-Mobile A1のCEU(Capture Engine Unit)を利用しています。
拡張インターフェース2(Armadillo-840: CON8, A840mベーシックモデル開発セット拡張基板: CON8)及び、カメラインターフェース(拡張ボード01: CON12)は、
Armadillo-810 カメラモジュール01 (Bコネクタ用)(以降、カメラモジュール01と記載します)を接続して利用することができます。
標準状態ではカメラ機能が無効のため、利用する場合はカーネルをコンフィギュレーションする必要があります。
表8.6 カメラモジュール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 |
Armadillo-840をLinuxで利用する場合、R-Mobile A1のGPU(PowerVR SGX540)を利用することができます。
GPU用のドライバは、Linuxカーネルのソースコードにマージされています。
Armadillo-840のマルチメディア機能(H.264/AVC動画、AAC音声、JPEG画像の変換機能)は、SH-4Aとの通信によって実現しています。
次のR-Mobile A1に搭載されたマルチメディア処理専用プロセッサは、SH-4Aから制御するため、AVコーデックミドルウェアドライバでは直接制御しません。
- 対応フォーマット
デコーダー: H.264/AVC, AAC |
エンコーダー: H.264/AVC, AAC, JPEG |
- 関連するソースコード
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 |
Armadillo-840には、セイコーインスツル(SII)製 S-35390Aが搭載されています。
S-35390Aは、I2C-GPIO2 (I2Cノード: 2-0030) に接続されています。
- 関連するソースコード
drivers/rtc/rtc-s35390a.c |
drivers/rtc/class.c |
drivers/rtc/rtc-dev.c |
drivers/rtc/rtc-sysfs.c |
Armadillo-840に搭載されている制御可能なLEDは、GPIOが接続されています。
Linuxでは、GPIO接続用LEDドライバ(leds-gpio)で制御することができます。
Armadillo-840には、LED1 及び LED2が実装されています。
拡張ボード01には、LED1〜LED6が実装されています。A840mベーシックモデル開発セット拡張基板にはLED3〜LED8が実装されており、
Armadillo-840拡張ボード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 |
Armadillo-840mにA840mベーシックモデル開発セット拡張基板を接続、あるいはArmadillo-840に拡張ボード01を接続すると、
ユーザースイッチを利用することができます。
各ユーザースイッチは、GPIOが接続されユーザー空間でイベント(Press/Release)を検出することができます。
Linuxでは、GPIO接続用キーボードドライバ(gpio_keys)で制御されます。
A840mベーシックモデル開発セット拡張基板、拡張ボード01に搭載されたユーザースイッチには、それぞれにキーコードが
割り当てられています。
表8.7 キーコード
ユーザースイッチ | キーコード | イベントコード |
---|
SW1[] | KEY_POWER | 116 |
SW2[] | KEY_BACK | 158 |
SW3[] | KEY_MENU | 139 |
SW4[] | KEY_HOME | 102 |
- 関連するソースコード
drivers/input/keyboard/gpio_keys.c |
drivers/input/input.c |
drivers/input/evdev.c |
Armadillo-840のI2Cインターフェースは、R-Mobile A1のIIC (I2C Bus Interface)を利用します。
また、GPIOを利用したI2Cバスドライバ(i2c-gpio)を利用することで、I2Cバスを追加することができます。
Armadillo-840及び拡張ボード01で利用しているI2Cバスと、接続されるI2Cデバイスを次に示します。A840mベーシックモデル開発セット拡張基板の場合でも同様のバスとアドレスになります。
表8.8 I2Cデバイス
I2Cバス | I2Cデバイス |
---|
アドレス | デバイス名 |
---|
I2C0 | 0x1a | WM8978オーディオコーデック[] |
I2C0 | 0x55 | ST1232タッチスクリーンコントローラ[] |
I2C1 | 0x21 | OV7725 COMSイメージセンサー[] |
I2C-GPIO2 | 0x30 (0x31〜0x37も予約済み) | S-35390Aリアルタイムクロック |
I2C-GPIO3 | 0x21 | OV7725 COMSイメージセンサー[] |
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 |
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 |