Hi,

i want to turn on lcd and send debug messages from eboot on ce6.
which files are necessary for mainstone. any sample ?

Thanks
Orko

Re: eboot lcd by Elias

Elias
Sat Jun 09 09:13:11 CDT 2007

Orko,

Are you talking about sending the messages to the LCD? That's going to
be hard to do....
But if you want to enable LCD and put something there like a BMP or
color, you will have to enable a small LCD driver and send data
directly to the frame buffer. So you will need to strip all WinCE and
GWES specific functions from the WinCE driver and port it to EBOOT.

Elias

On Jun 9, 4:59 am, "Orko" <orku...@hotmail.com> wrote:
> Hi,
>
> i want to turn on lcd and send debug messages from eboot on ce6.
> which files are necessary for mainstone. any sample ?
>
> Thanks
> Orko



Re: eboot lcd by Orko

Orko
Sat Jun 09 11:41:13 CDT 2007

hi,

dou you have sample for this.

Thanks

"Elias Radi" <lelo@inhand.com> wrote in message
news:1181398391.071533.247120@m36g2000hse.googlegroups.com...
> Orko,
>
> Are you talking about sending the messages to the LCD? That's going to
> be hard to do....
> But if you want to enable LCD and put something there like a BMP or
> color, you will have to enable a small LCD driver and send data
> directly to the frame buffer. So you will need to strip all WinCE and
> GWES specific functions from the WinCE driver and port it to EBOOT.
>
> Elias
>
> On Jun 9, 4:59 am, "Orko" <orku...@hotmail.com> wrote:
>> Hi,
>>
>> i want to turn on lcd and send debug messages from eboot on ce6.
>> which files are necessary for mainstone. any sample ?
>>
>> Thanks
>> Orko
>
>



Re: eboot lcd by JoshChang

JoshChang
Sun Jun 10 20:22:00 CDT 2007

Hi Orko,

Sample for you. We also have shown BMP file / image loading process bar
/ and debug message into screen......If any more problems, feel free to
discuss.

