My Photo
無料ブログはココログ
September 2019
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

他のアカウント

お気に入りのもの

  • SONY: SONY PHA-2
  • iCOP: VESAPC eBOX3310 VEPCEB31
  • Windows Embedded CE 6.0組み込みOS構築技法入門 (マイクロソフト公式解説書)

WEC2013:Windows 8.1そしてVS2012 Update 4は待って

久しぶりにWindows Embeddedネタです。

最新のWindows Embedded Compact 2013は情報がなくて皆さん苦労されていると思います。そういう私もその一人。先日、Windows Updateを適用したついでにリリースされたばかりのVisual Studio 2012用Update 4を適用してしまいました。そうしたところ大変な事態に。

  • Platform Builderでのビルドができなくなりました。手作業でビルドできなくは無いですが、なかなか微妙です。
  • ダウンロードしたNk.binからのデバッグメッセージは表示されるのですが、Target Controlやデバッグ機能、リモートツールの接続ができなくなりました。現象だけ見ると、KITL接続はできているものの、受信だけで、送信ができていないのでは?と推測。今のところ解決策は見つかっていません。

ということで、2013年12月14現在、Compact 2013で開発をしている方は、VS2012のUpdate 4の適用はしないでください。じゃあUpdate 3に戻せばという事になりますが、Microsoft Download CenterにはUpdate 2もUpdate 3もリンク切れです。そしてビルドできなくなるというのは、Windows 8.1でも同様の問題が発生しています。

という事で、Windows Embedded Compact 2013の開発者の方は、Windows 8.1へのアップグレードとVS2012 Update 4の適用はしないようお勧めします。

※未確認ですが、VS2012 Update 4を適用しても問題無いよという人もいることはいます。

12/15追記(1)

VS2012とWEC2013をアンインストールし、再度VS2012+Update 3+WEC2013をインストールしてみました。現象変わらずですね。原因はUpdate 4では無いかもしれません。

WEC7/WEC2013用PCエミュレーターとDHCPサーバー

先日に引き続きWindows Embedded Compactのエミュレーターネタです。

このCEPC互換のエミュレーターはデフォルトでDHCP接続となっています。しかし、DHCPサーバーからIPアドレスを取得する際に、どうも相性の問題があるようで、すんなりとIPアドレスが取得できる場合と、どうにもIPアドレスが取得できない場合とがあるようです。そのたびにDHCPサーバを取っ換え引っ換え検証するのも面倒というのは当然の話です。

じゃあどうするかというと、エミュレーターのIPアドレスを静的アドレスで適切な値を設定すると、問題なく動作することが出来るようになります。これ、当たり前といえば当たり前ですが、気が付かないと、DHCPサーバーではまる人もいるので、備忘録的に書いておきます。

WEC2013+WEC7エミュレーターで動作しました

Windows CEシリーズの最新版、Windows Embedded Compact 2013(WEC2013)の開発環境では、いつものようにPC上で動作するエミュレーターが付属してきます。WEC2013からはWindows 7のVirtualPCか、Windows 8のHyper-Vのいずれかで、このエミュレーターが動作することになっています。ところがWEC2013付属のエミュレーターは、私が評価した範囲(Windows 7、Windows 8、Mac+Parallels)のどれでも安定して動いてくれません。どうもネットワーク関係があまり良くないみたいで、DHCPサーバーにアクセスしたところでHALTしてしまうようです。

はっきり申しまして、Platform Builderでのエミュレーターはいろいろなシーンでとても有効で、これが安定して動かないのはかなり困ります。

そこでWindows 7上でWEC7のVirtualPCエミュレーターを起動して、そこにWEC2013のCEPCを流し込んで見たところ、全く問題なく立ち上がる事を確認しました。同じPCで、WEC2013のVirtualPCエミュレーターでは、ダウンロードはできるものの、起動の途中でハングアップしてしまいます。こちらの原因は不明です。

20131107_173638

PBの裏で立ち上がっているのがWEC7の仮想マシンです

