Howto

Armadillo-400シリーズでOS-9を動作させる(3: Armadilloへの書き込み)

OS-9について

OS-9はコンパクト、高速でセキュアなプロセスモデルの組込用リアルタイムOSです。 組込業界で20年以上の採用実績があり、特に試験計測、FA、メディカルなどのクリティカルなリアルタイム性能を要求される分野で広く使われています。

本シリーズでは、Armadillo-400シリーズでOS-9を動作させる方法を4回に分けて紹介します。
Howto : Armadillo-400シリーズでOS-9を動作させる(1: SDKのインストール)
Howto : Armadillo-400シリーズでOS-9を動作させる(2: OSイメージの作成)
Howto : Armadillo-400シリーズでOS-9を動作させる(3: Armadilloへの書き込み)
Howto : Armadillo-400シリーズでOS-9を動作させる(4: ユーザープログラムの作成)
本文中でArmadillo-410,420,460用の設定が明記されていない個所はArmadillo-440と同一の設定を行ってください。

1. ブートローダーを書き換える

OS-9起動用のブートローダ(loader-armadillo4x0-v2.1.5.bin)を、フラッシュメモリの「bootloader」リージョンに書き込みます。書き換え方法は、Armadillo-400シリーズのソフトウェアマニュアルに書かれている「ブートローダーを出荷状態に戻す」方法と同じです。

まず、Armadillo-440/460の JP1をショートし UART ブートモードに設定します。次に、Hermit-At for WIN32 を起動し、「Shoehorn」ボタンを押し、実行します。これで、ブートローダーをロードする準備ができました。

※ブートローダが標準のHermit-Atの場合は、保守モードで起動(JP2をショートあるいはユーザSW1を押したままで電源投入)する事でも作業出来ます。

それでは、ブートローダーをフラッシュメモリに書き込みます。Hermit-At for WIN32 で、「Download」ボタンを押します。

Hermit-At WIN32: Download

まず、書き込むブートローダのイメージファイルを選択します。書き込むイメージファイル名は、loader-armadillo4x0-v2.1.5.bin です(最新のものはバージョン番号の部分が異なる場合があります)。

Hermit-At WIN32: Open Dialog

次に、書き込むリージョンを選択します。ブートローダーを書き込む場合は、「bootloader」を選択してください。上の図のように、ForceLocked もチェックしてください。

Hermit-At WIN32: Download forcelocked

実行ボタンを押し、ブートローダーのダウンロードが完了したら、Armadillo の電源を切ってください。

詳しいフラッシュメモリの書き換え方法は、Armadillo-400シリーズのソフトウェアマニュアルを参照してください。

2. ブートデバイスの設定

次にブートデバイスの設定をするため、Hermit-Atの保守モード(JP2をショートあるいはユーザSW1を押したままで電源投入)で起動します。

ブートデバイスの設定は、Hermit-At の setbootdevice コマンドで行います。

OS-9をmicroSDから起動するには、setbootdevice コマンドで起動デバイスに mmcblk0 を指定します。setbootdevice コマンドを引数なしで実行すると設定内容を確認出来ます。

Hermit-At v2.1.5 (armadillo4x0) compiled at 23:22:01, Dec 13 2013
hermit> setbootdevice mmcblk0
hermit> setbootdevice
bootdevice: mmcblk0
hermit>

これで、microSD からOSを起動するための設定が出来ました。

起動デバイスが mmcblk0 の場合はmicroSDのパーティションを順にチェックしてOSイメージを探します。FAT16、FAT32、RBF(OS-9本来のファイルシステム)からの起動に対応しています。OSイメージが見つからない場合は保守モードになります。

OS-9をArmadillo-440に搭載されているフラッシュメモリから起動するには、setbootdevice コマンドで起動デバイスに os9boot を指定します。

Hermit-At v2.1.5 (armadillo4x0) compiled at 23:22:01, Dec 13 2013
hermit> setbootdevice os9boot
hermit> setbootdevice
bootdevice: os9boot
hermit>

これで、本体フラッシュメモリからOSを起動するための設定が出来ました。

