★【 My Biz Blog 】★

興味のあるビジネス情報を伝えていきます♪
(IoT,Azure,Windows 10, etc...)

Windows CE App Container

2020-08-12 09:55:15 | Windows Embedded CE/Compact
組込み機器向けOSとして、様々な機器に搭載されてきたWindows CE系OS。

Windows 10 IoTがリリースされてしばらく経ちますが、
その間、Windows CEの延長サポートも終わり、
サポート期間が終わっていないのがWindows Embedded Compact 7と
Windows Embedded Compact 2013のみとなりました。
詳しくはこちら

そんな中、Windows CEのアプリケーションを
Windows 10 IoT用にマイグレーションするドキュメントが公開されています。
記事はこちら

名前からすると、Windows CEアプリを実行できるコンテナをWindows 10 IoT上で提供するような感じですが、
「Windows 10 IoT Core 上で Windows CE 2013 インスタンスを実行することで実現する」という記載があるので、
正確にはWindows 10 IoT上でWindows CEを動作できるようにするので、OS + アプリをそのまま動かしてしまおう・・・
というもののようです。

MicrosoftのブログTech Communityにも記事が上がっていますね。
記事はこちら

詳細がわかったら、また紹介したいと思います。


Visual Studio Community 2013でWEC2013 OS開発ができるか?

2014-12-07 07:30:35 | Windows Embedded CE/Compact
先日、Visual Studio Community 2013がリリースされました。

このエディションは、無償提供(エンタープライズでの使用は除く)なんですが、
Visual Studio 2013 Proffesion版と同等でアドインが使用できるとのこと。

ということは、Windows Embedded Compact 2013のPlatform Builderをインストールして、
OS開発ができるのでは?・・・という疑問が湧いてきます。


ということで(?)、早速チャレンジしてみました(笑)。


■Visual Studio Community 2013の取得
Visual Studio Community 2013 with Update 4は、
以下のサイトからダウンロードできます。
こちら

自分はとりあえずISOイメージのみダウンロードしました。
日本語のLanguage Packは使用せずに確認しています。


■Visual Studio Community 2013のインストール
インストールウィザードに従って、インストールを進んてください。
特に悩むところはないかと思います。

Visual Studio 2013 Proとのインストールの違いは、
特に見受けられませんでした。


■AppBuilderのインストール
次にWEC2013関連のインストールを行っていきます。
まずはApplication Builder for Windows Embedded Compact 2013のインストールから。

AppBuilderはDownload Centerから入手できますが、
自分はWEC2013 ToolkitのISOイメージに付属のAppBuilderを使用してみました。

こちらも全く問題なくインストールできました。


■WEC2013 Toolkitのインストール
続いてWEC2013 Toolkit(通称:Platform Builder)のインストールを行います。
ToolkitのISOイメージはWindows Embeddedのポータルサイト経由で取得してください。
こちら

Toolkitのインストールも問題なく完了します。
※なお、私の環境では、ARM CPU用モジュール類はインストールしていません。

上記でインストール作業は完了です。


■OSのビルドとHyper-Vでの起動確認
Visual Studio Community 2013を起動し、ファイルメニューからプロジェクトの新規作成を行います。
ちゃんとPlatform Builderがあることが確認できました。

これを使って適当なプロジェクトを作成し、OSをビルドしてみました。
こちらも全く問題なくビルドできてしまいます。


この後、ビルドしたOSをHyper-Vで起動させてみました。
で、問題なく起動しました!





ということで、

結論:Visual StudioCommunity 2013を使用して、Windows Embedded Compact 2013のOS開発ができる!


※ただし、Visual Studio Community 2013およびWindows Embedded Compact 2013のライセンスに則って開発してくださいませー。

OSイメージのみでデバイスにEthernetダウンロード

2014-09-14 00:58:12 | Windows Embedded CE/Compact
OSイメージ(nk.bin)をPlatform BuilderがインストールされたVisual Studioで開くことができて、

ファイルやレジストリ初期値を確認することができることは

これまでの開発経験で知っていましたが、

それだけではなくて、OSイメージをEthernet経由でデバイスにダウンロードさせて

起動できることを最近知りました。

そう、OSイメージのプロジェクトファイル無しで。



もちろん、デバイス側がVisual Studio経由でのEthernetブートに対応している必要がありますが。



プロジェクトファイルといった開発用のファイルがなくても、