開発ライセンス的にかなりグレーなような気もしますが、WEC2013のエミュレーターで困っていて、かつWEC7のPlatform Builderを保有の方は一度お試しください。

なお私の場合、ホストOSにWindows 7 Professional x64(日本語)、そしてVirtualPC上にWindows 7 Porofessional x86(英語)+Platform Builderという構成です。WEC7エミュレーターはホストOS上で動作さていて、両エミュレーターは有線LAN経由でDHCPからIPアドレスを取得しています。

WEC2013用開発環境は英語版で構築しよう

少し前のことです。知り合いからWindows Embedded Compact 2013(WEC2013)でCTKを動かそうとすると、CTKが起動できないけど何か知っている?と問い合わせを受けていました。ちょうどその頃の私は、WEC2013の開発環境で別の問題にはまっていて、回答できないでいました。

そして昨日なんですが、関係者が集まるイベントが有り、そこでまたWEC2013+CTKが動かないという相談を受けました。確認したわけじゃなかったんですが、

「それってホストPCのOSを英語版にするとどうですか?」

って提言してみたのです。そしたら数時間後、「動きました!」って報告が()。

そうです。ホストPCのOSがWindows 7やWindows 8の日本語版では、WEC2013用のCTKは起動しないということが判明しました(2013年10月17日現在)。これ結構重要な話ですよね。昔から感じていますが、Microsoft本社では、WinCE/WECの開発環境では、ホストPCは彼らの環境、すなわち英語環境でしかテストをしていないと思っています。おそらく日本語のコードが何か悪さをしているとは思いますが、その解決策は見当たりません。同じような問題は過去にもあれこれありました。

という事で、昔からセミナー等でお話ししていますが、WinCE/WECの開発環境は、英語版ホストOS+英語版Visual Studio+Platform Builderで構築をしましょう。Microsoft本社と同じ開発環境下で開発をすることが、無用なトラブルを避けるコツなんです。

P.S.

ちなみに表示されるエラーメッセージは、以下。

A serious error has occurred, the application must close!
Error: The type initializer for 'Shell' threw an exception.
Reinstall the application.

eBOX-3310でWEC7:カーネルトラッカ

今日はWindows Embedded Compact 7のリモートツール、特にカーネルトラッカの使い方について説明します。なお今回から使用すベースのBSPはPlatform Builder 7に標準添付されているeBox3300を使用します。

さてこれまでもPBにはリモートツールというランタイムの動作状況を確認するためにリモートツールという便利なものが含まれていました。WEC7も同様で、PB7にリモートツールが含まれています。「Tools」-「Remote Tools」を選択するように、選択できるリモートツールが表示れます。ここでWEC7から追加になったのはTimeline Viewer(Kernel Tracker、Performance Monitor、Power Monitor)です。またPB6からドロップしたものとしてSpyがあります。

Remotetool01
さてこのリモートツールはTimeline Viewerを除き、基本的にこれまでと同様の使い方です。例えばターゲットデバイスのスクリーンショットを表示する「Zoom」を使ってみます。「Tools」-「Remote Tools」-「Zoom」を選択すると、接続するターゲットデバイスの選択画面が表示されます。ここでは「Windows CE」を開き、「(auto)Ether1」を選択します。

Remotetool02
しばらくすると、ホストPC上にターゲットデバイスのスクリーンショットが以下のように表示されます。

Remotetool04
次にカーネルトラッカを表示してみます。Zoomと同様に「Tools」-「Remote Tools」-「Kernel Tracker」を選択します。するとターゲットデバイスとの接続確認のダイアログは表示されずに以下のようなRemote Tools Frameworkウィンドウが表示され、PB6までは見たことのない画面が表示されます。そしてファイル入力を要求するダイアログが表示されるだけです。実はPB7からはカーネルトラッカはTimeline Viewerという事で、出力されたデータを表示するだけのツールになってしまったようです。

