The splash Screen is the picture that you can see while Win CE is booting. It can be changed using the freely available Toradex Update Tool, or another method during production programming. The picture needs to be provided in a special splash screen format. There are two ways to convert a user specific picture into this special splash screen format.:
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.
You can update the Splash Screen using the Update Tool. Please refer Update Tool article for more information.
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 all the different 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/pin. Set Gpionumber for PXA/Tegra and pin number for VFxx/IMX6/IMX7). Disable Pin: set 255 for PXA/Tegra, set to 0 on VFxx/IMX6/IMX7) ss.bl_gpio: 49 (BackLight On/Off Gpio/pin. Set Gpio number for PXA/Tegra and pin number for VFxx/IMX6/IMX7). Disable Pin: set 255 for PXA/Tegra, set to 0 on VFxx/IMX6/IMX7) 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 Apalis/Colibri IMX6 additional parameters are available:
ss.out: 0-5 (used only for Apalis, 0=VGA,1=parallel,2/3/4=LVDS,5=HDMI) ss.mode: 0-64 Standard CEA mode id (overrides settings) ss.detectmode: 0 0=use parms, 1=match EDID info with standard mode, 2=use EDID preferred mode ss.noOE: 0 1=Disables OE/DE signal ss.noVSYNC: 0 1=Disables VSYNC signal ss.noHSYNC: 0 1=Disables HSYNC signal ss.jeida 0 Enables JEIDA mapping for LVDS
Rotation of a splash screen in software is not supported. Instead you need to use an already rotated image as a splash screen.
You can download rotated splash screens here:
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 ; }
On Colibri VF50, Colibri VF61 and Colibri iMX7 the Windows GDI screen (application) can be activated when a named system event is set.
[HKEY_LOCAL_MACHINE\Drivers\Display\Colibri] "UseSplashSettings" = dword:1 ; This is required to prevent a re-initialization of the display controller by the WinCe display driver "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
. This event gets set by Explorer.exe when the desktop is ready.
ActivateDisplayEvent
will cause the display driver to show the Windows GDI screen as soon as it's loaded (usually leading to a black screen).ActivateDisplayEvent
will allow a third party application to trigger screen activation when its user interface is ready.Refer to the following code sample to switch from Splashscreen to your application display.
HANDLE evt; evt=CreateEvent(NULL,FALSE,FALSE,TEXT("<event name configured in registry>")); SetEvent(evt);