Providing Bluetooth Functionality on Embedded Devices: A look at Embedded Operating Systems and
Bluetooth Stacks
Brian Fox
Rhodes University Computer Science Honours Supervisors:
Dr Greg Foster and Prof. Peter Clayton
Background and Objectives
Part of the AWIS project
Aim was to design and build a custom OS image that exposed a Bluetooth API to application programmers
Initially, the focus was specifically on Microsoft Windows CE .NET.
It broadened to include looking at other embedded OS’
The Operating Systems
Looked at:
in theory: Windows CE .NET, Windows XP Embedded, Wind River VxWorks and QNX Neutrino
in practice: Windows CE .NET and SnapGear Linux
All highly modular in design
Support a wide variety of target hardware
Windows CE .NET Architecture
OEM Hardware Embedded Shell
Applications Applications
WIN32 APIs
COREDLL, WINSOCK, OLE, COMMCTRL, COMMDLG, WININET, TAPI Windows CE Shell Services
Remote Connectivity
WIN32 APIs
COREDLL, WINSOCK, OLE, COMMCTRL, COMMDLG, WININET, TAPI Windows CE Shell Services
Remote Connectivity
Kernel
Library Blue-
tooth GWES Device
Manager
File Manager
TCP/IP Kernel
Library Blue-
tooth GWES Device
Manager
File Manager
TCP/IP OAL
Bootloader Drivers Device
Drivers File Drivers OAL
Bootloader Drivers Device
Drivers File Drivers
Windows CE .NET
Microsoft major portable embedded OS
Allows for simultaneous
software/hardware development through use of Board Support Packages and emulation
Only vendor to supply a Bluetooth stack with the OS
Design done through the Platform Builder IDE
Platform Builder
Integrated Development Environment
Provides the means to create, build, deploy and debug a custom image of the OS
Provides an emulator to allow for simultaneous hardware and software development
Automatically determines dependencies between modules
Practical experience
Have built a headless operating environment exposing Bluetooth functionality through the WINSOCK API
Platform Builder
Microsoft Bluetooth Stack
QNX Neutrino Architecture
QNX Neutrino
Designed around microkernel and central software bus
“Plug-in” type architecture
Inter-process communication via message passing handled by the microkernel
OS exposes standard POSIX API
Platform creation either manual or through use of the Momentics Professional Edition IDE
Will run on multiple host platforms
Wind River VxWorks
Modules implemented on top of the core OS
Core OS consists of a microkernel and debug agent and interacts with the BSP
Platform creation either manual or through use of the Tornado IDE
SnapGear
Fully embedded implementation of the Linux 2.0, 2.4 & 2.6 kernels
Normal Linux will not run in an MMU-less environment
Compacted libraries
Does not use board support packages
The kernel is configured and then cross- compiled to a specific target platform
This image can then be emulated
SnapGear Configuration
BlueZ
Open source Bluetooth stack
compatible with most Linux 2.4 -2.6 kernels
Not a full stack implementation
Methodology
Where possible I tried to follow the manufacturer’s advice
Especially in the commercial OS’ the manufacturer is trying to make their product as easy to use as possible
Any testing was done on an emulator
Results
Building a basic image in either OS was very easy
Customising CE .NET was considerably easier
Customising SnapGear required
customising low level kernel features which are contained within the Microsoft BSP
This could be considered a benefit to using SnapGear if you had the knowledge and were looking for that level of control
Results
SnapGear produced the smaller image in both cases
Minimum image size:
SnapGear image size was 130kb
apparently you can get it smaller
Windows CE .NET was 200kb
Customised image size:
SnapGear image was 700Kb
Windows CE .NET was 1118kb
Further Work
Would be nice to deploy an image to a test processor board and Bluetooth development board to test
Windows CE 5.0 has just been
released so this could also be looked at
Further work surrounding embedded systems architecture and design