VF50: transition between splashscreen and application only works with serial debug output enabled

Hi,
In my application I am able to show the splashscreen during startup. When I want to avoid the black screen between the splashscreen and the starting of the application I have to set the registry flag UseSplashSettings to 1. When I do that and start the instrument the splashscreen is shown normally but after that the screen gets white as soon as I set the ActivateDisplayEvent in the application and remains like that.

However when I enable the serial debug output in the bootloader menu I quickly get a pixeled screen after the splashscreen and then the application is properly displayed on the screen.

What’s interesting too is that when I set the UseSplashSettings flag to 0 and set the parameters in the registry as I did it in the configblock I can reproduce the same wrong behaviour with the white screen when I add the parameter disp_gpio like it is in the configblock instead of the parameter disp_pin to the registry.

Might it be that WindowsCE does not understand the disp_gpio parameter as he is defined in the configblock?

What am I doing wrong? I mean its interesting that it only kind of works with enabled debug output. I was now trying for hours and don’t see a way to get it work.

My splashscreen configblock looks like that:

ss.fileaddr:     0x0             (FlashAddress with SplashScreen Data)
ss.filesize:     0               (Size of SplashScreen Data)
ss.enable:       1               (Enable SplashScreen)
ss.dbginfo:      0               (Enable DebugInfos)
ss.res:          0x0             (Reserved Flags)
ss.width:        480             (Display Width)
ss.height:       272             (Display Height)
ss.bpp:          16              (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:          0               (Horizontal Sync Polarity)
ss.vsp:          0               (Vertical Sync Polarity)
ss.bs:           5               (LCD Buffer Strength)
ss.pclk:         9000000         (PixelClock (in Hz))
ss.hsw:          1               (Horizontal Sync Width)
ss.vsw:          1               (Vertical Sync Width)
ss.blw:          40              (Begin of Line Width)
ss.elw:          5               (End of Line Width)
ss.bfw:          8               (Begin of Frame Width)
ss.efw:          8               (End of Frame Width)
ss.acb:          0               (AC Bias Frequency)
ss.disp_gpio:    31              (Display On/Off Gpio)
ss.bl_gpio:      28              (BackLight On/Off Gpio)
ss.dispondelay:  0               (Display On Delay (ms))
ss.disp_pol:     1               (Display On/Off polarity)
ss.bl_pol:       0               (BackLight On/Off polarity)
ss.pcddiv:       0               (Enable Pixel Clock PreDivider)
ss.res:          0x1F80          (Reserved Flags)
ss.fbaddr:       0x0             (Phys FrameBuffer,Palette and Descr Address (0=Auto))
ss.edidaddr:     0x57            (i2c address of the EDID EEPROM (0..0x7f))
ss.edidenable:   0               (enable read from EDID EEPROM)

Thanks for any help.

Meanwhile the transition between splashscreen and application works, but only when I enable the debug serial output in the bootloader menu. Otherwise as soon as the WindowsCE takes control the splashscreen disappears and a white screen is shown without a chance to display anything else.

What might be the problem?

Thanks.

Hi,

I tested this on image 1.5 and did not see the issue. Let me explain what I did.

  1. Take a module and make sure registry is clean
  2. Boot to WinCE
  3. Disable explorer.exe under HKLM\Init\
  4. Save registry
  5. Reboot and Enable debug output
  6. Put this to SD card inside autorun → https://share.toradex.com/ha1ofted947i7y3
  7. Reset the system
  8. Now when it boots it shows toradex logo.
  9. Insert SD card.
  10. You should see debug output on console and after 3s screen should show “TEST TETS TEST”
  11. Now disable debug output and do the same.

For me it always works. Can you please check if its some other setting you have set?

Here is the source code I used →

DWORD  a;
HANDLE showDisplay;
showDisplay = CreateEvent(NULL,FALSE,FALSE,TEXT("SYSTEM/ShellAPIReady"));
printf("TEST TEST TEST");
RETAILMSG(1,(TEXT("APP LOADED. Showing screen in \r\n")));
for(a = 3; a > 0 ; a--)
{
    RETAILMSG(1,(TEXT("%d\r\n"),a));
    Sleep(1000);
}
SetEvent(showDisplay);
RETAILMSG(1,(TEXT("Display set\r\n")));
getchar();
return 0;

Hi,

I tested the procedure you described with our hardware. When the debug serial output was enabled it worked as you described. When I disabled it the screen remains completely white after displaying the splash screen as I described it when running our application.

I don’t see any setting I could change which might be responsible for this behaviour. I mean, just enabling and disabling the serial log output must not affect such a thing anyway.

Currently it seems that I have to live with that (enabled serial output) but it would be nice to have a solution.

Thanks.

One question: what parameter do you set to disable the debug output?

I can see a couple of parameters that can be involved.

Do you mean ss.dbginfo to 0? I did the same with VF61 and everything works fine.

Or do you mean dbg.serial to 0 (as described here)?
I didn’t do this, so maybe this can be the “hot” parameter.

Can you please type

set in bootloader and send me out put
then also

set dbg

set boot

set ss

Thanks

Hi,

Yes, I always set dbg.serial to 0. I mean ss.dbginfo writes onto the screen over the splash screen and not to the serial port.

Hi,

My current settings (with dbg serial output enabled as a workaround) look like that:

set dbg:

dbg.serial:     1               (Debug Serial Output)
dbg.regread:    0               (Read from persistent Registry)
dbg.regwrite:   0               (Write to persistent Registry)

set boot:

boot.delay:         0            (User key press delay)
boot.gpio:          0            (Boot/Download select gpio)
boot.sel:           0            (0=Use Serial 1=Use gpio for boot/download select)
boot.dl:            0            (Download IMAGE by default action when sel=0)
boot.silent:        1            (In silent mode bootloader does not output anything)
boot.dltype:        1            (Download via: 0=Ethernet,1=USBC,2=SDCard)
boot.gpiopolinv:    0            (Boot/Download gpio polarity inversion)
boot.imgcrcenable:  1            (Calculate Image CRC and perform failure action)
boot.dlonerror:     1            (Start download if launching the image failed.)
boot.res:           0            (res)
boot.breakchar1:    0x20         (1st Char used to enter Bootloader Menu)
boot.breakchar2:    0x0          (2nd Char used to enter Bootloader Menu)
boot.breakchar3:    0x0          (3rd Char used to enter Bootloader Menu)
boot.breakchar4:    0x0          (4th Char used to enter Bootloader Menu)
boot.imgcrcaction:  0            (On CRC error: 0:Warn/Boot 1:Halt 2:Try next)
boot.res:           0            (res)

set ss:

ss.fileaddr:     0x0             (FlashAddress with SplashScreen Data)
ss.filesize:     0               (Size of SplashScreen Data)
ss.enable:       1               (Enable SplashScreen)
ss.dbginfo:      0               (Enable DebugInfos)
ss.res:          0x0             (Reserved Flags)
ss.width:        480             (Display Width)
ss.height:       272             (Display Height)
ss.bpp:          16              (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:          0               (Horizontal Sync Polarity)
ss.vsp:          0               (Vertical Sync Polarity)
ss.bs:           5               (LCD Buffer Strength)
ss.pclk:         9000000         (PixelClock (in Hz))
ss.hsw:          1               (Horizontal Sync Width)
ss.vsw:          1               (Vertical Sync Width)
ss.blw:          40              (Begin of Line Width)
ss.elw:          5               (End of Line Width)
ss.bfw:          8               (Begin of Frame Width)
ss.efw:          8               (End of Frame Width)
ss.acb:          0               (AC Bias Frequency)
ss.disp_gpio:    31              (Display On/Off Gpio)
ss.bl_gpio:      28              (BackLight On/Off Gpio)
ss.dispondelay:  0               (Display On Delay (ms))
ss.disp_pol:     1               (Display On/Off polarity)
ss.bl_pol:       0               (BackLight On/Off polarity)
ss.pcddiv:       0               (Enable Pixel Clock PreDivider)
ss.res:          0x1F80          (Reserved Flags)
ss.fbaddr:       0x0             (Phys FrameBuffer,Palette and Descr Address (0=Auto))
ss.edidaddr:     0x57            (i2c address of the EDID EEPROM (0..0x7f))
ss.edidenable:   0               (enable read from EDID EEPROM)

Thanks.

Hi,

Yes, with this change it works normaly, even with disabled serial debug output.

For me this solves the problem because I do not depend on this UART interface in our instrument. Perhaps one could fix this in a further release.

Thanks for the support.

For test can you please disable UARTA driver →

Change this in registry

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\UARTA]
    "Dll"="_vybrid_serial.dll"

Please let me know what happens. I think SODIMM pin 31 is also used by uart driver and when you bootup the system it multiplexes pins.

This is not really something we can fix. Pin31 is used by UART and if UART is loaded this will be used. If one needs PIN31 for back light but still uses UART they can use different multiplexing for UART.

https://developer.toradex.com/knowledge-base/serial-port-registry-settings#colibri-vfxx-registry-settings