今回は、ソフィアシステムズ SandgateIIをお借り出来たのでその評価をします。
WindowsCE.net と Linux のインストール、そして、付属しているソフトウェアにターゲットを絞って解説しています。
今回お借りしたSandgateII には以下のような製品が付属しています。
実際の製品には、512MBのコンパクトフラッシュが付属します。
CFは、LinuxのルートファイルシステムとかWinCEの外部記憶として使用されてます。
付属CDは以下の3点です。
実際の製品では、1枚のCDだけが付属しますが、評価用特別版ということでいくつかのCDが付属しています。
が、それぞれのCD に入っています
ちなみに、製品版でWinCE/Linux双方を選択した場合には、
が付属します。
SandgateIIには、今回評価したボード以外に2種類あります。
グラフィック強化のSandgateII-G、VoIP携帯端末向けSandgateII-Pがあります。
その中でもSandgateII-Pは、パワーマネジメントが使えることが特徴です。
電源制御用回路が用意されていますので、ウォームブート、パワーマネジメントによるサスペンド/レジュームができるはずです。
開発中にパワーマネジメント関連処理のハードウェアの実装が終わるまで待たなければならない場合があります。
例えば、パワマネージメント部の調整に時間がかかり、ギリギリにならないと仕上がってこない場合などです
そのとき、WinCE .net 4.xなら、ソフトウェア開発用にPocketPC 2003等を代替として使用できますが、WinCE 5.0ではライブラリ等の問題で出来ない場合がありますので、この評価ボードは最適と思います。
SandGateII-Pが、サスペンドやレジュームを実装し、調整がなされているとすると、開発リファレンスとしてとても参考になると考えています
SandgateIIを購入するとFlashROMに書かれているプログラムがPOST(Power On Self Test)です。製品検査用プログラムです。
添付されているバイナリはMMUのON/OFFで2種類用意しています。以下が用意されているファイルです。
MMU OFF: POST_Sandgate_Cotulla.bin MMU ON: POST_Sandgate_Cotulla_MMU.bin
POSTは、CPU/サウンド/LCD/メモリ等のテストを行います。
POST自体のソースも公開されています。SandgateIIのほぼ全てのH/Wの検査を行っています。
新しいH/W開発時のテストプログラムとか、SandgateIIの周辺機器を追加した場合のテストには有益です。またブートローダ、Realtime OSの移植にも参考になります。ソース自体はインテルから提供されているのを変更したようです。。
ファイル拡張子、ファイル名から推測するとCodeWarriorを用いてで開発されたようです(秘密ですよ)。
SandgateIIには、OSがWindowsCE .net 4.2/5.0とLinuxが用意されています。
ブートローダには、WindowsCEにはEboot、LinuxにはRedBootが用意されています。
EbootはWindowsCE専用のブートローダです。PlatformBuilderで作成出来ます。各プラットフォーム毎に用意されています。RedBootは、リアルタイムOS eCosがベースになっているブートローダです。機能が豊富です。PXA系ではU-Bootが使われている例もあります。
JFlashは、PCのパラレルポートとJTAGを接続するJFLASHケーブル経由でFlashROMにプログラムを書込むことが出来ます。
私が知るところでは、インテルがARM系を始めたStrongARMと呼ばれたころから用意されています。インテルのPXA250の評価プラットフォームではザイリンクスのFPGA用の書込アダプタと共用していいました。
通常FlashROMへの書込はJTAGアダプタを経由して行います。Jflashは最も低価格でFlashROMへの書込を用意しています。その分転送速度は速くないのでブートローダ程度しか書込ません。freescaleのPowerPCの評価ボードでも同じような形態のJTAGケーブルが用意されています。
WindowsCEのシステムバイナリ:nk.nb0とかターゲットのルートファイルシステムイメージはコンパクトフラッシュまたはネットワーク経由でSDRAMにダウンロードして書込むことになります。
JFlashはWindows 95/98/NT/2000/XPに対応しています。 最初に、アプリケーションとパラレルポートとの通信を管理するドライバ:giveio.sysをインストールします。
C:\jflash>instdrv giveio c:\windows\system32\drivers\giveio.sys CreateService SUCCESS StartService SUCCESS CreateFile SUCCESS
次に、DOSプロンプトでJflash_Bv.exeを以下のように実行することで、ブロック0に書込ます。Pオプションで書込むブロックを指定出来ます。1ブロックは256KBです。
> Jflash_bv eboot.bin
giveio.sys、Jflash_Bv.exeのソースは公開されています。インテルでも最新のチップに対応したソースを公開しています。
giveio.sysを作成するにはNT DDKが必要になります。しかし、変更することはないでしょう。
Jflash_Bvは、Microsoft Developer Studio 6.0で開発されています。実装されているFlashROMがサポートされていない場合には追加することになります。
IntelのWebサイトには、Intelが開発した評価ボード用のJFlashのソース、バイナリが公開されています。
JTAGの仕組みの勉強には役に立つところが多くあります。
最近パラレルポートの無いPC、ノートPCが増えてきていてUSB接続による開発が切望されるようになっています。
USB経由で接続出来る1つの解として、ナヒテックのMITOUJTAG + Mobile JTAG Cable経由での方法を紹介します。JTAG経由で様々なことが出来ます。
SVFプレーヤー、ロジックアナライザ、ファンクションジェネレータ、ARMデバッガ、フラッシュROMライタの機能があります。
PXA250他多くのCPUを対応しつつあります。未だ開発途中なところはありますが期待がもてます。
それらを紹介しているなひたふ新聞です。
今回はSandgateIIを接続してCPUが認識しているところまでご紹介します。
JFLASHケーブル経由でCPUのピンの状態をモニタしている状態です。
JFLASHケーブルは、XILINKのパラレルケーブルとして認識されています。
インテルWebサイトからPXA270用のBSDLファイルをダウンロードして登録しています。
時間の都合上今回は、SandgateIIと接続して途中経過までしか入れることが出来ませんでした。次回機会があればもう少しこの点に関して解説したいと思います。
SandgateIIでは、WindowsCE .net 4.2/5.0のBSPがソースで用意されています。
PlatformBuilderでWindowsCEのROMイメージを作成出来ます。
WindosCE .net 5.0 BSPの正式版は、2005年4月26日にダウンロード可能になっています。今回は、5.0に関して解説をします。
WindowsCEでのPXA270の位置づけに関して説明します。
PXA270は、WindowsCEではCPUのアーキテクチャはARMV4Iとなっています。
ARMV4Iは、ARM7/9/11/PXA/IXPを含むARM系のCPUに全て対応出来ます。
WindowsCE 4.2迄ARMV4というCPUアーキテクチャをサポートしていました。ARMV4はStrongARM SA-1110を意味しています。Windows Mobile 2003 Second Edition(以後Windows Mobile 2003 SE)ではPXA270を使用している機種はARMV4を使用しています。PXA270は、ARMV4もARMV4Iもサポート可能になっています。
Windows Mobile 2003 SEでは、デバイスドライバはARMV4となります。WindowsCE 5.0ではARMV4Iとなりますので次のWindows MobileはARMV4Iになると予想されます。
WinddowsCE 5.0に至る迄にサポートされなくなったCPUが幾つかあります。
PowerPC/SH3/ARMV4等です。PowerPCはLinuxで活躍しています。
WindowsCE 5.0では、BSPのインストールはPlatformBuilder5.0上で行う操作には差は余りなく簡単にインストール出来ます。
CPUアーキテクチャはARMV4Iとなります。
次にSandgateIIにブートローダ:EbootをJFlashで書き込みます。JFlashケーブルをSandgateIIと接続してPCから書き込みます。 以下のようにします。
> jflash_bv eboot.nb0
C:\jflash>jflash_bv eboot.nb0 JFLASH Version 2.11.001 - SandgateⅡ COPYRIGHT (C) 2000-2002 Intel Corporation JTAG Test Passed Bulverde revision C0 There are two 16-bit Flash devices in parallel Characteristics for one device: Number of blocks in device = 256 Block size = 65536 0x10000 word(16-bit) Device size = 16777216 0x1000000 word(16-bit) Sample block to address list: Block 0 = hex address: 00000000 Block 40 = hex address: 00A00000 Block 80 = hex address: 01400000 Block 120 = hex address: 01E00000 Block 160 = hex address: 02800000 Block 200 = hex address: 03200000 Block 240 = hex address: 03C00000 The last 57 percent of image file is all zeros Would you like to save time by not programming that area? [y/n]: y Block of Flash Memory is Write Locked, would you like to unlock it? [y/n]: yUnlo Starting erase0 Erasing done Starting programming Programming done hex address 1b500, 99.02% done Starting Verify Verification successful!
ブートローダもPlatformBuilderで作成可能ですので変更が可能となります。
書き込みが完了してJFlashケーブルを外して、シリアルケーブルを接続してターミナルソフトを起動すると起動ログを出力します。
ターミナルソフトの通信速度の設定は、38.4Kbps/8bit/NonParity/1Stopbit/NonFlowとなります。
続いてWindowsCEのROMイメージ: nk.binの書き込みを行います。 FlashROMの書込はネットワーク経由でEbootから行います。 以下が書き込み状況と起動ログです。
そうすると、WinCE 5.0 が起動できるようになります。 多少の文字化けは気にしないでください。
SandgateIIには、もう1つのOSとしてLinuxが移植されています。
Kernel 2.4.18のMontaVista Linuxを採用しています。ブートローダはRedBootを採用しています。
ブートローダRedbootは、カーネルをRAM上にコピーして起動してCF上のファイルシステムをマウントして起動する形態を取っています。XIP起動等は行っていません。
LCD表示が無く、シリアルコンソールかネットワークでしかログインが出来ません。
Fbコンソール、X-Window、Qt/Embedded等が実装されていませんのでWinCEに比べて表示系が劣っているところがあります。
本CDにはテスト仕様及び結果報告書が付属しています。イーエルティが作業をしているようです(秘密ですョ)。
以下にLinuxのスペックを列挙します。
ブートローダ: Redboot Linux: MontaVista Linux Kernel 2.4.18 mvl30 gcc: 3.2.1
Kernel 2.6へのPXA270も対応もされています。OpenBSDではPXA270を使用しているZaurus SL-C3000もサポートされています。
Linuxが起動可能な環境をSandgateII上に構築します。
Linuxのブートローダ、カーネルのFlashROM、CFファイルシステムの書き込みを行います。この手順は、ブートローダはJFlash、カーネルはシリアル、CFはLinux PC上から書き込みます。
最初に、コンソール出力の為にSandgateIIとPCはシリアルケーブルで接続します。
PC側の通信ソフトはハイパーターミナルを使います。通信設定は以下のようになります。
115kbps/8bit/パリティなし/1ストップビット/フロー制御なし
Tera Term Proを代わりに使用しないで下さい。カーネル転送でxmodem転送不良となります。JFlash関連のソフトは既にインストールされていることが前提となります。
ブートローダをFlashROMに書き込みます。
ブートローダの書き込みはJFlashを使用します。JFlashケーブル経由で書込ます。
JFlashケーブルをSandgateIIとPCパラレルと接続します。
DOSプロンプトで以下のようにします。
C:\jflash>jflash_bv redboot.bin JFLASH Version 2.11.001 - SandgateⅡ COPYRIGHT (C) 2000-2002 Intel Corporation JTAG Test Passed Bulverde revision C0 There are two 16-bit Flash devices in parallel Characteristics for one device: Number of blocks in device = 256 Block size = 65536 0x10000 word(16-bit) Device size = 16777216 0x1000000 word(16-bit) Sample block to address list: Block 0 = hex address: 00000000 Block 40 = hex address: 00A00000 Block 80 = hex address: 01400000 Block 120 = hex address: 01E00000 Block 160 = hex address: 02800000 Block 200 = hex address: 03200000 Block 240 = hex address: 03C00000 Block of Flash Memory is Write Locked, would you like to unlock it? [y/n]: yUnlo Starting erase0 Erasing done Starting programming Programming done hex address 20400, 99.92% done Starting Verify Verification successful!
書込後、JFlashケーブルをSandgateIIから外します。
ハイパーターミナルからの出力が以下のようになれば正常に書込まれたことになります。
+FLASH configuration checksum error or invalid key Qォノケ篇‘th0: MAC address 12:13:14:15:16:17 Can't get BOOTP info for device! RedBoot(tm) bootstrap and debug environment [ROM] Non-certified release, version UNKNOWN - built 09:33:35, Aug 25 2004 Platform: PXA270 SandgateII (XScale) Copyright (C) 2000, 2001, 2002, Red Hat, Inc. RAM: 0xa0000000-0xa4000000, 0xa0013928-0xa3f9d000 available FLASH: 0x04000000 - 0x08000000, 256 blocks of 0x00040000 bytes each. RedBoot>
この出力が出れば書き込みが完了したことになります。
ルートファイルシステムをCF上に構築します。
最初にCFにLinuxパーティションを作成、ext2でフォーマットします。以下のようになります。今回はSundisk 512MBを使用しています。
作業に使用したlinuxはRedhat 9.0でUSB接続のCFアダプタ経由で書込んでいます。
# fdisk /dev/sda コマンド (m でヘルプ): p Disk /dev/sda: 512 MB, 512483328 bytes 16 heads, 63 sectors/track, 993 cylinders Units = シリンダ数 of 1008 * 512 = 516096 bytes デバイス ブート 始点 終点 ブロック ID システム /dev/sda1 1 993 500440+ 83 Linux # mkfs -t ext2 /dev/s a1
この操作は、Linux上でPCMCIAまたはUSBメモリアダプタに接続されたCFに対して行います。このデバイスは起動する必要はありませんのでBoot可能にする設定は必要ありません。 X86 linuxをCFに入れる場合に、Bootのフラグが設定されていない為に起動しないことがあります。
そこにCDに格納されているターゲットバイナリを展開します。
CFをマウントして、CFのルート上で以下のようにファイルを展開します。。
# tar jxvf sg2pxa270-target.tar.bz2
以上で展開が完了して、Linuxのルートファイルシステムとして使用出来ます。
カーネルをネットワーク経由でFlashROMに書き込みます。
シリアル経由でカーネルをPC上ハイパーターミナルからダウンロードします。ファイル転送に使われるプロトコルはxmodemです。以下の作業はハイパーターミナル上から作業です。
RedBootでフラッシュ領域の初期化を行います。
RedBoot> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
Warning: device contents not erased, some blocks may not be usable
... Unlock from 0x07fc0000-0x08000000: .
... Erase from 0x07fc0000-0x08000000: .
... Program from 0xa3f9f000-0xa3fdf000 at 0x07fc0000: .
... Lock from 0x07fc0000-0x08000000: .
Xmodemプロトコルでカーネルをロードする用意します。
RedBoot> load ?r ?b 0xa0200000 ?m xmodem
sg2pxa270-linux.tar.bz2に含まれるprebuilt\zImageをハイパーターミナルからxmodemプロトコルでファイル送信します。
完了後、flashROMへ書込します。
RedBoot> fis create linux ?f 0x04100000 ?b 0x20400000 ?l 00600000
その後RedBootのfconfigで設定を行います。この設定を行わないと電源起動毎に設定が必要になります。
一連のRedBoot上でのログは以下のようになります。 fconfigでRedboot起動時のLinux自動起動の設定を行っています。
SandgateIIにCFを装着して電源を入れます。
以下のようなログがシリアルから出力されログインが出来ます。
LCDには表示されません。
linuxでは、RedBoot/linix Kernelのソースが提供されています。
それぞれの開発環境も添付されていますので、環境をインストールすると直ぐ開発にとりかかれます。
ターゲットには、X-Window環境は用意されていないので用意する必要があります。ターゲットアプリケーション開発に関しては工夫が必要と思われます。
RedBootはソースファイル:sg2pxa270-ecos.tar.bz2が添付されています。
ブートローダの作成、再構築に関しての手順も添付されていますので変更が可能になっています。
eCosのバージョンは2.11です。クロスコンパイラを含む開発環境も含まれています。
カーネルのソースは添付されています。sg2pxa270-linux.tar.bz2の中にカーネル、開発環境、ターゲットイメージが含まれます。
その中には、gcc 3.2.1のクロスコンパイラを含む環境が用意されています。
現時点で動作しているのは、以下のドライバになります。
シリアル イーサネット コンパクトフラッシュ
ターゲットは抜粋した以下のコマンド、ライブラリ等が用意されています。
バイナリのみ用意されています。
このようなファイル群が、ファイルシステムの中に展開されます。
以上です。