This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM3730: u-boot splash screen is misplaced on DVI Screen

Other Parts Discussed in Thread: DM3730

Hello,

we have the need to place a splash screen very early while booting our DM3730 based system. The system hardware is close to a beagleboard XM.

I used the "get the splash screen back" patch form beagleboard group to implement it into the OpenEmbedded u-boot provided by the 2011.03 release.

The image was displayed, but it appears on the screen starting approximately in the middle of the height of the screen and  the monitor complains about an "out of range" signal and detect a 1600x1200 resolution instead of the provided 1280x720.
Also the image has the wrong aspect ratio on the screen. The image will be "dithered" and disappears after the kernel (linux-omap-psp-2.6.32 from OpenEmbedded release 2011.03) was started and so there is a gap between displaying the u-boot splash image and system psplash image(which is displayed perfectly).

I tested the u-boot using a beagleboard XM rev. A

I suppose there is a wrong or missing register setting.
Is it possible to keep the u-boot splash image until the psplash image was displayed ?

What is wrong with the following code (board/ti/beagle/beagle.c) I use ?

/*
 * (C) Copyright 2004-2008
 * Texas Instruments, <www.ti.com>
 *
 * Author :
 * Sunil Kumar <sunilsaini05@gmail.com>
 * Shashi Ranjan <shashiranjanmca05@gmail.com>
 *
 * Derived from Beagle Board and 3430 SDP code by
 * Richard Woodruff <r-woodruff2@ti.com>
 * Syed Mohammed Khasim <khasim@ti.com>
 *
 *
 * See file CREDITS for list of people who contributed to this
 * project.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 * MA 02111-1307 USA
 */
#include <common.h>
#ifdef CONFIG_STATUS_LED
#include <status_led.h>
#endif
#include <twl4030.h>
#include <asm/io.h>
#include <asm/arch/mmc_host_def.h>
#include <asm/arch/mux.h>
#include <asm/arch/sys_proto.h>
#include <asm/arch/gpio.h>
#include <asm/mach-types.h>
#include "beagle.h"
#include <command.h>

//>>>>>>added code starts here

#include "logo.h" //gimp image saved as include file

//>>>>>>added code starts here

#define TWL4030_I2C_BUS   0
#define EXPANSION_EEPROM_I2C_BUS 1
#define EXPANSION_EEPROM_I2C_ADDRESS 0x50

#define TINCANTOOLS_ZIPPY  0x01000100
#define TINCANTOOLS_ZIPPY2  0x02000100
#define TINCANTOOLS_TRAINER  0x04000100
#define TINCANTOOLS_SHOWDOG  0x03000100
#define KBADC_BEAGLEFPGA  0x01000600
#define LW_BEAGLETOUCH   0x01000700
#define BRAINMUX_LCDOG   0x01000800
#define BRAINMUX_LCDOGTOUCH  0x02000800
#define BBTOYS_WIFI   0x01000B00
#define BBTOYS_VGA   0x02000B00
#define BBTOYS_LCD   0x03000B00
#define BEAGLE_NO_EEPROM  0xffffffff

DECLARE_GLOBAL_DATA_PTR;

static struct {
 unsigned int device_vendor;
 unsigned char revision;
 unsigned char content;
 char fab_revision[8];
 char env_var[16];
 char env_setting[64];
} expansion_config;

/*
 * Routine: board_init
 * Description: Early hardware init.
 */
int board_init(void)
{
 gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
 /* board id for Linux */
 gd->bd->bi_arch_number = MACH_TYPE_OMAP3_BEAGLE;
 /* boot param addr */
 gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);

#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
 status_led_set (STATUS_LED_BOOT, STATUS_LED_ON);
#endif

 return 0;
}

//>>>>>>added code starts here

