Boot splash screen image i.MX28

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Boot splash screen image i.MX28

Jump to solution
4,312 Views
markwilliams
Senior Contributor I

Hi all,

I am currently evaluating the i.MX28 series using the EVK board and the Windows CE 6.0 BSP. I was wondering if it is possible to change the Freescale logo that is displayed during boot to a different image?

Another product of ours uses an embedded module that uses Uboot. On this product there is a flash partition called 'Splash' that I can use to store the image that is displayed while Windows boots. Is there something similar for the Freescale BSP / Eboot?

I have also noticed that the Freescale logo is only displayed briefly during boot, then the screen goes black while WCE boots. Is it possible to maintain the image throughout the boot process?

Thanks in advance, Mark

Labels (1)
0 Kudos
1 Solution
1,780 Views
markwilliams
Senior Contributor I

Right, sorted it and tested on my iMX28 EVK. I now have my own splash screen persisted throughout boot of WCE.

You can change the splash screen shown during boot by changing the splash_eboot.bmp bitmap at:

C:\WINCE600\SUPPORT_PDK1_9\TOOL\iMX28-EVK\SBIMAGE


The bitmap must be 256 colour (8-bit) or else the image will not be shown. The code checks it is 8-bit format in the bitmap header. The default image is 320x240. I kept this with my image and it is centred on the 800x480 screen.


You can persist the image through boot to windows CE by commenting out TurnOffDisplay() in menu.c at:


C:\WINCE600\PLATFORM\iMX28-EVK-PDK1_9\SRC\BOOTLOADER\EBOOT\menu.c


The image will stay on the screen through windows boot instead of going off as it does by default. You get a little glitch as WCE briefly accesses the display driver (I am going to look into this to see if I can eliminate it but it is not really an issue).


Hope this helps others trying to personalise their board during boot.


Mark

View solution in original post

0 Kudos
10 Replies
1,780 Views
ismaelinfante
Contributor I

Hi Mark,

In order to change the splash screen image I’m doing the following steps:

1)    Edit the splash_eboot.bmp file from C:\WINCE600\SUPPORT_PDK1_9\TOOL\iMX28-EVK\SBIMAGE;

2)    Do a Rebuild Solution inside of Visual Studio;

3)    Copy the new eboot_ivt.sb file from C:\WINCE600\OSDesigns\SmallFootprint\RelDir\Freescale_i_MX28_EVK_ARMV4L_Release to Mfgtools-Rel-1.6.2.042\Profiles\MX28_WinCE_Update\OS firmware\files

4)    Use the Mfgtools.exe to download the new EBOOT and NK.BIN to the NAND.

But this is not working. All that I get is a blank display. The image doesn’t appear.

Are right these steps? Let me know if you do something different.

Thanks,


0 Kudos
1,780 Views
markwilliams
Senior Contributor I

Hi Ismael,

If you are now getting a blank screen instead of the Freescale logo then your changes have been implemented in the build but for some reason the driver does not like the splash image.

Did you save the BMP as 8-bit colour (256 colour)? Note I have only tried this with a 320x240 image (the same size as the original).

Also I think the elf2sb tool is invoked as one of the final build steps when making the run-time image. To save rebuilding the whole image (rebuild solution) you can use the advanced build options in VS and select ‘Rebuild current BSP and sub-projects’ which should be a lot quicker.

Mark

0 Kudos
1,780 Views
ismaelinfante
Contributor I

Hi Mark.

Thanks for the hint. In fact, doing a “Rebuild current BSP and sub-projects” saves a lot of time. =)

Yes, the splash screen image is an 8-bit bitmap.

But I’m not running on Freescale’s development kit. I have a custom board with a LCD display of 240x320. So, I’ve changed those defines (DOTCLK_XX_YYYY) at the beginning of display.c source file. These parameters were copied from those in 43wvf1g.cpp source file (a piece of the WindowsCE display driver). I think these parameters are correct because after the boot, the WindowCE desktop is shown correctly.

I also have checked the function ShowBmp() and the LOOP which writes to g_pLCDBuffer (I think that is the ‘video memory’ that later is transfered to LCD via DMA) is executed.

Do you know if is there anything else that I must change besides the DOTCLK_XX_YYYY defines?

Thanks in advance,


0 Kudos
1,780 Views
markwilliams
Senior Contributor I

Hi Ismael,

I am just going through the process of changing the display driver to suit my own display too. We are using a different type of 800x480 display (7”) which operates in Data Enable Only Mode (does not use HSYNC or VSYNC).

The display driver for WCE is in two parts. A basic driver in Eboot code to display the splash image and a secondary driver for windows CE to control. You will need to change both places.

For example the display driver code for eboot is in C:\WINCE600\PLATFORM\iMX28-EVK-PDK1_9\SRC\BOOTLOADER\COMMON\display.c

This code is responsible for putting the splash screen image on the display.

In this file you will find similar #defines at the top BUT watch out because the #defines for the screen resolution are not actually used by the code!!

