none
Splash Screen for Bios Bootloader or CEPC RRS feed

  • Question

  • Hi,

      I have a Windows CE 5.0 embedded application on a CEPC platform.

       I am trying to make a Spash Screen that will stay visible until my application starts.  There are 2 issues i am trying to resolve.

    1.    I seem unable to get the BIOS LOADER splash screen to appear for any length of time.   I have not altered the stock splash.bmx yet, just trying to simply get it to display.  Does anyone know how to make the splash screen appear for say a few seconds???   I believe that the loader is loading the OS fast enough that the Splash Screen is invisible.

    2. Is there a way to display a Splash Screen while CE is loading?   IE once the BOOTLOADER finishes and the system jumps to start the OS.   In my system it seems to take 5-10s from the time the Bootloader jumps to the OS until my application starts.  How can I display something on the screen during this time.

       I have used LoadCEPC in the past to load some of my embedded system.   Most of them had no Video so this wasnt an issue.   I was originally using LOADCEPC to start this application as well,  the boot sequence is

          the CEPC starts, bios stats are displayed, the system boots to DOS (startup stats are visible),  the autoexec starts LOADCEPC (takes 1-3 seconds to begin)  then the OS is loaded (the progress bar is visible), then LOADCEPC jumps to the begining of the OS, (blank screen as Windows CE loads),  my application starts and my application screen image appears.

    While all of this is going on the system looks like it is booting a PC.    I would really like it to look like an embedded system that has a single specific function, not a computer.

      Any ideas would be greatly appreciated.

    Thanks in advance

    KNK53

    Monday, February 10, 2014 10:50 PM

All replies

  • Hi,

    Biosloader executes the sequence (check main.c): Init boot args -> Init splash screen -> Wait for xx seconds -> Load BIN file -> Init graphics mode (defined by boot.ini)

    So, if your BIN file is short quite and no delay is specified at boot.ini, you have no chance to see a splash picture.
    It is easy to check if splash is by adding Delay=10 to boot.ini file.

    If you like to keep splash screen steady, you have to modify Biosloader and remove the initialization of user graphics mode after bin loading, BUT it works only if you are not using VGA flatbuffer driver!

    Also, splash picture has some limitation - 8 bit, no RLE compression, 64K max file size.

    Tuesday, February 11, 2014 10:31 AM
  • I am confused, are you asking about BIOSLoader or LoadCEPC?  You discuss both.

    I will assume that you are using BIOSLoader.  If you remove the following code from blMain() the splash will stay until something else modifies the display buffer:

        // Initialize requested video mode
        if (pBootArgs->ucVideoMode != 0xFF)
        {
    ...  Code removed

         }

    The something else that modifies the display buffer is most likely the display driver.   It is possible to modify the display driver to leave the buffer alone if you have source code.   If you modify the display driver, then the splash screen should be displayed until the first application draws to the display.


    Bruce Eitman (eMVP)
    Senior Engineer
    Bruce.Eitman AT Eurotech DOT com
    My BLOG http://geekswithblogs.net/bruceeitman

    Eurotech Inc.
    www.Eurotech.com

    Tuesday, February 11, 2014 1:47 PM
    Moderator
  • Bruce and Ishust,

       Thanks for the reply.   Sorry if it was confusing.   I started out using LoadCEPC.   I am trying to switch to the BIOSLOADER.    The whole reason for switching is to control what the user sees on the screen during the boot sequence.  With LOADCEPC my device looks very much like a PC.    With the BIOSLOADER it is cleaner, but right now it is basically a blank screen.

      I will try adding a delay to boot.ini.  

      I am using Windows CE 5.0.   I have not been successful in setting up a disk with the included BIOSLOADER.  I spoke to my vendor and they were convinced that DISKPREP would work ( Ithought it was for CE COMPACT and above).    So I have been using DISKPREP to create disks that contain the BIOSLOADER.     I am having some inconsistent initialization with the BIOSLOADER, that I dont have with LOADCEPC.  Using The BIOSLOADER version, my platform doesnt always recognize the Hard Drive.  Makes no sense since the BIOSLOADER and OS are on the HARD DRIVE.   This was another reason I mentioned LOADCEPC.

       When I try to make a boot disk with the included CE5.0 Loader, the hardware immediately reboots.   No error message or anything.   I was able to compile the CE 5.0 BIOSLOADER and change the FAT BUFFER SIZE.   That still did not work.   So I dont know how I can modify blMAIN() and create a disk that will function??

       I kind of figured that I would have to modify the display driver to keep the splash active while CE initializes.    The vendor supplied the driver, not sure if I have the source code.   I will take a look.

    Thanks for the information

    Ken

    Tuesday, February 11, 2014 2:14 PM
  • Hi,

       Some more information.

       The delay clause in the ini file does basically do what I want.   It pauses the load and allows the spash screen to display.

       The only problem I have now is that the Hard Drive doesnt always get enumerated when I use the Bios Loader.  The hard drive always fails if I reset the system, and is intermittent when I power off.  I would like to try and debug this issue.

       I tried using the orignal BLDR file that came with Windows CE 5.0 from July 2004.   When I run with this loader it actually starts, displays the splash screen and spits out error codes, 0x01 (Unknown File System)  0x0b (Cannot read record info) 0x0d (Failed to read data from storage) 0x08 (failed to load bin file).     I find this fairly bizzare since the Splash graphic is on the screen and the BLDR had to read that from the disk.

      I have tried rebuilding the BLDR file with the July 2004 source and altering READ_BUFFER_LENGTH_MAX to 0x3000.  The build succeeded but when I try to boot using this new BLDR, the hardware platform starts the bios and immediately reboots.  No error or anything.

    Does anyone have any more suggestions????

    Thanks in advance

    Ken

       

    Tuesday, February 11, 2014 8:09 PM
  • Ken

    I'm currently working on a similar problem and may have found an answer to your "reboot" problem with BLDR.

    At least in my sources (Compact 2013), makebldr.bat includes the command:

    debug bldr < fixjmp.scr

    This seems to patch some jump address, but will fail on host systems such as Win7 that don't support the debug command.This certainly gives the same symptoms as you are seeing. I haven't had time to try the "fix" yet, though ...

    Good luck!
    Tony


    [Edited to add - yes, the fix works. Manually edit (using a binary editor) the BLDR file to change the location at offset 03 to 66 (hex). Works for me.]
    • Edited by Tony Hedge Saturday, May 24, 2014 5:50 PM
    Friday, May 23, 2014 8:00 PM