BootLoader - Microsoft

HIDEYATAKANE
COMRADE CORP.
Agenda
OSが動作するには?
BootLoader概要
OAL概要
KITL概要
DeviceDriver概要
CE開発環境
OSのチューニング方法
OSが動作するには
BootLoader
ハードウエアの初期化
OSイメージのロード
BootLoader
ROM/RAMもしくは
HostPCに格納された
OSイメージ
通称NK.bin
Hardware
OSが動作するには
OSイメージの展開
OSとしての初期化
スタート
Application
Service
CE Kernel
OAL
Drivers
Hardware
KITL
OSが動作するには
OAL,KITL,Drivers
OAL=Kernelが必要とするハード依存コード
KITL=Hostとの通信やDebug用のコード
Drivers=各種ハードウエア向けDriver
HostPC
CE Kernel
OAL
RTC
Timer
Drivers
LCD
Audio
KITL
Serial
Ether
Host
Hardware
OSが動作するには
BSPとは
Board Support Packageの略
ハードウエア依存のモジュールを集めたもの
BootLoader
OAL
Drivers
KITL
BSP
BootLoader概要
BootLoaderの主な作業
CPUやメモリの初期化
SerialやLEDなど、デバッグポートの初期化
デバッグ機能を有効にする
各種ハードウエアの初期化
Ethernet機能を有効にする
DownLoad機能を有効にする
目的の場所からdownloadおよびOSの展開
OSに処理を渡す
BootLoader概要 Step1
Main
Startup
CPU
初期化
メモリ
初期化
LED
初期化
・・・・・
BL
COMMON
BootLoader概要 Step2
BootLoaderMain
初期化
OEM
DebugInit
OEM
PlatformInit
Debug
・・・・
OEM
ReadDebug
Byte
OEM
WriteDebug
Byte
・・・・
BootLoader概要 Step3
BootLoaderMain
Ethernet
OEM
Eth
GetFrame
OEM
Eth
SendFrame
Download
・・・・
OEM
ReadData
OEM
Show
Progress
OS
・・・・
BootLoader概要 eBoot
どちらを使用する?
NK.bin
NK.bin
Ethernet
TargetBoard
HostPC
BootLoader概要 CEPC
Windows Vistaなどが動作するx86アーキテ
クチャ上でWindow sCEを動作させる
BootLoaderと基本BIOSが搭載済み
LoadCEPC.exeによりWindows CEを起動
基本デバッグに有効
OAL概要 OALとは?
Oem Adaptation Layerの略
Kernelが動作するために必要なハード依存部
分のモジュール群
BootLoaderと同等の作業+α
メモリマップ、各種クロック設定などもOAL
既定のライブラリの中身を開発
OAL概要 OALの構造
CE Kernel
OAL
...
Power
Library
IOCTL
Library
Interrupt
Library
OS Timer
Library
Cache
Library
Cache
Startup
Library
RTC Library
Timer
Hardware(CPU)
RTC
KITL概要 KITLとは?
KernelIndependentTransportLayerの略
TargetBoardのKernelとHostPCを接続し、
デバッグやリモート操作などを可能にする
通信経路として、USB,Serial,Ethernetなどをサ
ポート
KITL概要 KITLの構造
CE Kernel
Kernel Debugger
KITL
HostPC
KITL IOCTL
PKITLTRANSPORT
Hardware
USB
Serial
Ethernet
Host
Hardware
KITL概要 KITLにできること
KITL
Debugger
Shell
RemoteTool
Break Point
Memory
read/write
Step
etc
Command
File Viewer
etc
Registry
editor
KITL概要 KITL応用(MontecarloProfile)
システムの遅延調査として有効
一定期間の全タスクの稼働頻度を計測
実装
OEMProfileTimerDisable()の実装
OEMProfileTimerEnable()の実装
OEMInterruptHandler()内で適切にProfilerHit()をコール
実行
「Target Control」で「Profon」と「Profoff」
Viewerに稼働頻度の高い順にTaskを表示
Device Driver概要 DeviceDriverとは?
TargetBoardが持つI/Oをコントロール
Kernelとは無関係に動作するもの
KernelModeとUserModeの2種類が存在
インターフェースに規定がある
Device Driver概要 DeviceDriverの体系
UMD
Host Process
Driver
Driver
CE Kernel
DeviceManeger
Driver
Driver
BusDriver
File System
Manager
File
System
Driver
File
System
Driver
Graphics,
Windows,
Events (GWES)
Mouse
Driver
Display
Driver
Hardware
Device Driver概要 UserModeDriver
Application
UMD
Host Process
UserMode
Driver
CE Kernel
DeviceManeger
Reflecor Service
Device Driver概要 KernelModeDriver
Application
CE Kernel
DeviceManeger
KernelMode
Driver
Device Driver概要
KernelModeDriver VS UserModeDriver
DeviceDriver
Topic
KernelMode
パフォーマンス
〇
〇
安全性
ハードウエアアクセス
〇
〇
〇
ユーザインターフェース
Win API
Kernel API
UserMode
〇
Device Driver概要
Device Driverのインターフェース
DLLENTRY
INIT
DEINIT
OPEN
CLOSE
READ
WRITE
SEEK
IOCONTROL
POWERON
POWEROFF
(ドライバーの有効化と無効化)
(ドライバの初期化)
(ドライバーの終了処理)
(ドライバーのオープン)
(ドライバーのクローズ)
(デバイスからの読み込み)
(デバイスへの書き込み)
(ポイントのシーク)
(ドライバー独自の呼び出し)
(電源ON時の処理)
(電源OFF時の処理)
Device Driver概要 IOCONTROL例
無線LAN
OID一覧
OID
概要
OID_802_11_BSSID
BSSID を取得します。
OID_802_11_SSID
SSID を取得/設定します。
OID_802_11_ADD_WEP WEP キーを設定します。
OID_802_11_ADD_KEY
認証/暗号キーを設定します。
OID_802_11_RSSI
電波強度を取得します。
・・・
・・・
CE開発環境 Platform Builder
VisualStudio2005のプラグインツール
x86,ARM,SHx,mipsをサポート
Kernelソースコードの利用を指定
CEの開発環境一式が含まれる
Compiler
Debugger
Viewer(RemoteTool) etc
多くのBSPサンプルが含まれる
MainStoneⅢ PXA27X(ARM)
NEC DDB Vr5500A(MIPS)
St Micro STi7109(SH4)
HP Compaq t5530(x86) etc
HIDEYATAKANE
COMRADE CORP.
CE開発環境 CE開発の実情
組込み機器で採用されることを想定したリファレンスボードには、
そのボードが動作するためのBSPが付属していることが多い。
CEでOSを開発する場合、1からBSPを開発することは少なく、
このようなリファレンスBSPをベースにするケースが多い。
BootLoader
OAL
Drivers
KITL
Reference BSP
OSのチューニング方法 QFE
Windows Embedded CEは最新のQFEが必須
QFEは毎月のペースでリリースされている
差分提供であるため、全適用が基本
「CE Update Check」が有効
OSのチューニング方法 QFE
スレッドプライオリティーの設定(1)
例)PrinterDriver > WLANDriver > USBDriverであるため、
USB Driverが処理しようとしても、
上位スレッドが優先されて呼ばれるため、
全体的なボトルネックが発生してしまう。
PrinterDriver
Priority=60
USBDriver
Priority=240
WLANDriver
Priority=120
OSのチューニング方法 QFE
スレッドプライオリティーの設定(2)
実際には多様に絡み合うので、プライオリティーの設定は
慎重にかつ適切に行う必要がある
PrinterDriver
USBDriver
WLANDriver
APP
NDIS
LANDriver
PCIDriver
HDDDriver
© 2006 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.