microSDにOSイメージがある場合はmicroSDから、microSDにOSイメージが無い場合は本体フラッシュメモリから起動するには、setbootdevice コマンドで起動デバイスに os9auto を指定します。

Hermit-At v2.1.5 (armadillo4x0) compiled at 23:22:01, Dec 13 2013
hermit> setbootdevice os9auto
hermit> setbootdevice
bootdevice: os9auto
hermit>

設定が済みましたら、Armadilloの電源を切って下さい。電源を切った後にジャンパピンを取り外し、オートブートモードに設定して下さい。

3. microSDにOSイメージを書き込む

OS-9用のHermit-Atは、FATパーティションのルートディレクトリに置いてある「rom」または「os9boot」という名前のファイルをOS-9のイメージとしてロードできますので、>市販のFATでフォーマット済みのmicroSDをそのまま利用出来ます。

microSDに OS-9 for SDK ARM Almadillo-400シリーズを使って作成したOSイメージ(通常はMWOS/OS9000/ARMV5LE/PORTS/Armadillo440/BOOTS/INSTALL/PORTBOOT/romとして作成されます)を書き込むには、イメージファイル(romファイル)をmicroSDのルートディレクトリへコピーするだけです。

OS-9のOSイメージを作成する方法は、こちらを参照して下さい。

4. 本体フラッシュメモリにOSイメージを書き込む

本体フラッシュメモリにOSイメージを書き込むには、Hermit-At-WIN32を使用して、kernelリージョンへOSイメージを書き込んでください。

まず、書き込みOSイメージファイルを選択します。イメージファイル名は通常「rom」です。ファイル選択用オープンダイアログを開き、「ファイルの種類(T):」を 「All files(*.*)」に変更すると romファイルが一覧に表示されます。

Hermit-At WIN32: Open Dialog (ROM image))

次に、書き込むリージョンを選択します。OSイメージを書き込む場合は、「kernel」リージョンを選択してください。

Hermit-At WIN32: Download (ROM image)

実行ボタンを押し、OSイメージのダウンロードが完了したら、Armadillo の電源を切ってください。

詳しいフラッシュメモリの書き換え方法は、Armadillo-400シリーズのソフトウェアマニュアルを参照してください。

5. OS-9 を起動させる

microSDから起動する場合は、Armadillo-440の電源を切ってからmicroSDスロットにOS-9のイメージを書き込んだmicroSDをセットします。

シリアルポートにコンソールメッセージが出力されますので、ターミナルソフトを起動しておきます。

電源を投入するとシリアルポートにメッセージが出力され、OS-9が起動します。

Hermit-At v2.1.5 (armadillo4x0) compiled at 23:22:01, Dec 13 2013
mmcsd: SD card at address 0x0000b368
mmcsd: SD    1960960KiB
gendisk: /dev/mmcblk0p1: start=0x00000020, size=0x0007ffe0
gendisk: ROM is found. (5310864 Bytes)
Loading bootfile (FAT) ..... done.

OS-9 Bootstrap for the ARM (Edition 74)

Now trying to Boot embedded OS-9 in-place.
Now searching memory ($80100000 - $807fffff) for an OS-9 Kernel...

An OS-9 kernel was found at $80100000
A valid OS-9 bootfile was found.
+3
+5
+6
$

ユーザープログラムの作成方法については、 Howto : Armadillo-400シリーズでOS-9を動作させる(4: ユーザープログラムの作成) を参照してください。

サポートデバイスの状況

OS-9/ARM V5.0 for Armadillo-440 では、以下のデバイスドライバを使用する事が出来ます。