nk.binがあればOSイメージを確認できるっていいですね。



手順も単純で、Visual Studio起動させて、

ファイルメニューで[開く]->[プロジェクト/ソリューション]を選択して、

ファイル選択ダイアログで任意のnk.binを選択して、

開いたらTARGETメニューからAttachを選択。

以降は通常の開発でのEthenetブートの手順と同じ。


OSイメージ開発用のプロジェクトファイルがないと、

Ethernetダウンロードとかできないと思っていたので、

これはちょっと衝撃的でした(^_^;)







リモートでのデバイスアタッチに失敗した後の復帰方法

2014-09-08 00:55:16 | Windows Embedded CE/Compact
原因はわかっていませんが、とりあえず対処方法だけ・・・。


Windows Embedded Compact 2013で、

リモート(Ethernet経由)でデバイスにOSイメージを送り込む時に、

対象のデバイスからBootMeパケットを送信させている状態で

Visual Studio 2013のTARGETメニューから[Attach]を選択し、

対象デバイスを選択しますが、

その直後になぜか接続が切れ、OSイメージが転送できず、

さらにVisual Studio側で以下のメッセージが表示される場合があります。





このメッセージが出ると、Visual Studio側の操作ができません・・・。

⇒Visual Studio側で何か操作しようとすると、上記の画面が表示され、

 この画面を閉じ、再度操作しようとするとまた上記画面が出る・・・。


この現象が出たら、タスクマネージャーを起動し、

[Platform Builder Windows Embedded Compact Service Host]を

強制的に終了させてください。





終了させても、再度サービスは起動して表示されますが、

これでVisual Studio側の操作ができるようになっているはずです。

Visual Studioが操作できるようになったら、再度Attach操作を行ってみてください。

Minimal Shellのカスタマイズ(2)

2014-09-06 02:03:49 | Windows Embedded CE/Compact
以前の記事で、Minimal Shellにメニューを追加しましたが、

今回は背景画像を変える方法。


背景画像はRegistryでは変更できなくて、

Minimal Shellの画像ファイルを変更してビルドしてやる必要があります。


①ソースコードを適当なフォルダ(例えばC:\WINCE800\others)にコピーする。

 Minimal Shellのソースコードは以下のフォルダにあります。

 C:\WINCE800\public\shell\oak\MinShell


②OSイメージのプロジェクトのSubprojectにコピーしたMinimal Shellを追加

③sourcesファイルを書き換え

 ・RELEASETYPEをLOCALに変更

 ・_ISVINCPATHを追加し、必要なヘッダファイルが格納されたフォルダを指定

  $(_WINCEROOT)\public\common\sdk\incなど

 ・TARGETLIBSのLibファイルの指定を修正。

  $(_COREDLL) ⇒ $(SG_OUTPUT_ROOT)\sdk\lib\$(_CPUINDPATH)\coredll.libなど


④背景画像(desktop.bmp)を変更

 表示したい画像をdesktop.bmpという名前にして、既存のファイルを上書きするか、

 minshell.rc内のIDB_DESKTOP BITMAPに定義されているファイル名を変更するかしてください。


⑤レジストリの追加

 以下の内容がレジストリに含まれるようにしてください。

 [HKEY_LOCAL_MACHINE\init]
"Launch80"="minshell.exe"
"Depend80"=hex:1e,00, 3c, 00


⑥カタログでMinimal Shellを指定していたら、チェックを外してください。

⑦OSをビルド。


すると、たとえばこんな感じで背景画像を変更できます(笑)。











WEC2013のShell系API

2014-09-05 19:51:44 | Windows Embedded CE/Compact
WEC2013でExplorerシェルはなくなりましたが、

Shell APIは使えると思っていたのですが、

libの一部がなくなっている模様。

というか、APIは存在するけど、アプリに公開されていない・・・

というのが正しいのかも。



たとえば、「SHFileOperation」関数は

Ceshell.libをインポートすれば使えると思っていたけど、

そもそもこのCeshell.libが見当たらない。



Publicの以下のフォルダに、ソースコードは存在していました。

C:\WINCE800\public\shell\oak\shellapis\ceshell\api

なので、最終的にはどこかのDLLに含まれているとは思うんですが・・・。



含まれているDLLがわかれば、

最悪GetProcAddressで関数を動的に呼び出せるけど、

できればやりたくないなぁ・・・。



WEC7以前のソースコードを移植する際には、