Remotetool05
Remotetool06
このカーネルトラッカに状態遷移のデータを表示するためには、PB6までとはビルド時に異なる設定が必要です。「Project」-「Properties」を選択し、開いたダイアログボックスから「Configuration Properties」を開き、「Build Options」を選択します。オプションの中から「Flush tracked events to release directory」をYesにします。そしてmakeimgコマンドを実行し、新しいNk.binを作ります。これで準備は終了です。

Remotetool07
カーネルトラッカのログを取るためには、ここでビルドしたNk.binをダウンロードし、実行します。この時、カーネルトラッカのログとして%_FLATRELEASEDIR%にcelog.clgというファイルが出力されます。本当であれば、実行時にこのcelog.clgを参照できればいいのですが、どうもデバイスをデタッチしてからでないと読むことができないようです。ここは注意点ですね。

さてある程度動作させてから、「Target」-「Detach Device」を選択し、ターゲットデバイスを停止した後、カーネルトラッカを起動します。そしてcelog.clgを選択すると、以下のようにログを読み込み、スレッド、イベント等の遷移を見ることができるようになります。

Remotetool08
Remotetool09
なおeBox3310はシングルコアですので、このスクリーンショットではわかりませが、マルチコアの場合はコアを選択するタブが現れます。異なるコアを選択することで、一画面に複数のコアを表示できることは確認済みです。

eBox3310でWEC7 - おまけのBSP編

eBox3310でWEC7を動かすためのBSPですが、eBox3310でWEC7 - その2でダウンロードしたICOP_eBox3310A_70B BSPを使ってというお話を書きました。このBSP起動はするのですが、起動中にエラーが出たり、それからRemote Toolがうまく接続できないという現象を確認しています。ちょっとその件で、どうしようか考えて、ちょっとお試しでPB7に標準で含まれるeBox3300のBSPの動作を確認してみました。

結果は、こちらのBSPでもeBox3310で動作することを確認しました。起動時のエラーもなく、またリモートツールもなんの問題無しに接続できています。

という事で、今更ですが、これからこのeBox3310の記事は、PB7標準の「eBox3300」BSPをベースに話をすることにします。軽く確認したレベルでは、USBキーボードも動作し、Ethernetもオッケーで、IEが外に問題なくつながっています。これだったらあまり問題にぶつからずに、色々と評価ができるでしょう。

# 問題のあるBSPの不具合原因は、時間があったら調べることにしましょう。

eBox-3310でWEC7 - その3(ダウンロード編)

少し時間が開きましたが、eBox-3310の話を続けましょう。前回はNk.binのビルドのほか、DiskPrepを使ってCFにEboot.binを書きこむところまででしたので、今日はダウンロード編です。

ホストPCからeBox-3310にNk.binをダウンロードするためには、それぞれをEthernetで接続します。Eboot.binはDHCPサーバーを要求しますので、何らかの形でDHCPサーバーに接続してください。私の場合、Platform Builder 7をParallels+Win7上に構築したため、Parallels側のネットワークは有線LANをBridged接続で指定しました。なぜか無線LANではダメだったので、ここは皆さんのネットワーク環境で色々と試してみてください。なおVirtual PC+Win7で構築した環境も試しましたが、こちらも有線LANをBridged接続しています。

Eboot.binを書き込んだCFをeBox-3310にセットし、PB7のメニューから「Target」-「Attach Device」を選択します。そしてeBox-3310の電源をONにしてしばらく待つと、Ethernet Download SettingsウィンドウにeBox-3310の名前が表示されるはずです。

Ethernetdowload
エミュレータでの時にも説明したように、この赤くなったデバイスを選択し、「Apply」ボタンをクリックするとダウンロードが始まります。

Devicestatus
ダウンロードが終了すると、そのままWEC7のカーネルが立ち上がって行きます。Outputウィンドウにはデバッグメッセージがたくさん出力されていることがわかります。なんかメッセージを眺めていたら「CeGetCallerTrus() called - NOT SUPPORTED IN CE7.」というメッセージが出力されて止まっています()。まぁ、とりあえず無視してGoすると、WEC7が無事に立ち上がります。この問題は後で考えることにしましょう。

