Search by Tags

Splash Screen

 

Compare with Revision




Subscribe for this article updates

The splash Screen is the picture that you can see while Win CE is booting. It can be changed using the free Update Tool. This tool needs a Bmz as input file. There are two ways to obtain a user-specific Bmz:

  • Splash Screen Customizer tool: converts an unlimited number of bitmap files to the respective splash screen file format for the cost of 4 Support Hours
  • Toradex converts one bitmap for 1 Support Hours. (Please send us the bitmap in the correct resolution and with 8BPP)

Note: Converting an image to the required 8bpp bitmap input file for the tool using Paint.NET produces wrong results. You may use IrfanView to do the conversion.

Update a Splash Screen

You can update the Splash Screen using the Update Tool. Please refer Update Tool article for more information.

Splash Screen Configblock Settings

You can find the Splash Screen settings in the bootloader's "ss" section. When splash screen is updated it is generally not required for these settings to be modified as the tools to update the splash screen automatically export the Win CE display settings to Config Block. But you can also choose other settings for the splash screen than the default.

Not all settings are available on Colibri Tegra modules.

ss.fileaddr:    0x00000000      (FlashAddress with SplashScreen Data)*
ss.filesize:    0               (Size of SplashScreen Data)*
ss.enable:      1               (Enable SplashScreen)
ss.dbginfo:     1               (Enable DebugInfos)
ss.res:         0x00000000      (Reserved Flags)
ss.width:       800             (Display Width)
ss.height:      600             (Display Height)
ss.bpp:         8               (BitsPerPixel)
ss.ldds:        18              (LCD Lines Used)
ss.type:        1               (Display Type (0=Passive, 1=Active))*
ss.color:       1               (0=Mono, 1=Color)*
ss.dual:        0               (0=SinglePanel, 1=DualPanel)*
ss.overlay:     0               (Overlay Enable)*
ss.dpc:         0               (Double Pixel Clock)*
ss.pcp:         1               (Pixel Clock Polarity)
ss.oep:         0               (Output Enable Polarity)*
ss.hsp:         1               (Horizontal Sync Polarity)
ss.vsp:         1               (Vertical Sync Polarity)
ss.bs:          5               (LCD Buffer Strength, PXA Only)
ss.pclk:        26000000        (PixelClock (in Hz))
ss.hsw:         64              (Horizontal Sync Width)
ss.vsw:         2               (Vertical Sync Width)
ss.blw:         117             (Begin of Line Width)
ss.elw:         129             (End of Line Width)
ss.bfw:         56              (Begin of Frame Width)
ss.efw:         36              (End of Frame Width)
ss.acb:         240             (AC Bias Frequency)*
ss.disp_gpio:   49              (Display On/Off Gpio)   255 = disable disp_gpio
ss.bl_gpio:     49              (BackLight On/Off Gpio) 255 = disable bl_gpio
ss.dispondelay: 100             (Display On Delay (ms))*
ss.disp_pol:    1               (Display On/Off polarity)
ss.bl_pol:      1               (BackLight On/Off polarity)
ss.pcddiv:      1               (Enable Pixel Clock PreDivider)*
                                   // the following settings are available in Bootloader 3.7Beta1 and later.
ss.edidaddr     0x00            (7-bit i2c address, where the EDID EEPROM is located)*
ss.edidenable   0               (1=enable reading of EDID data from i2c EEPROM. 0=disable this feature)*
ss.bsTeg        0xF1612030      (LCD Buffer Strength, Tegra Only. For details, refer to Display Driver Registry Settings, Note (p) )*

Parameters marked with (*) are not currently supported on Vybrid and i.mx6. They can be set and read, but they have no effect on the configuration. On i.mx6 the bl_gpio and disp_gpio parameters should be set to the SO-DIMM (Colibri) or MXM3 (Apalis) pin number.

Output selection (Apalis i.mx6 Only)

On Apalis i.mx6 an additional parameter is available:

ss.out:    0/1      (0 output on VGA, 1 output on parallel LCD)

Prevent Black Screen Between Splash Screen And Application (PXAxxx Only)

During system boot, the display gets black after the operating system has loaded, until the user application is started. There is an option in the the Colibri PXAxxx BSP to keep the splash screen on, until the user application decides to switch to the application screen. To activate the option, insert the following registry setting:

[HKLM\Drivers\Display\Colibri]
OffAtStart = dword:1

To switch from the splash screen to the Windows CE screen, you need to execute the following code:

#include <windows.h>
#define FILE_DEVICE_ACPI    0x00000032
#define FILE_DEVICE_HAL     0x00000101
#define METHOD_BUFFERED     0
#define FILE_ANY_ACCESS     0
 
#define CTL_CODE( DeviceType, Function, Method, Access ) (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
 
#include <pm.h> 
 
int WINAPI WinMain( HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPTSTR    lpCmdLine,
                    int       nCmdShow)
{
    DWORD powerState=0;
    ExtEscape(GetDC(NULL), IOCTL_POWER_SET, 0,NULL,4 ,(char*)&powerState);
    return 0 ;
}

Prevent Black Screen Between Splash Screen And Application (Vybrid Only)

On vybrid the Windows GDI screen (application) can be activated when a named system event is set.

[HKEY_LOCAL_MACHINE\Drivers\Display\Colibri]
    "ActivateDisplayEvent"="SYSTEM/ShellAPIReady"
    "FirstRefreshDelay"=dword:100 ; Delay of 1st refresh in ms. If event is never triggered this timeout is used. 0xFFFFFFFF for infinitive

The event name is configured in the registry and, by default, is set to "SYSTEM/ShellAPIReady" that is the name of the event set by explorer.exe when the desktop is ready. Removing the event name from the resistry will cause the display driver to show Windows GDI screen as soon as it's loaded (usually leading to a black screen). Changing the event name will allow a third party application to trigger screen activation when its user interface is ready. You can use this code snipped as sample.

HANDLE evt;
 
evt=CreateEvent(NULL,FALSE,FALSE,TEXT("<event name configured in registry>"));
SetEvent(evt);