void dss_init(void)
{
 unsigned int i;
 unsigned char pixel[3];
 int offset = 0;

 /* assuming a resolution of 1280x720 - draw logo into dss buffer */

 /* fill in the blank white bar at the top */
 for(i = 0; i<(((720/2)-(beagle_height/2))*1280)*2; i+=2) {
  *((unsigned short *)(0x80500000 + i + offset)) = 0xef7c;
 }

 offset += i;

 /* Add the image data */
 for (i = 0; i < ((beagle_width*beagle_height)*2);) {
  HEADER_PIXEL(header_data, pixel);
  *((unsigned short *)(0x80500000 + i + offset)) =
   ((((pixel[0])&0xf8) << 8) |
   (((pixel[1])&0xfc) << 3) |
   (((pixel[2])&0xf8) >> 3));
  i+=2;
 }

 offset += i;

 /* fill in the blank white bar at the bottom */
 for(i = 0; i<(720 - (offset/2/1280))*1280*2; i+=2) {
  *((unsigned short *)(0x80500000 + i + offset)) = 0xef7c;
 }
 
 *((uint *) 0x48310034) = 0xfefffedf;
 *((uint *) 0x48310094) = 0x01000120;
 *((uint *) 0x48004D44) = 0x0001b00c;
 *((uint *) 0x48004E40) = 0x00001006;
 *((uint *) 0x48004D00) = 0x00370037;
 *((uint *) 0x48050C00) = 0x00000002;
 *((uint *) 0x48050C04) = 0x0000001B;
 *((uint *) 0x48050C08) = 0x00000040;
 *((uint *) 0x48050C0C) = 0x00000000;
 *((uint *) 0x48050C10) = 0x00000000;
 *((uint *) 0x48050C14) = 0x00008000;
 *((uint *) 0x48050C18) = 0x00000000;
 *((uint *) 0x48050C1C) = 0x00008359;
 *((uint *) 0x48050C20) = 0x0000020C;
 *((uint *) 0x48050C24) = 0x00000000;
 *((uint *) 0x48050C28) = 0x043F2631;
 *((uint *) 0x48050C2C) = 0x00000024;
 *((uint *) 0x48050C30) = 0x00000130;
 *((uint *) 0x48050C34) = 0x00000198;
 *((uint *) 0x48050C38) = 0x000001C0;
 *((uint *) 0x48050C3C) = 0x0000006A;
 *((uint *) 0x48050C40) = 0x0000005C;
 *((uint *) 0x48050C44) = 0x00000000;
 *((uint *) 0x48050C48) = 0x00000001;
 *((uint *) 0x48050C4C) = 0x0000003F;
 *((uint *) 0x48050C50) = 0x21F07C1F;
 *((uint *) 0x48050C54) = 0x00000000;
 *((uint *) 0x48050C58) = 0x00000015;
 *((uint *) 0x48050C5C) = 0x00001400;
 *((uint *) 0x48050C60) = 0x00000000;
 *((uint *) 0x48050C64) = 0x069300F4;
 *((uint *) 0x48050C68) = 0x0016020C;
 *((uint *) 0x48050C6C) = 0x00060107;
 *((uint *) 0x48050C70) = 0x008D034E;
 *((uint *) 0x48050C74) = 0x000F0359;
 *((uint *) 0x48050C78) = 0x01A00000;
 *((uint *) 0x48050C7C) = 0x020501A0;
 *((uint *) 0x48050C80) = 0x01AC0024;
 *((uint *) 0x48050C84) = 0x020D01AC;
 *((uint *) 0x48050C88) = 0x00000006;
 *((uint *) 0x48050C8C) = 0x00000000;
 *((uint *) 0x48050C90) = 0x03480079;
 *((uint *) 0x48050C94) = 0x02040024;
 *((uint *) 0x48050C98) = 0x00000000;
 *((uint *) 0x48050C9C) = 0x00000000;
 *((uint *) 0x48050CA0) = 0x0001008A;
 *((uint *) 0x48050CA4) = 0x01AC0106;
 *((uint *) 0x48050CA8) = 0x01060006;
 *((uint *) 0x48050CAC) = 0x00000000;
 *((uint *) 0x48050CB0) = 0x00140001;
 *((uint *) 0x48050CB4) = 0x00010001;
 *((uint *) 0x48050CB8) = 0x00FF0000;
 *((uint *) 0x48050CBC) = 0x00000000;
 *((uint *) 0x48050CC0) = 0x00000000;
 *((uint *) 0x48050CC4) = 0x0000000D;
 *((uint *) 0x48050CC8) = 0x00000000;
 *((uint *) 0x48050010) = 0x00000001;
 *((uint *) 0x48050040) = 0x00000078;
 *((uint *) 0x48050044) = 0x00000000;
 *((uint *) 0x48050048) = 0x00000000;
 *((uint *) 0x48050050) = 0x00000000;
 *((uint *) 0x48050058) = 0x00000000;
 *((uint *) 0x48050410) = 0x00002015;
 *((uint *) 0x48050414) = 0x00000001;
 *((uint *) 0x48050444) = 0x00000004;
 *((uint *) 0x4805044c) = 0xFFFFFFFF;
 *((uint *) 0x48050450) = 0x00000000;
 *((uint *) 0x48050454) = 0x00000000;
 *((uint *) 0x48050458) = 0x00000000;
  *((uint *) 0x48050464) = 0x0ff03f31;
 *((uint *) 0x48050468) = 0x01400504;
 *((uint *) 0x4805046c) = 0x00007028;
 *((uint *) 0x48050470) = 0x00010002;
 *((uint *) 0x48050478) = 0x02cf04ff;
 *((uint *) 0x4805047c) = 0x02cf04ff;
 *((uint *) 0x48050480) = 0x80500000;
 *((uint *) 0x48050484) = 0x80500000;
 *((uint *) 0x48050488) = 0x00000000;
 *((uint *) 0x4805048c) = 0x02cf04ff;
 *((uint *) 0x480504a0) = 0x0000008d;
 *((uint *) 0x480504a4) = 0x03fc03bc;
 *((uint *) 0x480504a8) = 0x00000400;
 *((uint *) 0x480504ac) = 0x00000001;
 *((uint *) 0x480504b0) = 0x00000001;
 *((uint *) 0x480504b4) = 0x00000000;
 *((uint *) 0x480504b8) = 0x807ff000;
 udelay(1000);
 *((uint *) 0x48050440) = 0x0001836b;
 udelay(1000);
 *((uint *) 0x48050440) = 0x0001836b;
 udelay(1000);
 *((uint *) 0x48050440) = 0x0001836b;
 udelay(1000);
}

