The BSP (Board Support Package) is the layer that will interface the Operating System with the hardware.
It consists of the following items:
- [Optional] Bootloader
- OAL (OEM Abstraction layer)
- KITL to debug the OS in development phase
- Configuration files that specifies the board (Ex: config.bib for memory settings)
Bootloader
When powered up, the microprocessor starts executing instructions from a specified memory address located in ROM. This code can contain the entire system for small footprint applications and will run until shutdown.With WCE7, the system image (nk.bin) needs to be loaded to RAM from a storage disk or network because it can't fit into a ROM memory. In this case, these are the typical steps of a bootloader:
- Minimal Initialization of the system (memory and com drivers)
- Loads the OS image to RAM
- Jumps to OS start address in RAM and calls startup fuction
- The OAL takes over
- Can load files from disks (IDE, PCI)
- Emulates a console to allow user interraction at boot
- Network support: DHCP, TFTP, IP
XLDR
In some cases, the system can be loaded in two steps : a first bootloader loads a second bootloader to RAM. The second bootloader loads the system image to RAM et jumps to it. This is necessary when:- The initial startup program is too small
- The startup program on the target system is general purpose
- The CPU has a small amount of RAM to load an image immediately and shall initialize an external RAM to host the system
OAL
The OAL allows the kernel to access the hardware layer (interrupts, timers, cache, IOCTL...) through an abstract interface.When it takes over the boot phase, it accomplishes the following steps:
- Initialize the CPU state, hardware and kernel's global variables
- Jumps to the entry point of the kernel
- The kernel exchanges global pointers with the OAL. From this point on, the kernel has access to all functions and variables defined in
OEMGLOBAL
and OAL has access to all functions and variables defined inNKGLOBAL
- On kernel call, the OAL initializes the debug serial port (
OEMInitSerialDebug
) (like the bootloader did before without the help of the OAL) - On kernel call, the OAL initializes the rest of hardware interfaces on the device (
OEMInit()
) - [Optional] On kernel call, KITL initialization (
OEMKitlInit
) - The kernel starts executing its first thread
Configuration files
File | Description |
---|---|
config.bib |
Memory structure definition file |
platform.bib |
BSP global settings. Selects which files need to included in the image depending on user-selected options/items |
platform.dat |
Not used |
platform.db |
Not used |
platform.reg |
BSP global registry settings. Selects which keys to write in the registry depending on user-selected options/items |
sources.cmn |
Starting point of the BSP build process. On top of source tree. Defines include directories and linked libraries |
<MyBSP>.bat |
Project-specific environment variables to use in the build process. In particular, specifies the devices to include in the build. |
To have a deeper look at the BSP's file structure, check the Build process.
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.