デバイスドライバ備考
microSDrbimxesdhc起動用に使用可
I2C 24Cxxx EEPROMrbi2cat24外付けしたシリアルEEPROMをファイルシステムで利用するデモ
外付け回路が必要です
CSPIscimxcspiマスタのみ
GPTscimxgpt単純なインターバルタイマとしてのみ
I2Cscimxi2cマスタのみ
内部でRTC(S35390A)のアクセスにも利用
LCDscimxlcdcキャラクタ表示、グラフィック表示対応
PWMscimxpwmLCDバックライトのような周波数とDUTY比の制御のみ
UARTscimxuartコンソール他
GPIOgpioimxGPIO1~4、PAD1~4、CN9、CN11、CN14、LED3~5、SW1、OPTSW
タッチパネルadioimxA/D値の読み出しのみ
有線LANspfecimx25link up/down 通知は未対応
USBメモリusbman
usbhcde
udiskd
HSのみ対応、FS/LS不可
RAMドライブ
ROMドライブ
ram通常のRAMドライブ、on-chip SRAMドライブ、userland領域を使ったROMドライブ

※デバイスを利用するにはGPIOピンの設定が必要な場合があります。

制限事項と注意点

V.5.0.1 (2013/12/26バージョン)
  • EHCI(USB)ドライバ
  • OS-9 for Armadillo のEHCI(USB)ドライバはi.MX25xのUSBホストコントローラのFS/LSデバイス接続機能に対応していません。このため、USBポートにFS/LSデバイスを直結しても正常に動作しません(HS対応HUBを経由すれば利用可能です)。また、同じ理由でFS/LS固定のUSB-HOST側のコネクタは利用出来ません。

  • FEC(LAN)ドライバ
  • OS-9 for Armadillo のFEC(LAN)ドライバは割込みハンドラで受信したメッセージを上位へ転送するため、割込み処理に比較的長い時間を要します。このため、通常のプロセスの応答性に大きな影響が出る事があります。また、処理能力があまり高くない為、大量のUDPパケットを受信した場合などに割込み処理にCPU時間が占有されてしまう場合があります。
    LANを高負荷で利用する用途には適合しない場合があります。

  • NOR FLASH 領域上での実行
  • OS-9のROM化機能により NOR FLASH 領域上のイメージをRAM領域へコピーせずに、そのままNOR FLASH領域上のモジュールを実行する事が可能ですが、NOR FLASH領域に対してアクセスがあるとLCDの表示にノイズが生じる事が確認されています。また、アクセス速度がSDRAM領域に対して20%程度の能力しかないため処理性能が著しく低下します。
    LCDを利用する場合、LANのある程度の性能が必要となるデバイスを使用する場合は、必ずRAM領域へコピーして実行するよう構成して下さい。
    また、Armadillo-440のNOR FLASHは0xFF以外のデータで書込みアクセスされると、FLASHメモリチップの動作仕様によってメモリアレイを読み出せないモードになってしまう場合があります。NOR FLASH上でOS-9を実行している場合は直ちにシステムクラッシュに繋がりますので、FLASH領域へ書き込みアクセスが発生しないよう十分注意して下さい。

  • タイムゾーン設定について
  • Configuration Wizard でタイムゾーンを設定する際に、Asia/Tokyo を選択した場合、誤ってLMT +09:18:59 が設定されてしまう不具合が確認されています。
    タイムゾーンをJST +09:00:00 に設定するには、Asia/Tokyo を手動で Etc/GMT-9 に書き換えてください。

  • SDMAについて
  • OS-9 for Armadilloは2013年12月現在i.MX25xのSDMAをサポートしていません。ハードウェアの仕様上SDMAを利用可能なデバイスであっても、デバイスドライバはSDMAを利用していません。

  • LCDドライバについて
  • OS-9 for ArmadilloのLCDドライバはコンソールターミナルとしての動作をサポートしていません。

  • low-levelドライバについて
  • OS-9 for Armadillo は、low-level ethernetドライバをサポートしていません。

  • Ultra-C/C++コンパイラのターゲットプロセッサについて
  • Ultra-C/C++コンパイラプロセッサガイドに記載が抜けていますが、OS-9 for Armadillo では、ターゲットプロセッサはARMV5LE(ARM Version 5 Little Endien)になります。

本Howto及びOS-9に関するお問合せはこちら

株式会社フォークス
TEL: 03-5603-2301
E-mail: atos9info@yaya.forks.co.jp
URL: http://www.forks.co.jp/