//>>>>>>added code ends here

/*
 * Routine: get_board_revision
 * Description: Detect if we are running on a Beagle revision Ax/Bx,
 *  C1/2/3, C4 or xM. This can be done by reading
 *  the level of GPIO173, GPIO172 and GPIO171. This should
 *  result in
 *  GPIO173, GPIO172, GPIO171: 1 1 1 => Ax/Bx
 *  GPIO173, GPIO172, GPIO171: 1 1 0 => C1/2/3
 *  GPIO173, GPIO172, GPIO171: 1 0 1 => C4
 *  GPIO173, GPIO172, GPIO171: 0 0 0 => xM
 */
int get_board_revision(void)
{
 int revision;

 if (!omap_request_gpio(171) &&
     !omap_request_gpio(172) &&
     !omap_request_gpio(173)) {

  omap_set_gpio_direction(171, 1);
  omap_set_gpio_direction(172, 1);
  omap_set_gpio_direction(173, 1);

  revision = omap_get_gpio_datain(173) << 2 |
      omap_get_gpio_datain(172) << 1 |
      omap_get_gpio_datain(171);

  omap_free_gpio(171);
  omap_free_gpio(172);
  omap_free_gpio(173);
 } else {
  printf("Error: unable to acquire board revision GPIOs\n");
  revision = -1;
 }

 return revision;
}

/*
 * Routine: get_expansion_id
 * Description: This function checks for expansion board by checking I2C
 *  bus 1 for the availability of an AT24C01B serial EEPROM.
 *  returns the device_vendor field from the EEPROM
 */
unsigned int get_expansion_id(void)
{
 i2c_set_bus_num(EXPANSION_EEPROM_I2C_BUS);

 /* return BEAGLE_NO_EEPROM if eeprom doesn't respond */
 if (i2c_probe(EXPANSION_EEPROM_I2C_ADDRESS) == 1) {
  i2c_set_bus_num(TWL4030_I2C_BUS);
  return BEAGLE_NO_EEPROM;
 }

 /* read configuration data */
 i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 1, (u8 *)&expansion_config,
   sizeof(expansion_config));

 i2c_set_bus_num(TWL4030_I2C_BUS);

 return expansion_config.device_vendor;
}

/*
 * Configure DSS to display background color on DVID
 * Configure VENC to display color bar on S-Video
 */
void display_init(void)
{
 omap3_dss_venc_config(&venc_config_std_tv, VENC_HEIGHT, VENC_WIDTH);
 switch (get_board_revision()) {
 case REVISION_AXBX:
 case REVISION_CX:
 case REVISION_C4:
  omap3_dss_panel_config(&dvid_cfg);
  break;
 case REVISION_XM_A:
 case REVISION_XM_B:
 case REVISION_XM_C:
 default:
  omap3_dss_panel_config(&dvid_cfg_xm);
  break;
 }
}

/*
 * Routine: misc_init_r
 * Description: Configure board specific parts
 */
