Introduction to Embedded Software Development
description
Transcript of Introduction to Embedded Software Development
Introduction to Embedded Software Introduction to Embedded Software DevelopmentDevelopment
School of software EngineeringSchool of software Engineering20052005
8. Board Support Package 8. Board Support Package DevelopmentDevelopment
AgendaAgenda
BSP DevelopmentBSP Development
Using the Standard CETK Tests Using the Standard CETK Tests
BSP IntroductionBSP IntroductionA board support package (BSP) is software that implements and supports an OS on a standard development board (SDB). With a BSP, you can rapidly bring up an OS on an SDB and evaluate the features of the OS. Using a BSP, OEMs and independent hardware vendors (IHVs) can reduce the time required to develop a Windows CE–based platform.
BSP, CSP & OALBSP, CSP & OAL
CSP : CPU Support PackageCSP : CPU Support Package A package that consists of an OAL and A package that consists of an OAL and
device drivers to support a given CPU or device drivers to support a given CPU or CPU companion chipset regardless of CPU companion chipset regardless of what hardware board or hardware what hardware board or hardware platform they are on.platform they are on.
Usually Provided by OS Development Usually Provided by OS Development corporation. For Win CE, that’s corporation. For Win CE, that’s MicrosoftMicrosoft
BSP, CSP & OAL (2)BSP, CSP & OAL (2) OAL : OEM abstraction layerOAL : OEM abstraction layer
The layer between the Windows CE kernel The layer between the Windows CE kernel and the hardware of your target device. and the hardware of your target device. This layer facilitates communication This layer facilitates communication between your operating system (OS) and between your operating system (OS) and your target device. After being called by your target device. After being called by the boot loader, the OAL routines the boot loader, the OAL routines implement platform initialization, interrupt implement platform initialization, interrupt service routines (ISRs), the real-time clock service routines (ISRs), the real-time clock (RTC), the interval timer, debugging, (RTC), the interval timer, debugging, interrupt enable/disable, and profiling.interrupt enable/disable, and profiling.
Provided by Hardware OEMsProvided by Hardware OEMs
BSP contains…BSP contains…
Element Description
Boot loader During development, downloads the operating system (OS) images.
OEM adaptation layer (OAL) Links to the kernel image and supports hardware initialization and management.
Device drivers Support peripherals on-board or are attached at run time.
Configuration files Once created, a BSP can be reconfigured through environment variables and .bib and .reg file modifications.
BSP ArchitectureBSP Architecture
OALDrivers
Configuration Files
Boot Loader
SDB
BSP
Creating BSP, two waysCreating BSP, two ways
Writing a whole new BSP yourselfWriting a whole new BSP yourself Should write all OAL, Drivers, BootloaderShould write all OAL, Drivers, Bootloader Will cost approximate 20 man-monthWill cost approximate 20 man-month
Cloning an existing BSPCloning an existing BSP The easiest way for you to create a new The easiest way for you to create a new
BSP is to clone an existing BSP that is BSP is to clone an existing BSP that is designed for similar hardware.designed for similar hardware.
BSP WizardBSP Wizard Guides you through the process of Guides you through the process of
creating a BSP based on Windows CE. creating a BSP based on Windows CE. Typically used to generate a .cec file Typically used to generate a .cec file for your BSP for your BSP
Platform -> BSP Wizard Platform -> BSP Wizard
BSP Development processBSP Development process
Bootloader is not required system Bootloader is not required system can boot directly into OS imagecan boot directly into OS image
Bootloader increasingly used in Bootloader increasingly used in shipping devices for upgrade shipping devices for upgrade capabilitycapability Also used to download tests during Also used to download tests during
manufacturingmanufacturing
Bootloader is essential during Bootloader is essential during development to download updated development to download updated OS Run-Time ImagesOS Run-Time Images
Bootloader (Optional)Bootloader (Optional)
Role of bootloaderRole of bootloader
Initializes the target device Memory and interrupt controller Setting up the clocks and MMU
Controls the boot process Directly boot an existing flash RAM image Clear RAM before downloading Memory read/write test
Downloads the Windows CE image to RAM or flash RAM using: Parallel port Ethernet port
Bootloader communicationBootloader communication
Boot menuBoot menu
Bootloader DevelopmentBootloader Development
Implements some OEM APIs.Implements some OEM APIs.
Link with Microsoft libsLink with Microsoft libs
Bootloader TasksBootloader Tasks
Function calls in bold text denote functions that OEMs need to implement.
Control flowControl flow
C:\WINCE420\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\BLCOMMON
Bootloader -- StartupBootloader -- Startup The first code that is run on the device after The first code that is run on the device after
a hardware reset or run-time reseta hardware reset or run-time reset Sets the device to supervisor mode Sets the device to supervisor mode Performs the necessary initialization for the Performs the necessary initialization for the
following hardware: following hardware: CPU CPU Memory controller Memory controller System clocks System clocks Serial Serial Caches Caches Translation look-aside buffers (TLBs) Translation look-aside buffers (TLBs)
Modify the Startup.s file, depending on the Modify the Startup.s file, depending on the CPU you are usingCPU you are using
Bootloader -- EbootMainBootloader -- EbootMain
EbootMain is typically the entry point EbootMain is typically the entry point for the C code to be runfor the C code to be run
End with a call to the BLCOMMON End with a call to the BLCOMMON library entry point library entry point
The BLCOMMON library source file is The BLCOMMON library source file is located in the Blcommon.c file in the located in the Blcommon.c file in the %_WINCEROOT%\Public\Common\%_WINCEROOT%\Public\Common\Oak\Drivers\Ethdbg directoryOak\Drivers\Ethdbg directory
Bootloader -- OEMDebugInitBootloader -- OEMDebugInit
Used to initialize serial UART Used to initialize serial UART debugging output.debugging output.
After OEMDebugInit completes, the After OEMDebugInit completes, the Windows CE banner appears indicating Windows CE banner appears indicating that this interface is available. that this interface is available.
Bootloader -- OEMPlatformInitBootloader -- OEMPlatformInit
OEM hardware platform initialization OEM hardware platform initialization function for the clock, PCI interface, or function for the clock, PCI interface, or NIC interface. NIC interface.
The NIC interface for downloading the The NIC interface for downloading the image is assumed for the following image is assumed for the following download functions.download functions.
Bootloader -- OEMPreDownloadBootloader -- OEMPreDownload
Called from BLCOMMON before Called from BLCOMMON before actually downloading a run-time image.actually downloading a run-time image.
retrieves the IP address for the device retrieves the IP address for the device and connects to the development and connects to the development workstation.workstation.
Return -1 for Error Return -1 for Error
Bootloader -- Bootloader -- OEMLaunchOEMLaunch
OEMLaunch is the last boot loader OEMLaunch is the last boot loader function called out of BLCOMMONfunction called out of BLCOMMON
Responsible for jumping to and Responsible for jumping to and launching the run-time image. launching the run-time image.
Jumps to the first instruction specified Jumps to the first instruction specified by the dwLaunchAddr parameter, by the dwLaunchAddr parameter, which is the location of the run-time which is the location of the run-time image Startup function.image Startup function.
Kernel DevelopmentKernel Development
The scenario is almost the same as The scenario is almost the same as Bootloader developmentBootloader development
Can reuse the code of bootloaderCan reuse the code of bootloader
OAL architectureOAL architecture
Kernel DevelopmentKernel Development
Function calls in bold text denote functions that OEMs need to implement.
Kernel workflowKernel workflow
KITLKITL Designed to provide an
easy way for you to support any debug service
Separates the protocol of the communication service from the layer that communicates directly with the communication hardware
reducing your involvement in creating a hardware transport layer
Including the KITL support in the operating system image
1.1. CPU Power on Reset VectorCPU Power on Reset Vector
2.2. [Optional] Startup() in Boot Loader[Optional] Startup() in Boot Loader
3.3. Startup() in OALStartup() in OAL
4.4. KernelStart() [ KernelInitialize() For x86 ]KernelStart() [ KernelInitialize() For x86 ]
5.5. Kernel Calls OEMInit() in OALKernel Calls OEMInit() in OAL
6.6. Kernel Completes InitializationKernel Completes Initialization
7.7. Kernel Loads Filesys.exeKernel Loads Filesys.exe
8.8. FileSys initializes the registryFileSys initializes the registry
9.9. Kernel loads applications listed in Kernel loads applications listed in HKEY_LOCAL_MACHINE\InitHKEY_LOCAL_MACHINE\Init
Boot Process Big PictureBoot Process Big Picture
Driver DevlopmentDriver Devlopment
See the previous courses.See the previous courses.
Can be added to BSP using BSP Can be added to BSP using BSP WizardWizard
Demo :Demo :Analyze the Motorola Analyze the Motorola
DragonBall BSPDragonBall BSP
Where are we?Where are we?
We have finally completed We have finally completed the Windows CE the Windows CE
development flow.development flow.
Get hardware & BSP from OEMs
Need Hardware Design?
Design & develop your hardware
Develop BSP for your hardware
Need platform customization
?
Get platform & SDK from OEMs
Customize your Win CE platform
Export your SDK
Coding & Testing
Release to Manufacture
Windows CE Test Kit (CETK)Windows CE Test Kit (CETK)Tux “server”Tux “server”Kato Logging EngineKato Logging EngineDevice Driver Loader and Tux Device Driver Loader and Tux
Extender (DDLX)Extender (DDLX)Custom TUX TestsCustom TUX Tests
OverviewOverview
CETK ArchitectureCETK Architecture
ClientSide.exe
Tux Test DLLTux Test DLLTux Test
DLLsKato.dll
CETEST.EXE
Desktop Windows CE Device
TUX.EXE
Device.EXE
TUX Test DLL
DDLX
Microsoft provided automated test architectureMicrosoft provided automated test architecture Client/Server Architecture supports remote testingClient/Server Architecture supports remote testing
Automated test loading via “Tux”Automated test loading via “Tux” Actual tests implemented as DLLs loaded by TUXActual tests implemented as DLLs loaded by TUX
Common logging Engine “Kato”Common logging Engine “Kato” DLL exposes C and C++ API for logging to the serverDLL exposes C and C++ API for logging to the server
CETK ServerCETK Server Starts specific test using TUXStarts specific test using TUX Stores logs and generates reportsStores logs and generates reports Runs on desktop system for remote testingRuns on desktop system for remote testing
Windows CE Test Kit (CETK)Windows CE Test Kit (CETK)
TUX ServerTUX Server
TUX.EXETUX.EXEProcess that hosts TUX test DLLsProcess that hosts TUX test DLLs
Actual Tests implemented in DLLsActual Tests implemented in DLLsTest DLLs loaded by TUX.EXETest DLLs loaded by TUX.EXE
Launched by remote UI applicationLaunched by remote UI applicationCETEST.EXE on the desktopCETEST.EXE on the desktop
Can run Standalone on the device as Can run Standalone on the device as wellwell
KATO Logging EngineKATO Logging EngineDLL That provides APIs for logging DLL That provides APIs for logging
test resultstest results C++ Class LibraryC++ Class Library C FunctionsC Functions
Abstracts logging mechanisms Abstracts logging mechanisms from TUX Testsfrom TUX Tests Local fileLocal file Remote connectionRemote connection
Device Driver Loader and TUX Device Driver Loader and TUX Extender (DDLX)Extender (DDLX)Allows TUX test DLLs to load into the Allows TUX test DLLs to load into the
Device Manager Process spaceDevice Manager Process spaceAllows testing of APIs and Allows testing of APIs and
functionality only available within functionality only available within Device ManagerDevice Manager Device Manager exposes APIs directly Device Manager exposes APIs directly
to driversto drivers Drivers can expose functionality directly Drivers can expose functionality directly
to other driversto other drivers
Custom TUX TestsCustom TUX TestsTUXSKEL TUXSKEL
Microsoft provided TUX test skeleton Microsoft provided TUX test skeleton frameworkframework
Use as a starting “template” for creating Use as a starting “template” for creating custom TUX testscustom TUX tests
IDE New Project Wizard generates a IDE New Project Wizard generates a custom TUX test based on TUXSKEL custom TUX test based on TUXSKEL structurestructure Simpler than copying and modifying Simpler than copying and modifying
TUXSKEL manuallyTUXSKEL manually