この章では、Armadillo-300で使用されているソフトウェアについて説明します。
Armadillo-300は4つの種類のソフトウェアで構成されています。
1stブートローダには、オリジナルのIPL(Initial Program Loader)が採用されています。IPLはShoehorn-At Hostと協調動作を行い、2ndブートローダの復旧を行うことができます。
| |
---|
IPLは通常書き換えを行うことはできないようになっていますが、IPLが破壊された場合、JTAG経由でフラッシュメモリを復旧しなければなりません。フラッシュメモリの書き換え時には細心の注意を払ってください。
|
| |
---|
JP1を「2-3」に設定した場合、Armadillo-300の起動時にCON7から数バイトのデータが出力されます。これは、Shoehorn-Atとネゴシエーションするために必要な機能です。
システム設計をされる場合は、本現象を考慮した上で設計してください。
|
4.1.2. 2ndブートローダ「Hermit-At」
2ndブートローダには、高機能ブートローダ/ダウンローダのHermit-Atが採用されています。Hermit-AtはHermit-At Hostと協調動作を行い、2ndブートローダ、Kernel又はUserlandの復旧を行うことができます。
Armadillo-300の2ndブートローダには、表4.1「2ndブートローダイメージの種類」に示される種類のフラッシュメモリのイメージファイルが用意されています。
表4.1 2ndブートローダイメージの種類
イメージファイル名 | PROFILE名 | シリアルインターフェース | 説明 |
---|
loader-armadillo3x0.bin | (none) | CON7 | 付加機能のない、小さなイメージです。 |
loader-armadillo3x0-ttyAM1.bin | ttyAM1 | CON6 | ログが表示されるシリアルインターフェースがCON6に変更されます。 |
loader-armadillo3x0-notty.bin | notty | - | ログを表示しません。 |
loader-armadillo3x0-eth.bin | eth | CON7 | 出荷時のイメージです。 LANを使用したイメージの書き換えが可能です。 |
loader-armadillo3x0-boot.bin | boot | CON7 | Shoehorn-Atで使用します。 |
loader-armadillo3x0-boot-eth.bin | boot-eth | CON7 | Shoehorn-Atで使用します。 LANを使用したイメージの書き換えが可能です。 |
本書で単にブートローダと表記した場合、2ndブートローダ(Hermit-At)を意味します。
Kernelには、Linux-2.6.12.5-at1が採用されています。これは、Linux-2.6.12.5をベースにボード固有のオリジナルデバイスドライバを追加したものとなっています。オリジナルデバイスドライバに関しては「オリジナルデバイスドライバ」を参照してください。
Userlandには、各種ユーティリティ、サーバアプリケーション又は、各種設定ファイル等をEXT2ファイルシステムイメージにしたものを採用しています。イメージファイルの作成にはAtmark-distを使用しています。
表4.2 メモリマップ(フラッシュメモリ)
物理 アドレス | フラッシュメモリの内容 | サイズ | 説明 |
---|
0x50000000 | 0x50001fff | ipl | 8KB | 1stブートローダ領域 「ipl-a300.bin 」のイメージ |
0x50002000 | 0x5000ffff | bootloader | 56KB | 2ndブートローダ領域 「loader-a3x0.bin 」のイメージ |
0x50010000 | 0x5020ffff | kernel | 2MB | カーネル領域「linux.bin(.gz) 」のイメージ (非圧縮イメージ、gz圧縮イメージに対応) |
0x50210000 | 0x507effff | userland | 5.875MB | ユーザランド領域「romfs.img(.gz) 」のイメージ (非圧縮イメージ、gz圧縮イメージに対応) |
0x507f0000 | 0x507fffff | config | 64KB | コンフィグ領域 |
表4.3 メモリマップ(RAM)
論理 アドレス | RAMの内容 | ファイル システム | 説明 |
---|
0xc0018000 | kernel | - | Linux起動前に フラッシュメモリから展開・コピーされます |
0xc0800000 | userland | ext2fs | Linuxの起動前に フラッシュメモリから展開・コピーされます |
ここではArmadillo-300オリジナルデバイスドライバの仕様を説明します。Armadillo-300には次に示すオリジナルデバイスドライバがあります。
Armadillo-300のGPIOポート(CON9)は、GPIOデバイスドライバで設定の変更、及び状態の取得を行うことができます。
GPIOポートに対応するデバイスノードの情報は、以下の通りです。
表4.4 GPIOノード
タイプ | major | minor | node(/dev/xxx) |
---|
キャラクタ デバイス | 10 | 185 | gpio |
システムコール(ioctl)を使用してアクセスすることにより、Armadillo-300のGPIOポートを操作することができます。
第1引数には、デバイスファイルのファイルディスクリプタを指定します。
第2引数には、GPIOを操作するためのコマンドを指定します。
表4.5 GPIO操作コマンド
コマンド | 説明 | 第3引数のType |
---|
PARAM_SET | 第3引数で指定する内容でGPIOの状態を設定します | struct gpio_param |
PARAM_GET | 第3引数で指定する内容でGPIOの状態を取得します | struct gpio_param |
第3引数には、(カーネルソース)/include/asm-arm/arch-ns9750/armadillo3x0_gpio.h
に定義されている構造体「struct gpio_param」を使用します。「struct gpio_param」は単方向リストになっているので、複数のGPIOを一度に制御する場合はnextメンバを使用してください。また、リストの最後のnextメンバには"0(NULL)"を指定してください。
GPIOデバイスドライバの詳細な使用方法については、サンプルのGPIO制御アプリケーション(atmark-dist/vendors/AtmarkTechno/Armadillo-300/gpioctrl
)のソースコードを参考にしてください。
LEDデバイスドライバは、Armadillo-300のLED(D2)を点灯・消灯したり、状態を取得したりすることができます。
LEDに対応するデバイスノードのパラメータは、以下の通りです。
表4.6 LEDノード
タイプ | major | minor | node(/dev/xxx) |
---|
キャラクタ デバイス | 10 | 215 | led |
ioctlを使用してアクセスすることにより、Armadillo-300のLEDを操作することができます。
第1引数には、デバイスファイルのファイルディスクリプタを指定します。
第2引数には、LEDを操作するためのコマンドを指定します。
表4.7 LED操作コマンド
コマンド | 説明 | 第3引数のType |
---|
A3X0_LED_SET | 第3引数で指定する構造体でLEDを設定します | struct a3x0_led_param |
A3X0_LED_GET | 第3引数で指定する構造体にLEDの状態を格納します | struct a3x0_led_param |
第3引数には、(カーネルソース)/include/asm-arm/arch-ns9750/armadillo3x0_led.h
に定義されている構造体「struct a3x0_led_param」を使用します。bufメンバは、"1:点灯"、"0:消灯"が設定/取得されます。
LEDデバイスドライバの詳細な使用方法については、サンプルのLED制御アプリケーション(atmark-dist/vendors/AtmarkTechno/Armadillo-300/ledctrl
)のソースコードを参考にしてください。