Output
しばらくしてWEC7の画面が表示されたら、無事起動したということです。ちょっと確認のために「Target」-「Target Control」を開き、「gi proc」コマンドで動作しているプロセスを確認してみます。

Targetcontrol
Nk.exe、shell.exeを含め、全部で9個のプロセスが起動していることが見て取れます。Nk.exeのベースアドレスは0x80220000という事でカーネル空間、それ以外のプロセスは全て0x00010000という事でユーザー空間に配置されていることがわかります。アーキテクチャ通りです。

という事で、今日はここで終了。次回に続きます。

eBox-3310でWEC7 - その2

さて先日のブログではiCOP eBox-3310でWindows Embedded Compact 7が立ち上がったよという記事を書きました。今日は実際にeBox-3310を立ち上げるための準備編です。

eBox-3310を入手してもWEC7のBSPは残念ながら付属していません。Platform Builder 7のplatformフォルダを見ると、実は「ebox3300」というフォルダがあって、もしかするとこれをビルドすると動作するかもしれません。ただ動作の確認はしていませんので、eBox-3310の正しい手順を踏むことにします。元々のeBox-3310A-MSJKに関する技術情報はこのページに記載されています。ここからドキュメントと、BSP、SDK、AutoLaunch(何物かは未確認)、Eboot.binをダウンロードできます。これらをダウンロードしたあとは、同じWebページの記載に従い、各種ソフトウェアをインストールします(PB7はインストール済みの前提)。

  1. ICOP_eBox3310A_70B BSPをインストール。
  2. Vortex86DX_SDK_Compact7 SDKをインストール。
  3. AutoLaunch_v300_Compact7をインストール。

この一連の作業をすると、platformフォルダにはICOP_eBox3310A_70Bというフォルダが見えているはずです。これが今回のeBox-3310で使用するBSPとなります。このBSPには問題がある事がわかったので、PB7標準のeBox3300用BSPを使用することにします(12/18追記)。

次にNk.binをビルドする前に、とりあえずEboot.binをブートメディアに書きこんでみましょう。知り合いからはUSBやHDDでも動作したという情報もありますが、今回は1GBのCFメディアに書きこんでみます。書き込みにはDiskPrepという便利なツールを使って、ブートメディアを作ることになります。このDiskPrepはMSDN Archiveからダウンロード可能です。

このDiskPrepを立ち上げると次のようなダイアログが表示されます。「Disk Selection」では書きこむターゲットメディアを指定します。そして「Load specific image copied from」では実際に書き込むイメージ、ここではダウンロードしたEboot.binを指定します。これらの指定が正しくされていることを確認し、「OK」ボタンをクリックすると、起動ディスクとしてのCFが出来上がります。

Diskprep

起動ディスクとして構築されたCFカードは、eBox-3310のCFスロットにセットし、電源を入れてください。eBox-3310のBIOSは出荷状態のまま特に変更する必要はありません。電源を入れると、最初にBIOSからのメッセージが出力されたあと、うんともすんとも言わなくなります。実はこの時、シリアルポートからメッセージを出力しているようですが、eBox-3310にはシリアルポートが実装されていないので、残念ながらこのメッセージを見ることはできません。簡単な工作でシリアルポートの実装は出来ますので、腕に自信のある方はぜひチャレンジしてみてください()。

この時、EthernetではDHCPサーバーからのIPアドレス取得を試みています。DHCPサーバーに接続しておけば、IPアドレスを取得して、BOOTMEパケットを送信しているはずです。ここまで来ればNk.binのダウンロードまで、あと一息です。

という事で、次回に続く(と言っても、明日から出張なので、しばらく休みます)。

【追記】

ちなみにこのDiskPrep。当然ですが外部ディスクとして認識できるものであれば、FD、USB、SD Card、HDD等にEboot.binやNk.binを書きこんで起動ディスクとする事ができます。CEPC利用時には必須のツールです。