int misc_init_r(void)
{
 struct gpio *gpio5_base = (struct gpio *)OMAP34XX_GPIO5_BASE;
 struct gpio *gpio6_base = (struct gpio *)OMAP34XX_GPIO6_BASE;
 struct control_prog_io *prog_io_base = (struct control_prog_io *)OMAP34XX_CTRL_BASE;

 /* Enable i2c2 pullup resisters */
 writel(~(PRG_I2C2_PULLUPRESX), &prog_io_base->io1);

 switch (get_board_revision()) {
 case REVISION_AXBX:
  printf("Beagle Rev Ax/Bx\n");
  setenv("beaglerev", "AxBx");
  break;
 case REVISION_CX:
  printf("Beagle Rev C1/C2/C3\n");
  setenv("beaglerev", "Cx");
  MUX_BEAGLE_C();
  break;
 case REVISION_C4:
  printf("Beagle Rev C4\n");
  setenv("beaglerev", "C4");
  MUX_BEAGLE_C();
  /* Set VAUX2 to 1.8V for EHCI PHY */
  twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED,
     TWL4030_PM_RECEIVER_VAUX2_VSEL_18,
     TWL4030_PM_RECEIVER_VAUX2_DEV_GRP,
     TWL4030_PM_RECEIVER_DEV_GRP_P1);
  break;
 case REVISION_XM_A:
  printf("Beagle xM Rev A\n");
  setenv("beaglerev", "xMA");
  MUX_BEAGLE_XM();
  /* Set VAUX2 to 1.8V for EHCI PHY */
  twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED,
     TWL4030_PM_RECEIVER_VAUX2_VSEL_18,
     TWL4030_PM_RECEIVER_VAUX2_DEV_GRP,
     TWL4030_PM_RECEIVER_DEV_GRP_P1);
  break;
 case REVISION_XM_B:
  printf("Beagle xM Rev B\n");
  setenv("beaglerev", "xMB");
  MUX_BEAGLE_XM();
  /* Set VAUX2 to 1.8V for EHCI PHY */
  twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED,
     TWL4030_PM_RECEIVER_VAUX2_VSEL_18,
     TWL4030_PM_RECEIVER_VAUX2_DEV_GRP,
     TWL4030_PM_RECEIVER_DEV_GRP_P1);
  break;
 case REVISION_XM_C:
  printf("Beagle xM Rev C\n");
  setenv("beaglerev", "xMC");
  MUX_BEAGLE_XM();
  /* Set VAUX2 to 1.8V for EHCI PHY */
  twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED,
     TWL4030_PM_RECEIVER_VAUX2_VSEL_18,
     TWL4030_PM_RECEIVER_VAUX2_DEV_GRP,
     TWL4030_PM_RECEIVER_DEV_GRP_P1);
  break;
 default:
  printf("Beagle unknown 0x%02x\n", get_board_revision());
  MUX_BEAGLE_XM();
  /* Set VAUX2 to 1.8V for EHCI PHY */
  twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED,
     TWL4030_PM_RECEIVER_VAUX2_VSEL_18,
     TWL4030_PM_RECEIVER_VAUX2_DEV_GRP,
     TWL4030_PM_RECEIVER_DEV_GRP_P1);
 }

 switch (get_expansion_id()) {
 case TINCANTOOLS_ZIPPY:
  printf("Recognized Tincantools Zippy board (rev %d %s)\n",
   expansion_config.revision,
   expansion_config.fab_revision);
  MUX_TINCANTOOLS_ZIPPY();
  setenv("buddy", "zippy");
  break;
 case TINCANTOOLS_ZIPPY2:
  printf("Recognized Tincantools Zippy2 board (rev %d %s)\n",
   expansion_config.revision,
   expansion_config.fab_revision);
  MUX_TINCANTOOLS_ZIPPY();
  setenv("buddy", "zippy2");
  break;
 case TINCANTOOLS_TRAINER:
  printf("Recognized Tincantools Trainer board (rev %d %s)\n",
   expansion_config.revision,
   expansion_config.fab_revision);
  MUX_TINCANTOOLS_ZIPPY();
  MUX_TINCANTOOLS_TRAINER();
  setenv("buddy", "trainer");
  break;
 case TINCANTOOLS_SHOWDOG:
  printf("Recognized Tincantools Showdow board (rev %d %s)\n",
   expansion_config.revision,
   expansion_config.fab_revision);
  /* Place holder for DSS2 definition for showdog lcd */
  setenv("defaultdisplay", "showdoglcd");
  setenv("buddy", "showdog");
  break;
 case KBADC_BEAGLEFPGA:
  printf("Recognized KBADC Beagle FPGA board\n");
  MUX_KBADC_BEAGLEFPGA();
  setenv("buddy", "beaglefpga");
  break;
 case LW_BEAGLETOUCH:
  printf("Recognized Liquidware BeagleTouch board\n");
  setenv("buddy", "beagletouch");
  break;
 case BRAINMUX_LCDOG:
  printf("Recognized Brainmux LCDog board\n");
  setenv("buddy", "lcdog");
  break;
 case BRAINMUX_LCDOGTOUCH:
  printf("Recognized Brainmux LCDog Touch board\n");
  setenv("buddy", "lcdogtouch");
  break;
 case BBTOYS_WIFI:
  printf("Recognized BeagleBoardToys WiFi board\n");
  MUX_BBTOYS_WIFI()
  setenv("buddy", "bbtoys-wifi");
  break;;
 case BBTOYS_VGA:
  printf("Recognized BeagleBoardToys VGA board\n");
  break;;
 case BBTOYS_LCD:
  printf("Recognized BeagleBoardToys LCD board\n");
  break;;
 case BEAGLE_NO_EEPROM:
  printf("No EEPROM on expansion board\n");
  setenv("buddy", "none");
  break;
 default:
  printf("Unrecognized expansion board: %x\n",
   expansion_config.device_vendor);
  setenv("buddy", "unknown");
 }

 if (expansion_config.content == 1)
  setenv(expansion_config.env_var, expansion_config.env_setting);

 twl4030_power_init();
 twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
 display_init();

 /* Set GPIO states before they are made outputs */
 writel(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1,
  &gpio6_base->setdataout);
 writel(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 |
  GPIO15 | GPIO14 | GPIO13 | GPIO12, &gpio5_base->setdataout);

 /* Configure GPIOs to output */
 writel(~(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1), &gpio6_base->oe);
 writel(~(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 |
  GPIO15 | GPIO14 | GPIO13 | GPIO12), &gpio5_base->oe);

 dieid_num_r();
 omap3_dss_enable();

//>>>>>>added code starts here

  dss_init();

//>>>>>>added code ends here

 return 0;
}

/*
 * Routine: set_muxconf_regs
 * Description: Setting up the configuration Mux registers specific to the
 *  hardware. Many pins need to be moved from protect to primary
 *  mode.
 */