// Initialize PXA270 LCD controller
//
void InitBulVGA (DWORD PanelType)
{
volatile BULVERDE_GPIO_REG *pGPIOReg;
volatile BULVERDE_CLKMGR_REG *pCLKReg;
volatile LCDRegs *p_LCDRegs;
volatile LCD_FRAME_DESCRIPTOR *pframeDescriptorCh0fd1 = NULL;
DWORD CCCR_L = 0;
int LCLK = 0;
int BPP = 0;
int PCD = 0;
DWORD i;
DWORD *pBuff;

pGPIOReg = (volatile BULVERDE_GPIO_REG *)BULVERDE_BASE_REG_VA_U_GPIO;
p_LCDRegs = (volatile LCDRegs *)BULVERDE_BASE_REG_VA_U_LCD;
pCLKReg = (volatile BULVERDE_CLKMGR_REG *)BULVERDE_BASE_REG_VA_U_CLKMGR;

switch (PanelType)
{
case LCBFBTB61M23:
//NAN YA 320x240 LCBFBTB61M23 STN LCD
g_DispDrvr_cxScreen = 320;
g_DispDrvr_cyScreen = 240;
g_DispDrvr_TYPE = LCBFBTB61M23;
g_ProgressBarWidth = 4;
break;
case PD064VT2:
//PRIME VIEW 640x480 PD064VT2 TFT LCD
g_DispDrvr_cxScreen = 640;
g_DispDrvr_cyScreen = 480;
g_DispDrvr_TYPE = PD064VT2;
g_ProgressBarWidth = 8;
break;
case G104SN03:
//AU 800x600 G104SN03 TFT LCD
g_DispDrvr_cxScreen = 800;
g_DispDrvr_cyScreen = 600;
g_DispDrvr_TYPE = G104SN03;
g_ProgressBarWidth = 10;
break;
case FG050605:
//DATA IMAGE 320x234 FG050605 TFT LCD
g_DispDrvr_cxScreen = 320;
g_DispDrvr_cyScreen = 234;
g_DispDrvr_TYPE = FG050605;
g_ProgressBarWidth = 4;
break;
case TC070WGCC2:
// Toppoly TC070WGCC2 Landscape 800x480 7" TFT LCD
g_DispDrvr_cxScreen = 800;
g_DispDrvr_cyScreen = 480;
g_DispDrvr_TYPE = TC070WGCC2;
g_ProgressBarWidth = 6;
break;
default:
//NAN YA 320x240 LCBFBTB61M23 STN LCD
g_DispDrvr_cxScreen = 320;
g_DispDrvr_cyScreen = 240;
g_DispDrvr_TYPE = LCBFBTB61M23;
g_ProgressBarWidth = 4;
break;
}

pframeDescriptorCh0fd1 = (volatile LCD_FRAME_DESCRIPTOR
*)FRAME_DESCRIPTOR_BASE_VIRTUAL;
g_FrameBufferAddr = (BYTE *)FRAME_BUFFER_BASE_VIRTUAL;
//
// Setup Gpio for LCD
//
EdbgOutputDebugString ("+Setup LCD GPIO\r\n");
// Program the GPDR1 to set output for GPIO 58 through GPIO 63
pGPIOReg->GPDR1 |= ( XLLP_GPIO_BIT_L_DD0 | XLLP_GPIO_BIT_L_DD1 |
XLLP_GPIO_BIT_L_DD2 |
XLLP_GPIO_BIT_L_DD3 | XLLP_GPIO_BIT_L_DD4 | XLLP_GPIO_BIT_L_DD5 );

// Program the GPDR2 to set output for GPIO 64 through GPIO 77 and GPIO 86
through GPIO 87
pGPIOReg->GPDR2 |= ( XLLP_GPIO_BIT_L_DD6 | XLLP_GPIO_BIT_L_DD7 |
XLLP_GPIO_BIT_L_DD8 |
XLLP_GPIO_BIT_L_DD9 | XLLP_GPIO_BIT_L_DD10 | XLLP_GPIO_BIT_L_DD11 |
XLLP_GPIO_BIT_L_DD12 | XLLP_GPIO_BIT_L_DD13 | XLLP_GPIO_BIT_L_DD14 |
XLLP_GPIO_BIT_L_DD15 | XLLP_GPIO_BIT_L_FCLK | XLLP_GPIO_BIT_L_LCLK |
XLLP_GPIO_BIT_L_PCLK | XLLP_GPIO_BIT_L_BIAS | XLLP_GPIO_BIT_L_DD16 |
XLLP_GPIO_BIT_L_DD17 );
// Program the GAFR1_U to select alternate function 2 for GPIO 58 through
63.
pGPIOReg->GAFR1_U = (pGPIOReg->GAFR1_U & ~(XLLP_GPIO_AF_BIT_L_DD0_MASK |
XLLP_GPIO_AF_BIT_L_DD1_MASK | XLLP_GPIO_AF_BIT_L_DD2_MASK|
XLLP_GPIO_AF_BIT_L_DD3_MASK | XLLP_GPIO_AF_BIT_L_DD4_MASK |
XLLP_GPIO_AF_BIT_L_DD5_MASK)) |
(XLLP_GPIO_AF_BIT_L_DD0 | XLLP_GPIO_AF_BIT_L_DD1 |
XLLP_GPIO_AF_BIT_L_DD2 |
XLLP_GPIO_AF_BIT_L_DD3 | XLLP_GPIO_AF_BIT_L_DD4 |
XLLP_GPIO_AF_BIT_L_DD5 );

// Program the GAFR2_L to select alternate function 2 for GPIO 64 through
GPIO 77
pGPIOReg->GAFR2_L = (pGPIOReg->GAFR2_L & ~(XLLP_GPIO_AF_BIT_L_DD6_MASK |
XLLP_GPIO_AF_BIT_L_DD7_MASK | XLLP_GPIO_AF_BIT_L_DD8_MASK |
XLLP_GPIO_AF_BIT_L_DD9_MASK | XLLP_GPIO_AF_BIT_L_DD10_MASK |
XLLP_GPIO_AF_BIT_L_DD11_MASK |
XLLP_GPIO_AF_BIT_L_DD12_MASK | XLLP_GPIO_AF_BIT_L_DD13_MASK |
XLLP_GPIO_AF_BIT_L_DD14_MASK |
XLLP_GPIO_AF_BIT_L_DD15_MASK | XLLP_GPIO_AF_BIT_L_FCLK_RD_MASK |
XLLP_GPIO_AF_BIT_L_LCLK_A0_MASK |
XLLP_GPIO_AF_BIT_L_PCLK_WR_MASK | XLLP_GPIO_AF_BIT_L_BIAS_MASK)) |
(XLLP_GPIO_AF_BIT_L_DD6 | XLLP_GPIO_AF_BIT_L_DD7 |
XLLP_GPIO_AF_BIT_L_DD8 |
XLLP_GPIO_AF_BIT_L_DD9 | XLLP_GPIO_AF_BIT_L_DD10 |
XLLP_GPIO_AF_BIT_L_DD11 |
XLLP_GPIO_AF_BIT_L_DD12 | XLLP_GPIO_AF_BIT_L_DD13 |
XLLP_GPIO_AF_BIT_L_DD14 |
XLLP_GPIO_AF_BIT_L_DD15 | XLLP_GPIO_AF_BIT_L_FCLK_RD|
XLLP_GPIO_AF_BIT_L_LCLK_A0|
XLLP_GPIO_AF_BIT_L_PCLK_WR | XLLP_GPIO_AF_BIT_L_BIAS );

// Program the GAFR2_U to select alternate function 2 for GPIO 86 GPIO 87
pGPIOReg->GAFR2_U = (pGPIOReg->GAFR2_U & ~(XLLP_GPIO_AF_BIT_L_DD16_MASK |
XLLP_GPIO_AF_BIT_L_DD17_MASK)) |
(XLLP_GPIO_AF_BIT_L_DD16 | XLLP_GPIO_AF_BIT_L_DD17);

//
// Start to Initialize VGA Controller
//
EdbgOutputDebugString ("+Initialize VGA Controller\r\n");
p_LCDRegs->LCCR0 = 0;
p_LCDRegs->LCCR1 = 0;
p_LCDRegs->LCCR2 = 0;
p_LCDRegs->LCCR4 = 0;
p_LCDRegs->LCCR5 =
(LCD_SOFM1|LCD_SOFM2|LCD_SOFM3|LCD_SOFM4|LCD_SOFM5|LCD_SOFM6|
LCD_EOFM1|LCD_EOFM2|LCD_EOFM3|LCD_EOFM4|LCD_EOFM5|LCD_EOFM6|
LCD_BSM1 |LCD_BSM2 |LCD_BSM3 |LCD_BSM4 |LCD_BSM5 |LCD_BSM6 |
LCD_IUM1 |LCD_IUM2 |LCD_IUM3 |LCD_IUM4 |LCD_IUM5 |LCD_IUM6 );
g_FrameBufferSize = g_DispDrvr_cxScreen * g_DispDrvr_cyScreen;
switch (g_DispDrvr_BPP)
{
case BPP_1:
g_FrameBufferSize >>= 3;
break;
case BPP_2:
g_FrameBufferSize >>= 2;
break;
case BPP_4:
g_FrameBufferSize >>= 1;
break;
case BPP_8:
break;
case BPP_16:
g_FrameBufferSize <<= 1;
break;
case BPP_18: /* Fall through */
case BPP_18_PACKED:
case BPP_19:
case BPP_19_PACKED:
case BPP_24:
case BPP_25:
g_FrameBufferSize <<= 2;
break;
default:
break;
}
EdbgOutputDebugString ("Get Frame Buffer Size is %d Bytes\r\n",
g_FrameBufferSize);

//
// Clean Display frame buffer
//
pBuff = (DWORD *)(g_FrameBufferAddr);
for (i = 0; i < (g_FrameBufferSize / 4); i++)
*pBuff++ = 0x00000000; // Zeros turn it black

// En