こういったLibのチェックも必要ですね。



XAML for WECの変換ツール

2014-08-26 01:36:45 | Windows Embedded CE/Compact
Windows Embeddec Compact 7で、Silverlight for Windows Embeddedという仕掛けがありました。

GUIをXAMLで記述し、コードビハインドをC++で記述するアプリが作成できます。

WEC2013ではXAML for Windows Embeddedという名前に変わっています。


で、来週のセミナーのデモのために、

XAML for Windows Embeddedでアプリを作成していたところ、

そのままだとビルドが通らなかったので、

備忘録。


Visual Studio 2013には、SilverlightといったXAMLを使用するアプリを作成するために、

Blend for Visual Studio 2013というツールを提供しています。

このツールを使用して作成したSilverlight用のプロジェクトを

WEC2013向けにコンバートすることができます。



で、コンバートしたプロジェクトは、

WEC2013 OSのSubProjectとして取り込むことができますが、

なぜかビルドが通りませんでした。



その理由は、Silverlight用の設定が一部残ってしまっているためなようです。

コンバートしたプロジェクト内に、(プロジェクト名).xrpackというファイルがありますが、

この中にBlend for Visual Studio2013で作成した時のプロジェクト設定

が残ってしまっています。


 ⇒/Project=XXXX.csproj

この行を削除して、再度ビルドしてみてください。















WEC7とWEC2013の違いについて

2014-08-07 07:57:25 | Windows Embedded CE/Compact
以前の記事『WEC2013のデバッグツール』でも書きましたが、

WEC7からWEC2013になって、いくつかの機能が削除されていたりします。


WEC7とWEC2013のカタログアイテムの差異については、

MSDN内のCatalog Changes from Compact 7 to Compact 2013

まとめられています。


XPライクなStandard Shellがなくなったなんていうのは有名でしたが、

その他にもActiveSyncやSMBサーバ機能といったリモートでファイルを操作する機能、

スマートカード関連機能なんかも削除されていますね。



OS選定時には、要注意です。

場合によっては一つ前のバージョンであるWEC7を選択することも検討が必要ですね。


Minimal Shellのカスタマイズ

2014-08-02 01:24:40 | Windows Embedded CE/Compact
Minimal Shellにメニューを追加する方法の備忘録。

例として、前回移植したCERDispを起動するトリガーを作ってみました。


手順は簡単。

レジストリに以下のようなキーを追加します。

[HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\Minshell\Remote Display]
"App"="cerdisp.exe"
"Param"="-c"

で、OSイメージを作成して実行してみると、

以下の通り。

コマンドプロンプトの下に、追加したキーが表示されます。





クリックすると、「cerdisp.exe」が実行時パラメータ「-c」を伴って呼び出されます。

WEC7のデバッグツールをWEC2013に移植してみる

2014-08-01 00:03:32 | Windows Embedded CE/Compact
WECについて説明会をする機会があったので、

前回話題にしたCERDispをデモ用にWEC2013に移植してみました。


ライセンスをちゃんと調べてないので、

ソースコードは載せれませんが、

手順と変更ポイントだけ記載しておきます。


①WEC7のCERDispフォルダと、同じ階層にあるIncフォルダをコピーする。

 ⇒Incフォルダ内のcerdisp.hを使用しているため。


②適当なOSイメージ用プロジェクトを作成し、

 そのSubprojectとしてCERDispを登録する

 ⇒SubprojectとしてSourcesファイルを選択する。


③Sourcesファイルをいろいろと変更

 ・RELEASETYPEをLocalに変更
  ⇒RELEASETYPEについてはこちらを参照

 ・_ISVINCPATHとして$(_WINCEROOT)¥public¥common¥sdk¥incと
  $(_WINCEROOT)¥public¥common¥oak¥incを追加
  ⇒Yenマークは全角なので、コピペするなら気を付けて。
 
 ・TARGETLIBSにcoredll.libとws2.libを追加。
  ⇒それぞれのlibに、パスもつけてください。


④CERDisp.cppをいろいろと変更

 ・pkfuncs.hをインクルード

 ・タスクトレイ関連の処理を削除
  ⇒WEC2013ではExplorerシェルがなくなっているので。


意外とあっさり移植できちゃったりしました。

⇒まぁ、単純なアプリだし。


これがWEC2013に搭載されていない理由は、

セキュリティ的な問題かなぁ・・・。