void set_muxconf_regs(void)
{
 MUX_BEAGLE();
}

#ifdef CONFIG_GENERIC_MMC
int board_mmc_init(bd_t *bis)
{
 omap_mmc_init(0);
 return 0;
}
#endif

/*
 * This command returns the status of the user button on beagle xM
 * Input - none
 * Returns -  1 if button is held down
 *  0 if button is not held down
 */
int do_userbutton (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
 int     button = 0;
 int gpio;

 /*
  * pass address parameter as argv[0] (aka command name),
  * and all remaining args
  */
 switch (get_board_revision()) {
 case REVISION_AXBX:
 case REVISION_CX:
 case REVISION_C4:
  gpio = 7;
  break;
 case REVISION_XM_A:
 case REVISION_XM_B:
 case REVISION_XM_C:
 default:
  gpio = 4;
  break;
 }
 omap_request_gpio(gpio);
 omap_set_gpio_direction(gpio, 1);
 printf("The user button is currently ");
 if(omap_get_gpio_datain(gpio))
 {
  button = 1;
  printf("PRESSED.\n");
 }
 else
 {
  button = 0;
  printf("NOT pressed.\n");
 }

 omap_free_gpio(gpio);

 return !button;
}

/* -------------------------------------------------------------------- */

U_BOOT_CMD(
 userbutton, CONFIG_SYS_MAXARGS, 1, do_userbutton,
 "Return the status of the BeagleBoard USER button",
 ""
);
  

  • Hi, Wolfgang Hauser

    it seems you are doing crazy thing in u-boot.

    do you get any update here ??

    im going to do the same work and would you please send your patch here or zanget@163.com if you dont mind :)???

    thinks a lot.

    regards, Mike

  •  Hello Mike,

    here is the patch I found in beagleboard group, I took it as a base for my changes of the Openembedded u-boot.

    The logo.h is created by gimp2 storing an image as .h file.

    Better said: "I'm going crazy, cause I can't get it to work".

    Have a look on the patch, may be you find a solution.

    Regards

    Wolfgang

    u-boot_v1_beagle_logo.patch.gz
  • Hi,Wolfgang.

    i have just found 2 guys posted about the splash and the other one is here.

    it is a little different beteween yours which im gong to do:

    the platform is dm365 and i perfer to do the splash at UBL cus you can find it is about 1-2 second from the power is on to the uboot is up..

     

    may be im going to crazy too...

     

    regards, Mike

  • hi, Wolfgang.

    i have done the logo in ubl in dm365 already now.

    please check it out at http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/100/p/128656/460623.aspx#460623

    regards, Mike

     

  • Dear Mike:

      I add the same code, and can see the splash screen when boot, but afer add the code, the output log in the console terminal are wrong,  i only saw the logs in the com1 terminal  like that:

     

    Î~þæxæ`Îf8Îx88888x?æ88à88à8f8x8~8þæÎæxÎæx`ÎæàÎ~Îf8Îà88x88æ8888ø`8ø8ø88xææ88à88à8f8x8~8þæÎæxÎæx`ÎæàÎ~Îf8Îà88x888x?æ88à88à8x8à88~8ÎxÎxàfÎæàÎÎføÎÎæ`Îf8Î88x`88æ8888øf8à888æ8ø8~88à88à8x8à88~8ÎxÎxàfÎæàÎÎføÎÎæ`Îf8Î88x`888x?æ88à888x88~8`?þæøfÎæ`ÎàÎ?8Î8þ8Î8æ8àÎ?æ8888øf8x8à8à8ææ88à888x88~8`?þæøfÎæ`ÎàÎ?8Î8þ8Î8æ8àÎ8x?æ88à8888xø8~8føfþæ`Îf8Îþ8Î8æ888æ8888øf8æ88ø8ææ88à8888xø8~8føfþæ`Îf8Îþ8Î8æ8888x?æ88à888à8x8~8føfþæ~Îxxþæ?`Îf88888æ8888øf8`8æ8æ8ææ88888`8~ÎÎàÎx8à8æ8Îx8x8à8xfÎà8~?ææ?æ8888øf88`88~8æøÎx~Î~à~þÎæxf~88æÎx8øÎ~8f``þæTT?æà88þ`8xþf`8æÎø?ø~8xf??8øÎx~Î~à~þ?æ8888øx88à8x8ææ8æøÎx~Î~à~þÎæxf~88æÎx8øÎ~8f``þæTT?æx8þ`8xþf`8æÎø?ø~8xf??8øÎx~Î~à~þ?æ8888øx8à88à8`8~8æÎx8æÎx~8àþæøÎx`ÎæøÎ~f8xþ8xà`8æÎþæàÎæ8x?àfx?æ8888øx8x`8æ88xææ8àþÎæ~8xÎàø~8æfÎøÎx`8àþÎæÎø8~þ8øÎ~f8?~Îx?æ8888øx8x8x8xææ8øÎx~?~føÎx`8~ÎøÎæÎø~~8~føÎø?þø8à8æ8888øx88à88ø8~8?8~8þ~8xþfÎø8þ`8øÎ~?~8øÎxxø~8øÎxxæþøà8øÎ~`Îàø8ÎøÎøÎ~?ø~8~?`Îxæfàf?æ8888øx888f8~8?ø?àf~8øÎ~`Îàø~8~þ8àÎàþfø8xÎÎf8àÎ~xxfø8xf~Îx8à888Îx8æ8888ø~88`8x8~8øÎx~Î~à~þÎæ`ÎæàÎæf~f~8f`ÎÎ~8?æf~f8àÎø~ÎÎø`Îø8fÎ~ø~8øææ8888ø~8x8x8ææ8?8~8fÎ~8~8øÎxfx8`8àÎøx8~8x`øÎxÎø8ø8x8?æ8888ø~8x888~8æÎøà8à88xø8~8fÎ~8~8øÎxfx8fT8xf~Îx8f?Îx8x8æÎø?ø~8?æþæ?æ8888ø~8~888xææ8~~þæø~8~~þæø~~8øÎx`~ø~8øÎÎø~f?8àþÎæ8~þ8x88888à888à8888~88~88ff88x888x`88æ8888ø~8`8æ88ææ8?à8~8?8~8x88`8~8xøx8ø88`8æ8888ø~8`8xf8xææ8?à8~8xf~fÎà~fx8àÎÎÎàÎ`Î8à~Îx8x?æ888~þ8x888888æ8888ø~888x8~8æÎæ~þf~8æÎæ~þf~88Î~xxfø8?Îx8þ88xx88`888æ8888ø~8ø8ø8x8æ8~88?à8~8Î88x8Îx?æ8888?88æ88~8~8æÎæ~þf~8æÎæ~þf~88~8øÎx~?~føÎx`8`8`?Îx`8~`Îxþ8xf~Îx88æ8888?8xf888æ8~8æf88x~8àÎøøÎføÎø8þ`8àfx?æ8888?888x8~8æÎøà8à88xø8~8fÎ~8fT8xf~Îx8xþf`8xxæ`?Î888à8xæøÎ`Î~~æ8Îà88æ8888?888x88~8æÎøà8à88xø8~8fÎ~8fT8xf~Îx8ø~?ø~Îø~8xÎ888æøÎ`Î~~æ888Îx?øf?ÎxÎ88æ8888?8à88x8æ8~8øÎÎàÎ8æ88~88`8æ8888ø88x8à8ø8~8øÎÎàÎ8æ88à88xø8~88~8~8~8`fÎ~føÎx8à~Îx`~888888888888888888888æ8888ø8à8~88~8øÎÎàÎ8æ88à88xø8~88~8~8~8øÎx~?~fø8?ÎàÎ8æ8Î8~8æÎøàÎf?æþæ88xø88øÎÎàÎ8æ88fT8xø88~føf~à8xf~f88æ8x8Îx8à888x?æ888888æ8æ8x88~8ææÎfø`8ø~ø~ø~88?ææ`8`Îx~8æ88øÎx?ø`Îø?æ8888ø88à888~8æf88x8ææà8x88æÎø?ø~8`Îx8æÎfø?æ8888ø88x`8ø8f8~8æf88x8ææà8x88øÎx?xÎxÎ8àÎæf~f?æ8888ø8`8x88ø8~8æf88x8ææà8x88?f`Îx`8xàfÎøÎÎø~f?8~`8~?`ÎxÎÎàÎæ8x~8?`Îx?æ8888ø8`8ø8à88x~8~8fxT~8?f`Îx`8øÎþ`8f~88xàfÎøÎÎø~f?8ø8xf~Îx8à88~8?æ8888ø8f88æ8`8æ8~8xf~`?x~8?f`Îx`?æ8888ø8f8à8à888~8`Îxf?ø~8`8ÎxæþÎ~8x8x???`f~øxfxæøfþøx?àæþ`fø~þæ?fffæøfx~f`~àæþ`fø~øø?f~ø~ø~æxf~?æ888à88x8x8æ8x8~8æxf~`88ø88~8øÎ?8ø8þþæþæx8Îø8xføÎxÎ~fxà8fÎÎøÎx8æÎøÎx8øÎ?8ø8þþæþæøÎàÎÎxþæx8~fÎxøææ888à8ø`88~88æ8~8æf88x~8àÎøøÎføÎø8þ`8àfx?æ888à8ø`8à8æ8æ8x~8~8ææÎfø`8ø~ø~ø~88?ææ`8`Îx~8æ88øÎx?ø`Îø?æ888à8ø`8x~8xx88~8æf88x8ææà8Îx88~øø~~8Î?æ8?f`8àÎf`8øÎxÎàfxà8øÎ~øøø~8xxÎøÎàÎæ8Îø8øÎx?ææf`Îx`?æ888à8øx8ø8f8ø8ææ8æf88x8ææà8Îx88æÎø?ø~8`Îx8æÎfø?æ888à8ø~88f888~8æf88x8ææà8Îx88øÎx?xÎxÎ8àÎæf~f?æ888à8ø~8à88xx8~8æf88x8ææà8Îx88?f`Îx`8xàfÎøÎÎø~f?8~`8~?`ÎxÎÎàÎæ8x~8?`Îx?ffþf`fø~øæþ`øxàføfæø~fføøøæfæàø~æxf~xf~øþ`fxfff~à~ø~xf~àfæàfþæx~àføþ`øfxøffþ`fæ`fxxffxæþøf~xàfxfx~þffþf~??``ææà~øf~øfà~øf>`føøæ~æx?àfæàææff~þ`fxøf~ø~`f~`fþø?f~fx~þfø~øffxøfx`~ø~æøøø?æøxf~f~

     

    it's seems that the uart baud rate was changed, 

    Who can tell me why:

     

    Thanks

    Eric

  • Dear Mike:

      I add the same code, and can see the splash screen when boot, but afer add the code, the output log in the console terminal are wrong,  i only saw the logs in the com1 terminal  like that:

     

    Î~þæxæ`Îf8Îx88888x?æ88à88à8f8x8~8þæÎæxÎæx`ÎæàÎ~Îf8Îà88x88æ8888ø`8ø8ø88xææ88à88à8f8x8~8þæÎæxÎæx`ÎæàÎ~Îf8Îà88x888x?æ88à88à8x8à88~8ÎxÎxàfÎæàÎÎføÎÎæ`Îf8Î88x`88æ8888øf8à888æ8ø8~88à88à8x8à88~8ÎxÎxàfÎæàÎÎføÎÎæ`Îf8Î88x`888x?æ88à888x88~8`?þæøfÎæ`ÎàÎ?8Î8þ8Î8æ8àÎ?æ8888øf8x8à8à8ææ88à888x88~8`?þæøfÎæ`ÎàÎ?8Î8þ8Î8æ8àÎ8x?æ88à8888xø8~8føfþæ`Îf8Îþ8Î8æ888æ8888øf8æ88ø8ææ88à8888xø8~8føfþæ`Îf8Îþ8Î8æ8888x?æ88à888à8x8~8føfþæ~Îxxþæ?`Îf88888æ8888øf8`8æ8æ8ææ88888`8~ÎÎàÎx8à8æ8Îx8x8à8xfÎà8~?ææ?æ8888øf88`88~8æøÎx~Î~à~þÎæxf~88æÎx8øÎ~8f``þæTT?æà88þ`8xþf`8æÎø?ø~8xf??8øÎx~Î~à~þ?æ8888øx88à8x8ææ8æøÎx~Î~à~þÎæxf~88æÎx8øÎ~8f``þæTT?æx8þ`8xþf`8æÎø?ø~8xf??8øÎx~Î~à~þ?æ8888øx8à88à8`8~8æÎx8æÎx~8àþæøÎx`ÎæøÎ~f8xþ8xà`8æÎþæàÎæ8x?àfx?æ8888øx8x`8æ88xææ8àþÎæ~8xÎàø~8æfÎøÎx`8àþÎæÎø8~þ8øÎ~f8?~Îx?æ8888øx8x8x8xææ8øÎx~?~føÎx`8~ÎøÎæÎø~~8~føÎø?þø8à8æ8888øx88à88ø8~8?8~8þ~8xþfÎø8þ`8øÎ~?~8øÎxxø~8øÎxxæþøà8øÎ~`Îàø8ÎøÎøÎ~?ø~8~?`Îxæfàf?æ8888øx888f8~8?ø?àf~8øÎ~`Îàø~8~þ8àÎàþfø8xÎÎf8àÎ~xxfø8xf~Îx8à888Îx8æ8888ø~88`8x8~8øÎx~Î~à~þÎæ`ÎæàÎæf~f~8f`ÎÎ~8?æf~f8àÎø~ÎÎø`Îø8fÎ~ø~8øææ8888ø~8x8x8ææ8?8~8fÎ~8~8øÎxfx8`8àÎøx8~8x`øÎxÎø8ø8x8?æ8888ø~8x888~8æÎøà8à88xø8~8fÎ~8~8øÎxfx8fT8xf~Îx8f?Îx8x8æÎø?ø~8?æþæ?æ8888ø~8~888xææ8~~þæø~8~~þæø~~8øÎx`~ø~8øÎÎø~f?8àþÎæ8~þ8x88888à888à8888~88~88ff88x888x`88æ8888ø~8`8æ88ææ8?à8~8?8~8x88`8~8xøx8ø88`8æ8888ø~8`8xf8xææ8?à8~8xf~fÎà~fx8àÎÎÎàÎ`Î8à~Îx8x?æ888~þ8x888888æ8888ø~888x8~8æÎæ~þf~8æÎæ~þf~88Î~xxfø8?Îx8þ88xx88`888æ8888ø~8ø8ø8x8æ8~88?à8~8Î88x8Îx?æ8888?88æ88~8~8æÎæ~þf~8æÎæ~þf~88~8øÎx~?~føÎx`8`8`?Îx`8~`Îxþ8xf~Îx88æ8888?8xf888æ8~8æf88x~8àÎøøÎføÎø8þ`8àfx?æ8888?888x8~8æÎøà8à88xø8~8fÎ~8fT8xf~Îx8xþf`8xxæ`?Î888à8xæøÎ`Î~~æ8Îà88æ8888?888x88~8æÎøà8à88xø8~8fÎ~8fT8xf~Îx8ø~?ø~Îø~8xÎ888æøÎ`Î~~æ888Îx?øf?ÎxÎ88æ8888?8à88x8æ8~8øÎÎàÎ8æ88~88`8æ8888ø88x8à8ø8~8øÎÎàÎ8æ88à88xø8~88~8~8~8`fÎ~føÎx8à~Îx`~888888888888888888888æ8888ø8à8~88~8øÎÎàÎ8æ88à88xø8~88~8~8~8øÎx~?~fø8?ÎàÎ8æ8Î8~8æÎøàÎf?æþæ88xø88øÎÎàÎ8æ88fT8xø88~føf~à8xf~f88æ8x8Îx8à888x?æ888888æ8æ8x88~8ææÎfø`8ø~ø~ø~88?ææ`8`Îx~8æ88øÎx?ø`Îø?æ8888ø88à888~8æf88x8ææà8x88æÎø?ø~8`Îx8æÎfø?æ8888ø88x`8ø8f8~8æf88x8ææà8x88øÎx?xÎxÎ8àÎæf~f?æ8888ø8`8x88ø8~8æf88x8ææà8x88?f`Îx`8xàfÎøÎÎø~f?8~`8~?`ÎxÎÎàÎæ8x~8?`Îx?æ8888ø8`8ø8à88x~8~8fxT~8?f`Îx`8øÎþ`8f~88xàfÎøÎÎø~f?8ø8xf~Îx8à88~8?æ8888ø8f88æ8`8æ8~8xf~`?x~8?f`Îx`?æ8888ø8f8à8à888~8`Îxf?ø~8`8ÎxæþÎ~8x8x???`f~øxfxæøfþøx?àæþ`fø~þæ?fffæøfx~f`~àæþ`fø~øø?f~ø~ø~æxf~?æ888à88x8x8æ8x8~8æxf~`88ø88~8øÎ?8ø8þþæþæx8Îø8xføÎxÎ~fxà8fÎÎøÎx8æÎøÎx8øÎ?8ø8þþæþæøÎàÎÎxþæx8~fÎxøææ888à8ø`88~88æ8~8æf88x~8àÎøøÎføÎø8þ`8àfx?æ888à8ø`8à8æ8æ8x~8~8ææÎfø`8ø~ø~ø~88?ææ`8`Îx~8æ88øÎx?ø`Îø?æ888à8ø`8x~8xx88~8æf88x8ææà8Îx88~øø~~8Î?æ8?f`8àÎf`8øÎxÎàfxà8øÎ~øøø~8xxÎøÎàÎæ8Îø8øÎx?ææf`Îx`?æ888à8øx8ø8f8ø8ææ8æf88x8ææà8Îx88æÎø?ø~8`Îx8æÎfø?æ888à8ø~88f888~8æf88x8ææà8Îx88øÎx?xÎxÎ8àÎæf~f?æ888à8ø~8à88xx8~8æf88x8ææà8Îx88?f`Îx`8xàfÎøÎÎø~f?8~`8~?`ÎxÎÎàÎæ8x~8?`Îx?ffþf`fø~øæþ`øxàføfæø~fføøøæfæàø~æxf~xf~øþ`fxfff~à~ø~xf~àfæàfþæx~àføþ`øfxøffþ`fæ`fxxffxæþøf~xàfxfx~þffþf~??``ææà~øf~øfà~øf>`føøæ~æx?àfæàææff~þ`fxøf~ø~`f~`fþø?f~fx~þfø~øffxøfx`~ø~æøøø?æøxf~f~

     

    it's seems that the uart baud rate was changed, 

    Who can tell me why:

     

    Thanks

    Eric

  • Hi  Eric yaoqy,

    Me too got the same thing. I also applied the patch for logo, but while booting minicom output went wrong...

  • you may need to do the logo init after device init and make sure the uart is init successful.

    Regards, Mike

  • Hello,

     

      I have a question because I want to do the same think (display a splashscreen in u-boot). I tried to configure graphics pipeline register but I don't manage to have something good on my LCD. For example, I tested to put in my framebuffer only 0xff value to have a white image or 0x00 to have a black image. The LCD output works because I tested to configure only a background color and it is ok. So I wonder if  I really configure correctly the registers. I don't give any table or gamma table adress because I don't want any processing on my pixels. First  is it possible with the graphics pipeline or do I have to use the video pipeline? I saw in your code that you configured the "DISPC_GFX_TABLE_BA" register with a adress (code:  *((uint *) 0x480504b8) = 0x807ff000;). Did you put anything at this adress (0x807ff000) ?

    Regards,

    larbi

  • Could we use this (or something similar) to add the splash screen on the PandaBoard (which uses OMAP4)?

    If so, could you give us an idea of how this can be done?

    Thank you,

    Vivek