eBox-3310でWEC7 – その1

これまでこのブログでは細々とですが、Windows CE/Windows Embedded Compactに関する記事を書いてきました。しかしそのターゲットマシンは主にエミュレータということで、ちょっと物足りない状況だったとは思います。それで今更ですが、比較的買いやすく、かつWindows CE/Windows Embedded Compact用のBSPが入手できるデバイスを購入しましたので、しばらくはこのデバイスを中心に話を進めていきたいと思います。

今回購入したデバイスはiCOP eBox-3310という小型PCで、x86互換のCPUが搭載されていて、iCOPが提供しているBSPがそのまま動作するという優れものです。大きさはLCD裏面のVESAマウントにピッタリ装着できるサイズです。iCOPからはWEC7用としてeBox-3310A-MSJKというキットが出ていて、eBox-3310はそこから幾つかの周辺デバイスがドロップしている仕様です。簡単にeBox-3310A-MSJKの仕様を記すと共に、eBox-3310ではドロップされている機能を追記します。

  • 1.0GHz Vortex86DX System-On-Chip
  • XGI Z9s Video with VGA output
  • 512MB soldered on DDR2 system memory
  • Enhanced IDE (UltraDMA-100/66/33) interface
  • CM119 USB Audio
  • 10/100Mbps Ethernet
  • Three USB 2.0 Host Interfaces
  • Two RS-232 Serial ports (eBox-3310には無し)
  • Internal Mini-PCI expansion slot (eBox-3310では未確認)
  • Type I/II Compact Flash Slot (Support Storage card only)
  • Micro-SD
  • PS/2 keyboard & mouse interface

このeBox-3310はAmazon.co.jp経由でサンコーレアモノショップというお店で\15,800にて購入できます。この価格でWEC7が動作するCEPCを入手できるというのは安いと言わざるを得ません。このeBox-3310を購入するにあたり、実は私の自宅には外部入力のできるLCDディスプレイがなかったので、一番安いBenQの15型LCDディスプレイと、eBox-3310で動作確認済みのGREEN HOUSE GH-CF16GFXというCFカードを購入しました。もっともカードは、自宅に落ちていたサンディスクの1GB CFでも動作したので、後から考えたら購入不要でしたが、ま、しょうがないでしょう。

という事で、今日はそのeBox-3310の写真とeBox-3310でWEC7が動作した写真だけをご紹介します。結果として簡単に立ち上がったのですが、ちょっとまごついたこともありますので、ポイントを何回かに分けて説明しています。

eBox-3310のパッケージです。パッケージもほんとうに小さいです。

Pl230001

これがeBox-3310です。CFスロットやUSBスロットの大きさからどれだけ小さいかがわかると思います。

Pl230009

カードにNk.binを書きこんで、そのまま起動してみました。

P1010652

Platform Builder 7からNk.binをダウンロードして起動しました。左側はホストPCのThinkPad、右側が安く買ったBenQの15型LCDモニタとUSBキーボードです。

P1010653

という事で、次回に続きます。

Windows 7のVirtual PCだとPB7.0もバッチリです

自宅の実験用PCにはWindows 7+Parallels+Windows 7環境にPlatform Builder 7.0をインストールしていろいろとやっている私ですが、このほどWindows 7+Virtual PC+Windows 7環境を試してみました。結論を書きますと、Windows 7用のVirtual PCはすこぶる快適で、Platform Builder 7.0も基本的にサクサク動作します。全然問題ないです。

Parallelsの方が自由度は高いと思いますが、Windows Embedded Compact 7の開発をするだけだったら、Windows 7 Professionalだったら無料でダウンロードできるVirtual PCで十分です。ゲストOSをVirtual PCイメージで立ち上げれば、エミュレータへのNk.binのダウンロードも全く問題ありません。速度も速いです。

ぜひ、お試しあれ。

【追記】

Windows VistaまではVirtual PC 2007となりますが、こちらは遅くてお勧めできません。