wswwxk 发表于 2010-12-2 22:04:53

!!!!请教下yulutong(土土狗)关于AT91sam9261添加开机画面的问题!!!!!!!

我的平台是:AT91sam9261+wince6.0
我参考你的【【共享】AT91SAM9261S驱动10.1寸彩屏 调试过程 】http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4089993&bbs_page_no=1&search_mode=1&search_text=at91sam9261&bbs_id=1032。我在EBOOT中添加了开机画面如下原代码如下:
void Init_lcd(void)
{
unsigned int i;
//地址映射
//AT91PS_SYSpSYS = (AT91PS_SYS)OALPAtoVA((DWORD)AT91C_BASE_SYS,FALSE);
AT91PS_PMC pPMC = (AT91PS_PMC)OALPAtoVA((DWORD)AT91C_BASE_PMC,FALSE);
AT91PS_PIO pPIOB = (AT91PS_PIO)OALPAtoVA((DWORD)AT91C_BASE_PIOB,FALSE);
AT91PS_LCDC pLCD = (AT91PS_LCDC)OALPAtoVA((DWORD)AT91C_BASE_LCDC,FALSE);

lcd_base = (char *)OALPAtoVA((DWORD)0X23f00000,FALSE);
// lcd_base = (char *)0xa3f25800;
RETAILMSG(1,(L"++++++++init---lcd++++++++++0x%x\n\r",lcd_base));
/* Configure the PIO Lines for interfacing LCD                              */
pPIOB->PIO_IDR       = 0x1FFFFFFF;// Interrupt Disable Register
pPIOB->PIO_PPUDR   = 0x1FFFFFFF;// (PIO_PPUDR) Pull-up Disable Register
pPIOB->PIO_ASR       = 0x001F9F1F;//PB0~PB20 用外设A,PB21~28用外设B
pPIOB->PIO_PDR       = 0x1f9F9F1F;// (PIO_PDR) PIO Disable Register,禁止普通IO操作,使能外设控制
pPIOB->PIO_IDR       = 0x1f9F9F1F;// (PIO_IDR) Interrupt Disable Register 屏蔽中断
pPIOB->PIO_PPUDR   = 0x1FFFFFFF;
pPIOB->PIO_BSR       = 0x1F000000;// (PIO_BSR) Select B Register

pPMC->PMC_SCER       = 0x1 << 17;          /* Enable HCLOCK*/
pPMC->PMC_PCER       = 1<<21;      /* Enable LCD clk */
pLCD->LCDC_DMACON   = 0;                     /* Disable DMA    */
pLCD->LCDC_PWRCON   = 0;                     /* LCD off      */
pLCD->LCDC_LCDCON1= (0x00<< 12) ;         /* CLKVAL         */
pLCD->LCDC_LCDCON2= (2 << 30) | /* MEMOR:   Little Endian */
                     (0x01 << 15) | /* CLKMOD:    Always active */
                     (0x00 << 12) | /* INVDVAL:   Normal      */
                        (0x01<< 11) | /* INVCLK:    Normal      */
                     (0x00 << 10) | /* INVLINE:   Normal      */
                     (0x00 <<9) | /* INVFRAME:Normal      */
                     (0x00 <<8) | /* INVVD:   Normal      */
                     (0x04 <<5) | /* PIXELSIZE: 16 BPP, packed*/
                     (0x00 <<3) | /* IFWIDTH:   4-bit         */ //2010-6-7 10:52:22 只在STN模式下有效
                     (0x00 <<2) | /* SCANMOD:   Single Scan   */
                     (0x02 <<0) ; /* DISTYPE:   TFT         */

pLCD->LCDC_LCDFRCFG = ((480-1) << 21) |      /* LINESIZE       */
                        ((272-1) <<0) ;      /* LINEVAL      */

pLCD->LCDC_TIM1   = (0 << 24) |         /* VHDLY          */
                         (3 << 16) |         /* VPW            */
                        (0X14 <<8) |         /* VBP            */
                         (0X1E <<0) ;         /* VFP            */

pLCD->LCDC_TIM2   = (0X3C << 21) |         /* HFP            */
                        (0X1E <<8) |         /* HPW            */
                        (66 <<0) ;         /* HBP            */

pLCD->LCDC_CTRSTVAL = (/*0x80*/0xDA <<0) ;         /* CVAL         */

pLCD->LCDC_CTRSTCON = (0x01 <<3) |         /* ENA            */
                        (0x01 <<2) |         /* POL            */
                        (0x3 /*0*/<<0) ;         /* PS             */

pLCD->LCDC_FRMCFG   = (0x3 << 24) |         /* BRSTLN         */
                            (480*272/32);/* FRMSIZE      */

pLCD->LCDC_FIFO   = 512 - (2 * 3/*16*/ + 3);      /* FIFOTH         */

pLCD->LCDC_BA1      = (unsigned int)lcd_base; /* DMA Base Addr*/

pLCD->LCDC_DMACON   = 0x2 <<0;

pLCD->LCDC_DMACON   = 0x1 <<0;      /* Enable DMA   */

pLCD->LCDC_PWRCON   = (0x0F <<1) |            GUARDTIME      */
                        (0x01 <<0) ;         /* LCD_PWR: On    */


for(i =0; i <256; i++)
{
pLCD->LCDC_LUT_ENTRY = ((rPalette.pRed) >> 3 |
      ((rPalette.pGreen & 0xf8) << 2) |
      ((rPalette.pBlue & 0xf8) << 7));
}
//显示颜色
for (i=0; i<272; ++i)
{
memset(lcd_base, i, 480);

lcd_base   += 272;
}
RETAILMSG(1,(L"------init---lcd------\n\r"));

}

以上的代码使能电源控制如下一句,

pLCD->LCDC_PWRCON   = (0x0F <<1) |            GUARDTIME      */
                        (0x01 <<0) ;         /* LCD_PWR: On    */

屏就是黑色的,看不见东西。问下yulutong(土土狗),我还有哪里没配置,还是配置错了?谢谢

yulutong 发表于 2012-10-10 15:00:36

不知楼主解决没有。可以参考NAND UBOOT启动。我是裸机完成开机画面。
页: [1]
查看完整版本: !!!!请教下yulutong(土土狗)关于AT91sam9261添加开机画面的问题!!!!!!!