I.e. at the top of display.c you will find:

#define DOTCLK_H_ACTIVE          800

#define DOTCLK_V_ACTIVE          480

Later in the function ConfigurePanel() you find:

LCDIFSetTransferCount(800,480);

So the #defines are not used here for some reason – they used direct values. You would need to change this too.

You may also need to adjust your display timings to ensure your vsync/hsync pulses are correct (if used) and your Data Enable blanking times are correct for the display you are using. Take a look at this document I found for more info, it is on a different processor so has different driver code, but good read to get the principles:

http://www.freescale.com/files/dsp/doc/app_note/AN4041.pdf

Hope this helps,

Mark

0 Kudos
1,780 Views
ismaelinfante
Contributor I

Hi Mark.

Finally the display is showing the splash-screen. =D

There are some lines of code that are doing reference to a display of 800x480, like that one you’ve mentioned. Now I modified those lines, especially the function PutPixelBuf(), to work with a display of 320x240.

I was using the pin DDK_IOMUX_LCD_RESET as a GPIO to control another peripheral in my project. I did it because I noticed it wasn’t used by the WINCE display driver (43wvf1g.cpp). But it is necessary for the EBOOT display driver. In this way, I removed the comments on the line DDKIomuxSetPinMux(DDK_IOMUX_LCD_RESET,  DDK_IOMUX_MODE_00) inside the  function LCDIFSetupIOMUXPin(), and now all is working.

Thanks for the help

Sincerely


0 Kudos
1,780 Views
markwilliams
Senior Contributor I

OK so after a lot of searching I may have tracked down the image! I was looking from the platform folder onward but it seems that the image may be added in when creating the eboot sb images. Looking in the following folder I found a file called splash_eboot.bmp which contains the Freescale logo.

C:\WINCE600\SUPPORT_PDK1_9\TOOL\iMX28-EVK\SBIMAGE

In the eboot.bd file you can see that the tool brings together xldr, eboot and the splash image. The splash image is added at the offset I found earlier.

constants {

    xldr_addr = 0x00000004;

    eboot_addr = 0x40050000;

    bmp_addr = 0x40094000;

    ivt_addr = 0x8000;

}

sources {

    xldr = "xldr.nb0";

    eboot = "eboot.nb0";

    bmp = "splash_eboot.bmp";

}

I will try changing this tomorrow and building an image. I will also experiment with commenting out the display clear function in the driver so the image is hopefully persisted through boot. The default BSP shows the logo for 2 seconds or so then a black screen until WCE boots up.

Mark

0 Kudos
1,781 Views
markwilliams
Senior Contributor I

Right, sorted it and tested on my iMX28 EVK. I now have my own splash screen persisted throughout boot of WCE.

You can change the splash screen shown during boot by changing the splash_eboot.bmp bitmap at:

C:\WINCE600\SUPPORT_PDK1_9\TOOL\iMX28-EVK\SBIMAGE


The bitmap must be 256 colour (8-bit) or else the image will not be shown. The code checks it is 8-bit format in the bitmap header. The default image is 320x240. I kept this with my image and it is centred on the 800x480 screen.


You can persist the image through boot to windows CE by commenting out TurnOffDisplay() in menu.c at:


C:\WINCE600\PLATFORM\iMX28-EVK-PDK1_9\SRC\BOOTLOADER\EBOOT\menu.c


The image will stay on the screen through windows boot instead of going off as it does by default. You get a little glitch as WCE briefly accesses the display driver (I am going to look into this to see if I can eliminate it but it is not really an issue).


Hope this helps others trying to personalise their board during boot.


Mark

0 Kudos
1,780 Views
markwilliams
Senior Contributor I

Hi,

Does anyone know how to change the freescale logo splash screen in the iMX28 BSP? I cannot find where the CE build is getting the logo image from.

If I know where the logo image data is I can change it to a different logo during boot.

The display driver uses a function to show a BMP image. This appears to be taken from a reserved area of RAM but I cannot see how the image gets into this reserved area of RAM.

Thanks, Mark

0 Kudos
1,780 Views
4guin4g4
Contributor IV

The drivers would have to be migrated from the i.MX25 BSP. By default the i.MX28 BSp does not have the drivers.

0 Kudos
1,780 Views
markwilliams
Senior Contributor I

Thanks for the pointer - I will have a look in the i.MX25 BSP.

From a quick scan I have noticed in the i.MX28 Eboot code that the splash image seems to operate as follows:

1) Eboot runs

2) Part of the initialisation the LCD is initialised and a BMP image is shown

3) Just before the image boots a function 'TurnOffDisplay()' is called

I was wondering why the LCD is turned off - this would explain why the Freescale Logo is only shown while in the Eboot menu or for a few seconds before WCE is launched. Presumably this is something to do with the Eboot bmp image being corrupted as Windows CE launches its display driver?

If anyone has adapted the i.MX28 source to include this then I would be very grateful for any help. I would have thought that a splash screen image during boot would be an essential part of the BSP.

0 Kudos