Windows CE Device Drivers - Corso Aziendale


Windows CE e' un sistema operativo con prestazioni soft real-time, disponibile per un buon numero di processori e particolarmente indicato per sistemi embedded. Uno dei grandi pregi di Windows CE e' la possibilita' di utilizzare gran parte dei tool e delle conoscenze gia' apprese per Win32, tra cui anche la possibilita' di sviluppare codice .NET (con il cosiddetto Compact Framework).
Tuttavia, sviluppare per Windows CE significa di solito scrivere anche porzioni di codice vicine all'hardware, tipicamente per gestire periferiche custom. Non di rado, e' anche necessario customizzare la piattaforma, ritagliando quanto e' necessario, escludendo le parti non utili del sistema operativo, e personalizzando la gestione di alcuni device. Anche in questo caso, puo' essere utile od indispensabile conoscere meglio l'architettura di dettaglio del sistema, ad esempio per ridurre al minimo la latenza di un interrupt gestendolo direttamente al livello OEM Abstraction Layer (OAL) anziche' attendere che venga riflesso in user mode.
Questo corso si prefigge l'obiettivo di introdurre l'architettura dei driver di Windows CE, sia per i piu' semplici driver "user mode" (Stream Driver) che per i driver nativi, scendendo sino all'esame delle piu' importanti porzioni del codice del sistema operativo.
Per chi si avvicina per la prima volta alla programmazione di sistema in Windows [CE], e' altresi' prevista la possibilita' di approfondire preliminarmente alcuni argomenti sugli strati piu' alti del sistema operativo (thread, primitive di sincronizzazione, ecc) che risultano indispensabili per comprendere a fondo il modello dei driver.

Dettagli sul corso

Durata: da 3 a 5 giorni in funzione degli argomenti selezionati, dell'approfondimento e del numero di esercizi.
(con possibilità di ulteriori giornate di workshop basate sul codice ed i progetti dell'azienda)

Partecipanti: massimo 10.

Prerequisiti: Conoscenza di base della programmazione embedded (familiarita' con i concetti di interrupt, I/O, ecc). Il corso assume una conoscenza di base del linguaggio C. Se non si ha familiarita' con la programmazione di sistema in ambiente Windows 2000 / XP o CE (quindi: conoscenza di concetti come semafori, thread, eventi, memory mapped file, ecc) e' consigliabile optare per la versione estesa del corso (5gg) che introduce anche questi argomenti.

Programma del corso:

Windows CE System Programming (optional)
      Architecture
      Processes, Threads, Fibers
      Synchronization primitives
      Memory Architecture
      Virtual Memory API
      Heap; Optimizing an application footprint
      Memory Mapped File
      More Shared Memory Techniques
      Named Message Queues
      Thread Local Storage
      Dynamic-Link Libraries (DLLs)
      Device I/O
      Object Store
      Windows CE Database
      TCP Socket
      IRDA Socket
      Bluetooth Socket
      Serial Port
      WNET & Disk Mapping

Driver Architecture
      Built-in (or Native) Drivers
      Installable (or Streams) Drivers
      Hybrid Drivers
      Bus Drivers
      OAL (OEM Abstraction Layer)
      Interrupt handling
      Interrupt Service Routine - Interrupt Service Thread
      Services Vs. Drivers - The Superservice

Stream Interface Drivers
      Device Manager
      Standard functions & responsibilities
            Init, Deinit, Open, Close, Read, Write, Seek, IOControl, PowerDown, PowerUp
      Hardware access - Process Memory Access
      Power Management
      I/O Resource Manager
      Registry enumerator
      Sample Stream Driver

Services
      Standard functions & responsibilities
      Init, Deinit, Open, Close, Read, Write, Seek, IOControl, PowerDown, PowerUp.
      Using the SuperService
      Sample Services

Interrupts in User Mode
      Interrupt Service Thread
      Nesting, Priorities and Latencies
      Samples

Physical Memory Access in User Mode

OAL and the Native Drivers
      Image File, Boot Loader, Boot Sequence

Inside the OAL Source Code
      StartUp
      KernelStart / KernelInitialize (x86)
      OEMInitDebugSerial
      OEMInit
      OEMInterruptEnable()
      OEMGetInterrupt()
      OEMRequestSysIntr()
      OEMTranslateIrq()
      OEMTranslateSysIntr()

Writing your own Interrupt Service Routine

Power Management in OAL

Platform Builder Drivers Tour
    PCI
    Battery
    PCMCIA
    Keyboard
    Display
    Audio
    USB
    Network
    File System Driver
    

Creating an Image


Se siete interessati a questo seminario aziendale, potete compilare la seguente richiesta di contatto per fissare un possibile incontro.


  torna alla pagina dei corsi