Hi TI FAEs,
我以前用的是AM3358ZCZ (Silicon verion 1.0, 跑的是720MHz), 现用的是AM3352BZCZ60 (Silicon version 2.1, 跑的是600MHz)。
同样的程序,同样的电路板,现在出现画面向左偏移,以前用AM3358时没有这个问题:
1. 第一次上电,LCD画面向左偏移;
2. 断电15秒, 重上电,LCD显示正常;
3. 又断电20秒,重上电,LCD画面向左偏移;
4. 就是说断电间隔小于15秒,LCD显示正常;断电间隔大于20s,LCD显示左偏移。
5. 另外,如上电画面左移,但其它功能正常(如通讯,触摸屏等);
6. 我没用操作系统,我是基于starterwarefree,跑的是embos + emWin。
我进行仿真,发现的Frame sync lost, 我按照
http://processors.wiki.ti.com/index.php/DA8xx_LCDC_Linux_FB_FAQs 上的
Flicker due to underflow error
- Apply below patch:
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c index 0f96b40..3bc7104 100644 --- a/drivers/video/da8xx-fb.c +++ b/drivers/video/da8xx-fb.c @@ -821,8 +821,8 @@ static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg)u32 stat = lcdc_read(LCD_MASKED_STAT_REG);u32 reg_int; -if ((stat & LCD_SYNC_LOST) && (stat & LCD_FIFO_UNDERFLOW)) { -printk(KERN_ERR "LCDC sync lost or underflow error occured\n"); +if ((stat & LCD_SYNC_LOST) || (stat & LCD_FIFO_UNDERFLOW)) { ++printk(KERN_ERR "LCDC sync lost or underflow error occured 0x%x\n", lcdc_read(LCD_RAW_STAT_REG));lcd_disable_raster(NO_WAIT_FOR_FRAME_DONE);lcdc_write(stat, LCD_MASKED_STAT_REG);lcd_enable_raster();
- Occasional underflow errors were seen on playing mp4 video with mplayer mostly on start and stop of mplayer.
- Issue is not observed on revision 1.2 of AM335x EVM.
- Underflow errors reduced on configuring th_fifo_ready to max(512 bytes)
- Issue disappears on configuring PR_OLD_COUNT field in the EMIF control register(OCP config) to value close to zero.
- Tuning of dma_master_prio in dma_master control register doesnot help.
- L3 level initiator priority control – keep LCDC at higher priority. From U-boot
#mw 44e1060c 00c00000 from uboot prompt
- mreqprio_0 register setting (The MREQPRIO register provides an interface to change the access priorities for the various masters
accessing the EMIF(DDR). Software can make use of this register to set the requestor priorities for required EMIF arbitration.) From U-boot.
#mw 44e10670 44444477
- Put LCD into Connection ID to Class of Service 1 Mapping Register
REG_CONNID_COS_1_MAP_EN ==> set to 1 to enable REG_CONNID_1_COS_1 ==> LCDC (0x9) REG_MSK_1_COS_1 ==> 0 (Disable masking, have only LCDC)
Also raise REG_COS_COUNT_1 priority in OCP_config: value 0x10.
因我用的不是linux,我按上面要求移植到我的uboot和应用程序。 问题同样存在, 没有得到解决。
Best regards
希望得到你们的回复!!!
Steven Liu1:
从你的描述看来,我认为这个是软件配置问题还是硬件问题还不能确定来着,所以如果debug,我会先让屏幕一直只显示一张静态图片,然后通过示波器采样行同步信号和数据信号,确认偏移和没偏移时两次上电画面不同时的物理硬件时序是否一致。一致的话,就倾向于外部硬件问题,查外面接的显示屏电路和模式设置。不一致的话,要check屏幕配置参数的生效值,通过回读寄存器的方法,来看是驱动时序差异导致,还是在写图片应用导致的。这样就分解开了。
Jian Zhou:
回复 Steven Liu1:
以前用AM3358的时候,会出现Frame sync lost这个信息么?
另外你的LCD显示分辨率多大。